diff --git a/api/consts.go b/api/consts.go index e40273803c7..e7c7779dfa8 100644 --- a/api/consts.go +++ b/api/consts.go @@ -32,7 +32,7 @@ const ( // Image versions - KESImageVersion = "minio/kes:2023-10-03T00-48-37Z" + KESImageVersion = "minio/kes:2023-11-10T10-44-28Z" // Constants for common configuration MinioImage = "OPERATOR_MINIO_IMAGE" diff --git a/bundle.Dockerfile b/bundle.Dockerfile index 4a9a94ebd42..535f4539a86 100644 --- a/bundle.Dockerfile +++ b/bundle.Dockerfile @@ -8,5 +8,5 @@ LABEL operators.operatorframework.io.bundle.package.v1=minio-operator LABEL operators.operatorframework.io.bundle.channels.v1=stable # Copy files to locations specified by labels. -COPY bundles/community-operators/5.0.10/manifests /manifests/ -COPY bundles/community-operators/5.0.10/metadata /metadata/ +COPY bundles/community-operators/5.0.11/manifests /manifests/ +COPY bundles/community-operators/5.0.11/metadata /metadata/ diff --git a/bundles/certified-operators/5.0.11/manifests/console-env_v1_configmap.yaml b/bundles/certified-operators/5.0.11/manifests/console-env_v1_configmap.yaml new file mode 100644 index 00000000000..1c276708cd0 --- /dev/null +++ b/bundles/certified-operators/5.0.11/manifests/console-env_v1_configmap.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +data: + CONSOLE_PORT: "9090" + CONSOLE_TLS_PORT: "9443" +kind: ConfigMap +metadata: + annotations: + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + name: console-env diff --git a/bundles/certified-operators/5.0.11/manifests/console-sa-secret_v1_secret.yaml b/bundles/certified-operators/5.0.11/manifests/console-sa-secret_v1_secret.yaml new file mode 100644 index 00000000000..8f7c7e18363 --- /dev/null +++ b/bundles/certified-operators/5.0.11/manifests/console-sa-secret_v1_secret.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Secret +metadata: + annotations: + kubernetes.io/service-account.name: console-sa + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + name: console-sa-secret +type: kubernetes.io/service-account-token diff --git a/bundles/certified-operators/5.0.11/manifests/console_v1_service.yaml b/bundles/certified-operators/5.0.11/manifests/console_v1_service.yaml new file mode 100644 index 00000000000..1d2af3ffb8a --- /dev/null +++ b/bundles/certified-operators/5.0.11/manifests/console_v1_service.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + service.beta.openshift.io/serving-cert-secret-name: console-tls + creationTimestamp: null + labels: + app.kubernetes.io/instance: minio-operator + app.kubernetes.io/name: operator + name: console + name: console +spec: + ports: + - name: http + port: 9090 + targetPort: 0 + - name: https + port: 9443 + targetPort: 0 + selector: + app: console +status: + loadBalancer: {} diff --git a/bundles/certified-operators/5.0.11/manifests/minio-operator.clusterserviceversion.yaml b/bundles/certified-operators/5.0.11/manifests/minio-operator.clusterserviceversion.yaml new file mode 100644 index 00000000000..33c1a9f6852 --- /dev/null +++ b/bundles/certified-operators/5.0.11/manifests/minio-operator.clusterserviceversion.yaml @@ -0,0 +1,769 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: |- + [ + { + "apiVersion": "minio.min.io/v2", + "kind": "Tenant", + "metadata": { + "annotations": { + "prometheus.io/path": "/minio/v2/metrics/cluster", + "prometheus.io/port": "9000", + "prometheus.io/scrape": "true" + }, + "labels": { + "app": "minio" + }, + "name": "myminio", + "namespace": "minio-operator" + }, + "spec": { + "certConfig": {}, + "configuration": { + "name": "storage-configuration" + }, + "env": [], + "externalCaCertSecret": [], + "externalCertSecret": [], + "externalClientCertSecrets": [], + "features": { + "bucketDNS": false, + "domains": {} + }, + "image": "quay.io/minio/minio@sha256:7c98dbaba9132bb804c73baeb43f70db20a0c746277c88a9c9c9d3dc188127bb", + "imagePullSecret": {}, + "mountPath": "/export", + "podManagementPolicy": "Parallel", + "pools": [ + { + "containerSecurityContext": {}, + "name": "pool-0", + "securityContext": {}, + "servers": 4, + "volumeClaimTemplate": { + "metadata": { + "name": "data" + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "2Gi" + } + } + } + }, + "volumesPerServer": 2 + } + ], + "priorityClassName": "", + "requestAutoCert": true, + "serviceAccountName": "", + "serviceMetadata": { + "consoleServiceAnnotations": {}, + "consoleServiceLabels": {}, + "minioServiceAnnotations": {}, + "minioServiceLabels": {} + }, + "subPath": "", + "users": [ + { + "name": "storage-user" + } + ] + } + } + ] + capabilities: Full Lifecycle + categories: AI/Machine Learning, Big Data, Cloud Provider, Storage + description: |- + MinIO is a Kubernetes-native high performance object store with an + S3-compatible API. The MinIO Operator supports deploying MinIO Tenants + onto any Kubernetes. + k8sMinVersion: "1.18" + operatorframework.io/suggested-namespace: minio-operator + operators.operatorframework.io/builder: operator-sdk-v1.22.2 + operators.operatorframework.io/project_layout: unknown + repository: https://github.com/minio/operator + containerImage: quay.io/minio/operator:v5.0.11 + name: minio-operator.v5.0.11 + namespace: minio-operator +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - kind: PolicyBinding + name: policybindings.sts.min.io + version: v1alpha1 + - kind: Tenant + name: tenants.minio.min.io + version: v2 + description: |- + ## Overview + + + The MinIO Operator brings native support for deploying and managing MinIO + deployments (“MinIO Tenants”) on a Kubernetes cluster. + + + MinIO is a high performance, Kubernetes native object storage suite. With an + extensive list of enterprise features, it is scalable, secure and resilient + while remaining remarkably simple to deploy and operate at scale. + Software-defined, MinIO can run on any infrastructure and in any cloud - + public, private or edge. MinIO is the world's fastest object storage and can + run the broadest set of workloads in the industry. It is widely considered + to be the leader in compatibility with Amazon's S3 API. + + ## Features + + + The MinIO Operator takes care of the deployment of MinIO Tenant along with: + + * TLS Certificate Management + + * Configuration of the encryption at rest + + * Cluster expansion + + * Hot Updates + + * Users and Buckets bootstrapping + + ## Prerequisites for enabling this Operator + + * At least Kubernetes 1.18 + + * [CSR + Capability](https://kubernetes.io/docs/reference/access-authn-authz/certificate-signing-requests/) + must be enabled + + * Locally attached volumes for performance or some CSI to provision block + storage to the MinIO pods. + displayName: Minio Operator + icon: + - base64data: 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 + mediatype: image/png + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - "" + resources: + - secrets + verbs: + - get + - watch + - create + - list + - patch + - update + - delete + - deletecollection + - apiGroups: + - "" + resources: + - namespaces + - services + - events + - resourcequotas + - nodes + verbs: + - get + - watch + - create + - list + - patch + - apiGroups: + - "" + resources: + - pods + verbs: + - get + - watch + - create + - list + - patch + - delete + - deletecollection + - apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - deletecollection + - list + - get + - watch + - update + - apiGroups: + - storage.k8s.io + resources: + - storageclasses + verbs: + - get + - watch + - create + - list + - patch + - apiGroups: + - apps + resources: + - statefulsets + - deployments + verbs: + - get + - create + - list + - patch + - watch + - update + - delete + - apiGroups: + - batch + resources: + - jobs + verbs: + - get + - create + - list + - patch + - watch + - update + - delete + - apiGroups: + - certificates.k8s.io + resources: + - certificatesigningrequests + - certificatesigningrequests/approval + - certificatesigningrequests/status + verbs: + - update + - create + - get + - delete + - list + - apiGroups: + - minio.min.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - min.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - "" + resources: + - persistentvolumes + verbs: + - get + - list + - watch + - create + - delete + - apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - get + - list + - watch + - update + - apiGroups: + - "" + resources: + - events + verbs: + - create + - list + - watch + - update + - patch + - apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshots + verbs: + - get + - list + - apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshotcontents + verbs: + - get + - list + - apiGroups: + - storage.k8s.io + resources: + - csinodes + verbs: + - get + - list + - watch + - apiGroups: + - storage.k8s.io + resources: + - volumeattachments + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - endpoints + verbs: + - get + - list + - watch + - create + - update + - delete + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - delete + - apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - get + - list + - watch + - create + - update + - delete + - apiGroups: + - "" + resources: + - pod + - pods/log + verbs: + - get + - list + - watch + serviceAccountName: console-sa + - rules: + - apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - get + - update + - apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - get + - update + - list + - delete + - apiGroups: + - "" + resources: + - namespaces + - nodes + verbs: + - get + - watch + - list + - apiGroups: + - "" + resources: + - pods + - services + - events + - configmaps + verbs: + - get + - watch + - create + - list + - delete + - deletecollection + - update + - patch + - apiGroups: + - "" + resources: + - secrets + verbs: + - get + - watch + - create + - update + - list + - delete + - deletecollection + - apiGroups: + - "" + resources: + - serviceaccounts + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - rbac.authorization.k8s.io + resources: + - roles + - rolebindings + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - apps + resources: + - statefulsets + - deployments + - deployments/finalizers + verbs: + - get + - create + - list + - patch + - watch + - update + - delete + - apiGroups: + - batch + resources: + - jobs + verbs: + - get + - create + - list + - patch + - watch + - update + - delete + - apiGroups: + - certificates.k8s.io + resources: + - certificatesigningrequests + - certificatesigningrequests/approval + - certificatesigningrequests/status + verbs: + - update + - create + - get + - delete + - list + - apiGroups: + - certificates.k8s.io + resourceNames: + - kubernetes.io/legacy-unknown + - kubernetes.io/kube-apiserver-client + - kubernetes.io/kubelet-serving + - beta.eks.amazonaws.com/app-serving + resources: + - signers + verbs: + - approve + - sign + - apiGroups: + - authentication.k8s.io + resources: + - tokenreviews + verbs: + - create + - apiGroups: + - minio.min.io + - sts.min.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - min.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - monitoring.coreos.com + resources: + - prometheuses + verbs: + - '*' + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - update + - create + - apiGroups: + - policy + resources: + - poddisruptionbudgets + verbs: + - create + - delete + - get + - list + - patch + - update + - deletecollection + serviceAccountName: minio-operator + deployments: + - label: + app.kubernetes.io/instance: minio-operator + app.kubernetes.io/name: operator + name: console + spec: + replicas: 1 + selector: + matchLabels: + app: console + strategy: {} + template: + metadata: + annotations: + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + labels: + app: console + app.kubernetes.io/instance: minio-operator-console + app.kubernetes.io/name: operator + spec: + containers: + - args: + - ui + - --certs-dir=/tmp/certs + image: quay.io/minio/operator:v5.0.11 + imagePullPolicy: IfNotPresent + name: console + ports: + - containerPort: 9090 + name: http + - containerPort: 9443 + name: https + resources: {} + securityContext: {} + volumeMounts: + - mountPath: /tmp/certs + name: tls-certificates + - mountPath: /tmp/certs/CAs + name: tmp + serviceAccountName: console-sa + volumes: + - name: tls-certificates + projected: + defaultMode: 420 + sources: + - secret: + items: + - key: tls.crt + path: public.crt + - key: tls.key + path: private.key + name: console-tls + optional: true + - configMap: + items: + - key: service-ca.crt + path: CAs/ca.crt + name: openshift-service-ca.crt + optional: true + - emptyDir: {} + name: tmp + - label: + app.kubernetes.io/instance: minio-operator + app.kubernetes.io/name: operator + name: minio-operator + spec: + replicas: 1 + selector: + matchLabels: + name: minio-operator + strategy: + type: Recreate + template: + metadata: + annotations: + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + labels: + app.kubernetes.io/instance: minio-operator + app.kubernetes.io/name: operator + name: minio-operator + spec: + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: name + operator: In + values: + - minio-operator + topologyKey: kubernetes.io/hostname + containers: + - args: + - controller + env: + - name: MINIO_OPERATOR_RUNTIME + value: OpenShift + - name: MINIO_CONSOLE_TLS_ENABLE + value: "on" + - name: OPERATOR_STS_ENABLED + value: "on" + image: quay.io/minio/operator:v5.0.11 + imagePullPolicy: IfNotPresent + name: minio-operator + resources: + requests: + cpu: 200m + ephemeral-storage: 500Mi + memory: 256Mi + securityContext: {} + volumeMounts: + - mountPath: /tmp/service-ca + name: openshift-service-ca + - mountPath: /tmp/csr-signer-ca + name: openshift-csr-signer-ca + - mountPath: /tmp/sts + name: sts-tls + serviceAccountName: minio-operator + volumes: + - name: sts-tls + projected: + defaultMode: 420 + sources: + - secret: + items: + - key: tls.crt + path: public.crt + - key: tls.key + path: private.key + name: sts-tls + optional: true + - configMap: + items: + - key: service-ca.crt + path: service-ca.crt + name: openshift-service-ca.crt + optional: true + name: openshift-service-ca + - name: openshift-csr-signer-ca + projected: + defaultMode: 420 + sources: + - secret: + items: + - key: tls.crt + path: tls.crt + name: openshift-csr-signer-ca + optional: true + strategy: deployment + installModes: + - supported: false + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - S3 + - MinIO + - Object Storage + labels: + operatorframework.io/arch.386: supported + operatorframework.io/arch.amd64: supported + operatorframework.io/arch.amd64p32: supported + operatorframework.io/arch.arm: supported + operatorframework.io/arch.arm64: supported + operatorframework.io/arch.arm64be: supported + operatorframework.io/arch.armbe: supported + operatorframework.io/arch.loong64: supported + operatorframework.io/arch.mips: supported + operatorframework.io/arch.mips64: supported + operatorframework.io/arch.mips64le: supported + operatorframework.io/arch.mips64p32: supported + operatorframework.io/arch.mips64p32le: supported + operatorframework.io/arch.mipsle: supported + operatorframework.io/arch.ppc: supported + operatorframework.io/arch.ppc64: supported + operatorframework.io/arch.ppc64le: supported + operatorframework.io/arch.riscv: supported + operatorframework.io/arch.riscv64: supported + operatorframework.io/arch.s390: supported + operatorframework.io/arch.s390x: supported + operatorframework.io/arch.sparc: supported + operatorframework.io/arch.sparc64: supported + operatorframework.io/arch.wasm: supported + operatorframework.io/os.aix: supported + operatorframework.io/os.android: supported + operatorframework.io/os.darwin: supported + operatorframework.io/os.dragonfly: supported + operatorframework.io/os.freebsd: supported + operatorframework.io/os.hurd: supported + operatorframework.io/os.illumos: supported + operatorframework.io/os.ios: supported + operatorframework.io/os.js: supported + operatorframework.io/os.linux: supported + operatorframework.io/os.nacl: supported + operatorframework.io/os.netbsd: supported + operatorframework.io/os.openbsd: supported + operatorframework.io/os.plan9: supported + operatorframework.io/os.solaris: supported + operatorframework.io/os.windows: supported + operatorframework.io/os.zos: supported + links: + - name: Website + url: https://min.io + - name: Support + url: https://subnet.min.io + - name: Github + url: https://github.com/minio/operator + maintainers: + - email: dev@min.io + name: MinIO Team + maturity: stable + provider: + name: MinIO Inc + url: https://min.io + relatedImages: + - image: minio/operator@sha256:58c5114003fdc38877db2dc6ca45bc4b16572cc3e40c2fcc20702c5ccaa01caa + name: console + - image: minio/operator@sha256:58c5114003fdc38877db2dc6ca45bc4b16572cc3e40c2fcc20702c5ccaa01caa + name: minio-operator + - image: quay.io/minio/minio@sha256:7c98dbaba9132bb804c73baeb43f70db20a0c746277c88a9c9c9d3dc188127bb + name: minio-7c98dbaba9132bb804c73baeb43f70db20a0c746277c88a9c9c9d3dc188127bb-annotation + version: 5.0.11 + replaces: minio-operator.v5.0.9 diff --git a/bundles/certified-operators/5.0.11/manifests/minio.min.io_tenants.yaml b/bundles/certified-operators/5.0.11/manifests/minio.min.io_tenants.yaml new file mode 100644 index 00000000000..697304ebed5 --- /dev/null +++ b/bundles/certified-operators/5.0.11/manifests/minio.min.io_tenants.yaml @@ -0,0 +1,5040 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.11.1 + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + creationTimestamp: null + name: tenants.minio.min.io +spec: + group: minio.min.io + names: + kind: Tenant + listKind: TenantList + plural: tenants + shortNames: + - tenant + singular: tenant + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.currentState + name: State + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v2 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + scheduler: + properties: + name: + type: string + required: + - name + type: object + spec: + properties: + additionalVolumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + additionalVolumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: + properties: + monitors: + items: + type: string + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver + type: object + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: + type: string + type: object + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + required: + - driver + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + optional: + type: boolean + secretName: + type: string + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + buckets: + items: + properties: + name: + type: string + objectLock: + type: boolean + region: + type: string + type: object + type: array + certConfig: + properties: + commonName: + type: string + dnsNames: + items: + type: string + type: array + organizationName: + items: + type: string + type: array + type: object + configuration: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + credsSecret: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + exposeServices: + properties: + console: + type: boolean + minio: + type: boolean + type: object + externalCaCertSecret: + items: + properties: + name: + type: string + type: + type: string + required: + - name + type: object + type: array + externalCertSecret: + items: + properties: + name: + type: string + type: + type: string + required: + - name + type: object + type: array + externalClientCertSecret: + properties: + name: + type: string + type: + type: string + required: + - name + type: object + externalClientCertSecrets: + items: + properties: + name: + type: string + type: + type: string + required: + - name + type: object + type: array + features: + properties: + bucketDNS: + type: boolean + domains: + properties: + console: + type: string + minio: + items: + type: string + type: array + type: object + enableSFTP: + type: boolean + type: object + image: + type: string + imagePullPolicy: + type: string + imagePullSecret: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + initContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resizePolicy: + items: + properties: + resourceName: + type: string + restartPolicy: + type: string + required: + - resourceName + - restartPolicy + type: object + type: array + x-kubernetes-list-type: atomic + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + restartPolicy: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + kes: + properties: + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + annotations: + additionalProperties: + type: string + type: object + clientCertSecret: + properties: + name: + type: string + type: + type: string + required: + - name + type: object + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + externalCertSecret: + properties: + name: + type: string + type: + type: string + required: + - name + type: object + gcpCredentialSecretName: + type: string + gcpWorkloadIdentityPool: + type: string + image: + type: string + imagePullPolicy: + type: string + kesSecret: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + keyName: + type: string + labels: + additionalProperties: + type: string + type: object + nodeSelector: + additionalProperties: + type: string + type: object + replicas: + format: int32 + type: integer + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + serviceAccountName: + type: string + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + topologySpreadConstraints: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic + maxSkew: + format: int32 + type: integer + minDomains: + format: int32 + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array + required: + - kesSecret + type: object + liveness: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + logging: + properties: + anonymous: + type: boolean + json: + type: boolean + quiet: + type: boolean + type: object + mountPath: + type: string + podManagementPolicy: + type: string + pools: + items: + properties: + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + annotations: + additionalProperties: + type: string + type: object + containerSecurityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + labels: + additionalProperties: + type: string + type: object + name: + type: string + nodeSelector: + additionalProperties: + type: string + type: object + reclaimStorage: + type: boolean + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeClassName: + type: string + securityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + servers: + format: int32 + type: integer + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + topologySpreadConstraints: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic + maxSkew: + format: int32 + type: integer + minDomains: + format: int32 + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array + volumeClaimTemplate: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + status: + properties: + accessModes: + items: + type: string + type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + conditions: + items: + properties: + lastProbeTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + phase: + type: string + type: object + type: object + volumesPerServer: + format: int32 + type: integer + required: + - servers + - volumeClaimTemplate + - volumesPerServer + type: object + type: array + priorityClassName: + type: string + prometheusOperator: + type: boolean + readiness: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + requestAutoCert: + type: boolean + serviceAccountName: + type: string + serviceMetadata: + properties: + consoleServiceAnnotations: + additionalProperties: + type: string + type: object + consoleServiceLabels: + additionalProperties: + type: string + type: object + minioServiceAnnotations: + additionalProperties: + type: string + type: object + minioServiceLabels: + additionalProperties: + type: string + type: object + type: object + sideCars: + properties: + containers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resizePolicy: + items: + properties: + resourceName: + type: string + restartPolicy: + type: string + required: + - resourceName + - restartPolicy + type: object + type: array + x-kubernetes-list-type: atomic + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + restartPolicy: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + volumeClaimTemplates: + items: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + status: + properties: + accessModes: + items: + type: string + type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + conditions: + items: + properties: + lastProbeTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + phase: + type: string + type: object + type: object + type: array + volumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: + properties: + monitors: + items: + type: string + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver + type: object + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: + type: string + type: object + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + required: + - driver + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + optional: + type: boolean + secretName: + type: string + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + type: object + startup: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + subPath: + type: string + users: + items: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + type: array + required: + - pools + type: object + status: + properties: + availableReplicas: + format: int32 + type: integer + certificates: + nullable: true + properties: + autoCertEnabled: + nullable: true + type: boolean + customCertificates: + nullable: true + properties: + client: + items: + properties: + certName: + type: string + domains: + items: + type: string + type: array + expiresIn: + type: string + expiry: + type: string + serialNo: + type: string + type: object + type: array + minio: + items: + properties: + certName: + type: string + domains: + items: + type: string + type: array + expiresIn: + type: string + expiry: + type: string + serialNo: + type: string + type: object + type: array + minioCAs: + items: + properties: + certName: + type: string + domains: + items: + type: string + type: array + expiresIn: + type: string + expiry: + type: string + serialNo: + type: string + type: object + type: array + type: object + type: object + currentState: + type: string + drivesHealing: + format: int32 + type: integer + drivesOffline: + format: int32 + type: integer + drivesOnline: + format: int32 + type: integer + healthMessage: + type: string + healthStatus: + type: string + pools: + items: + properties: + legacySecurityContext: + type: boolean + ssName: + type: string + state: + type: string + required: + - ssName + - state + type: object + nullable: true + type: array + provisionedBuckets: + type: boolean + provisionedUsers: + type: boolean + revision: + format: int32 + type: integer + syncVersion: + type: string + usage: + properties: + capacity: + format: int64 + type: integer + rawCapacity: + format: int64 + type: integer + rawUsage: + format: int64 + type: integer + tiers: + items: + properties: + Name: + type: string + Type: + type: string + totalSize: + format: int64 + type: integer + required: + - Name + - totalSize + type: object + type: array + usage: + format: int64 + type: integer + type: object + waitingOnReady: + format: date-time + type: string + writeQuorum: + format: int32 + type: integer + required: + - availableReplicas + - certificates + - currentState + - pools + - revision + - syncVersion + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/bundles/certified-operators/5.0.11/manifests/operator_v1_service.yaml b/bundles/certified-operators/5.0.11/manifests/operator_v1_service.yaml new file mode 100644 index 00000000000..011f9599ff8 --- /dev/null +++ b/bundles/certified-operators/5.0.11/manifests/operator_v1_service.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + creationTimestamp: null + labels: + app.kubernetes.io/instance: minio-operator + app.kubernetes.io/name: operator + name: minio-operator + name: operator +spec: + ports: + - name: http + port: 4221 + targetPort: 0 + selector: + name: minio-operator + operator: leader + type: ClusterIP +status: + loadBalancer: {} diff --git a/bundles/certified-operators/5.0.11/manifests/sts.min.io_policybindings.yaml b/bundles/certified-operators/5.0.11/manifests/sts.min.io_policybindings.yaml new file mode 100644 index 00000000000..fbbf279207d --- /dev/null +++ b/bundles/certified-operators/5.0.11/manifests/sts.min.io_policybindings.yaml @@ -0,0 +1,84 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.11.1 + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + creationTimestamp: null + name: policybindings.sts.min.io +spec: + group: sts.min.io + names: + kind: PolicyBinding + listKind: PolicyBindingList + plural: policybindings + shortNames: + - policybinding + singular: policybinding + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.currentState + name: State + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + application: + properties: + namespace: + type: string + serviceaccount: + type: string + required: + - namespace + - serviceaccount + type: object + policies: + items: + type: string + type: array + required: + - application + - policies + type: object + status: + properties: + currentState: + type: string + usage: + nullable: true + properties: + authotizations: + format: int64 + type: integer + type: object + required: + - currentState + - usage + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/bundles/certified-operators/5.0.11/manifests/sts_v1_service.yaml b/bundles/certified-operators/5.0.11/manifests/sts_v1_service.yaml new file mode 100644 index 00000000000..cdec8486952 --- /dev/null +++ b/bundles/certified-operators/5.0.11/manifests/sts_v1_service.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + service.beta.openshift.io/serving-cert-secret-name: sts-tls + creationTimestamp: null + labels: + name: minio-operator + name: sts +spec: + ports: + - name: https + port: 4223 + targetPort: 4223 + selector: + name: minio-operator + type: ClusterIP +status: + loadBalancer: {} diff --git a/bundles/certified-operators/5.0.11/metadata/annotations.yaml b/bundles/certified-operators/5.0.11/metadata/annotations.yaml new file mode 100644 index 00000000000..eb5623e0117 --- /dev/null +++ b/bundles/certified-operators/5.0.11/metadata/annotations.yaml @@ -0,0 +1,12 @@ +annotations: + # Core bundle annotations. + operators.operatorframework.io.bundle.mediatype.v1: registry+v1 + operators.operatorframework.io.bundle.manifests.v1: manifests/ + operators.operatorframework.io.bundle.metadata.v1: metadata/ + operators.operatorframework.io.bundle.package.v1: minio-operator + operators.operatorframework.io.bundle.channels.v1: stable + # Annotations to specify OCP versions compatibility. + com.redhat.openshift.versions: v4.8-v4.13 + # Annotation to add default bundle channel as potential is declared + operators.operatorframework.io.bundle.channel.default.v1: stable + operatorframework.io/suggested-namespace: minio-operator diff --git a/bundles/community-operators/5.0.11/manifests/console-env_v1_configmap.yaml b/bundles/community-operators/5.0.11/manifests/console-env_v1_configmap.yaml new file mode 100644 index 00000000000..1c276708cd0 --- /dev/null +++ b/bundles/community-operators/5.0.11/manifests/console-env_v1_configmap.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +data: + CONSOLE_PORT: "9090" + CONSOLE_TLS_PORT: "9443" +kind: ConfigMap +metadata: + annotations: + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + name: console-env diff --git a/bundles/community-operators/5.0.11/manifests/console-sa-secret_v1_secret.yaml b/bundles/community-operators/5.0.11/manifests/console-sa-secret_v1_secret.yaml new file mode 100644 index 00000000000..8f7c7e18363 --- /dev/null +++ b/bundles/community-operators/5.0.11/manifests/console-sa-secret_v1_secret.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Secret +metadata: + annotations: + kubernetes.io/service-account.name: console-sa + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + name: console-sa-secret +type: kubernetes.io/service-account-token diff --git a/bundles/community-operators/5.0.11/manifests/console_v1_service.yaml b/bundles/community-operators/5.0.11/manifests/console_v1_service.yaml new file mode 100644 index 00000000000..1d2af3ffb8a --- /dev/null +++ b/bundles/community-operators/5.0.11/manifests/console_v1_service.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + service.beta.openshift.io/serving-cert-secret-name: console-tls + creationTimestamp: null + labels: + app.kubernetes.io/instance: minio-operator + app.kubernetes.io/name: operator + name: console + name: console +spec: + ports: + - name: http + port: 9090 + targetPort: 0 + - name: https + port: 9443 + targetPort: 0 + selector: + app: console +status: + loadBalancer: {} diff --git a/bundles/community-operators/5.0.11/manifests/minio-operator.clusterserviceversion.yaml b/bundles/community-operators/5.0.11/manifests/minio-operator.clusterserviceversion.yaml new file mode 100644 index 00000000000..2e400febe84 --- /dev/null +++ b/bundles/community-operators/5.0.11/manifests/minio-operator.clusterserviceversion.yaml @@ -0,0 +1,769 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: |- + [ + { + "apiVersion": "minio.min.io/v2", + "kind": "Tenant", + "metadata": { + "annotations": { + "prometheus.io/path": "/minio/v2/metrics/cluster", + "prometheus.io/port": "9000", + "prometheus.io/scrape": "true" + }, + "labels": { + "app": "minio" + }, + "name": "myminio", + "namespace": "minio-operator" + }, + "spec": { + "certConfig": {}, + "configuration": { + "name": "storage-configuration" + }, + "env": [], + "externalCaCertSecret": [], + "externalCertSecret": [], + "externalClientCertSecrets": [], + "features": { + "bucketDNS": false, + "domains": {} + }, + "image": "quay.io/minio/minio@sha256:7c98dbaba9132bb804c73baeb43f70db20a0c746277c88a9c9c9d3dc188127bb", + "imagePullSecret": {}, + "mountPath": "/export", + "podManagementPolicy": "Parallel", + "pools": [ + { + "containerSecurityContext": {}, + "name": "pool-0", + "securityContext": {}, + "servers": 4, + "volumeClaimTemplate": { + "metadata": { + "name": "data" + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "2Gi" + } + } + } + }, + "volumesPerServer": 2 + } + ], + "priorityClassName": "", + "requestAutoCert": true, + "serviceAccountName": "", + "serviceMetadata": { + "consoleServiceAnnotations": {}, + "consoleServiceLabels": {}, + "minioServiceAnnotations": {}, + "minioServiceLabels": {} + }, + "subPath": "", + "users": [ + { + "name": "storage-user" + } + ] + } + } + ] + capabilities: Full Lifecycle + categories: AI/Machine Learning, Big Data, Cloud Provider, Storage + description: |- + MinIO is a Kubernetes-native high performance object store with an + S3-compatible API. The MinIO Operator supports deploying MinIO Tenants + onto any Kubernetes. + k8sMinVersion: "1.18" + operatorframework.io/suggested-namespace: minio-operator + operators.operatorframework.io/builder: operator-sdk-v1.22.2 + operators.operatorframework.io/project_layout: unknown + repository: https://github.com/minio/operator + containerImage: quay.io/minio/operator:v5.0.11 + name: minio-operator.v5.0.11 + namespace: minio-operator +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - kind: PolicyBinding + name: policybindings.sts.min.io + version: v1alpha1 + - kind: Tenant + name: tenants.minio.min.io + version: v2 + description: |- + ## Overview + + + The MinIO Operator brings native support for deploying and managing MinIO + deployments (“MinIO Tenants”) on a Kubernetes cluster. + + + MinIO is a high performance, Kubernetes native object storage suite. With an + extensive list of enterprise features, it is scalable, secure and resilient + while remaining remarkably simple to deploy and operate at scale. + Software-defined, MinIO can run on any infrastructure and in any cloud - + public, private or edge. MinIO is the world's fastest object storage and can + run the broadest set of workloads in the industry. It is widely considered + to be the leader in compatibility with Amazon's S3 API. + + ## Features + + + The MinIO Operator takes care of the deployment of MinIO Tenant along with: + + * TLS Certificate Management + + * Configuration of the encryption at rest + + * Cluster expansion + + * Hot Updates + + * Users and Buckets bootstrapping + + ## Prerequisites for enabling this Operator + + * At least Kubernetes 1.18 + + * [CSR + Capability](https://kubernetes.io/docs/reference/access-authn-authz/certificate-signing-requests/) + must be enabled + + * Locally attached volumes for performance or some CSI to provision block + storage to the MinIO pods. + displayName: Minio Operator + icon: + - base64data: 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 + mediatype: image/png + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - "" + resources: + - secrets + verbs: + - get + - watch + - create + - list + - patch + - update + - delete + - deletecollection + - apiGroups: + - "" + resources: + - namespaces + - services + - events + - resourcequotas + - nodes + verbs: + - get + - watch + - create + - list + - patch + - apiGroups: + - "" + resources: + - pods + verbs: + - get + - watch + - create + - list + - patch + - delete + - deletecollection + - apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - deletecollection + - list + - get + - watch + - update + - apiGroups: + - storage.k8s.io + resources: + - storageclasses + verbs: + - get + - watch + - create + - list + - patch + - apiGroups: + - apps + resources: + - statefulsets + - deployments + verbs: + - get + - create + - list + - patch + - watch + - update + - delete + - apiGroups: + - batch + resources: + - jobs + verbs: + - get + - create + - list + - patch + - watch + - update + - delete + - apiGroups: + - certificates.k8s.io + resources: + - certificatesigningrequests + - certificatesigningrequests/approval + - certificatesigningrequests/status + verbs: + - update + - create + - get + - delete + - list + - apiGroups: + - minio.min.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - min.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - "" + resources: + - persistentvolumes + verbs: + - get + - list + - watch + - create + - delete + - apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - get + - list + - watch + - update + - apiGroups: + - "" + resources: + - events + verbs: + - create + - list + - watch + - update + - patch + - apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshots + verbs: + - get + - list + - apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshotcontents + verbs: + - get + - list + - apiGroups: + - storage.k8s.io + resources: + - csinodes + verbs: + - get + - list + - watch + - apiGroups: + - storage.k8s.io + resources: + - volumeattachments + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - endpoints + verbs: + - get + - list + - watch + - create + - update + - delete + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - delete + - apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - get + - list + - watch + - create + - update + - delete + - apiGroups: + - "" + resources: + - pod + - pods/log + verbs: + - get + - list + - watch + serviceAccountName: console-sa + - rules: + - apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - get + - update + - apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - get + - update + - list + - delete + - apiGroups: + - "" + resources: + - namespaces + - nodes + verbs: + - get + - watch + - list + - apiGroups: + - "" + resources: + - pods + - services + - events + - configmaps + verbs: + - get + - watch + - create + - list + - delete + - deletecollection + - update + - patch + - apiGroups: + - "" + resources: + - secrets + verbs: + - get + - watch + - create + - update + - list + - delete + - deletecollection + - apiGroups: + - "" + resources: + - serviceaccounts + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - rbac.authorization.k8s.io + resources: + - roles + - rolebindings + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - apps + resources: + - statefulsets + - deployments + - deployments/finalizers + verbs: + - get + - create + - list + - patch + - watch + - update + - delete + - apiGroups: + - batch + resources: + - jobs + verbs: + - get + - create + - list + - patch + - watch + - update + - delete + - apiGroups: + - certificates.k8s.io + resources: + - certificatesigningrequests + - certificatesigningrequests/approval + - certificatesigningrequests/status + verbs: + - update + - create + - get + - delete + - list + - apiGroups: + - certificates.k8s.io + resourceNames: + - kubernetes.io/legacy-unknown + - kubernetes.io/kube-apiserver-client + - kubernetes.io/kubelet-serving + - beta.eks.amazonaws.com/app-serving + resources: + - signers + verbs: + - approve + - sign + - apiGroups: + - authentication.k8s.io + resources: + - tokenreviews + verbs: + - create + - apiGroups: + - minio.min.io + - sts.min.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - min.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - monitoring.coreos.com + resources: + - prometheuses + verbs: + - '*' + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - update + - create + - apiGroups: + - policy + resources: + - poddisruptionbudgets + verbs: + - create + - delete + - get + - list + - patch + - update + - deletecollection + serviceAccountName: minio-operator + deployments: + - label: + app.kubernetes.io/instance: minio-operator + app.kubernetes.io/name: operator + name: console + spec: + replicas: 1 + selector: + matchLabels: + app: console + strategy: {} + template: + metadata: + annotations: + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + labels: + app: console + app.kubernetes.io/instance: minio-operator-console + app.kubernetes.io/name: operator + spec: + containers: + - args: + - ui + - --certs-dir=/tmp/certs + image: quay.io/minio/operator:v5.0.11 + imagePullPolicy: IfNotPresent + name: console + ports: + - containerPort: 9090 + name: http + - containerPort: 9443 + name: https + resources: {} + securityContext: {} + volumeMounts: + - mountPath: /tmp/certs + name: tls-certificates + - mountPath: /tmp/certs/CAs + name: tmp + serviceAccountName: console-sa + volumes: + - name: tls-certificates + projected: + defaultMode: 420 + sources: + - secret: + items: + - key: tls.crt + path: public.crt + - key: tls.key + path: private.key + name: console-tls + optional: true + - configMap: + items: + - key: service-ca.crt + path: CAs/ca.crt + name: openshift-service-ca.crt + optional: true + - emptyDir: {} + name: tmp + - label: + app.kubernetes.io/instance: minio-operator + app.kubernetes.io/name: operator + name: minio-operator + spec: + replicas: 1 + selector: + matchLabels: + name: minio-operator + strategy: + type: Recreate + template: + metadata: + annotations: + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + labels: + app.kubernetes.io/instance: minio-operator + app.kubernetes.io/name: operator + name: minio-operator + spec: + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: name + operator: In + values: + - minio-operator + topologyKey: kubernetes.io/hostname + containers: + - args: + - controller + env: + - name: MINIO_OPERATOR_RUNTIME + value: OpenShift + - name: MINIO_CONSOLE_TLS_ENABLE + value: "on" + - name: OPERATOR_STS_ENABLED + value: "on" + image: quay.io/minio/operator:v5.0.11 + imagePullPolicy: IfNotPresent + name: minio-operator + resources: + requests: + cpu: 200m + ephemeral-storage: 500Mi + memory: 256Mi + securityContext: {} + volumeMounts: + - mountPath: /tmp/service-ca + name: openshift-service-ca + - mountPath: /tmp/csr-signer-ca + name: openshift-csr-signer-ca + - mountPath: /tmp/sts + name: sts-tls + serviceAccountName: minio-operator + volumes: + - name: sts-tls + projected: + defaultMode: 420 + sources: + - secret: + items: + - key: tls.crt + path: public.crt + - key: tls.key + path: private.key + name: sts-tls + optional: true + - configMap: + items: + - key: service-ca.crt + path: service-ca.crt + name: openshift-service-ca.crt + optional: true + name: openshift-service-ca + - name: openshift-csr-signer-ca + projected: + defaultMode: 420 + sources: + - secret: + items: + - key: tls.crt + path: tls.crt + name: openshift-csr-signer-ca + optional: true + strategy: deployment + installModes: + - supported: false + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - S3 + - MinIO + - Object Storage + labels: + operatorframework.io/arch.386: supported + operatorframework.io/arch.amd64: supported + operatorframework.io/arch.amd64p32: supported + operatorframework.io/arch.arm: supported + operatorframework.io/arch.arm64: supported + operatorframework.io/arch.arm64be: supported + operatorframework.io/arch.armbe: supported + operatorframework.io/arch.loong64: supported + operatorframework.io/arch.mips: supported + operatorframework.io/arch.mips64: supported + operatorframework.io/arch.mips64le: supported + operatorframework.io/arch.mips64p32: supported + operatorframework.io/arch.mips64p32le: supported + operatorframework.io/arch.mipsle: supported + operatorframework.io/arch.ppc: supported + operatorframework.io/arch.ppc64: supported + operatorframework.io/arch.ppc64le: supported + operatorframework.io/arch.riscv: supported + operatorframework.io/arch.riscv64: supported + operatorframework.io/arch.s390: supported + operatorframework.io/arch.s390x: supported + operatorframework.io/arch.sparc: supported + operatorframework.io/arch.sparc64: supported + operatorframework.io/arch.wasm: supported + operatorframework.io/os.aix: supported + operatorframework.io/os.android: supported + operatorframework.io/os.darwin: supported + operatorframework.io/os.dragonfly: supported + operatorframework.io/os.freebsd: supported + operatorframework.io/os.hurd: supported + operatorframework.io/os.illumos: supported + operatorframework.io/os.ios: supported + operatorframework.io/os.js: supported + operatorframework.io/os.linux: supported + operatorframework.io/os.nacl: supported + operatorframework.io/os.netbsd: supported + operatorframework.io/os.openbsd: supported + operatorframework.io/os.plan9: supported + operatorframework.io/os.solaris: supported + operatorframework.io/os.windows: supported + operatorframework.io/os.zos: supported + links: + - name: Website + url: https://min.io + - name: Support + url: https://subnet.min.io + - name: Github + url: https://github.com/minio/operator + maintainers: + - email: dev@min.io + name: MinIO Team + maturity: stable + provider: + name: MinIO Inc + url: https://min.io + relatedImages: + - image: minio/operator@sha256:58c5114003fdc38877db2dc6ca45bc4b16572cc3e40c2fcc20702c5ccaa01caa + name: console + - image: minio/operator@sha256:58c5114003fdc38877db2dc6ca45bc4b16572cc3e40c2fcc20702c5ccaa01caa + name: minio-operator + - image: quay.io/minio/minio@sha256:7c98dbaba9132bb804c73baeb43f70db20a0c746277c88a9c9c9d3dc188127bb + name: minio-7c98dbaba9132bb804c73baeb43f70db20a0c746277c88a9c9c9d3dc188127bb-annotation + version: 5.0.11 + replaces: "null" diff --git a/bundles/community-operators/5.0.11/manifests/minio.min.io_tenants.yaml b/bundles/community-operators/5.0.11/manifests/minio.min.io_tenants.yaml new file mode 100644 index 00000000000..697304ebed5 --- /dev/null +++ b/bundles/community-operators/5.0.11/manifests/minio.min.io_tenants.yaml @@ -0,0 +1,5040 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.11.1 + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + creationTimestamp: null + name: tenants.minio.min.io +spec: + group: minio.min.io + names: + kind: Tenant + listKind: TenantList + plural: tenants + shortNames: + - tenant + singular: tenant + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.currentState + name: State + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v2 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + scheduler: + properties: + name: + type: string + required: + - name + type: object + spec: + properties: + additionalVolumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + additionalVolumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: + properties: + monitors: + items: + type: string + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver + type: object + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: + type: string + type: object + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + required: + - driver + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + optional: + type: boolean + secretName: + type: string + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + buckets: + items: + properties: + name: + type: string + objectLock: + type: boolean + region: + type: string + type: object + type: array + certConfig: + properties: + commonName: + type: string + dnsNames: + items: + type: string + type: array + organizationName: + items: + type: string + type: array + type: object + configuration: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + credsSecret: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + exposeServices: + properties: + console: + type: boolean + minio: + type: boolean + type: object + externalCaCertSecret: + items: + properties: + name: + type: string + type: + type: string + required: + - name + type: object + type: array + externalCertSecret: + items: + properties: + name: + type: string + type: + type: string + required: + - name + type: object + type: array + externalClientCertSecret: + properties: + name: + type: string + type: + type: string + required: + - name + type: object + externalClientCertSecrets: + items: + properties: + name: + type: string + type: + type: string + required: + - name + type: object + type: array + features: + properties: + bucketDNS: + type: boolean + domains: + properties: + console: + type: string + minio: + items: + type: string + type: array + type: object + enableSFTP: + type: boolean + type: object + image: + type: string + imagePullPolicy: + type: string + imagePullSecret: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + initContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resizePolicy: + items: + properties: + resourceName: + type: string + restartPolicy: + type: string + required: + - resourceName + - restartPolicy + type: object + type: array + x-kubernetes-list-type: atomic + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + restartPolicy: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + kes: + properties: + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + annotations: + additionalProperties: + type: string + type: object + clientCertSecret: + properties: + name: + type: string + type: + type: string + required: + - name + type: object + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + externalCertSecret: + properties: + name: + type: string + type: + type: string + required: + - name + type: object + gcpCredentialSecretName: + type: string + gcpWorkloadIdentityPool: + type: string + image: + type: string + imagePullPolicy: + type: string + kesSecret: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + keyName: + type: string + labels: + additionalProperties: + type: string + type: object + nodeSelector: + additionalProperties: + type: string + type: object + replicas: + format: int32 + type: integer + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + serviceAccountName: + type: string + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + topologySpreadConstraints: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic + maxSkew: + format: int32 + type: integer + minDomains: + format: int32 + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array + required: + - kesSecret + type: object + liveness: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + logging: + properties: + anonymous: + type: boolean + json: + type: boolean + quiet: + type: boolean + type: object + mountPath: + type: string + podManagementPolicy: + type: string + pools: + items: + properties: + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + annotations: + additionalProperties: + type: string + type: object + containerSecurityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + labels: + additionalProperties: + type: string + type: object + name: + type: string + nodeSelector: + additionalProperties: + type: string + type: object + reclaimStorage: + type: boolean + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeClassName: + type: string + securityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + servers: + format: int32 + type: integer + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + topologySpreadConstraints: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic + maxSkew: + format: int32 + type: integer + minDomains: + format: int32 + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array + volumeClaimTemplate: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + status: + properties: + accessModes: + items: + type: string + type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + conditions: + items: + properties: + lastProbeTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + phase: + type: string + type: object + type: object + volumesPerServer: + format: int32 + type: integer + required: + - servers + - volumeClaimTemplate + - volumesPerServer + type: object + type: array + priorityClassName: + type: string + prometheusOperator: + type: boolean + readiness: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + requestAutoCert: + type: boolean + serviceAccountName: + type: string + serviceMetadata: + properties: + consoleServiceAnnotations: + additionalProperties: + type: string + type: object + consoleServiceLabels: + additionalProperties: + type: string + type: object + minioServiceAnnotations: + additionalProperties: + type: string + type: object + minioServiceLabels: + additionalProperties: + type: string + type: object + type: object + sideCars: + properties: + containers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resizePolicy: + items: + properties: + resourceName: + type: string + restartPolicy: + type: string + required: + - resourceName + - restartPolicy + type: object + type: array + x-kubernetes-list-type: atomic + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + restartPolicy: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + volumeClaimTemplates: + items: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + status: + properties: + accessModes: + items: + type: string + type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + conditions: + items: + properties: + lastProbeTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + phase: + type: string + type: object + type: object + type: array + volumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: + properties: + monitors: + items: + type: string + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver + type: object + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: + type: string + type: object + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + required: + - driver + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + optional: + type: boolean + secretName: + type: string + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + type: object + startup: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + subPath: + type: string + users: + items: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + type: array + required: + - pools + type: object + status: + properties: + availableReplicas: + format: int32 + type: integer + certificates: + nullable: true + properties: + autoCertEnabled: + nullable: true + type: boolean + customCertificates: + nullable: true + properties: + client: + items: + properties: + certName: + type: string + domains: + items: + type: string + type: array + expiresIn: + type: string + expiry: + type: string + serialNo: + type: string + type: object + type: array + minio: + items: + properties: + certName: + type: string + domains: + items: + type: string + type: array + expiresIn: + type: string + expiry: + type: string + serialNo: + type: string + type: object + type: array + minioCAs: + items: + properties: + certName: + type: string + domains: + items: + type: string + type: array + expiresIn: + type: string + expiry: + type: string + serialNo: + type: string + type: object + type: array + type: object + type: object + currentState: + type: string + drivesHealing: + format: int32 + type: integer + drivesOffline: + format: int32 + type: integer + drivesOnline: + format: int32 + type: integer + healthMessage: + type: string + healthStatus: + type: string + pools: + items: + properties: + legacySecurityContext: + type: boolean + ssName: + type: string + state: + type: string + required: + - ssName + - state + type: object + nullable: true + type: array + provisionedBuckets: + type: boolean + provisionedUsers: + type: boolean + revision: + format: int32 + type: integer + syncVersion: + type: string + usage: + properties: + capacity: + format: int64 + type: integer + rawCapacity: + format: int64 + type: integer + rawUsage: + format: int64 + type: integer + tiers: + items: + properties: + Name: + type: string + Type: + type: string + totalSize: + format: int64 + type: integer + required: + - Name + - totalSize + type: object + type: array + usage: + format: int64 + type: integer + type: object + waitingOnReady: + format: date-time + type: string + writeQuorum: + format: int32 + type: integer + required: + - availableReplicas + - certificates + - currentState + - pools + - revision + - syncVersion + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/bundles/community-operators/5.0.11/manifests/operator_v1_service.yaml b/bundles/community-operators/5.0.11/manifests/operator_v1_service.yaml new file mode 100644 index 00000000000..011f9599ff8 --- /dev/null +++ b/bundles/community-operators/5.0.11/manifests/operator_v1_service.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + creationTimestamp: null + labels: + app.kubernetes.io/instance: minio-operator + app.kubernetes.io/name: operator + name: minio-operator + name: operator +spec: + ports: + - name: http + port: 4221 + targetPort: 0 + selector: + name: minio-operator + operator: leader + type: ClusterIP +status: + loadBalancer: {} diff --git a/bundles/community-operators/5.0.11/manifests/sts.min.io_policybindings.yaml b/bundles/community-operators/5.0.11/manifests/sts.min.io_policybindings.yaml new file mode 100644 index 00000000000..fbbf279207d --- /dev/null +++ b/bundles/community-operators/5.0.11/manifests/sts.min.io_policybindings.yaml @@ -0,0 +1,84 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.11.1 + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + creationTimestamp: null + name: policybindings.sts.min.io +spec: + group: sts.min.io + names: + kind: PolicyBinding + listKind: PolicyBindingList + plural: policybindings + shortNames: + - policybinding + singular: policybinding + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.currentState + name: State + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + application: + properties: + namespace: + type: string + serviceaccount: + type: string + required: + - namespace + - serviceaccount + type: object + policies: + items: + type: string + type: array + required: + - application + - policies + type: object + status: + properties: + currentState: + type: string + usage: + nullable: true + properties: + authotizations: + format: int64 + type: integer + type: object + required: + - currentState + - usage + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/bundles/community-operators/5.0.11/manifests/sts_v1_service.yaml b/bundles/community-operators/5.0.11/manifests/sts_v1_service.yaml new file mode 100644 index 00000000000..cdec8486952 --- /dev/null +++ b/bundles/community-operators/5.0.11/manifests/sts_v1_service.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + service.beta.openshift.io/serving-cert-secret-name: sts-tls + creationTimestamp: null + labels: + name: minio-operator + name: sts +spec: + ports: + - name: https + port: 4223 + targetPort: 4223 + selector: + name: minio-operator + type: ClusterIP +status: + loadBalancer: {} diff --git a/bundles/community-operators/5.0.11/metadata/annotations.yaml b/bundles/community-operators/5.0.11/metadata/annotations.yaml new file mode 100644 index 00000000000..eb5623e0117 --- /dev/null +++ b/bundles/community-operators/5.0.11/metadata/annotations.yaml @@ -0,0 +1,12 @@ +annotations: + # Core bundle annotations. + operators.operatorframework.io.bundle.mediatype.v1: registry+v1 + operators.operatorframework.io.bundle.manifests.v1: manifests/ + operators.operatorframework.io.bundle.metadata.v1: metadata/ + operators.operatorframework.io.bundle.package.v1: minio-operator + operators.operatorframework.io.bundle.channels.v1: stable + # Annotations to specify OCP versions compatibility. + com.redhat.openshift.versions: v4.8-v4.13 + # Annotation to add default bundle channel as potential is declared + operators.operatorframework.io.bundle.channel.default.v1: stable + operatorframework.io/suggested-namespace: minio-operator diff --git a/bundles/redhat-marketplace/5.0.11/manifests/console-env_v1_configmap.yaml b/bundles/redhat-marketplace/5.0.11/manifests/console-env_v1_configmap.yaml new file mode 100644 index 00000000000..1c276708cd0 --- /dev/null +++ b/bundles/redhat-marketplace/5.0.11/manifests/console-env_v1_configmap.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +data: + CONSOLE_PORT: "9090" + CONSOLE_TLS_PORT: "9443" +kind: ConfigMap +metadata: + annotations: + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + name: console-env diff --git a/bundles/redhat-marketplace/5.0.11/manifests/console-sa-secret_v1_secret.yaml b/bundles/redhat-marketplace/5.0.11/manifests/console-sa-secret_v1_secret.yaml new file mode 100644 index 00000000000..8f7c7e18363 --- /dev/null +++ b/bundles/redhat-marketplace/5.0.11/manifests/console-sa-secret_v1_secret.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Secret +metadata: + annotations: + kubernetes.io/service-account.name: console-sa + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + name: console-sa-secret +type: kubernetes.io/service-account-token diff --git a/bundles/redhat-marketplace/5.0.11/manifests/console_v1_service.yaml b/bundles/redhat-marketplace/5.0.11/manifests/console_v1_service.yaml new file mode 100644 index 00000000000..1d2af3ffb8a --- /dev/null +++ b/bundles/redhat-marketplace/5.0.11/manifests/console_v1_service.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + service.beta.openshift.io/serving-cert-secret-name: console-tls + creationTimestamp: null + labels: + app.kubernetes.io/instance: minio-operator + app.kubernetes.io/name: operator + name: console + name: console +spec: + ports: + - name: http + port: 9090 + targetPort: 0 + - name: https + port: 9443 + targetPort: 0 + selector: + app: console +status: + loadBalancer: {} diff --git a/bundles/redhat-marketplace/5.0.11/manifests/minio-operator-rhmp.clusterserviceversion.yaml b/bundles/redhat-marketplace/5.0.11/manifests/minio-operator-rhmp.clusterserviceversion.yaml new file mode 100644 index 00000000000..a0fca9e5e29 --- /dev/null +++ b/bundles/redhat-marketplace/5.0.11/manifests/minio-operator-rhmp.clusterserviceversion.yaml @@ -0,0 +1,771 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: |- + [ + { + "apiVersion": "minio.min.io/v2", + "kind": "Tenant", + "metadata": { + "annotations": { + "prometheus.io/path": "/minio/v2/metrics/cluster", + "prometheus.io/port": "9000", + "prometheus.io/scrape": "true" + }, + "labels": { + "app": "minio" + }, + "name": "myminio", + "namespace": "minio-operator" + }, + "spec": { + "certConfig": {}, + "configuration": { + "name": "storage-configuration" + }, + "env": [], + "externalCaCertSecret": [], + "externalCertSecret": [], + "externalClientCertSecrets": [], + "features": { + "bucketDNS": false, + "domains": {} + }, + "image": "quay.io/minio/minio@sha256:7c98dbaba9132bb804c73baeb43f70db20a0c746277c88a9c9c9d3dc188127bb", + "imagePullSecret": {}, + "mountPath": "/export", + "podManagementPolicy": "Parallel", + "pools": [ + { + "containerSecurityContext": {}, + "name": "pool-0", + "securityContext": {}, + "servers": 4, + "volumeClaimTemplate": { + "metadata": { + "name": "data" + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "2Gi" + } + } + } + }, + "volumesPerServer": 2 + } + ], + "priorityClassName": "", + "requestAutoCert": true, + "serviceAccountName": "", + "serviceMetadata": { + "consoleServiceAnnotations": {}, + "consoleServiceLabels": {}, + "minioServiceAnnotations": {}, + "minioServiceLabels": {} + }, + "subPath": "", + "users": [ + { + "name": "storage-user" + } + ] + } + } + ] + capabilities: Full Lifecycle + categories: AI/Machine Learning, Big Data, Cloud Provider, Storage + description: |- + MinIO is a Kubernetes-native high performance object store with an + S3-compatible API. The MinIO Operator supports deploying MinIO Tenants + onto any Kubernetes. + k8sMinVersion: "1.18" + marketplace.openshift.io/remote-workflow: https://marketplace.redhat.com/en-us/operators/minio-operator-rhmp/pricing?utm_source=openshift_console + marketplace.openshift.io/support-workflow: https://marketplace.redhat.com/en-us/operators/minio-operator-rhmp/support?utm_source=openshift_console + operatorframework.io/suggested-namespace: minio-operator + operators.operatorframework.io/builder: operator-sdk-v1.22.2 + operators.operatorframework.io/project_layout: unknown + repository: https://github.com/minio/operator + containerImage: quay.io/minio/operator:v5.0.11 + name: minio-operator-rhmp.v5.0.11 + namespace: minio-operator +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - kind: PolicyBinding + name: policybindings.sts.min.io + version: v1alpha1 + - kind: Tenant + name: tenants.minio.min.io + version: v2 + description: |- + ## Overview + + + The MinIO Operator brings native support for deploying and managing MinIO + deployments (“MinIO Tenants”) on a Kubernetes cluster. + + + MinIO is a high performance, Kubernetes native object storage suite. With an + extensive list of enterprise features, it is scalable, secure and resilient + while remaining remarkably simple to deploy and operate at scale. + Software-defined, MinIO can run on any infrastructure and in any cloud - + public, private or edge. MinIO is the world's fastest object storage and can + run the broadest set of workloads in the industry. It is widely considered + to be the leader in compatibility with Amazon's S3 API. + + ## Features + + + The MinIO Operator takes care of the deployment of MinIO Tenant along with: + + * TLS Certificate Management + + * Configuration of the encryption at rest + + * Cluster expansion + + * Hot Updates + + * Users and Buckets bootstrapping + + ## Prerequisites for enabling this Operator + + * At least Kubernetes 1.18 + + * [CSR + Capability](https://kubernetes.io/docs/reference/access-authn-authz/certificate-signing-requests/) + must be enabled + + * Locally attached volumes for performance or some CSI to provision block + storage to the MinIO pods. + displayName: Minio Operator Rhmp + icon: + - base64data: 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 + mediatype: image/png + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - "" + resources: + - secrets + verbs: + - get + - watch + - create + - list + - patch + - update + - delete + - deletecollection + - apiGroups: + - "" + resources: + - namespaces + - services + - events + - resourcequotas + - nodes + verbs: + - get + - watch + - create + - list + - patch + - apiGroups: + - "" + resources: + - pods + verbs: + - get + - watch + - create + - list + - patch + - delete + - deletecollection + - apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - deletecollection + - list + - get + - watch + - update + - apiGroups: + - storage.k8s.io + resources: + - storageclasses + verbs: + - get + - watch + - create + - list + - patch + - apiGroups: + - apps + resources: + - statefulsets + - deployments + verbs: + - get + - create + - list + - patch + - watch + - update + - delete + - apiGroups: + - batch + resources: + - jobs + verbs: + - get + - create + - list + - patch + - watch + - update + - delete + - apiGroups: + - certificates.k8s.io + resources: + - certificatesigningrequests + - certificatesigningrequests/approval + - certificatesigningrequests/status + verbs: + - update + - create + - get + - delete + - list + - apiGroups: + - minio.min.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - min.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - "" + resources: + - persistentvolumes + verbs: + - get + - list + - watch + - create + - delete + - apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - get + - list + - watch + - update + - apiGroups: + - "" + resources: + - events + verbs: + - create + - list + - watch + - update + - patch + - apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshots + verbs: + - get + - list + - apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshotcontents + verbs: + - get + - list + - apiGroups: + - storage.k8s.io + resources: + - csinodes + verbs: + - get + - list + - watch + - apiGroups: + - storage.k8s.io + resources: + - volumeattachments + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - endpoints + verbs: + - get + - list + - watch + - create + - update + - delete + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - delete + - apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - get + - list + - watch + - create + - update + - delete + - apiGroups: + - "" + resources: + - pod + - pods/log + verbs: + - get + - list + - watch + serviceAccountName: console-sa + - rules: + - apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - get + - update + - apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - get + - update + - list + - delete + - apiGroups: + - "" + resources: + - namespaces + - nodes + verbs: + - get + - watch + - list + - apiGroups: + - "" + resources: + - pods + - services + - events + - configmaps + verbs: + - get + - watch + - create + - list + - delete + - deletecollection + - update + - patch + - apiGroups: + - "" + resources: + - secrets + verbs: + - get + - watch + - create + - update + - list + - delete + - deletecollection + - apiGroups: + - "" + resources: + - serviceaccounts + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - rbac.authorization.k8s.io + resources: + - roles + - rolebindings + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - apps + resources: + - statefulsets + - deployments + - deployments/finalizers + verbs: + - get + - create + - list + - patch + - watch + - update + - delete + - apiGroups: + - batch + resources: + - jobs + verbs: + - get + - create + - list + - patch + - watch + - update + - delete + - apiGroups: + - certificates.k8s.io + resources: + - certificatesigningrequests + - certificatesigningrequests/approval + - certificatesigningrequests/status + verbs: + - update + - create + - get + - delete + - list + - apiGroups: + - certificates.k8s.io + resourceNames: + - kubernetes.io/legacy-unknown + - kubernetes.io/kube-apiserver-client + - kubernetes.io/kubelet-serving + - beta.eks.amazonaws.com/app-serving + resources: + - signers + verbs: + - approve + - sign + - apiGroups: + - authentication.k8s.io + resources: + - tokenreviews + verbs: + - create + - apiGroups: + - minio.min.io + - sts.min.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - min.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - monitoring.coreos.com + resources: + - prometheuses + verbs: + - '*' + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - update + - create + - apiGroups: + - policy + resources: + - poddisruptionbudgets + verbs: + - create + - delete + - get + - list + - patch + - update + - deletecollection + serviceAccountName: minio-operator + deployments: + - label: + app.kubernetes.io/instance: minio-operator + app.kubernetes.io/name: operator + name: console + spec: + replicas: 1 + selector: + matchLabels: + app: console + strategy: {} + template: + metadata: + annotations: + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + labels: + app: console + app.kubernetes.io/instance: minio-operator-console + app.kubernetes.io/name: operator + spec: + containers: + - args: + - ui + - --certs-dir=/tmp/certs + image: quay.io/minio/operator:v5.0.11 + imagePullPolicy: IfNotPresent + name: console + ports: + - containerPort: 9090 + name: http + - containerPort: 9443 + name: https + resources: {} + securityContext: {} + volumeMounts: + - mountPath: /tmp/certs + name: tls-certificates + - mountPath: /tmp/certs/CAs + name: tmp + serviceAccountName: console-sa + volumes: + - name: tls-certificates + projected: + defaultMode: 420 + sources: + - secret: + items: + - key: tls.crt + path: public.crt + - key: tls.key + path: private.key + name: console-tls + optional: true + - configMap: + items: + - key: service-ca.crt + path: CAs/ca.crt + name: openshift-service-ca.crt + optional: true + - emptyDir: {} + name: tmp + - label: + app.kubernetes.io/instance: minio-operator + app.kubernetes.io/name: operator + name: minio-operator + spec: + replicas: 1 + selector: + matchLabels: + name: minio-operator + strategy: + type: Recreate + template: + metadata: + annotations: + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + labels: + app.kubernetes.io/instance: minio-operator + app.kubernetes.io/name: operator + name: minio-operator + spec: + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: name + operator: In + values: + - minio-operator + topologyKey: kubernetes.io/hostname + containers: + - args: + - controller + env: + - name: MINIO_OPERATOR_RUNTIME + value: OpenShift + - name: MINIO_CONSOLE_TLS_ENABLE + value: "on" + - name: OPERATOR_STS_ENABLED + value: "on" + image: quay.io/minio/operator:v5.0.11 + imagePullPolicy: IfNotPresent + name: minio-operator + resources: + requests: + cpu: 200m + ephemeral-storage: 500Mi + memory: 256Mi + securityContext: {} + volumeMounts: + - mountPath: /tmp/service-ca + name: openshift-service-ca + - mountPath: /tmp/csr-signer-ca + name: openshift-csr-signer-ca + - mountPath: /tmp/sts + name: sts-tls + serviceAccountName: minio-operator + volumes: + - name: sts-tls + projected: + defaultMode: 420 + sources: + - secret: + items: + - key: tls.crt + path: public.crt + - key: tls.key + path: private.key + name: sts-tls + optional: true + - configMap: + items: + - key: service-ca.crt + path: service-ca.crt + name: openshift-service-ca.crt + optional: true + name: openshift-service-ca + - name: openshift-csr-signer-ca + projected: + defaultMode: 420 + sources: + - secret: + items: + - key: tls.crt + path: tls.crt + name: openshift-csr-signer-ca + optional: true + strategy: deployment + installModes: + - supported: false + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - S3 + - MinIO + - Object Storage + labels: + operatorframework.io/arch.386: supported + operatorframework.io/arch.amd64: supported + operatorframework.io/arch.amd64p32: supported + operatorframework.io/arch.arm: supported + operatorframework.io/arch.arm64: supported + operatorframework.io/arch.arm64be: supported + operatorframework.io/arch.armbe: supported + operatorframework.io/arch.loong64: supported + operatorframework.io/arch.mips: supported + operatorframework.io/arch.mips64: supported + operatorframework.io/arch.mips64le: supported + operatorframework.io/arch.mips64p32: supported + operatorframework.io/arch.mips64p32le: supported + operatorframework.io/arch.mipsle: supported + operatorframework.io/arch.ppc: supported + operatorframework.io/arch.ppc64: supported + operatorframework.io/arch.ppc64le: supported + operatorframework.io/arch.riscv: supported + operatorframework.io/arch.riscv64: supported + operatorframework.io/arch.s390: supported + operatorframework.io/arch.s390x: supported + operatorframework.io/arch.sparc: supported + operatorframework.io/arch.sparc64: supported + operatorframework.io/arch.wasm: supported + operatorframework.io/os.aix: supported + operatorframework.io/os.android: supported + operatorframework.io/os.darwin: supported + operatorframework.io/os.dragonfly: supported + operatorframework.io/os.freebsd: supported + operatorframework.io/os.hurd: supported + operatorframework.io/os.illumos: supported + operatorframework.io/os.ios: supported + operatorframework.io/os.js: supported + operatorframework.io/os.linux: supported + operatorframework.io/os.nacl: supported + operatorframework.io/os.netbsd: supported + operatorframework.io/os.openbsd: supported + operatorframework.io/os.plan9: supported + operatorframework.io/os.solaris: supported + operatorframework.io/os.windows: supported + operatorframework.io/os.zos: supported + links: + - name: Website + url: https://min.io + - name: Support + url: https://subnet.min.io + - name: Github + url: https://github.com/minio/operator + maintainers: + - email: dev@min.io + name: MinIO Team + maturity: stable + provider: + name: MinIO Inc + url: https://min.io + relatedImages: + - image: minio/operator@sha256:58c5114003fdc38877db2dc6ca45bc4b16572cc3e40c2fcc20702c5ccaa01caa + name: console + - image: minio/operator@sha256:58c5114003fdc38877db2dc6ca45bc4b16572cc3e40c2fcc20702c5ccaa01caa + name: minio-operator + - image: quay.io/minio/minio@sha256:7c98dbaba9132bb804c73baeb43f70db20a0c746277c88a9c9c9d3dc188127bb + name: minio-7c98dbaba9132bb804c73baeb43f70db20a0c746277c88a9c9c9d3dc188127bb-annotation + version: 5.0.11 + replaces: minio-operator-rhmp.v5.0.9 diff --git a/bundles/redhat-marketplace/5.0.11/manifests/minio.min.io_tenants.yaml b/bundles/redhat-marketplace/5.0.11/manifests/minio.min.io_tenants.yaml new file mode 100644 index 00000000000..697304ebed5 --- /dev/null +++ b/bundles/redhat-marketplace/5.0.11/manifests/minio.min.io_tenants.yaml @@ -0,0 +1,5040 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.11.1 + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + creationTimestamp: null + name: tenants.minio.min.io +spec: + group: minio.min.io + names: + kind: Tenant + listKind: TenantList + plural: tenants + shortNames: + - tenant + singular: tenant + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.currentState + name: State + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v2 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + scheduler: + properties: + name: + type: string + required: + - name + type: object + spec: + properties: + additionalVolumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + additionalVolumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: + properties: + monitors: + items: + type: string + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver + type: object + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: + type: string + type: object + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + required: + - driver + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + optional: + type: boolean + secretName: + type: string + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + buckets: + items: + properties: + name: + type: string + objectLock: + type: boolean + region: + type: string + type: object + type: array + certConfig: + properties: + commonName: + type: string + dnsNames: + items: + type: string + type: array + organizationName: + items: + type: string + type: array + type: object + configuration: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + credsSecret: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + exposeServices: + properties: + console: + type: boolean + minio: + type: boolean + type: object + externalCaCertSecret: + items: + properties: + name: + type: string + type: + type: string + required: + - name + type: object + type: array + externalCertSecret: + items: + properties: + name: + type: string + type: + type: string + required: + - name + type: object + type: array + externalClientCertSecret: + properties: + name: + type: string + type: + type: string + required: + - name + type: object + externalClientCertSecrets: + items: + properties: + name: + type: string + type: + type: string + required: + - name + type: object + type: array + features: + properties: + bucketDNS: + type: boolean + domains: + properties: + console: + type: string + minio: + items: + type: string + type: array + type: object + enableSFTP: + type: boolean + type: object + image: + type: string + imagePullPolicy: + type: string + imagePullSecret: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + initContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resizePolicy: + items: + properties: + resourceName: + type: string + restartPolicy: + type: string + required: + - resourceName + - restartPolicy + type: object + type: array + x-kubernetes-list-type: atomic + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + restartPolicy: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + kes: + properties: + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + annotations: + additionalProperties: + type: string + type: object + clientCertSecret: + properties: + name: + type: string + type: + type: string + required: + - name + type: object + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + externalCertSecret: + properties: + name: + type: string + type: + type: string + required: + - name + type: object + gcpCredentialSecretName: + type: string + gcpWorkloadIdentityPool: + type: string + image: + type: string + imagePullPolicy: + type: string + kesSecret: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + keyName: + type: string + labels: + additionalProperties: + type: string + type: object + nodeSelector: + additionalProperties: + type: string + type: object + replicas: + format: int32 + type: integer + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + serviceAccountName: + type: string + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + topologySpreadConstraints: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic + maxSkew: + format: int32 + type: integer + minDomains: + format: int32 + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array + required: + - kesSecret + type: object + liveness: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + logging: + properties: + anonymous: + type: boolean + json: + type: boolean + quiet: + type: boolean + type: object + mountPath: + type: string + podManagementPolicy: + type: string + pools: + items: + properties: + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + annotations: + additionalProperties: + type: string + type: object + containerSecurityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + labels: + additionalProperties: + type: string + type: object + name: + type: string + nodeSelector: + additionalProperties: + type: string + type: object + reclaimStorage: + type: boolean + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeClassName: + type: string + securityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + servers: + format: int32 + type: integer + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + topologySpreadConstraints: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic + maxSkew: + format: int32 + type: integer + minDomains: + format: int32 + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array + volumeClaimTemplate: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + status: + properties: + accessModes: + items: + type: string + type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + conditions: + items: + properties: + lastProbeTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + phase: + type: string + type: object + type: object + volumesPerServer: + format: int32 + type: integer + required: + - servers + - volumeClaimTemplate + - volumesPerServer + type: object + type: array + priorityClassName: + type: string + prometheusOperator: + type: boolean + readiness: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + requestAutoCert: + type: boolean + serviceAccountName: + type: string + serviceMetadata: + properties: + consoleServiceAnnotations: + additionalProperties: + type: string + type: object + consoleServiceLabels: + additionalProperties: + type: string + type: object + minioServiceAnnotations: + additionalProperties: + type: string + type: object + minioServiceLabels: + additionalProperties: + type: string + type: object + type: object + sideCars: + properties: + containers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resizePolicy: + items: + properties: + resourceName: + type: string + restartPolicy: + type: string + required: + - resourceName + - restartPolicy + type: object + type: array + x-kubernetes-list-type: atomic + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + restartPolicy: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + volumeClaimTemplates: + items: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + status: + properties: + accessModes: + items: + type: string + type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + conditions: + items: + properties: + lastProbeTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + phase: + type: string + type: object + type: object + type: array + volumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: + properties: + monitors: + items: + type: string + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver + type: object + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: + type: string + type: object + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + required: + - driver + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + x-kubernetes-map-type: atomic + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + optional: + type: boolean + secretName: + type: string + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + type: object + startup: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + subPath: + type: string + users: + items: + properties: + name: + type: string + type: object + x-kubernetes-map-type: atomic + type: array + required: + - pools + type: object + status: + properties: + availableReplicas: + format: int32 + type: integer + certificates: + nullable: true + properties: + autoCertEnabled: + nullable: true + type: boolean + customCertificates: + nullable: true + properties: + client: + items: + properties: + certName: + type: string + domains: + items: + type: string + type: array + expiresIn: + type: string + expiry: + type: string + serialNo: + type: string + type: object + type: array + minio: + items: + properties: + certName: + type: string + domains: + items: + type: string + type: array + expiresIn: + type: string + expiry: + type: string + serialNo: + type: string + type: object + type: array + minioCAs: + items: + properties: + certName: + type: string + domains: + items: + type: string + type: array + expiresIn: + type: string + expiry: + type: string + serialNo: + type: string + type: object + type: array + type: object + type: object + currentState: + type: string + drivesHealing: + format: int32 + type: integer + drivesOffline: + format: int32 + type: integer + drivesOnline: + format: int32 + type: integer + healthMessage: + type: string + healthStatus: + type: string + pools: + items: + properties: + legacySecurityContext: + type: boolean + ssName: + type: string + state: + type: string + required: + - ssName + - state + type: object + nullable: true + type: array + provisionedBuckets: + type: boolean + provisionedUsers: + type: boolean + revision: + format: int32 + type: integer + syncVersion: + type: string + usage: + properties: + capacity: + format: int64 + type: integer + rawCapacity: + format: int64 + type: integer + rawUsage: + format: int64 + type: integer + tiers: + items: + properties: + Name: + type: string + Type: + type: string + totalSize: + format: int64 + type: integer + required: + - Name + - totalSize + type: object + type: array + usage: + format: int64 + type: integer + type: object + waitingOnReady: + format: date-time + type: string + writeQuorum: + format: int32 + type: integer + required: + - availableReplicas + - certificates + - currentState + - pools + - revision + - syncVersion + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/bundles/redhat-marketplace/5.0.11/manifests/operator_v1_service.yaml b/bundles/redhat-marketplace/5.0.11/manifests/operator_v1_service.yaml new file mode 100644 index 00000000000..011f9599ff8 --- /dev/null +++ b/bundles/redhat-marketplace/5.0.11/manifests/operator_v1_service.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + creationTimestamp: null + labels: + app.kubernetes.io/instance: minio-operator + app.kubernetes.io/name: operator + name: minio-operator + name: operator +spec: + ports: + - name: http + port: 4221 + targetPort: 0 + selector: + name: minio-operator + operator: leader + type: ClusterIP +status: + loadBalancer: {} diff --git a/bundles/redhat-marketplace/5.0.11/manifests/sts.min.io_policybindings.yaml b/bundles/redhat-marketplace/5.0.11/manifests/sts.min.io_policybindings.yaml new file mode 100644 index 00000000000..fbbf279207d --- /dev/null +++ b/bundles/redhat-marketplace/5.0.11/manifests/sts.min.io_policybindings.yaml @@ -0,0 +1,84 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.11.1 + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + creationTimestamp: null + name: policybindings.sts.min.io +spec: + group: sts.min.io + names: + kind: PolicyBinding + listKind: PolicyBindingList + plural: policybindings + shortNames: + - policybinding + singular: policybinding + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.currentState + name: State + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + application: + properties: + namespace: + type: string + serviceaccount: + type: string + required: + - namespace + - serviceaccount + type: object + policies: + items: + type: string + type: array + required: + - application + - policies + type: object + status: + properties: + currentState: + type: string + usage: + nullable: true + properties: + authotizations: + format: int64 + type: integer + type: object + required: + - currentState + - usage + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/bundles/redhat-marketplace/5.0.11/manifests/sts_v1_service.yaml b/bundles/redhat-marketplace/5.0.11/manifests/sts_v1_service.yaml new file mode 100644 index 00000000000..cdec8486952 --- /dev/null +++ b/bundles/redhat-marketplace/5.0.11/manifests/sts_v1_service.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + operator.min.io/authors: MinIO, Inc. + operator.min.io/license: AGPLv3 + operator.min.io/support: https://subnet.min.io + service.beta.openshift.io/serving-cert-secret-name: sts-tls + creationTimestamp: null + labels: + name: minio-operator + name: sts +spec: + ports: + - name: https + port: 4223 + targetPort: 4223 + selector: + name: minio-operator + type: ClusterIP +status: + loadBalancer: {} diff --git a/bundles/redhat-marketplace/5.0.11/metadata/annotations.yaml b/bundles/redhat-marketplace/5.0.11/metadata/annotations.yaml new file mode 100644 index 00000000000..e00c3b7426c --- /dev/null +++ b/bundles/redhat-marketplace/5.0.11/metadata/annotations.yaml @@ -0,0 +1,12 @@ +annotations: + # Core bundle annotations. + operators.operatorframework.io.bundle.mediatype.v1: registry+v1 + operators.operatorframework.io.bundle.manifests.v1: manifests/ + operators.operatorframework.io.bundle.metadata.v1: metadata/ + operators.operatorframework.io.bundle.package.v1: minio-operator-rhmp + operators.operatorframework.io.bundle.channels.v1: stable + # Annotations to specify OCP versions compatibility. + com.redhat.openshift.versions: v4.8-v4.13 + # Annotation to add default bundle channel as potential is declared + operators.operatorframework.io.bundle.channel.default.v1: stable + operatorframework.io/suggested-namespace: minio-operator diff --git a/certified-operators/manifests/minio-operator.clusterserviceversion.yaml b/certified-operators/manifests/minio-operator.clusterserviceversion.yaml index 0359a8421f7..33c1a9f6852 100644 --- a/certified-operators/manifests/minio-operator.clusterserviceversion.yaml +++ b/certified-operators/manifests/minio-operator.clusterserviceversion.yaml @@ -32,7 +32,7 @@ metadata: "bucketDNS": false, "domains": {} }, - "image": "quay.io/minio/minio@sha256:7e697b900f60d68e9edd2e8fc0dccd158e98938d924298612c5bbd294f2a1e65", + "image": "quay.io/minio/minio@sha256:7c98dbaba9132bb804c73baeb43f70db20a0c746277c88a9c9c9d3dc188127bb", "imagePullSecret": {}, "mountPath": "/export", "podManagementPolicy": "Parallel", @@ -80,18 +80,17 @@ metadata: ] capabilities: Full Lifecycle categories: AI/Machine Learning, Big Data, Cloud Provider, Storage - createdAt: "2023-10-12T17:54:20Z" description: |- MinIO is a Kubernetes-native high performance object store with an S3-compatible API. The MinIO Operator supports deploying MinIO Tenants onto any Kubernetes. k8sMinVersion: "1.18" operatorframework.io/suggested-namespace: minio-operator - operators.operatorframework.io/builder: operator-sdk-v1.32.0 + operators.operatorframework.io/builder: operator-sdk-v1.22.2 operators.operatorframework.io/project_layout: unknown repository: https://github.com/minio/operator - containerImage: quay.io/minio/operator:v5.0.10 - name: minio-operator.v5.0.10 + containerImage: quay.io/minio/operator:v5.0.11 + name: minio-operator.v5.0.11 namespace: minio-operator spec: apiservicedefinitions: {} @@ -378,6 +377,7 @@ spec: - get - update - list + - delete - apiGroups: - "" resources: @@ -562,7 +562,7 @@ spec: - args: - ui - --certs-dir=/tmp/certs - image: quay.io/minio/operator:v5.0.10 + image: quay.io/minio/operator:v5.0.11 imagePullPolicy: IfNotPresent name: console ports: @@ -575,6 +575,8 @@ spec: volumeMounts: - mountPath: /tmp/certs name: tls-certificates + - mountPath: /tmp/certs/CAs + name: tmp serviceAccountName: console-sa volumes: - name: tls-certificates @@ -595,6 +597,8 @@ spec: path: CAs/ca.crt name: openshift-service-ca.crt optional: true + - emptyDir: {} + name: tmp - label: app.kubernetes.io/instance: minio-operator app.kubernetes.io/name: operator @@ -636,8 +640,8 @@ spec: - name: MINIO_CONSOLE_TLS_ENABLE value: "on" - name: OPERATOR_STS_ENABLED - value: "off" - image: quay.io/minio/operator:v5.0.10 + value: "on" + image: quay.io/minio/operator:v5.0.11 imagePullPolicy: IfNotPresent name: minio-operator resources: @@ -755,11 +759,11 @@ spec: name: MinIO Inc url: https://min.io relatedImages: - - image: quay.io/minio/minio@sha256:7e697b900f60d68e9edd2e8fc0dccd158e98938d924298612c5bbd294f2a1e65 - name: minio-7e697b900f60d68e9edd2e8fc0dccd158e98938d924298612c5bbd294f2a1e65-annotation - - image: minio/operator@sha256:170b154d2c61c5a6f9dfbe4137e78815102a99fb9ab3aa6baf68750647e6261a + - image: minio/operator@sha256:58c5114003fdc38877db2dc6ca45bc4b16572cc3e40c2fcc20702c5ccaa01caa name: console - - image: minio/operator@sha256:170b154d2c61c5a6f9dfbe4137e78815102a99fb9ab3aa6baf68750647e6261a + - image: minio/operator@sha256:58c5114003fdc38877db2dc6ca45bc4b16572cc3e40c2fcc20702c5ccaa01caa name: minio-operator - version: 5.0.10 + - image: quay.io/minio/minio@sha256:7c98dbaba9132bb804c73baeb43f70db20a0c746277c88a9c9c9d3dc188127bb + name: minio-7c98dbaba9132bb804c73baeb43f70db20a0c746277c88a9c9c9d3dc188127bb-annotation + version: 5.0.11 replaces: minio-operator.v5.0.9 diff --git a/certified-operators/manifests/minio.min.io_tenants.yaml b/certified-operators/manifests/minio.min.io_tenants.yaml index d18f067d261..697304ebed5 100644 --- a/certified-operators/manifests/minio.min.io_tenants.yaml +++ b/certified-operators/manifests/minio.min.io_tenants.yaml @@ -1355,6 +1355,19 @@ spec: format: int32 type: integer type: object + resizePolicy: + items: + properties: + resourceName: + type: string + restartPolicy: + type: string + required: + - resourceName + - restartPolicy + type: object + type: array + x-kubernetes-list-type: atomic resources: properties: claims: @@ -1386,6 +1399,8 @@ spec: x-kubernetes-int-or-string: true type: object type: object + restartPolicy: + type: string securityContext: properties: allowPrivilegeEscalation: @@ -2755,6 +2770,8 @@ spec: additionalProperties: type: string type: object + reclaimStorage: + type: boolean resources: properties: claims: @@ -3049,6 +3066,11 @@ spec: items: type: string type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular allocatedResources: additionalProperties: anyOf: @@ -3089,8 +3111,6 @@ spec: type: array phase: type: string - resizeStatus: - type: string type: object type: object volumesPerServer: @@ -3596,6 +3616,19 @@ spec: format: int32 type: integer type: object + resizePolicy: + items: + properties: + resourceName: + type: string + restartPolicy: + type: string + required: + - resourceName + - restartPolicy + type: object + type: array + x-kubernetes-list-type: atomic resources: properties: claims: @@ -3627,6 +3660,8 @@ spec: x-kubernetes-int-or-string: true type: object type: object + restartPolicy: + type: string securityContext: properties: allowPrivilegeEscalation: @@ -3972,6 +4007,11 @@ spec: items: type: string type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular allocatedResources: additionalProperties: anyOf: @@ -4012,8 +4052,6 @@ spec: type: array phase: type: string - resizeStatus: - type: string type: object type: object type: array @@ -4745,8 +4783,6 @@ spec: - name type: object type: array - required: - - containers type: object startup: properties: diff --git a/certified-operators/metadata/annotations.yaml b/certified-operators/metadata/annotations.yaml index c842f73a8db..b4745c091c5 100644 --- a/certified-operators/metadata/annotations.yaml +++ b/certified-operators/metadata/annotations.yaml @@ -5,6 +5,6 @@ annotations: operators.operatorframework.io.bundle.metadata.v1: metadata/ operators.operatorframework.io.bundle.package.v1: minio-operator operators.operatorframework.io.bundle.channels.v1: stable - operators.operatorframework.io.metrics.builder: operator-sdk-v1.32.0 + operators.operatorframework.io.metrics.builder: operator-sdk-v1.22.2 operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 operators.operatorframework.io.metrics.project_layout: unknown diff --git a/community-operators/manifests/minio-operator.clusterserviceversion.yaml b/community-operators/manifests/minio-operator.clusterserviceversion.yaml index 5c753ab1d8d..2e400febe84 100644 --- a/community-operators/manifests/minio-operator.clusterserviceversion.yaml +++ b/community-operators/manifests/minio-operator.clusterserviceversion.yaml @@ -32,7 +32,7 @@ metadata: "bucketDNS": false, "domains": {} }, - "image": "quay.io/minio/minio@sha256:7e697b900f60d68e9edd2e8fc0dccd158e98938d924298612c5bbd294f2a1e65", + "image": "quay.io/minio/minio@sha256:7c98dbaba9132bb804c73baeb43f70db20a0c746277c88a9c9c9d3dc188127bb", "imagePullSecret": {}, "mountPath": "/export", "podManagementPolicy": "Parallel", @@ -80,18 +80,17 @@ metadata: ] capabilities: Full Lifecycle categories: AI/Machine Learning, Big Data, Cloud Provider, Storage - createdAt: "2023-10-12T17:54:27Z" description: |- MinIO is a Kubernetes-native high performance object store with an S3-compatible API. The MinIO Operator supports deploying MinIO Tenants onto any Kubernetes. k8sMinVersion: "1.18" operatorframework.io/suggested-namespace: minio-operator - operators.operatorframework.io/builder: operator-sdk-v1.32.0 + operators.operatorframework.io/builder: operator-sdk-v1.22.2 operators.operatorframework.io/project_layout: unknown repository: https://github.com/minio/operator - containerImage: quay.io/minio/operator:v5.0.10 - name: minio-operator.v5.0.10 + containerImage: quay.io/minio/operator:v5.0.11 + name: minio-operator.v5.0.11 namespace: minio-operator spec: apiservicedefinitions: {} @@ -378,6 +377,7 @@ spec: - get - update - list + - delete - apiGroups: - "" resources: @@ -562,7 +562,7 @@ spec: - args: - ui - --certs-dir=/tmp/certs - image: quay.io/minio/operator:v5.0.10 + image: quay.io/minio/operator:v5.0.11 imagePullPolicy: IfNotPresent name: console ports: @@ -575,6 +575,8 @@ spec: volumeMounts: - mountPath: /tmp/certs name: tls-certificates + - mountPath: /tmp/certs/CAs + name: tmp serviceAccountName: console-sa volumes: - name: tls-certificates @@ -595,6 +597,8 @@ spec: path: CAs/ca.crt name: openshift-service-ca.crt optional: true + - emptyDir: {} + name: tmp - label: app.kubernetes.io/instance: minio-operator app.kubernetes.io/name: operator @@ -636,8 +640,8 @@ spec: - name: MINIO_CONSOLE_TLS_ENABLE value: "on" - name: OPERATOR_STS_ENABLED - value: "off" - image: quay.io/minio/operator:v5.0.10 + value: "on" + image: quay.io/minio/operator:v5.0.11 imagePullPolicy: IfNotPresent name: minio-operator resources: @@ -755,11 +759,11 @@ spec: name: MinIO Inc url: https://min.io relatedImages: - - image: minio/operator@sha256:170b154d2c61c5a6f9dfbe4137e78815102a99fb9ab3aa6baf68750647e6261a + - image: minio/operator@sha256:58c5114003fdc38877db2dc6ca45bc4b16572cc3e40c2fcc20702c5ccaa01caa name: console - - image: minio/operator@sha256:170b154d2c61c5a6f9dfbe4137e78815102a99fb9ab3aa6baf68750647e6261a + - image: minio/operator@sha256:58c5114003fdc38877db2dc6ca45bc4b16572cc3e40c2fcc20702c5ccaa01caa name: minio-operator - - image: quay.io/minio/minio@sha256:7e697b900f60d68e9edd2e8fc0dccd158e98938d924298612c5bbd294f2a1e65 - name: minio-7e697b900f60d68e9edd2e8fc0dccd158e98938d924298612c5bbd294f2a1e65-annotation - version: 5.0.10 + - image: quay.io/minio/minio@sha256:7c98dbaba9132bb804c73baeb43f70db20a0c746277c88a9c9c9d3dc188127bb + name: minio-7c98dbaba9132bb804c73baeb43f70db20a0c746277c88a9c9c9d3dc188127bb-annotation + version: 5.0.11 replaces: "null" diff --git a/community-operators/manifests/minio.min.io_tenants.yaml b/community-operators/manifests/minio.min.io_tenants.yaml index d18f067d261..697304ebed5 100644 --- a/community-operators/manifests/minio.min.io_tenants.yaml +++ b/community-operators/manifests/minio.min.io_tenants.yaml @@ -1355,6 +1355,19 @@ spec: format: int32 type: integer type: object + resizePolicy: + items: + properties: + resourceName: + type: string + restartPolicy: + type: string + required: + - resourceName + - restartPolicy + type: object + type: array + x-kubernetes-list-type: atomic resources: properties: claims: @@ -1386,6 +1399,8 @@ spec: x-kubernetes-int-or-string: true type: object type: object + restartPolicy: + type: string securityContext: properties: allowPrivilegeEscalation: @@ -2755,6 +2770,8 @@ spec: additionalProperties: type: string type: object + reclaimStorage: + type: boolean resources: properties: claims: @@ -3049,6 +3066,11 @@ spec: items: type: string type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular allocatedResources: additionalProperties: anyOf: @@ -3089,8 +3111,6 @@ spec: type: array phase: type: string - resizeStatus: - type: string type: object type: object volumesPerServer: @@ -3596,6 +3616,19 @@ spec: format: int32 type: integer type: object + resizePolicy: + items: + properties: + resourceName: + type: string + restartPolicy: + type: string + required: + - resourceName + - restartPolicy + type: object + type: array + x-kubernetes-list-type: atomic resources: properties: claims: @@ -3627,6 +3660,8 @@ spec: x-kubernetes-int-or-string: true type: object type: object + restartPolicy: + type: string securityContext: properties: allowPrivilegeEscalation: @@ -3972,6 +4007,11 @@ spec: items: type: string type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular allocatedResources: additionalProperties: anyOf: @@ -4012,8 +4052,6 @@ spec: type: array phase: type: string - resizeStatus: - type: string type: object type: object type: array @@ -4745,8 +4783,6 @@ spec: - name type: object type: array - required: - - containers type: object startup: properties: diff --git a/community-operators/metadata/annotations.yaml b/community-operators/metadata/annotations.yaml index c842f73a8db..b4745c091c5 100644 --- a/community-operators/metadata/annotations.yaml +++ b/community-operators/metadata/annotations.yaml @@ -5,6 +5,6 @@ annotations: operators.operatorframework.io.bundle.metadata.v1: metadata/ operators.operatorframework.io.bundle.package.v1: minio-operator operators.operatorframework.io.bundle.channels.v1: stable - operators.operatorframework.io.metrics.builder: operator-sdk-v1.32.0 + operators.operatorframework.io.metrics.builder: operator-sdk-v1.22.2 operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 operators.operatorframework.io.metrics.project_layout: unknown diff --git a/docs/policybinding_crd.adoc b/docs/policybinding_crd.adoc index 5e785a93eb1..b3b1e2e7584 100644 --- a/docs/policybinding_crd.adoc +++ b/docs/policybinding_crd.adoc @@ -4,8 +4,8 @@ [id="{p}-api-reference"] == API Reference -:minio-image: https://hub.docker.com/r/minio/minio/tags[minio/minio:RELEASE.2023-10-07T15-07-38Z] -:kes-image: https://hub.docker.com/r/minio/kes/tags[minio/kes:2023-10-03T00-48-37Z] +:minio-image: https://hub.docker.com/r/minio/minio/tags[minio/minio:RELEASE.2023-11-15T20-43-25Z] +:kes-image: https://hub.docker.com/r/minio/kes/tags[minio/kes:2023-11-10T10-44-28Z] [id="{anchor_prefix}-sts-min-io-v1alpha1"] diff --git a/docs/templates/asciidoctor/gv_list.tpl b/docs/templates/asciidoctor/gv_list.tpl index 20b2ad6f9b4..3fb8db5d214 100644 --- a/docs/templates/asciidoctor/gv_list.tpl +++ b/docs/templates/asciidoctor/gv_list.tpl @@ -7,8 +7,8 @@ [id="{p}-api-reference"] == API Reference -:minio-image: https://hub.docker.com/r/minio/minio/tags[minio/minio:RELEASE.2023-10-07T15-07-38Z] -:kes-image: https://hub.docker.com/r/minio/kes/tags[minio/kes:2023-10-03T00-48-37Z] +:minio-image: https://hub.docker.com/r/minio/minio/tags[minio/minio:RELEASE.2023-11-15T20-43-25Z] +:kes-image: https://hub.docker.com/r/minio/kes/tags[minio/kes:2023-11-10T10-44-28Z] {{ range $groupVersions }} {{ template "gvDetails" . }} diff --git a/docs/tenant_crd.adoc b/docs/tenant_crd.adoc index f44aa17a2f6..e8964b95f6e 100644 --- a/docs/tenant_crd.adoc +++ b/docs/tenant_crd.adoc @@ -4,8 +4,8 @@ [id="{p}-api-reference"] == API Reference -:minio-image: https://hub.docker.com/r/minio/minio/tags[minio/minio:RELEASE.2023-10-07T15-07-38Z] -:kes-image: https://hub.docker.com/r/minio/kes/tags[minio/kes:2023-10-03T00-48-37Z] +:minio-image: https://hub.docker.com/r/minio/minio/tags[minio/minio:RELEASE.2023-11-15T20-43-25Z] +:kes-image: https://hub.docker.com/r/minio/kes/tags[minio/kes:2023-11-10T10-44-28Z] [id="{anchor_prefix}-minio-min-io-v2"] diff --git a/examples/kustomization/base/tenant.yaml b/examples/kustomization/base/tenant.yaml index aae1bc7cc19..bc347939139 100644 --- a/examples/kustomization/base/tenant.yaml +++ b/examples/kustomization/base/tenant.yaml @@ -144,7 +144,7 @@ spec: ## https://github.com/minio/minio/tree/master/docs/tls/kubernetes#2-create-kubernetes-secret externalClientCertSecrets: [ ] ## Registry location and Tag to download MinIO Server image - image: quay.io/minio/minio:RELEASE.2023-10-07T15-07-38Z + image: quay.io/minio/minio:RELEASE.2023-11-15T20-43-25Z imagePullSecret: { } ## Mount path where PV will be mounted inside container(s). mountPath: /export @@ -247,7 +247,7 @@ spec: ## Audit Logs will be deprecated soon, commenting out for now!. ## LogSearch API setup for MinIO Tenant. # log: - # image: "" # defaults to minio/operator:v5.0.10 + # image: "" # defaults to minio/operator:v5.0.11 # env: [ ] # resources: { } # nodeSelector: { } diff --git a/examples/kustomization/tenant-certmanager-kes/tenant.yaml b/examples/kustomization/tenant-certmanager-kes/tenant.yaml index 3a6ef5e21bb..3d4adfee3ef 100644 --- a/examples/kustomization/tenant-certmanager-kes/tenant.yaml +++ b/examples/kustomization/tenant-certmanager-kes/tenant.yaml @@ -14,7 +14,7 @@ spec: externalCertSecret: name: tenant-certmanager-2-tls type: cert-manager.io/v1 - image: minio/kes:2023-10-03T00-48-37Z + image: minio/kes:2023-11-10T10-44-28Z imagePullPolicy: IfNotPresent kesSecret: name: kes-configuration diff --git a/examples/kustomization/tenant-kes-encryption/tenant.yaml b/examples/kustomization/tenant-kes-encryption/tenant.yaml index 266e8f9f16b..755681ca054 100644 --- a/examples/kustomization/tenant-kes-encryption/tenant.yaml +++ b/examples/kustomization/tenant-kes-encryption/tenant.yaml @@ -7,7 +7,7 @@ spec: ## Define configuration for KES (stateless and distributed key-management system) ## Refer https://github.com/minio/kes kes: - image: "" # minio/kes:2023-10-03T00-48-37Z + image: "" # minio/kes:2023-11-10T10-44-28Z env: [ ] replicas: 2 kesSecret: diff --git a/helm-releases/operator-5.0.11.tgz b/helm-releases/operator-5.0.11.tgz new file mode 100644 index 00000000000..4374f534d4c Binary files /dev/null and b/helm-releases/operator-5.0.11.tgz differ diff --git a/helm-releases/tenant-5.0.11.tgz b/helm-releases/tenant-5.0.11.tgz new file mode 100644 index 00000000000..293199399ca Binary files /dev/null and b/helm-releases/tenant-5.0.11.tgz differ diff --git a/helm/operator/Chart.yaml b/helm/operator/Chart.yaml index f78513aec91..1d5dc01f7be 100644 --- a/helm/operator/Chart.yaml +++ b/helm/operator/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v2 description: A Helm chart for MinIO Operator name: operator -version: 5.0.10 -appVersion: v5.0.10 +version: 5.0.11 +appVersion: v5.0.11 keywords: - storage - object-storage diff --git a/helm/operator/values.yaml b/helm/operator/values.yaml index b325f8e4c39..03f4850b2ca 100644 --- a/helm/operator/values.yaml +++ b/helm/operator/values.yaml @@ -30,14 +30,14 @@ operator: ### # Specify the Operator container image to use for the deployment. # ``image.tag`` - # For example, the following sets the image to the ``quay.io/minio/operator`` repo and the v5.0.10 tag. + # For example, the following sets the image to the ``quay.io/minio/operator`` repo and the v5.0.11 tag. # The container pulls the image if not already present: # # .. code-block:: yaml # # image: # repository: quay.io/minio/operator - # tag: v5.0.10 + # tag: v5.0.11 # pullPolicy: IfNotPresent # # The chart also supports specifying an image based on digest value: @@ -51,7 +51,7 @@ operator: # image: repository: quay.io/minio/operator - tag: v5.0.10 + tag: v5.0.11 pullPolicy: IfNotPresent ### # @@ -169,14 +169,14 @@ console: ### # Specify the Operator Console container image to use for the deployment. # ``image.tag`` - # For example, the following sets the image to the ``quay.io/minio/operator`` repo and the v5.0.10 tag. + # For example, the following sets the image to the ``quay.io/minio/operator`` repo and the v5.0.11 tag. # The container pulls the image if not already present: # # .. code-block:: yaml # # image: # repository: quay.io/minio/operator - # tag: v5.0.10 + # tag: v5.0.11 # pullPolicy: IfNotPresent # # The chart also supports specifying an image based on digest value: @@ -191,7 +191,7 @@ console: # The specified values should match that of ``operator.image`` to ensure predictable operations. image: repository: quay.io/minio/operator - tag: v5.0.10 + tag: v5.0.11 pullPolicy: IfNotPresent ### # An array of environment variables to pass to the Operator Console deployment. diff --git a/helm/tenant/Chart.yaml b/helm/tenant/Chart.yaml index 1c3666a32cc..2d089bfcec9 100644 --- a/helm/tenant/Chart.yaml +++ b/helm/tenant/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v2 description: A Helm chart for MinIO Operator name: tenant -version: 5.0.10 -appVersion: v5.0.10 +version: 5.0.11 +appVersion: v5.0.11 keywords: - storage - object-storage diff --git a/helm/tenant/values.yaml b/helm/tenant/values.yaml index 0b7152e560f..14a7e6dec8e 100644 --- a/helm/tenant/values.yaml +++ b/helm/tenant/values.yaml @@ -45,14 +45,14 @@ tenant: ### # Specify the Operator container image to use for the deployment. # ``image.tag`` - # For example, the following sets the image to the ``quay.io/minio/operator`` repo and the v5.0.10 tag. + # For example, the following sets the image to the ``quay.io/minio/operator`` repo and the v5.0.11 tag. # The container pulls the image if not already present: # # .. code-block:: yaml # # image: # repository: quay.io/minio/minio - # tag: RELEASE.2023-10-07T15-07-38Z + # tag: RELEASE.2023-11-15T20-43-25Z # pullPolicy: IfNotPresent # # The chart also supports specifying an image based on digest value: @@ -67,7 +67,7 @@ tenant: # image: repository: quay.io/minio/minio - tag: RELEASE.2023-10-07T15-07-38Z + tag: RELEASE.2023-11-15T20-43-25Z pullPolicy: IfNotPresent ### # @@ -332,14 +332,14 @@ tenant: # # Image from tag (original behavior), for example: # # image: # # repository: quay.io/minio/kes - # # tag: 2023-10-03T00-48-37Z + # # tag: 2023-11-10T10-44-28Z # # Image from digest (added after original behavior), for example: # # image: # # repository: quay.io/minio/kes@sha256 # # digest: fb15af611149892f357a8a99d1bcd8bf5dae713bd64c15e6eb27fbdb88fc208b # image: # repository: quay.io/minio/kes - # tag: 2023-10-03T00-48-37Z + # tag: 2023-11-10T10-44-28Z # pullPolicy: IfNotPresent # env: [ ] # replicas: 2 diff --git a/index.yaml b/index.yaml index d5ec9206772..765408599b9 100644 --- a/index.yaml +++ b/index.yaml @@ -3,7 +3,7 @@ entries: minio-operator: - apiVersion: v2 appVersion: v4.3.7 - created: "2023-10-12T10:54:31.715596-07:00" + created: "2023-11-16T14:36:09.803362-08:00" description: A Helm chart for MinIO Operator digest: 594f746a54d6ced86b0147135afed425c453e015a15228b634bd79add0d24982 home: https://min.io @@ -24,7 +24,7 @@ entries: version: 4.3.7 - apiVersion: v2 appVersion: v4.3.6 - created: "2023-10-12T10:54:31.71343-07:00" + created: "2023-11-16T14:36:09.801211-08:00" description: A Helm chart for MinIO Operator digest: 15bb40e086f5e562b7c588dac48a5399fadc1b9f6895f913bbd5a2993c683da7 home: https://min.io @@ -45,7 +45,7 @@ entries: version: 4.3.6 - apiVersion: v2 appVersion: v4.3.5 - created: "2023-10-12T10:54:31.712375-07:00" + created: "2023-11-16T14:36:09.799511-08:00" description: A Helm chart for MinIO Operator digest: d561a1a3f0d900b721a73a7f17bc1ceda06b00328a5d31786bd8a8a92a20b08b home: https://min.io @@ -66,7 +66,7 @@ entries: version: 4.3.5 - apiVersion: v2 appVersion: v4.3.4 - created: "2023-10-12T10:54:31.711005-07:00" + created: "2023-11-16T14:36:09.796499-08:00" description: A Helm chart for MinIO Operator digest: 8cbfa6aa2264a5ab03e81e65391f22970c38f26b68c6292b8e77f1936bf7f0c0 home: https://min.io @@ -87,7 +87,7 @@ entries: version: 4.3.4 - apiVersion: v2 appVersion: v4.3.3 - created: "2023-10-12T10:54:31.709722-07:00" + created: "2023-11-16T14:36:09.793006-08:00" description: A Helm chart for MinIO Operator digest: 399e916491f7b3297afb6a85baf4f305547f46e7df2674b542cb1a8873abef62 home: https://min.io @@ -108,7 +108,7 @@ entries: version: 4.3.3 - apiVersion: v2 appVersion: v4.3.2 - created: "2023-10-12T10:54:31.707036-07:00" + created: "2023-11-16T14:36:09.789553-08:00" description: A Helm chart for MinIO Operator digest: b446473b9814288f4f356afa12053b2bce0cbdf014be74ab21b31b36cb0ac15a home: https://min.io @@ -129,7 +129,7 @@ entries: version: 4.3.2 - apiVersion: v2 appVersion: v4.3.1 - created: "2023-10-12T10:54:31.705938-07:00" + created: "2023-11-16T14:36:09.78746-08:00" description: A Helm chart for MinIO Operator digest: 4a325c6a47173e66b986db47b5d8235fd3c5eff788e252b5ca40b3ce27f4cc87 home: https://min.io @@ -150,7 +150,7 @@ entries: version: 4.3.1 - apiVersion: v2 appVersion: v4.3.0 - created: "2023-10-12T10:54:31.704902-07:00" + created: "2023-11-16T14:36:09.785718-08:00" description: A Helm chart for MinIO Operator digest: 52ca8a53360481b54e67912da6a757e060b50b85cece003101e90c16f426f972 home: https://min.io @@ -171,7 +171,7 @@ entries: version: 4.3.0 - apiVersion: v2 appVersion: v4.2.14 - created: "2023-10-12T10:54:31.694812-07:00" + created: "2023-11-16T14:36:09.770426-08:00" description: A Helm chart for MinIO Operator digest: 72527bd5088ec619ca1da54f2e296bd76ffab8a9473ec619ca2c05c6e0679e87 home: https://min.io @@ -192,7 +192,7 @@ entries: version: 4.2.14 - apiVersion: v2 appVersion: v4.2.12 - created: "2023-10-12T10:54:31.693907-07:00" + created: "2023-11-16T14:36:09.76941-08:00" description: A Helm chart for MinIO Operator digest: a1233b80a3658502d6871e12b7c0a2897d12cf8df859c9c531efc32e62d48c9d home: https://min.io @@ -213,7 +213,7 @@ entries: version: 4.2.12 - apiVersion: v2 appVersion: v4.2.10 - created: "2023-10-12T10:54:31.692833-07:00" + created: "2023-11-16T14:36:09.768352-08:00" description: A Helm chart for MinIO Operator digest: cba1a0b6fdb56c5fd084f81721285b8c2d9710d8a616bad7d421d2f5c8f6cac0 home: https://min.io @@ -234,7 +234,7 @@ entries: version: 4.2.10 - apiVersion: v2 appVersion: v4.2.9 - created: "2023-10-12T10:54:31.703158-07:00" + created: "2023-11-16T14:36:09.783203-08:00" description: A Helm chart for MinIO Operator digest: e4d7a289e4933aec88457243c8a1cc9bb191148421cdc2804a954cf4158f90fb home: https://min.io @@ -255,7 +255,7 @@ entries: version: 4.2.9 - apiVersion: v2 appVersion: v4.2.8 - created: "2023-10-12T10:54:31.702204-07:00" + created: "2023-11-16T14:36:09.780659-08:00" description: A Helm chart for MinIO Operator digest: 35c4888f3b2bf75b79c1e7f12d4b0dd35138045c7b62c3824a307ce4814f5d4a home: https://min.io @@ -276,7 +276,7 @@ entries: version: 4.2.8 - apiVersion: v2 appVersion: v4.2.7 - created: "2023-10-12T10:54:31.701276-07:00" + created: "2023-11-16T14:36:09.779642-08:00" description: A Helm chart for MinIO Operator digest: 99a024d5ae4339752a823ae80b9d1d0fdd5994e16f1ec6acce4f7ad4945c0eb9 home: https://min.io @@ -297,7 +297,7 @@ entries: version: 4.2.7 - apiVersion: v2 appVersion: v4.2.6 - created: "2023-10-12T10:54:31.700378-07:00" + created: "2023-11-16T14:36:09.778316-08:00" description: A Helm chart for MinIO Operator digest: 9137a28ad10f199777f104f89a1c10af763d9087fbc733ba4d295a118d112f2d home: https://min.io @@ -318,7 +318,7 @@ entries: version: 4.2.6 - apiVersion: v2 appVersion: v4.2.5 - created: "2023-10-12T10:54:31.69884-07:00" + created: "2023-11-16T14:36:09.775247-08:00" description: A Helm chart for MinIO Operator digest: 02b29aeae4586edcada3864514a788c2862b8bad3922e80cde2e557f8901c259 home: https://min.io @@ -339,7 +339,7 @@ entries: version: 4.2.5 - apiVersion: v2 appVersion: v4.2.4 - created: "2023-10-12T10:54:31.69776-07:00" + created: "2023-11-16T14:36:09.773761-08:00" description: A Helm chart for MinIO Operator digest: 99620af40a461197d7fd43c937266fe1ed742c3dd10123e420371cc5592d26d2 home: https://min.io @@ -360,7 +360,7 @@ entries: version: 4.2.4 - apiVersion: v2 appVersion: v4.2.3 - created: "2023-10-12T10:54:31.695815-07:00" + created: "2023-11-16T14:36:09.772641-08:00" description: A Helm chart for MinIO Operator digest: d4a8e536a7b01b83c87cff872881b11c72d7d9d0aa05201420b69c0a4ee169dc home: https://min.io @@ -381,7 +381,7 @@ entries: version: 4.2.3 - apiVersion: v2 appVersion: v4.2.3 - created: "2023-10-12T10:54:31.69055-07:00" + created: "2023-11-16T14:36:09.765551-08:00" description: A Helm chart for MinIO Operator digest: 1e3683587801162d989217c019d3e5bf8ecc03116431643fa4876889973549fd home: https://min.io @@ -402,7 +402,7 @@ entries: version: 4.1.8 - apiVersion: v2 appVersion: v4.1.3 - created: "2023-10-12T10:54:31.68962-07:00" + created: "2023-11-16T14:36:09.764367-08:00" description: A Helm chart for MinIO Operator digest: 0cf6f5c3724facc74cfeb32c17a798099f72baff9869ae6d6fb5422557fe40b7 home: https://min.io @@ -423,7 +423,7 @@ entries: version: 4.1.7 - apiVersion: v2 appVersion: v4.1.2 - created: "2023-10-12T10:54:31.688114-07:00" + created: "2023-11-16T14:36:09.7633-08:00" description: A Helm chart for MinIO Operator digest: 979717ddc254f24fe4561a4642162de3d4e847cf7f2b26b1592ca0e8d0bdb6e2 home: https://min.io @@ -444,7 +444,7 @@ entries: version: 4.1.6 - apiVersion: v2 appVersion: v4.1.2 - created: "2023-10-12T10:54:31.687125-07:00" + created: "2023-11-16T14:36:09.762304-08:00" description: A Helm chart for MinIO Operator digest: 3dff7502f24ce641048c849ab1da226854fb8afa34d05b40d7c46dd2725e2cfe home: https://min.io @@ -465,7 +465,7 @@ entries: version: 4.1.5 - apiVersion: v2 appVersion: v4.1.1 - created: "2023-10-12T10:54:31.686264-07:00" + created: "2023-11-16T14:36:09.760497-08:00" description: A Helm chart for MinIO Operator digest: 7082e25eff205c2596e4902361ca370f1e12b7e28e881b88b672d4bb0c02b075 home: https://min.io @@ -486,7 +486,7 @@ entries: version: 4.1.4 - apiVersion: v2 appVersion: v4.1.1 - created: "2023-10-12T10:54:31.684844-07:00" + created: "2023-11-16T14:36:09.759567-08:00" description: A Helm chart for MinIO Operator digest: d9cbb94e31fcc726ebb3281a06d85ea3ee941bf36237972b6ae38e4d4c2f205b home: https://min.io @@ -507,7 +507,7 @@ entries: version: 4.1.3 - apiVersion: v2 appVersion: v4.1.1 - created: "2023-10-12T10:54:31.684043-07:00" + created: "2023-11-16T14:36:09.758616-08:00" description: A Helm chart for MinIO Operator digest: 6bf8dd70e500ea0970a477cc12c6a40fc062102055c911b96eef6dc748500b03 home: https://min.io @@ -528,7 +528,7 @@ entries: version: 4.1.2 - apiVersion: v2 appVersion: v4.1.1 - created: "2023-10-12T10:54:31.68317-07:00" + created: "2023-11-16T14:36:09.757601-08:00" description: A Helm chart for MinIO Operator digest: 8fa3dcd6c40ee405127f1836526b78d473b1f02e690213072fde78712d63c655 home: https://min.io @@ -549,7 +549,7 @@ entries: version: 4.1.1 - apiVersion: v2 appVersion: v4.1.1 - created: "2023-10-12T10:54:31.682037-07:00" + created: "2023-11-16T14:36:09.755046-08:00" description: A Helm chart for MinIO Operator digest: 5926ba1a622fc2887f3fb24c43f567bb308ef652941e592f58371224759b3e24 home: https://min.io @@ -570,7 +570,7 @@ entries: version: 4.1.0 - apiVersion: v2 appVersion: v4.0.11 - created: "2023-10-12T10:54:31.672166-07:00" + created: "2023-11-16T14:36:09.74442-08:00" description: A Helm chart for MinIO Operator digest: cbae4fb31f83e426a7ea0decdfd57f6eb64a43e5b6e2726ab899d1d72c9f54e0 home: https://min.io @@ -591,7 +591,7 @@ entries: version: 4.0.11 - apiVersion: v2 appVersion: v4.0.9 - created: "2023-10-12T10:54:31.671197-07:00" + created: "2023-11-16T14:36:09.743178-08:00" description: A Helm chart for MinIO Operator digest: b74d8011ce86b534c7ebae8d84e7eb0552c701b511e32f0cebdab56551e30638 home: https://min.io @@ -611,7 +611,7 @@ entries: - https://operator.min.io/helm-releases/minio-operator-4.0.10.tgz version: 4.0.10 - apiVersion: v2 - created: "2023-10-12T10:54:31.681199-07:00" + created: "2023-11-16T14:36:09.754113-08:00" description: A Helm chart for MinIO Operator digest: 40bd65d9a8144a5bda8f1e7a74720f526bbaf540e812e7eabc2ccad3ca7b439c home: https://min.io @@ -631,7 +631,7 @@ entries: - https://operator.min.io/helm-releases/minio-operator-4.0.9.tgz version: 4.0.9 - apiVersion: v2 - created: "2023-10-12T10:54:31.679551-07:00" + created: "2023-11-16T14:36:09.75321-08:00" description: A Helm chart for MinIO Operator digest: a7dd16236a42c6b6731542e9c19744da76a50ac3a7524cb2ce64e95e8e3e5d30 home: https://min.io @@ -651,7 +651,7 @@ entries: - https://operator.min.io/helm-releases/minio-operator-4.0.8.tgz version: 4.0.8 - apiVersion: v2 - created: "2023-10-12T10:54:31.678581-07:00" + created: "2023-11-16T14:36:09.752269-08:00" description: A Helm chart for MinIO Operator digest: 87f6ac2a98a96dd6ce20fded82f45e4eed79c0933ebed069d6f2167079597c27 home: https://min.io @@ -671,7 +671,7 @@ entries: - https://operator.min.io/helm-releases/minio-operator-4.0.7.tgz version: 4.0.7 - apiVersion: v2 - created: "2023-10-12T10:54:31.677818-07:00" + created: "2023-11-16T14:36:09.750268-08:00" description: A Helm chart for MinIO Operator digest: 2c7dbe86e2950f48d7b44e702969b67c8b1b5308f18e8e16cdc52e4ec7b6cdbd home: https://min.io @@ -691,7 +691,7 @@ entries: - https://operator.min.io/helm-releases/minio-operator-4.0.7-1.tgz version: 4.0.7-1 - apiVersion: v2 - created: "2023-10-12T10:54:31.67687-07:00" + created: "2023-11-16T14:36:09.749126-08:00" description: A Helm chart for MinIO Operator digest: b25a95e0312b16fab2097db2f45cec540d39d416ce05adcb142dba2f8f300ace home: https://min.io @@ -711,7 +711,7 @@ entries: - https://operator.min.io/helm-releases/minio-operator-4.0.6.tgz version: 4.0.6 - apiVersion: v2 - created: "2023-10-12T10:54:31.675771-07:00" + created: "2023-11-16T14:36:09.748138-08:00" description: A Helm chart for MinIO Operator digest: 4407196cc9a3e6cea8ddb719e8308985cb49789a3e77c023f0bc680c31f11de3 home: https://min.io @@ -731,7 +731,7 @@ entries: - https://operator.min.io/helm-releases/minio-operator-4.0.5.tgz version: 4.0.5 - apiVersion: v2 - created: "2023-10-12T10:54:31.674945-07:00" + created: "2023-11-16T14:36:09.747118-08:00" description: A Helm chart for MinIO Operator digest: ce4a4d68e66cec8af18c28eee339dd2adf3bb4a7beba851eaa3b8b7783e26cd1 home: https://min.io @@ -751,7 +751,7 @@ entries: - https://operator.min.io/helm-releases/minio-operator-4.0.3.tgz version: 4.0.3 - apiVersion: v2 - created: "2023-10-12T10:54:31.673826-07:00" + created: "2023-11-16T14:36:09.745257-08:00" description: A Helm chart for MinIO Operator digest: b488b7faac263a1d7c70374b20435b6ec3a0288f28a845647f0d5c57bc349c43 home: https://min.io @@ -771,7 +771,7 @@ entries: - https://operator.min.io/helm-releases/minio-operator-4.0.2.tgz version: 4.0.2 - apiVersion: v2 - created: "2023-10-12T10:54:31.670291-07:00" + created: "2023-11-16T14:36:09.742079-08:00" description: A Helm chart for MinIO Operator digest: f69b67cd3dcc8d819994fc4473d07be1e8fd11e8428914195a7f59f17321ea46 home: https://min.io @@ -791,7 +791,7 @@ entries: - https://operator.min.io/helm-releases/minio-operator-4.0.1.tgz version: 4.0.1 - apiVersion: v2 - created: "2023-10-12T10:54:31.669323-07:00" + created: "2023-11-16T14:36:09.738851-08:00" description: A Helm chart for MinIO Operator digest: 8bc6f068743480ed1cecae0ec896ac6f46ffec5e7ed6e4efbb241bc3b47c7f21 home: https://min.io @@ -811,9 +811,30 @@ entries: - https://operator.min.io/helm-releases/minio-operator-4.0.0.tgz version: 4.0.0 operator: + - apiVersion: v2 + appVersion: v5.0.11 + created: "2023-11-16T14:36:09.867876-08:00" + description: A Helm chart for MinIO Operator + digest: 0198f0939b54a44face01b3f54fc8f12ff176e8a371114608856a1d0e53fe01a + home: https://min.io + icon: https://min.io/resources/img/logo/MINIO_wordmark.png + keywords: + - storage + - object-storage + - S3 + maintainers: + - email: dev@minio.io + name: MinIO, Inc + name: operator + sources: + - https://github.com/minio/operator + type: application + urls: + - https://operator.min.io/helm-releases/operator-5.0.11.tgz + version: 5.0.11 - apiVersion: v2 appVersion: v5.0.10 - created: "2023-10-12T10:54:31.760286-07:00" + created: "2023-11-16T14:36:09.866743-08:00" description: A Helm chart for MinIO Operator digest: 5a989ef3e1c1a7d43350012bd7ddb305232b3bd804788a8874cc2742eae80a80 home: https://min.io @@ -834,7 +855,7 @@ entries: version: 5.0.10 - apiVersion: v2 appVersion: v5.0.9 - created: "2023-10-12T10:54:31.767376-07:00" + created: "2023-11-16T14:36:09.876988-08:00" description: A Helm chart for MinIO Operator digest: 515fb406a6b08f90b04fa1b844e7a0ad2aac77f73320d9c484f2e19fc0a32d73 home: https://min.io @@ -855,7 +876,7 @@ entries: version: 5.0.9 - apiVersion: v2 appVersion: v5.0.8 - created: "2023-10-12T10:54:31.766524-07:00" + created: "2023-11-16T14:36:09.875996-08:00" description: A Helm chart for MinIO Operator digest: 65b020e15979b03c7f013e307bbe0d4e6e14727019e17bdb2e2604af8056856d home: https://min.io @@ -876,7 +897,7 @@ entries: version: 5.0.8 - apiVersion: v2 appVersion: v5.0.7 - created: "2023-10-12T10:54:31.765602-07:00" + created: "2023-11-16T14:36:09.874795-08:00" description: A Helm chart for MinIO Operator digest: 5c72b03b17b5af84a98d92fb10496449ffe2e77c598a7159e44941f86318e49d home: https://min.io @@ -897,7 +918,7 @@ entries: version: 5.0.7 - apiVersion: v2 appVersion: v5.0.6 - created: "2023-10-12T10:54:31.764674-07:00" + created: "2023-11-16T14:36:09.87367-08:00" description: A Helm chart for MinIO Operator digest: 76d925894253644cdea9bdd04772e23e2c6bd08f695ee3d879ee9f4749a1b46a home: https://min.io @@ -918,7 +939,7 @@ entries: version: 5.0.6 - apiVersion: v2 appVersion: v5.0.5 - created: "2023-10-12T10:54:31.763739-07:00" + created: "2023-11-16T14:36:09.872583-08:00" description: A Helm chart for MinIO Operator digest: 95be83e629b8012cfc5bcbbf9f74d2d681c50f27d64113e7a1345df65f5ea231 home: https://min.io @@ -939,7 +960,7 @@ entries: version: 5.0.5 - apiVersion: v2 appVersion: v5.0.4 - created: "2023-10-12T10:54:31.762382-07:00" + created: "2023-11-16T14:36:09.871693-08:00" description: A Helm chart for MinIO Operator digest: b95039620fae7106aef2f0b3a038269f831dfc62aebb009de440bb2dbaa50029 home: https://min.io @@ -960,7 +981,7 @@ entries: version: 5.0.4 - apiVersion: v2 appVersion: v5.0.3 - created: "2023-10-12T10:54:31.761732-07:00" + created: "2023-11-16T14:36:09.870232-08:00" description: A Helm chart for MinIO Operator digest: 6c7fc60878d0cf4c79889bd21d6a1bfde322c8f7987c294bc0eb0d95a18169b2 home: https://min.io @@ -981,7 +1002,7 @@ entries: version: 5.0.3 - apiVersion: v2 appVersion: v5.0.2 - created: "2023-10-12T10:54:31.761028-07:00" + created: "2023-11-16T14:36:09.868606-08:00" description: A Helm chart for MinIO Operator digest: aab64d84fc51473212af5dbd353c440debdf014d60b8af065da9a7478fe2e486 home: https://min.io @@ -1002,7 +1023,7 @@ entries: version: 5.0.2 - apiVersion: v2 appVersion: v5.0.1 - created: "2023-10-12T10:54:31.759636-07:00" + created: "2023-11-16T14:36:09.865629-08:00" description: A Helm chart for MinIO Operator digest: 2be349f743983af26bf0d5385b268f2e819dff9975d4476da0961f706a1795f7 home: https://min.io @@ -1023,7 +1044,7 @@ entries: version: 5.0.1 - apiVersion: v2 appVersion: v5.0.0 - created: "2023-10-12T10:54:31.7589-07:00" + created: "2023-11-16T14:36:09.864799-08:00" description: A Helm chart for MinIO Operator digest: b39696e784156aff4424d6c08381c1080487e06dfe6c9269dd8244560b70c5b1 home: https://min.io @@ -1044,7 +1065,7 @@ entries: version: 5.0.0 - apiVersion: v2 appVersion: v4.5.8 - created: "2023-10-12T10:54:31.75776-07:00" + created: "2023-11-16T14:36:09.863317-08:00" description: A Helm chart for MinIO Operator digest: a0ddfc8a48a00cba431617a61bc8e1d2a3d7cb461cf7232b92f9bbb9f068324a home: https://min.io @@ -1065,7 +1086,7 @@ entries: version: 4.5.8 - apiVersion: v2 appVersion: v4.5.7 - created: "2023-10-12T10:54:31.756774-07:00" + created: "2023-11-16T14:36:09.861358-08:00" description: A Helm chart for MinIO Operator digest: 41513d7b1e15d40256641baea0641293fc8f0e05a2bbe565b4c13377e618b8e0 home: https://min.io @@ -1086,7 +1107,7 @@ entries: version: 4.5.7 - apiVersion: v2 appVersion: v4.5.6 - created: "2023-10-12T10:54:31.755766-07:00" + created: "2023-11-16T14:36:09.859108-08:00" description: A Helm chart for MinIO Operator digest: b87e72fbb0d846239983be9654822fdb89519d5cfe17506f983743b6e4f89aa1 home: https://min.io @@ -1107,7 +1128,7 @@ entries: version: 4.5.6 - apiVersion: v2 appVersion: v4.5.5 - created: "2023-10-12T10:54:31.754543-07:00" + created: "2023-11-16T14:36:09.85717-08:00" description: A Helm chart for MinIO Operator digest: f1adecf0d94f5181917205f1aaeff3cc86c9037fd3f2dddb0cbeeb0ca4af4068 home: https://min.io @@ -1128,7 +1149,7 @@ entries: version: 4.5.5 - apiVersion: v2 appVersion: v4.5.4 - created: "2023-10-12T10:54:31.753736-07:00" + created: "2023-11-16T14:36:09.855386-08:00" description: A Helm chart for MinIO Operator digest: 7671c2e3d5242fe9f09c28119818ffac43e36b40a3117c839dd7cffb81645312 home: https://min.io @@ -1149,7 +1170,7 @@ entries: version: 4.5.4 - apiVersion: v2 appVersion: v4.5.3 - created: "2023-10-12T10:54:31.752879-07:00" + created: "2023-11-16T14:36:09.852603-08:00" description: A Helm chart for MinIO Operator digest: b684dc8b61518cc4b4a94c4821fda84a6d5d62dec80dcda8ddfa87362a0e11cd home: https://min.io @@ -1170,7 +1191,7 @@ entries: version: 4.5.3 - apiVersion: v2 appVersion: v4.5.2 - created: "2023-10-12T10:54:31.751638-07:00" + created: "2023-11-16T14:36:09.851529-08:00" description: A Helm chart for MinIO Operator digest: a51dad184718cf01521d7c75d18bee75aa3f6d097d6ccab89db6a6d4c4d89223 home: https://min.io @@ -1191,7 +1212,7 @@ entries: version: 4.5.2 - apiVersion: v2 appVersion: v4.5.1 - created: "2023-10-12T10:54:31.750781-07:00" + created: "2023-11-16T14:36:09.849971-08:00" description: A Helm chart for MinIO Operator digest: d1be481f3701bc53041e0b6f23e0b9a94f6af0f2cc3da9034d609c608958f892 home: https://min.io @@ -1212,7 +1233,7 @@ entries: version: 4.5.1 - apiVersion: v2 appVersion: v4.5.0 - created: "2023-10-12T10:54:31.749935-07:00" + created: "2023-11-16T14:36:09.847901-08:00" description: A Helm chart for MinIO Operator digest: cee44179e562c94b494747af1dddf6b20d4ccdfa951207e53add75c7402c3925 home: https://min.io @@ -1233,7 +1254,7 @@ entries: version: 4.5.0 - apiVersion: v2 appVersion: v4.4.28 - created: "2023-10-12T10:54:31.74166-07:00" + created: "2023-11-16T14:36:09.836203-08:00" description: A Helm chart for MinIO Operator digest: a018da827765df710c7b78c2c6dc3a8c68ea80f9806ab595b65a11d3acb88aec home: https://min.io @@ -1254,7 +1275,7 @@ entries: version: 4.4.28 - apiVersion: v2 appVersion: v4.4.27 - created: "2023-10-12T10:54:31.74065-07:00" + created: "2023-11-16T14:36:09.834399-08:00" description: A Helm chart for MinIO Operator digest: ebd3e2df74ac714d9238bb5f6c76ccaecfbf022b1381f4c3ebf6a6183ca80bf8 home: https://min.io @@ -1275,7 +1296,7 @@ entries: version: 4.4.27 - apiVersion: v2 appVersion: v4.4.26 - created: "2023-10-12T10:54:31.739335-07:00" + created: "2023-11-16T14:36:09.833282-08:00" description: A Helm chart for MinIO Operator digest: d29e08108f60bb26c4ba198144128bfd72b811d9c2a38440b45089b99ddf8ab4 home: https://min.io @@ -1296,7 +1317,7 @@ entries: version: 4.4.26 - apiVersion: v2 appVersion: v4.4.25 - created: "2023-10-12T10:54:31.738596-07:00" + created: "2023-11-16T14:36:09.83225-08:00" description: A Helm chart for MinIO Operator digest: fab2f0395ae74430b22dc4293ec6846cd77e5193e6265defcdce41ed43ecffd6 home: https://min.io @@ -1317,7 +1338,7 @@ entries: version: 4.4.25 - apiVersion: v2 appVersion: v4.4.24 - created: "2023-10-12T10:54:31.737845-07:00" + created: "2023-11-16T14:36:09.83106-08:00" description: A Helm chart for MinIO Operator digest: eaa1e7814cc57a7522bf37d1aad8d2558647482cc17e6eccd187ad129732bb0f home: https://min.io @@ -1338,7 +1359,7 @@ entries: version: 4.4.24 - apiVersion: v2 appVersion: v4.4.23 - created: "2023-10-12T10:54:31.737069-07:00" + created: "2023-11-16T14:36:09.828313-08:00" description: A Helm chart for MinIO Operator digest: d68d464d63d76d7547fd484425cff0a147d9813e081811c095850742a97c0c79 home: https://min.io @@ -1359,7 +1380,7 @@ entries: version: 4.4.23 - apiVersion: v2 appVersion: v4.4.22 - created: "2023-10-12T10:54:31.735827-07:00" + created: "2023-11-16T14:36:09.827095-08:00" description: A Helm chart for MinIO Operator digest: 7aea39787ee933f3886544a4c0aadafe10e6faeed8b4faa4cc67e9f59bd8527a home: https://min.io @@ -1380,7 +1401,7 @@ entries: version: 4.4.22 - apiVersion: v2 appVersion: v4.4.21 - created: "2023-10-12T10:54:31.734978-07:00" + created: "2023-11-16T14:36:09.826076-08:00" description: A Helm chart for MinIO Operator digest: c13aadc25a6c8140df82b6778a38b5b4cff8b09c4f3227b3479419f3abd0f6f0 home: https://min.io @@ -1401,7 +1422,7 @@ entries: version: 4.4.21 - apiVersion: v2 appVersion: v4.4.20 - created: "2023-10-12T10:54:31.734204-07:00" + created: "2023-11-16T14:36:09.82449-08:00" description: A Helm chart for MinIO Operator digest: 3dece764e01c5b64802a8f9d85f2bff526429f8ceb425b3e831bfbcafb474e32 home: https://min.io @@ -1422,7 +1443,7 @@ entries: version: 4.4.20 - apiVersion: v2 appVersion: v4.4.19 - created: "2023-10-12T10:54:31.731816-07:00" + created: "2023-11-16T14:36:09.820597-08:00" description: A Helm chart for MinIO Operator digest: 2279d2f725552281a7237e0f5a784298ab07b5dee5e7d6a4b3e4248ff0cffed6 home: https://min.io @@ -1443,7 +1464,7 @@ entries: version: 4.4.19 - apiVersion: v2 appVersion: v4.4.18 - created: "2023-10-12T10:54:31.73109-07:00" + created: "2023-11-16T14:36:09.81961-08:00" description: A Helm chart for MinIO Operator digest: 76ac4effba9eec872147a5df9a3d98fc5f4c436a228d90fd4da0ccc70e79f48e home: https://min.io @@ -1464,7 +1485,7 @@ entries: version: 4.4.18 - apiVersion: v2 appVersion: v4.4.17 - created: "2023-10-12T10:54:31.730342-07:00" + created: "2023-11-16T14:36:09.818637-08:00" description: A Helm chart for MinIO Operator digest: f6130cdd591debd916b148c627eddb0324c07f83c2e7625afa0fb03bdf60007a home: https://min.io @@ -1485,7 +1506,7 @@ entries: version: 4.4.17 - apiVersion: v2 appVersion: v4.4.16 - created: "2023-10-12T10:54:31.729137-07:00" + created: "2023-11-16T14:36:09.816523-08:00" description: A Helm chart for MinIO Operator digest: 4c030fbfd273d005ce968136cddd39a75714dfe1c364dc30d84a15af70793604 home: https://min.io @@ -1506,7 +1527,7 @@ entries: version: 4.4.16 - apiVersion: v2 appVersion: v4.4.15 - created: "2023-10-12T10:54:31.728354-07:00" + created: "2023-11-16T14:36:09.815079-08:00" description: A Helm chart for MinIO Operator digest: c1df137527f28d8aaa3e9456bbfdca2fceddeb16d3ebfe986b9a9cf016050c70 home: https://min.io @@ -1527,7 +1548,7 @@ entries: version: 4.4.15 - apiVersion: v2 appVersion: v4.4.14 - created: "2023-10-12T10:54:31.727584-07:00" + created: "2023-11-16T14:36:09.813737-08:00" description: A Helm chart for MinIO Operator digest: 2cb8d2c9b9dcbf7b34f7f94d505d1d40382523c5081c90ff4efaa63c153982f2 home: https://min.io @@ -1548,7 +1569,7 @@ entries: version: 4.4.14 - apiVersion: v2 appVersion: v4.4.13 - created: "2023-10-12T10:54:31.726748-07:00" + created: "2023-11-16T14:36:09.812747-08:00" description: A Helm chart for MinIO Operator digest: 31611b5cae6996da61ea7dfbdb67d7e2c2fae3f0caba6bb7332930f381913a14 home: https://min.io @@ -1569,7 +1590,7 @@ entries: version: 4.4.13 - apiVersion: v2 appVersion: v4.4.10 - created: "2023-10-12T10:54:31.724401-07:00" + created: "2023-11-16T14:36:09.810811-08:00" description: A Helm chart for MinIO Operator digest: dfe68285d8582172a8752fd1d98de21ef2c73f102965204fe08560e17eb1b623 home: https://min.io @@ -1590,7 +1611,7 @@ entries: version: 4.4.10 - apiVersion: v2 appVersion: v4.4.9 - created: "2023-10-12T10:54:31.748711-07:00" + created: "2023-11-16T14:36:09.845067-08:00" description: A Helm chart for MinIO Operator digest: 48871a9b6700410da44472cdee3c613d4ed664a146790162f0e645d195209fad home: https://min.io @@ -1611,7 +1632,7 @@ entries: version: 4.4.9 - apiVersion: v2 appVersion: v4.4.8 - created: "2023-10-12T10:54:31.74793-07:00" + created: "2023-11-16T14:36:09.844033-08:00" description: A Helm chart for MinIO Operator digest: 679d40cca06a8c5f2b08fdbd842f3f22fb33ebc459b7f0146d6c156b58514c20 home: https://min.io @@ -1632,7 +1653,7 @@ entries: version: 4.4.8 - apiVersion: v2 appVersion: v4.4.7 - created: "2023-10-12T10:54:31.747096-07:00" + created: "2023-11-16T14:36:09.843115-08:00" description: A Helm chart for MinIO Operator digest: 53896f8155cb13169b525cb8e2b18decfd52695db36fa353538cb7f2ffbe9df4 home: https://min.io @@ -1653,7 +1674,7 @@ entries: version: 4.4.7 - apiVersion: v2 appVersion: v4.4.6 - created: "2023-10-12T10:54:31.745759-07:00" + created: "2023-11-16T14:36:09.841913-08:00" description: A Helm chart for MinIO Operator digest: 13c03c440be7c5106316b3a331b876b390328261d3b1c1c97012d1a38d82386a home: https://min.io @@ -1674,7 +1695,7 @@ entries: version: 4.4.6 - apiVersion: v2 appVersion: v4.4.5 - created: "2023-10-12T10:54:31.744995-07:00" + created: "2023-11-16T14:36:09.839923-08:00" description: A Helm chart for MinIO Operator digest: 31b5f65acc5b00e7a044cc56ed0b96b731d9d37e657b26b8610bf369003627e1 home: https://min.io @@ -1695,7 +1716,7 @@ entries: version: 4.4.5 - apiVersion: v2 appVersion: v4.4.4 - created: "2023-10-12T10:54:31.744161-07:00" + created: "2023-11-16T14:36:09.838996-08:00" description: A Helm chart for MinIO Operator digest: 638b415dbf8e12cecb6729f93024dfcb500b9afff96994f4b91c9abca147919c home: https://min.io @@ -1716,7 +1737,7 @@ entries: version: 4.4.4 - apiVersion: v2 appVersion: v4.4.3 - created: "2023-10-12T10:54:31.742674-07:00" + created: "2023-11-16T14:36:09.837952-08:00" description: A Helm chart for MinIO Operator digest: ab435f529db28f5160ca7e41b65cf1fd6ffdcf264aee87c6552c2fbf6ed7ff22 home: https://min.io @@ -1737,7 +1758,7 @@ entries: version: 4.4.3 - apiVersion: v2 appVersion: v4.4.2 - created: "2023-10-12T10:54:31.733429-07:00" + created: "2023-11-16T14:36:09.821869-08:00" description: A Helm chart for MinIO Operator digest: f77db593851240225fab7616fe0e6f8ed490eaa4f7154694fd7a89d54fc4bb77 home: https://min.io @@ -1758,7 +1779,7 @@ entries: version: 4.4.2 - apiVersion: v2 appVersion: v4.4.1 - created: "2023-10-12T10:54:31.723301-07:00" + created: "2023-11-16T14:36:09.809803-08:00" description: A Helm chart for MinIO Operator digest: 56198f5b196e41e50f5c5bce12ad9b17438192356ca925a67f637479b7a964a9 home: https://min.io @@ -1779,7 +1800,7 @@ entries: version: 4.4.1 - apiVersion: v2 appVersion: v4.4.0 - created: "2023-10-12T10:54:31.722436-07:00" + created: "2023-11-16T14:36:09.808886-08:00" description: A Helm chart for MinIO Operator digest: 94c6cb95f3a5869e8eecc5a8b93e0faca737fbcb9ffc85d9b2b84703020c8ff7 home: https://min.io @@ -1800,7 +1821,7 @@ entries: version: 4.4.0 - apiVersion: v2 appVersion: v4.3.9 - created: "2023-10-12T10:54:31.721061-07:00" + created: "2023-11-16T14:36:09.807931-08:00" description: A Helm chart for MinIO Operator digest: d29f9312f637f81f0bd59e06083aab0fa811b18069a0a7e97ecacbd4e26e2396 home: https://min.io @@ -1821,7 +1842,7 @@ entries: version: 4.3.9 - apiVersion: v2 appVersion: v4.3.8 - created: "2023-10-12T10:54:31.718798-07:00" + created: "2023-11-16T14:36:09.80624-08:00" description: A Helm chart for MinIO Operator digest: a5b77bff10ab24fa8a64967169f1fa85fcc228380467fb2563f15ba0a27eae3e home: https://min.io @@ -1842,7 +1863,7 @@ entries: version: 4.3.8 - apiVersion: v2 appVersion: v4.3.7 - created: "2023-10-12T10:54:31.717151-07:00" + created: "2023-11-16T14:36:09.805281-08:00" description: A Helm chart for MinIO Operator digest: fc7eb9d46ea779e8b5478c54b8976764e1e8abaa5a6130be413ae946c3a1b23c home: https://min.io @@ -1863,7 +1884,7 @@ entries: version: 4.3.7 - apiVersion: v2 appVersion: v4.3.6 - created: "2023-10-12T10:54:31.71641-07:00" + created: "2023-11-16T14:36:09.804361-08:00" description: A Helm chart for MinIO Operator digest: aec2d538e0fb4cfe0a4397d4d7ef64a129adaa8b490a526d047d98ee9ebbf292 home: https://min.io @@ -1883,9 +1904,30 @@ entries: - https://operator.min.io/helm-releases/operator-4.3.6.tgz version: 4.3.6 tenant: + - apiVersion: v2 + appVersion: v5.0.11 + created: "2023-11-16T14:36:09.915151-08:00" + description: A Helm chart for MinIO Operator + digest: 1dc7ff2e03d1c5895cd14c2746a6de52ae85feafff11f9b81b313c4401986ae2 + home: https://min.io + icon: https://min.io/resources/img/logo/MINIO_wordmark.png + keywords: + - storage + - object-storage + - S3 + maintainers: + - email: dev@minio.io + name: MinIO, Inc + name: tenant + sources: + - https://github.com/minio/operator + type: application + urls: + - https://operator.min.io/helm-releases/tenant-5.0.11.tgz + version: 5.0.11 - apiVersion: v2 appVersion: v5.0.10 - created: "2023-10-12T10:54:31.792526-07:00" + created: "2023-11-16T14:36:09.913085-08:00" description: A Helm chart for MinIO Operator digest: 423be0e3af854bbecafd2c694ca398ae9e21c8397662991fb097dd3cc0e8e40a home: https://min.io @@ -1906,7 +1948,7 @@ entries: version: 5.0.10 - apiVersion: v2 appVersion: v5.0.9 - created: "2023-10-12T10:54:31.797731-07:00" + created: "2023-11-16T14:36:09.922514-08:00" description: A Helm chart for MinIO Operator digest: c5d0376d2b34a4cbdd5595f1b63e691d48313e5107327661b3548aeee3747e67 home: https://min.io @@ -1927,7 +1969,7 @@ entries: version: 5.0.9 - apiVersion: v2 appVersion: v5.0.8 - created: "2023-10-12T10:54:31.79689-07:00" + created: "2023-11-16T14:36:09.921604-08:00" description: A Helm chart for MinIO Operator digest: 538b884edf55c9f5818f09eeb62219222307927402374dcf74daf7999ad3a1ff home: https://min.io @@ -1948,7 +1990,7 @@ entries: version: 5.0.8 - apiVersion: v2 appVersion: v5.0.7 - created: "2023-10-12T10:54:31.796168-07:00" + created: "2023-11-16T14:36:09.920686-08:00" description: A Helm chart for MinIO Operator digest: a579f8305b766110c80c81882e6d87e9a2ba4531dc47258576300d823c7e79b0 home: https://min.io @@ -1969,7 +2011,7 @@ entries: version: 5.0.7 - apiVersion: v2 appVersion: v5.0.6 - created: "2023-10-12T10:54:31.795455-07:00" + created: "2023-11-16T14:36:09.919875-08:00" description: A Helm chart for MinIO Operator digest: c5030727cbafd3b51cb8801103832ccd84f1bb02897b635a3528d9bc983ee3a2 home: https://min.io @@ -1990,7 +2032,7 @@ entries: version: 5.0.6 - apiVersion: v2 appVersion: v5.0.5 - created: "2023-10-12T10:54:31.794763-07:00" + created: "2023-11-16T14:36:09.919054-08:00" description: A Helm chart for MinIO Operator digest: 849a51d2792f598d09f6f233eb80fa189a9dd8a3f72a14255e2e662a2c720053 home: https://min.io @@ -2011,7 +2053,7 @@ entries: version: 5.0.5 - apiVersion: v2 appVersion: v5.0.4 - created: "2023-10-12T10:54:31.794097-07:00" + created: "2023-11-16T14:36:09.918179-08:00" description: A Helm chart for MinIO Operator digest: ca747f759eaad2d97a713b902da863728d9621834cb7cf211fef74764716d77d home: https://min.io @@ -2032,7 +2074,7 @@ entries: version: 5.0.4 - apiVersion: v2 appVersion: v5.0.3 - created: "2023-10-12T10:54:31.793554-07:00" + created: "2023-11-16T14:36:09.917508-08:00" description: A Helm chart for MinIO Operator digest: ab7c1020e4c99db199df0bb91f8f0c5c9b3f7fde9d10b8aa81bde663fb7fba44 home: https://min.io @@ -2053,7 +2095,7 @@ entries: version: 5.0.3 - apiVersion: v2 appVersion: v5.0.2 - created: "2023-10-12T10:54:31.793024-07:00" + created: "2023-11-16T14:36:09.916-08:00" description: A Helm chart for MinIO Operator digest: cc1c1e7c7540f0cf4ab6c4e1a23842daf63b3a7a9678a0213277d3fd702d1744 home: https://min.io @@ -2074,7 +2116,7 @@ entries: version: 5.0.2 - apiVersion: v2 appVersion: v5.0.1 - created: "2023-10-12T10:54:31.79193-07:00" + created: "2023-11-16T14:36:09.911833-08:00" description: A Helm chart for MinIO Operator digest: 127925004dc5ac1e6be08b4f7f64c368f51ca356c858bcfad4afba0d465c78eb home: https://min.io @@ -2095,7 +2137,7 @@ entries: version: 5.0.1 - apiVersion: v2 appVersion: v5.0.0 - created: "2023-10-12T10:54:31.791174-07:00" + created: "2023-11-16T14:36:09.909677-08:00" description: A Helm chart for MinIO Operator digest: 05faaa4aadd3e6dfeadc7218745900427073fb1a7d3ab53554dcb9d4e11b519a home: https://min.io @@ -2116,7 +2158,7 @@ entries: version: 5.0.0 - apiVersion: v2 appVersion: v4.5.8 - created: "2023-10-12T10:54:31.789538-07:00" + created: "2023-11-16T14:36:09.909035-08:00" description: A Helm chart for MinIO Operator digest: 32603b9e86f22ad1f2c47eb321126e622ac596246d3108997d476ae0ec98b25a home: https://min.io @@ -2137,7 +2179,7 @@ entries: version: 4.5.8 - apiVersion: v2 appVersion: v4.5.7 - created: "2023-10-12T10:54:31.788877-07:00" + created: "2023-11-16T14:36:09.908159-08:00" description: A Helm chart for MinIO Operator digest: b4005b0f52c6dbed01121e855bbebcd75ab027119579cd1590c506f3cc9052a4 home: https://min.io @@ -2158,7 +2200,7 @@ entries: version: 4.5.7 - apiVersion: v2 appVersion: v4.5.6 - created: "2023-10-12T10:54:31.788247-07:00" + created: "2023-11-16T14:36:09.904762-08:00" description: A Helm chart for MinIO Operator digest: 0dd26ce74e188e8e910ada14fd0c53261b305ce081afeceaa331ff4199f84f43 home: https://min.io @@ -2179,7 +2221,7 @@ entries: version: 4.5.6 - apiVersion: v2 appVersion: v4.5.5 - created: "2023-10-12T10:54:31.787649-07:00" + created: "2023-11-16T14:36:09.903887-08:00" description: A Helm chart for MinIO Operator digest: 79138fad6c8ad0a609e2bf8663dd06b4a72ed43a2689cbfa7ec6f77c84a9bb79 home: https://min.io @@ -2200,7 +2242,7 @@ entries: version: 4.5.5 - apiVersion: v2 appVersion: v4.5.4 - created: "2023-10-12T10:54:31.787071-07:00" + created: "2023-11-16T14:36:09.903041-08:00" description: A Helm chart for MinIO Operator digest: 9f7a01771791680d6d2de90a0d20f43c28ebc103f4256e61a228ca79522caa16 home: https://min.io @@ -2221,7 +2263,7 @@ entries: version: 4.5.4 - apiVersion: v2 appVersion: v4.5.3 - created: "2023-10-12T10:54:31.786493-07:00" + created: "2023-11-16T14:36:09.902335-08:00" description: A Helm chart for MinIO Operator digest: 28535cebc7394d4106a3cbd9adb32aa8eaff22a3436219a91713a8e06e4854bb home: https://min.io @@ -2242,7 +2284,7 @@ entries: version: 4.5.3 - apiVersion: v2 appVersion: v4.5.2 - created: "2023-10-12T10:54:31.785906-07:00" + created: "2023-11-16T14:36:09.901245-08:00" description: A Helm chart for MinIO Operator digest: f46708b94148ceeed66c6c3630c519c61f2f7999b537e794a8f7dd8eee4fe87a home: https://min.io @@ -2263,7 +2305,7 @@ entries: version: 4.5.2 - apiVersion: v2 appVersion: v4.5.1 - created: "2023-10-12T10:54:31.785194-07:00" + created: "2023-11-16T14:36:09.90024-08:00" description: A Helm chart for MinIO Operator digest: 1079cda85fb27caf0323e22af5d6604b3efb0bdc004d8ae4130adf39981e7bc6 home: https://min.io @@ -2284,7 +2326,7 @@ entries: version: 4.5.1 - apiVersion: v2 appVersion: v4.5.0 - created: "2023-10-12T10:54:31.784538-07:00" + created: "2023-11-16T14:36:09.89903-08:00" description: A Helm chart for MinIO Operator digest: 71daf13a3430536c32d302baf7d1b15b85aae0ba9b9665a936190e78bcd29a37 home: https://min.io @@ -2305,7 +2347,7 @@ entries: version: 4.5.0 - apiVersion: v2 appVersion: v4.4.28 - created: "2023-10-12T10:54:31.780666-07:00" + created: "2023-11-16T14:36:09.893198-08:00" description: A Helm chart for MinIO Operator digest: 10506f0101f7b8a83eaf1c9323faaed09f24e4fbed70489f1510b73de1e8a37d home: https://min.io @@ -2326,7 +2368,7 @@ entries: version: 4.4.28 - apiVersion: v2 appVersion: v4.4.27 - created: "2023-10-12T10:54:31.780118-07:00" + created: "2023-11-16T14:36:09.892265-08:00" description: A Helm chart for MinIO Operator digest: 00b5cebcb06880f0ac7e968db60f30aa8f7ce708676d75886294e444263e0d91 home: https://min.io @@ -2347,7 +2389,7 @@ entries: version: 4.4.27 - apiVersion: v2 appVersion: v4.4.26 - created: "2023-10-12T10:54:31.779572-07:00" + created: "2023-11-16T14:36:09.890955-08:00" description: A Helm chart for MinIO Operator digest: 901d018eb3a7d5869980b7eb9e3ee98f6e6e03d87916888824195ecf99034e6f home: https://min.io @@ -2368,7 +2410,7 @@ entries: version: 4.4.26 - apiVersion: v2 appVersion: v4.4.25 - created: "2023-10-12T10:54:31.779015-07:00" + created: "2023-11-16T14:36:09.890195-08:00" description: A Helm chart for MinIO Operator digest: 739df832f89ba832082bd31ede3a278a1d5320f53bf2851a87c39565447ca899 home: https://min.io @@ -2389,7 +2431,7 @@ entries: version: 4.4.25 - apiVersion: v2 appVersion: v4.4.24 - created: "2023-10-12T10:54:31.778458-07:00" + created: "2023-11-16T14:36:09.889515-08:00" description: A Helm chart for MinIO Operator digest: a5cf656ddf429b1798102c71b14222eda587d8c84a5bc8f498344dcd3991fbe8 home: https://min.io @@ -2410,7 +2452,7 @@ entries: version: 4.4.24 - apiVersion: v2 appVersion: v4.4.23 - created: "2023-10-12T10:54:31.777875-07:00" + created: "2023-11-16T14:36:09.888796-08:00" description: A Helm chart for MinIO Operator digest: 82936fe6caaefc1420dabec0bad23f7cbd7bad0e18d91177f4be2c8dd7c42f97 home: https://min.io @@ -2431,7 +2473,7 @@ entries: version: 4.4.23 - apiVersion: v2 appVersion: v4.4.22 - created: "2023-10-12T10:54:31.777289-07:00" + created: "2023-11-16T14:36:09.887645-08:00" description: A Helm chart for MinIO Operator digest: 53f14c8a25da32736b97bc454f10f64a24540e54298b40422ce369c89d524d82 home: https://min.io @@ -2452,7 +2494,7 @@ entries: version: 4.4.22 - apiVersion: v2 appVersion: v4.4.21 - created: "2023-10-12T10:54:31.776028-07:00" + created: "2023-11-16T14:36:09.886314-08:00" description: A Helm chart for MinIO Operator digest: d2e7fce3dc9bf61e06a2934cc1baa3257d9394cffa423febe115773065b34eba home: https://min.io @@ -2473,7 +2515,7 @@ entries: version: 4.4.21 - apiVersion: v2 appVersion: v4.4.20 - created: "2023-10-12T10:54:31.775506-07:00" + created: "2023-11-16T14:36:09.885678-08:00" description: A Helm chart for MinIO Operator digest: 451880d3863cf4010e1012dd371af0c18d0f18cf6d535c7f9622db4554558e39 home: https://min.io @@ -2494,7 +2536,7 @@ entries: version: 4.4.20 - apiVersion: v2 appVersion: v4.4.19 - created: "2023-10-12T10:54:31.774505-07:00" + created: "2023-11-16T14:36:09.884671-08:00" description: A Helm chart for MinIO Operator digest: 03f3cbcfd81ac6de399d5e12ee3e9149a3121c1a13c205a9d211a5ca6bb80f3a home: https://min.io @@ -2515,7 +2557,7 @@ entries: version: 4.4.19 - apiVersion: v2 appVersion: v4.4.18 - created: "2023-10-12T10:54:31.773985-07:00" + created: "2023-11-16T14:36:09.884041-08:00" description: A Helm chart for MinIO Operator digest: f57c293a026147b416095d3d71dd5351c5bcbb15ba1a67ff98a23a6ea55cd811 home: https://min.io @@ -2536,7 +2578,7 @@ entries: version: 4.4.18 - apiVersion: v2 appVersion: v4.4.17 - created: "2023-10-12T10:54:31.773363-07:00" + created: "2023-11-16T14:36:09.883381-08:00" description: A Helm chart for MinIO Operator digest: ef875252c6a25d2d88a6f6c9b469ceb0502e215698ddf349e6162d5cea3f7454 home: https://min.io @@ -2557,7 +2599,7 @@ entries: version: 4.4.17 - apiVersion: v2 appVersion: v4.4.16 - created: "2023-10-12T10:54:31.772805-07:00" + created: "2023-11-16T14:36:09.88286-08:00" description: A Helm chart for MinIO Operator digest: 4006976cce87448e1f98eaab2e03ff94a149448569272c3b090043e1784f5a0d home: https://min.io @@ -2578,7 +2620,7 @@ entries: version: 4.4.16 - apiVersion: v2 appVersion: v4.4.15 - created: "2023-10-12T10:54:31.772352-07:00" + created: "2023-11-16T14:36:09.882339-08:00" description: A Helm chart for MinIO Operator digest: d32c2a18765f77073f8f68a00c4f59340b505e7a0ff039e7bdf9c984dfa4fac8 home: https://min.io @@ -2599,7 +2641,7 @@ entries: version: 4.4.15 - apiVersion: v2 appVersion: v4.4.14 - created: "2023-10-12T10:54:31.771881-07:00" + created: "2023-11-16T14:36:09.88187-08:00" description: A Helm chart for MinIO Operator digest: 564c971cc0a6fc8d8e28f4410adad7f24ddb638199ec30360057d6442cb5d5d2 home: https://min.io @@ -2620,7 +2662,7 @@ entries: version: 4.4.14 - apiVersion: v2 appVersion: v4.4.13 - created: "2023-10-12T10:54:31.771408-07:00" + created: "2023-11-16T14:36:09.881474-08:00" description: A Helm chart for MinIO Operator digest: 124b1d7e4bbf5b97542721da1b6ce522026ced596e5c3da0b4b71e6137ca9f20 home: https://min.io @@ -2641,7 +2683,7 @@ entries: version: 4.4.13 - apiVersion: v2 appVersion: v4.4.10 - created: "2023-10-12T10:54:31.770999-07:00" + created: "2023-11-16T14:36:09.881074-08:00" description: A Helm chart for MinIO Operator digest: 7ddf8840cf0b6998d2b0f5eb72fb586cc0dceaf55583528912d5d572df6914bc home: https://min.io @@ -2662,7 +2704,7 @@ entries: version: 4.4.10 - apiVersion: v2 appVersion: v4.4.9 - created: "2023-10-12T10:54:31.783621-07:00" + created: "2023-11-16T14:36:09.896034-08:00" description: A Helm chart for MinIO Operator digest: 9c84dc9ea5122b24c5ef52a597c22213151baf74e4c91c95f90570fa0358d824 home: https://min.io @@ -2683,7 +2725,7 @@ entries: version: 4.4.9 - apiVersion: v2 appVersion: v4.4.8 - created: "2023-10-12T10:54:31.783088-07:00" + created: "2023-11-16T14:36:09.895633-08:00" description: A Helm chart for MinIO Operator digest: 51779e38d74b919d1eb48c21d51174ecc34a3d9e602b53c9ca5f05ad8fd6a02e home: https://min.io @@ -2704,7 +2746,7 @@ entries: version: 4.4.8 - apiVersion: v2 appVersion: v4.4.7 - created: "2023-10-12T10:54:31.782749-07:00" + created: "2023-11-16T14:36:09.895233-08:00" description: A Helm chart for MinIO Operator digest: 6bec3bd8e464c946be4d7de756e23743660686ecc52b7b516509be0f1d80f33b home: https://min.io @@ -2725,7 +2767,7 @@ entries: version: 4.4.7 - apiVersion: v2 appVersion: v4.4.6 - created: "2023-10-12T10:54:31.782434-07:00" + created: "2023-11-16T14:36:09.894834-08:00" description: A Helm chart for MinIO Operator digest: a84048ce81e3b6dc9b7214f6d95f08768985c2aedc7ba377383b0e55bb72ad82 home: https://min.io @@ -2746,7 +2788,7 @@ entries: version: 4.4.6 - apiVersion: v2 appVersion: v4.4.5 - created: "2023-10-12T10:54:31.782105-07:00" + created: "2023-11-16T14:36:09.894425-08:00" description: A Helm chart for MinIO Operator digest: 10337d8d9375bfd87b231b2696f6ee6d3e43bef96bd3ada1db015975da8053c5 home: https://min.io @@ -2767,7 +2809,7 @@ entries: version: 4.4.5 - apiVersion: v2 appVersion: v4.4.4 - created: "2023-10-12T10:54:31.781607-07:00" + created: "2023-11-16T14:36:09.894031-08:00" description: A Helm chart for MinIO Operator digest: 3d28b27c3102f0994b4b1ae7db40f33f79d70cc7d22febfebe11a68bf507a5f8 home: https://min.io @@ -2788,7 +2830,7 @@ entries: version: 4.4.4 - apiVersion: v2 appVersion: v4.4.3 - created: "2023-10-12T10:54:31.78116-07:00" + created: "2023-11-16T14:36:09.893629-08:00" description: A Helm chart for MinIO Operator digest: 528cde9cb02ffd6ebe5820f5f540b019599aa55affbff43627d3524d50825ff1 home: https://min.io @@ -2809,7 +2851,7 @@ entries: version: 4.4.3 - apiVersion: v2 appVersion: v4.4.2 - created: "2023-10-12T10:54:31.774976-07:00" + created: "2023-11-16T14:36:09.885053-08:00" description: A Helm chart for MinIO Operator digest: 1f71d438b2363aafaa4232a8b8d2461f306179b5ec628e0126a52724d25d9138 home: https://min.io @@ -2830,7 +2872,7 @@ entries: version: 4.4.2 - apiVersion: v2 appVersion: v4.4.1 - created: "2023-10-12T10:54:31.770554-07:00" + created: "2023-11-16T14:36:09.880643-08:00" description: A Helm chart for MinIO Operator digest: 2fcb816afa72a3aba0deba2992827a0ad4b3b0e9b19903ac3fc35f461f5cb6b7 home: https://min.io @@ -2851,7 +2893,7 @@ entries: version: 4.4.1 - apiVersion: v2 appVersion: v4.4.0 - created: "2023-10-12T10:54:31.770118-07:00" + created: "2023-11-16T14:36:09.880253-08:00" description: A Helm chart for MinIO Operator digest: c2885c20e28b46609ac1def9bf529ce84275b85521798f254eb410bcdaca8314 home: https://min.io @@ -2872,7 +2914,7 @@ entries: version: 4.4.0 - apiVersion: v2 appVersion: v4.3.9 - created: "2023-10-12T10:54:31.769667-07:00" + created: "2023-11-16T14:36:09.879843-08:00" description: A Helm chart for MinIO Operator digest: ee1c348c272903ea2562650a92cc4654db2bb1f5b617b329dad1586ccbfdb5bb home: https://min.io @@ -2893,7 +2935,7 @@ entries: version: 4.3.9 - apiVersion: v2 appVersion: v4.3.8 - created: "2023-10-12T10:54:31.768794-07:00" + created: "2023-11-16T14:36:09.879121-08:00" description: A Helm chart for MinIO Operator digest: 85ecf1beae2505e993ec939fc7df6fedf55708c665359de3b67b3ef35d768aaf home: https://min.io @@ -2914,7 +2956,7 @@ entries: version: 4.3.8 - apiVersion: v2 appVersion: v4.3.7 - created: "2023-10-12T10:54:31.768273-07:00" + created: "2023-11-16T14:36:09.878073-08:00" description: A Helm chart for MinIO Operator digest: 08fb42ece9b9b356f28c1261620726a7056840527df0c036ed64dd511595c024 home: https://min.io @@ -2935,7 +2977,7 @@ entries: version: 4.3.7 - apiVersion: v2 appVersion: v4.3.6 - created: "2023-10-12T10:54:31.767798-07:00" + created: "2023-11-16T14:36:09.877545-08:00" description: A Helm chart for MinIO Operator digest: 1da42b15ba375963bbc6908a7e5f6fc6605eba059cebf0706da09565e463e2c4 home: https://min.io @@ -2954,4 +2996,4 @@ entries: urls: - https://operator.min.io/helm-releases/tenant-4.3.6.tgz version: 4.3.6 -generated: "2023-10-12T10:54:31.66723-07:00" +generated: "2023-11-16T14:36:09.737373-08:00" diff --git a/kubectl-minio/README.md b/kubectl-minio/README.md index d3ff9666856..5f4a47dae9b 100644 --- a/kubectl-minio/README.md +++ b/kubectl-minio/README.md @@ -20,7 +20,7 @@ Creates MinIO Operator Deployment along with MinIO Tenant CRD, Service account, Options: -- `--image=minio/operator:v5.0.10` +- `--image=minio/operator:v5.0.11` - `--namespace=minio-operator` - `--cluster-domain=cluster.local` - `--namespace-to-watch=default` @@ -87,7 +87,7 @@ Command: `kubectl minio tenant upgrade TENANT_NAME --image IMAGE_TAG [options]` Upgrade MinIO Docker image for the given MinIO Tenant. -example: `kubectl minio tenant upgrade tenant1 --image minio/minio:RELEASE.2023-10-07T15-07-38Z` +example: `kubectl minio tenant upgrade tenant1 --image minio/minio:RELEASE.2023-11-15T20-43-25Z` Options: diff --git a/kubectl-minio/cmd/helpers/constants.go b/kubectl-minio/cmd/helpers/constants.go index 1d8cf604cd8..90f2207498b 100644 --- a/kubectl-minio/cmd/helpers/constants.go +++ b/kubectl-minio/cmd/helpers/constants.go @@ -36,13 +36,13 @@ const ( MinIOAccessMode = "ReadWriteOnce" // DefaultOperatorImage is the default operator image to be used - DefaultOperatorImage = "minio/operator:v5.0.10" + DefaultOperatorImage = "minio/operator:v5.0.11" // DefaultTenantImage is the default MinIO image used while creating tenant - DefaultTenantImage = "minio/minio:RELEASE.2023-10-07T15-07-38Z" + DefaultTenantImage = "minio/minio:RELEASE.2023-11-15T20-43-25Z" // DefaultKESImage is the default KES image used while creating tenant - DefaultKESImage = "minio/kes:2023-10-03T00-48-37Z" + DefaultKESImage = "minio/kes:2023-11-10T10-44-28Z" ) // KESReplicas is the number of replicas for MinIO KES diff --git a/kubectl-minio/cmd/tenant-upgrade.go b/kubectl-minio/cmd/tenant-upgrade.go index 603c57a6112..162696cdff9 100644 --- a/kubectl-minio/cmd/tenant-upgrade.go +++ b/kubectl-minio/cmd/tenant-upgrade.go @@ -49,7 +49,7 @@ func newTenantUpgradeCmd(out io.Writer, errOut io.Writer) *cobra.Command { Use: "upgrade --image ", Short: "Upgrade MinIO image for existing tenant", Long: upgradeDesc, - Example: ` kubectl minio upgrade tenant1 --image quay.io/minio/minio:RELEASE.2023-10-07T15-07-38Z`, + Example: ` kubectl minio upgrade tenant1 --image quay.io/minio/minio:RELEASE.2023-11-15T20-43-25Z`, Args: func(cmd *cobra.Command, args []string) error { return c.validate(args) }, diff --git a/manifests/minio-operator-rhmp.clusterserviceversion.yaml b/manifests/minio-operator-rhmp.clusterserviceversion.yaml index da0bd26a29b..a0fca9e5e29 100644 --- a/manifests/minio-operator-rhmp.clusterserviceversion.yaml +++ b/manifests/minio-operator-rhmp.clusterserviceversion.yaml @@ -32,7 +32,7 @@ metadata: "bucketDNS": false, "domains": {} }, - "image": "quay.io/minio/minio@sha256:7e697b900f60d68e9edd2e8fc0dccd158e98938d924298612c5bbd294f2a1e65", + "image": "quay.io/minio/minio@sha256:7c98dbaba9132bb804c73baeb43f70db20a0c746277c88a9c9c9d3dc188127bb", "imagePullSecret": {}, "mountPath": "/export", "podManagementPolicy": "Parallel", @@ -80,7 +80,6 @@ metadata: ] capabilities: Full Lifecycle categories: AI/Machine Learning, Big Data, Cloud Provider, Storage - createdAt: "2023-10-12T17:54:23Z" description: |- MinIO is a Kubernetes-native high performance object store with an S3-compatible API. The MinIO Operator supports deploying MinIO Tenants @@ -89,11 +88,11 @@ metadata: marketplace.openshift.io/remote-workflow: https://marketplace.redhat.com/en-us/operators/minio-operator-rhmp/pricing?utm_source=openshift_console marketplace.openshift.io/support-workflow: https://marketplace.redhat.com/en-us/operators/minio-operator-rhmp/support?utm_source=openshift_console operatorframework.io/suggested-namespace: minio-operator - operators.operatorframework.io/builder: operator-sdk-v1.32.0 + operators.operatorframework.io/builder: operator-sdk-v1.22.2 operators.operatorframework.io/project_layout: unknown repository: https://github.com/minio/operator - containerImage: quay.io/minio/operator:v5.0.10 - name: minio-operator-rhmp.v5.0.10 + containerImage: quay.io/minio/operator:v5.0.11 + name: minio-operator-rhmp.v5.0.11 namespace: minio-operator spec: apiservicedefinitions: {} @@ -380,6 +379,7 @@ spec: - get - update - list + - delete - apiGroups: - "" resources: @@ -564,7 +564,7 @@ spec: - args: - ui - --certs-dir=/tmp/certs - image: quay.io/minio/operator:v5.0.10 + image: quay.io/minio/operator:v5.0.11 imagePullPolicy: IfNotPresent name: console ports: @@ -577,6 +577,8 @@ spec: volumeMounts: - mountPath: /tmp/certs name: tls-certificates + - mountPath: /tmp/certs/CAs + name: tmp serviceAccountName: console-sa volumes: - name: tls-certificates @@ -597,6 +599,8 @@ spec: path: CAs/ca.crt name: openshift-service-ca.crt optional: true + - emptyDir: {} + name: tmp - label: app.kubernetes.io/instance: minio-operator app.kubernetes.io/name: operator @@ -638,8 +642,8 @@ spec: - name: MINIO_CONSOLE_TLS_ENABLE value: "on" - name: OPERATOR_STS_ENABLED - value: "off" - image: quay.io/minio/operator:v5.0.10 + value: "on" + image: quay.io/minio/operator:v5.0.11 imagePullPolicy: IfNotPresent name: minio-operator resources: @@ -757,11 +761,11 @@ spec: name: MinIO Inc url: https://min.io relatedImages: - - image: minio/operator@sha256:170b154d2c61c5a6f9dfbe4137e78815102a99fb9ab3aa6baf68750647e6261a + - image: minio/operator@sha256:58c5114003fdc38877db2dc6ca45bc4b16572cc3e40c2fcc20702c5ccaa01caa name: console - - image: minio/operator@sha256:170b154d2c61c5a6f9dfbe4137e78815102a99fb9ab3aa6baf68750647e6261a + - image: minio/operator@sha256:58c5114003fdc38877db2dc6ca45bc4b16572cc3e40c2fcc20702c5ccaa01caa name: minio-operator - - image: quay.io/minio/minio@sha256:7e697b900f60d68e9edd2e8fc0dccd158e98938d924298612c5bbd294f2a1e65 - name: minio-7e697b900f60d68e9edd2e8fc0dccd158e98938d924298612c5bbd294f2a1e65-annotation - version: 5.0.10 + - image: quay.io/minio/minio@sha256:7c98dbaba9132bb804c73baeb43f70db20a0c746277c88a9c9c9d3dc188127bb + name: minio-7c98dbaba9132bb804c73baeb43f70db20a0c746277c88a9c9c9d3dc188127bb-annotation + version: 5.0.11 replaces: minio-operator-rhmp.v5.0.9 diff --git a/manifests/minio.min.io_tenants.yaml b/manifests/minio.min.io_tenants.yaml index d18f067d261..697304ebed5 100644 --- a/manifests/minio.min.io_tenants.yaml +++ b/manifests/minio.min.io_tenants.yaml @@ -1355,6 +1355,19 @@ spec: format: int32 type: integer type: object + resizePolicy: + items: + properties: + resourceName: + type: string + restartPolicy: + type: string + required: + - resourceName + - restartPolicy + type: object + type: array + x-kubernetes-list-type: atomic resources: properties: claims: @@ -1386,6 +1399,8 @@ spec: x-kubernetes-int-or-string: true type: object type: object + restartPolicy: + type: string securityContext: properties: allowPrivilegeEscalation: @@ -2755,6 +2770,8 @@ spec: additionalProperties: type: string type: object + reclaimStorage: + type: boolean resources: properties: claims: @@ -3049,6 +3066,11 @@ spec: items: type: string type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular allocatedResources: additionalProperties: anyOf: @@ -3089,8 +3111,6 @@ spec: type: array phase: type: string - resizeStatus: - type: string type: object type: object volumesPerServer: @@ -3596,6 +3616,19 @@ spec: format: int32 type: integer type: object + resizePolicy: + items: + properties: + resourceName: + type: string + restartPolicy: + type: string + required: + - resourceName + - restartPolicy + type: object + type: array + x-kubernetes-list-type: atomic resources: properties: claims: @@ -3627,6 +3660,8 @@ spec: x-kubernetes-int-or-string: true type: object type: object + restartPolicy: + type: string securityContext: properties: allowPrivilegeEscalation: @@ -3972,6 +4007,11 @@ spec: items: type: string type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular allocatedResources: additionalProperties: anyOf: @@ -4012,8 +4052,6 @@ spec: type: array phase: type: string - resizeStatus: - type: string type: object type: object type: array @@ -4745,8 +4783,6 @@ spec: - name type: object type: array - required: - - containers type: object startup: properties: diff --git a/pkg/apis/minio.min.io/v2/constants.go b/pkg/apis/minio.min.io/v2/constants.go index 2dd348c7210..044bd2fbd63 100644 --- a/pkg/apis/minio.min.io/v2/constants.go +++ b/pkg/apis/minio.min.io/v2/constants.go @@ -97,7 +97,7 @@ const MinIOVolumeMountPath = "/export" const MinIOVolumeSubPath = "" // DefaultMinIOImage specifies the default MinIO Docker hub image -const DefaultMinIOImage = "minio/minio:RELEASE.2023-10-07T15-07-38Z" +const DefaultMinIOImage = "minio/minio:RELEASE.2023-11-15T20-43-25Z" // DefaultMinIOUpdateURL specifies the default MinIO URL where binaries are // pulled from during MinIO upgrades @@ -135,7 +135,7 @@ const ConsoleAdminPolicyName = "consoleAdmin" // KES Related Constants // DefaultKESImage specifies the latest KES Docker hub image -const DefaultKESImage = "minio/kes:2023-10-03T00-48-37Z" +const DefaultKESImage = "minio/kes:2023-11-10T10-44-28Z" // KESInstanceLabel is applied to the KES pods of a Tenant cluster const KESInstanceLabel = "v1.min.io/kes" diff --git a/pkg/controller/operator.go b/pkg/controller/operator.go index bdf6db38bcb..2c877c83079 100644 --- a/pkg/controller/operator.go +++ b/pkg/controller/operator.go @@ -60,7 +60,7 @@ const ( // DefaultDeploymentName is the default name of the operator deployment DefaultDeploymentName = "minio-operator" // DefaultOperatorImage is the version fo the operator being used - DefaultOperatorImage = "minio/operator:v5.0.10" + DefaultOperatorImage = "minio/operator:v5.0.11" // DefaultOperatorImageEnv is the default image to minio instance DefaultOperatorImageEnv = "MINIO_OPERATOR_IMAGE" ) diff --git a/redhat-marketplace/manifests/minio-operator-rhmp.clusterserviceversion.yaml b/redhat-marketplace/manifests/minio-operator-rhmp.clusterserviceversion.yaml index da0bd26a29b..a0fca9e5e29 100644 --- a/redhat-marketplace/manifests/minio-operator-rhmp.clusterserviceversion.yaml +++ b/redhat-marketplace/manifests/minio-operator-rhmp.clusterserviceversion.yaml @@ -32,7 +32,7 @@ metadata: "bucketDNS": false, "domains": {} }, - "image": "quay.io/minio/minio@sha256:7e697b900f60d68e9edd2e8fc0dccd158e98938d924298612c5bbd294f2a1e65", + "image": "quay.io/minio/minio@sha256:7c98dbaba9132bb804c73baeb43f70db20a0c746277c88a9c9c9d3dc188127bb", "imagePullSecret": {}, "mountPath": "/export", "podManagementPolicy": "Parallel", @@ -80,7 +80,6 @@ metadata: ] capabilities: Full Lifecycle categories: AI/Machine Learning, Big Data, Cloud Provider, Storage - createdAt: "2023-10-12T17:54:23Z" description: |- MinIO is a Kubernetes-native high performance object store with an S3-compatible API. The MinIO Operator supports deploying MinIO Tenants @@ -89,11 +88,11 @@ metadata: marketplace.openshift.io/remote-workflow: https://marketplace.redhat.com/en-us/operators/minio-operator-rhmp/pricing?utm_source=openshift_console marketplace.openshift.io/support-workflow: https://marketplace.redhat.com/en-us/operators/minio-operator-rhmp/support?utm_source=openshift_console operatorframework.io/suggested-namespace: minio-operator - operators.operatorframework.io/builder: operator-sdk-v1.32.0 + operators.operatorframework.io/builder: operator-sdk-v1.22.2 operators.operatorframework.io/project_layout: unknown repository: https://github.com/minio/operator - containerImage: quay.io/minio/operator:v5.0.10 - name: minio-operator-rhmp.v5.0.10 + containerImage: quay.io/minio/operator:v5.0.11 + name: minio-operator-rhmp.v5.0.11 namespace: minio-operator spec: apiservicedefinitions: {} @@ -380,6 +379,7 @@ spec: - get - update - list + - delete - apiGroups: - "" resources: @@ -564,7 +564,7 @@ spec: - args: - ui - --certs-dir=/tmp/certs - image: quay.io/minio/operator:v5.0.10 + image: quay.io/minio/operator:v5.0.11 imagePullPolicy: IfNotPresent name: console ports: @@ -577,6 +577,8 @@ spec: volumeMounts: - mountPath: /tmp/certs name: tls-certificates + - mountPath: /tmp/certs/CAs + name: tmp serviceAccountName: console-sa volumes: - name: tls-certificates @@ -597,6 +599,8 @@ spec: path: CAs/ca.crt name: openshift-service-ca.crt optional: true + - emptyDir: {} + name: tmp - label: app.kubernetes.io/instance: minio-operator app.kubernetes.io/name: operator @@ -638,8 +642,8 @@ spec: - name: MINIO_CONSOLE_TLS_ENABLE value: "on" - name: OPERATOR_STS_ENABLED - value: "off" - image: quay.io/minio/operator:v5.0.10 + value: "on" + image: quay.io/minio/operator:v5.0.11 imagePullPolicy: IfNotPresent name: minio-operator resources: @@ -757,11 +761,11 @@ spec: name: MinIO Inc url: https://min.io relatedImages: - - image: minio/operator@sha256:170b154d2c61c5a6f9dfbe4137e78815102a99fb9ab3aa6baf68750647e6261a + - image: minio/operator@sha256:58c5114003fdc38877db2dc6ca45bc4b16572cc3e40c2fcc20702c5ccaa01caa name: console - - image: minio/operator@sha256:170b154d2c61c5a6f9dfbe4137e78815102a99fb9ab3aa6baf68750647e6261a + - image: minio/operator@sha256:58c5114003fdc38877db2dc6ca45bc4b16572cc3e40c2fcc20702c5ccaa01caa name: minio-operator - - image: quay.io/minio/minio@sha256:7e697b900f60d68e9edd2e8fc0dccd158e98938d924298612c5bbd294f2a1e65 - name: minio-7e697b900f60d68e9edd2e8fc0dccd158e98938d924298612c5bbd294f2a1e65-annotation - version: 5.0.10 + - image: quay.io/minio/minio@sha256:7c98dbaba9132bb804c73baeb43f70db20a0c746277c88a9c9c9d3dc188127bb + name: minio-7c98dbaba9132bb804c73baeb43f70db20a0c746277c88a9c9c9d3dc188127bb-annotation + version: 5.0.11 replaces: minio-operator-rhmp.v5.0.9 diff --git a/redhat-marketplace/manifests/minio.min.io_tenants.yaml b/redhat-marketplace/manifests/minio.min.io_tenants.yaml index d18f067d261..697304ebed5 100644 --- a/redhat-marketplace/manifests/minio.min.io_tenants.yaml +++ b/redhat-marketplace/manifests/minio.min.io_tenants.yaml @@ -1355,6 +1355,19 @@ spec: format: int32 type: integer type: object + resizePolicy: + items: + properties: + resourceName: + type: string + restartPolicy: + type: string + required: + - resourceName + - restartPolicy + type: object + type: array + x-kubernetes-list-type: atomic resources: properties: claims: @@ -1386,6 +1399,8 @@ spec: x-kubernetes-int-or-string: true type: object type: object + restartPolicy: + type: string securityContext: properties: allowPrivilegeEscalation: @@ -2755,6 +2770,8 @@ spec: additionalProperties: type: string type: object + reclaimStorage: + type: boolean resources: properties: claims: @@ -3049,6 +3066,11 @@ spec: items: type: string type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular allocatedResources: additionalProperties: anyOf: @@ -3089,8 +3111,6 @@ spec: type: array phase: type: string - resizeStatus: - type: string type: object type: object volumesPerServer: @@ -3596,6 +3616,19 @@ spec: format: int32 type: integer type: object + resizePolicy: + items: + properties: + resourceName: + type: string + restartPolicy: + type: string + required: + - resourceName + - restartPolicy + type: object + type: array + x-kubernetes-list-type: atomic resources: properties: claims: @@ -3627,6 +3660,8 @@ spec: x-kubernetes-int-or-string: true type: object type: object + restartPolicy: + type: string securityContext: properties: allowPrivilegeEscalation: @@ -3972,6 +4007,11 @@ spec: items: type: string type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular allocatedResources: additionalProperties: anyOf: @@ -4012,8 +4052,6 @@ spec: type: array phase: type: string - resizeStatus: - type: string type: object type: object type: array @@ -4745,8 +4783,6 @@ spec: - name type: object type: array - required: - - containers type: object startup: properties: diff --git a/redhat-marketplace/metadata/annotations.yaml b/redhat-marketplace/metadata/annotations.yaml index f3fd77270a2..9d5b0a5a5fd 100644 --- a/redhat-marketplace/metadata/annotations.yaml +++ b/redhat-marketplace/metadata/annotations.yaml @@ -5,6 +5,6 @@ annotations: operators.operatorframework.io.bundle.metadata.v1: metadata/ operators.operatorframework.io.bundle.package.v1: minio-operator-rhmp operators.operatorframework.io.bundle.channels.v1: stable - operators.operatorframework.io.metrics.builder: operator-sdk-v1.32.0 + operators.operatorframework.io.metrics.builder: operator-sdk-v1.22.2 operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 operators.operatorframework.io.metrics.project_layout: unknown diff --git a/resources/base/console-ui.yaml b/resources/base/console-ui.yaml index a175cd72565..5b2a4c1f7f6 100644 --- a/resources/base/console-ui.yaml +++ b/resources/base/console-ui.yaml @@ -289,7 +289,7 @@ spec: - args: - ui - --certs-dir=/tmp/certs - image: minio/operator:v5.0.10 + image: minio/operator:v5.0.11 imagePullPolicy: IfNotPresent name: console securityContext: diff --git a/resources/base/deployment.yaml b/resources/base/deployment.yaml index 38dc0179207..9295bd801e7 100644 --- a/resources/base/deployment.yaml +++ b/resources/base/deployment.yaml @@ -23,7 +23,7 @@ spec: serviceAccountName: minio-operator containers: - name: minio-operator - image: minio/operator:v5.0.10 + image: minio/operator:v5.0.11 imagePullPolicy: IfNotPresent args: - controller diff --git a/testing/console-tenant+kes.sh b/testing/console-tenant+kes.sh index 4498b25a172..6483cd6eac9 100755 --- a/testing/console-tenant+kes.sh +++ b/testing/console-tenant+kes.sh @@ -120,7 +120,7 @@ function test_kes_tenant() { sed -i -e 's/ROLE_ID/'"$ROLE_ID"'/g' "${SCRIPT_DIR}/kes-config.yaml" sed -i -e 's/SECRET_ID/'"$SECRET_ID"'/g' "${SCRIPT_DIR}/kes-config.yaml" cp "${SCRIPT_DIR}/kes-config.yaml" "${SCRIPT_DIR}/../examples/kustomization/tenant-kes-encryption/kes-configuration-secret.yaml" - yq e -i '.spec.kes.image = "minio/kes:2023-10-03T00-48-37Z"' "${SCRIPT_DIR}/../examples/kustomization/tenant-kes-encryption/tenant.yaml" + yq e -i '.spec.kes.image = "minio/kes:2023-11-10T10-44-28Z"' "${SCRIPT_DIR}/../examples/kustomization/tenant-kes-encryption/tenant.yaml" kubectl apply -k "${SCRIPT_DIR}/../examples/kustomization/tenant-kes-encryption" echo "Check Tenant Status in tenant-kms-encrypted namespace for myminio:" diff --git a/update-operator-krew.py b/update-operator-krew.py index 7c8e4639d5b..308585ed1f6 100644 --- a/update-operator-krew.py +++ b/update-operator-krew.py @@ -1,7 +1,7 @@ #!/usr/bin/env python import subprocess -version = "v5.0.10" +version = "v5.0.11" template = f"""apiVersion: krew.googlecontainertools.github.com/v1alpha2 kind: Plugin diff --git a/web-app/build/asset-manifest.json b/web-app/build/asset-manifest.json index 7b4ae551af7..04f81340710 100644 --- a/web-app/build/asset-manifest.json +++ b/web-app/build/asset-manifest.json @@ -1,53 +1,53 @@ { "files": { - "main.css": "./static/css/main.49948cf4.css", - "main.js": "./static/js/main.107f720c.js", - "static/js/260.0a6c9eba.chunk.js": "./static/js/260.0a6c9eba.chunk.js", - "static/js/914.4777a096.chunk.js": "./static/js/914.4777a096.chunk.js", - "static/js/140.2b6604a2.chunk.js": "./static/js/140.2b6604a2.chunk.js", - "static/js/724.d8e3a44e.chunk.js": "./static/js/724.d8e3a44e.chunk.js", + "main.css": "./static/css/main.31d1c65b.css", + "main.js": "./static/js/main.b7cf4fb6.js", + "static/js/260.f4b645a4.chunk.js": "./static/js/260.f4b645a4.chunk.js", + "static/js/914.d504351b.chunk.js": "./static/js/914.d504351b.chunk.js", + "static/js/140.eacad513.chunk.js": "./static/js/140.eacad513.chunk.js", + "static/js/724.d343dfa5.chunk.js": "./static/js/724.d343dfa5.chunk.js", "static/css/292.41f82bb6.chunk.css": "./static/css/292.41f82bb6.chunk.css", - "static/js/292.5b893eb9.chunk.js": "./static/js/292.5b893eb9.chunk.js", - "static/js/33.8113b137.chunk.js": "./static/js/33.8113b137.chunk.js", - "static/js/637.b61a0787.chunk.js": "./static/js/637.b61a0787.chunk.js", - "static/js/779.3f04c094.chunk.js": "./static/js/779.3f04c094.chunk.js", - "static/js/902.8e41de37.chunk.js": "./static/js/902.8e41de37.chunk.js", - "static/js/847.4f134105.chunk.js": "./static/js/847.4f134105.chunk.js", - "static/js/692.173a6fa7.chunk.js": "./static/js/692.173a6fa7.chunk.js", - "static/js/798.40660fbe.chunk.js": "./static/js/798.40660fbe.chunk.js", + "static/js/292.c4ff2caa.chunk.js": "./static/js/292.c4ff2caa.chunk.js", + "static/js/33.b83df7a5.chunk.js": "./static/js/33.b83df7a5.chunk.js", + "static/js/637.3def862b.chunk.js": "./static/js/637.3def862b.chunk.js", + "static/js/601.e5c508d8.chunk.js": "./static/js/601.e5c508d8.chunk.js", + "static/js/902.1296f144.chunk.js": "./static/js/902.1296f144.chunk.js", + "static/js/847.ef311088.chunk.js": "./static/js/847.ef311088.chunk.js", + "static/js/692.df969bf6.chunk.js": "./static/js/692.df969bf6.chunk.js", + "static/js/798.3709ce4b.chunk.js": "./static/js/798.3709ce4b.chunk.js", "static/css/881.41f82bb6.chunk.css": "./static/css/881.41f82bb6.chunk.css", - "static/js/881.aead2ad2.chunk.js": "./static/js/881.aead2ad2.chunk.js", - "static/js/30.80b393c6.chunk.js": "./static/js/30.80b393c6.chunk.js", - "static/js/145.bbbee7ec.chunk.js": "./static/js/145.bbbee7ec.chunk.js", - "static/js/379.56027397.chunk.js": "./static/js/379.56027397.chunk.js", - "static/js/501.180adea1.chunk.js": "./static/js/501.180adea1.chunk.js", - "static/js/426.b7b6b84b.chunk.js": "./static/js/426.b7b6b84b.chunk.js", - "static/js/298.593f6fcc.chunk.js": "./static/js/298.593f6fcc.chunk.js", - "static/js/878.d04bb1bd.chunk.js": "./static/js/878.d04bb1bd.chunk.js", - "static/js/495.4b83392d.chunk.js": "./static/js/495.4b83392d.chunk.js", - "static/js/934.662d3ea1.chunk.js": "./static/js/934.662d3ea1.chunk.js", - "static/js/942.0b96affd.chunk.js": "./static/js/942.0b96affd.chunk.js", - "static/js/21.53327062.chunk.js": "./static/js/21.53327062.chunk.js", - "static/js/332.ae2fe11c.chunk.js": "./static/js/332.ae2fe11c.chunk.js", + "static/js/881.00fdf530.chunk.js": "./static/js/881.00fdf530.chunk.js", + "static/js/30.352379d0.chunk.js": "./static/js/30.352379d0.chunk.js", + "static/js/145.be7fdd7f.chunk.js": "./static/js/145.be7fdd7f.chunk.js", + "static/js/379.568a6c2b.chunk.js": "./static/js/379.568a6c2b.chunk.js", + "static/js/501.281db5ed.chunk.js": "./static/js/501.281db5ed.chunk.js", + "static/js/426.97329da0.chunk.js": "./static/js/426.97329da0.chunk.js", + "static/js/298.81cdf2af.chunk.js": "./static/js/298.81cdf2af.chunk.js", + "static/js/878.a6714b9f.chunk.js": "./static/js/878.a6714b9f.chunk.js", + "static/js/495.97be3b33.chunk.js": "./static/js/495.97be3b33.chunk.js", + "static/js/934.307cf5b4.chunk.js": "./static/js/934.307cf5b4.chunk.js", + "static/js/942.82cd3d7e.chunk.js": "./static/js/942.82cd3d7e.chunk.js", + "static/js/21.76c78632.chunk.js": "./static/js/21.76c78632.chunk.js", + "static/js/332.2e44c6de.chunk.js": "./static/js/332.2e44c6de.chunk.js", "static/css/367.41f82bb6.chunk.css": "./static/css/367.41f82bb6.chunk.css", - "static/js/367.2251aaba.chunk.js": "./static/js/367.2251aaba.chunk.js", - "static/js/32.322d0e88.chunk.js": "./static/js/32.322d0e88.chunk.js", - "static/js/873.bed79c0a.chunk.js": "./static/js/873.bed79c0a.chunk.js", - "static/js/405.5df626d3.chunk.js": "./static/js/405.5df626d3.chunk.js", - "static/js/223.1d2c84fb.chunk.js": "./static/js/223.1d2c84fb.chunk.js", - "static/js/112.36b0c5ce.chunk.js": "./static/js/112.36b0c5ce.chunk.js", - "static/js/417.9842b54e.chunk.js": "./static/js/417.9842b54e.chunk.js", - "static/js/801.aa2347a0.chunk.js": "./static/js/801.aa2347a0.chunk.js", - "static/js/547.275f062a.chunk.js": "./static/js/547.275f062a.chunk.js", - "static/js/481.e5b43da0.chunk.js": "./static/js/481.e5b43da0.chunk.js", - "static/js/784.51c69ff6.chunk.js": "./static/js/784.51c69ff6.chunk.js", - "static/js/411.d1015441.chunk.js": "./static/js/411.d1015441.chunk.js", - "static/js/660.2814265d.chunk.js": "./static/js/660.2814265d.chunk.js", - "static/js/600.664cd3ec.chunk.js": "./static/js/600.664cd3ec.chunk.js", - "static/js/520.b7dd882b.chunk.js": "./static/js/520.b7dd882b.chunk.js", - "static/js/796.65f40105.chunk.js": "./static/js/796.65f40105.chunk.js", - "static/js/455.36b87621.chunk.js": "./static/js/455.36b87621.chunk.js", - "static/js/216.3a6753d9.chunk.js": "./static/js/216.3a6753d9.chunk.js", + "static/js/367.ca5c7e28.chunk.js": "./static/js/367.ca5c7e28.chunk.js", + "static/js/32.4cb9b9ed.chunk.js": "./static/js/32.4cb9b9ed.chunk.js", + "static/js/873.569db77f.chunk.js": "./static/js/873.569db77f.chunk.js", + "static/js/405.b9b2a85f.chunk.js": "./static/js/405.b9b2a85f.chunk.js", + "static/js/223.3c9782cc.chunk.js": "./static/js/223.3c9782cc.chunk.js", + "static/js/112.9ebf20ee.chunk.js": "./static/js/112.9ebf20ee.chunk.js", + "static/js/804.124473a6.chunk.js": "./static/js/804.124473a6.chunk.js", + "static/js/801.2e0a56b4.chunk.js": "./static/js/801.2e0a56b4.chunk.js", + "static/js/547.c1467b27.chunk.js": "./static/js/547.c1467b27.chunk.js", + "static/js/758.6a55f114.chunk.js": "./static/js/758.6a55f114.chunk.js", + "static/js/779.b83bd5d8.chunk.js": "./static/js/779.b83bd5d8.chunk.js", + "static/js/411.8d65581b.chunk.js": "./static/js/411.8d65581b.chunk.js", + "static/js/660.d1d4b9af.chunk.js": "./static/js/660.d1d4b9af.chunk.js", + "static/js/600.7f86045f.chunk.js": "./static/js/600.7f86045f.chunk.js", + "static/js/520.37510671.chunk.js": "./static/js/520.37510671.chunk.js", + "static/js/796.8828c23e.chunk.js": "./static/js/796.8828c23e.chunk.js", + "static/js/455.1793f7b1.chunk.js": "./static/js/455.1793f7b1.chunk.js", + "static/js/216.ab33f243.chunk.js": "./static/js/216.ab33f243.chunk.js", "static/media/videoBG.mp4": "./static/media/videoBG.17363418b3c2246a0e27.mp4", "static/media/loginAnimationPoster.png": "./static/media/loginAnimationPoster.9aa924bfe619e71d5d29.png", "static/media/Inter-BoldItalic.woff": "./static/media/Inter-BoldItalic.b376885042f6c961a541.woff", @@ -69,57 +69,57 @@ "static/media/Inter-Thin.woff2": "./static/media/Inter-Thin.fff2a096db014f6239d4.woff2", "static/media/Inter-Regular.woff2": "./static/media/Inter-Regular.c8ba52b05a9ef10f4758.woff2", "index.html": "./index.html", - "main.49948cf4.css.map": "./static/css/main.49948cf4.css.map", - "main.107f720c.js.map": "./static/js/main.107f720c.js.map", - "260.0a6c9eba.chunk.js.map": "./static/js/260.0a6c9eba.chunk.js.map", - "914.4777a096.chunk.js.map": "./static/js/914.4777a096.chunk.js.map", - "140.2b6604a2.chunk.js.map": "./static/js/140.2b6604a2.chunk.js.map", - "724.d8e3a44e.chunk.js.map": "./static/js/724.d8e3a44e.chunk.js.map", + "main.31d1c65b.css.map": "./static/css/main.31d1c65b.css.map", + "main.b7cf4fb6.js.map": "./static/js/main.b7cf4fb6.js.map", + "260.f4b645a4.chunk.js.map": "./static/js/260.f4b645a4.chunk.js.map", + "914.d504351b.chunk.js.map": "./static/js/914.d504351b.chunk.js.map", + "140.eacad513.chunk.js.map": "./static/js/140.eacad513.chunk.js.map", + "724.d343dfa5.chunk.js.map": "./static/js/724.d343dfa5.chunk.js.map", "292.41f82bb6.chunk.css.map": "./static/css/292.41f82bb6.chunk.css.map", - "292.5b893eb9.chunk.js.map": "./static/js/292.5b893eb9.chunk.js.map", - "33.8113b137.chunk.js.map": "./static/js/33.8113b137.chunk.js.map", - "637.b61a0787.chunk.js.map": "./static/js/637.b61a0787.chunk.js.map", - "779.3f04c094.chunk.js.map": "./static/js/779.3f04c094.chunk.js.map", - "902.8e41de37.chunk.js.map": "./static/js/902.8e41de37.chunk.js.map", - "847.4f134105.chunk.js.map": "./static/js/847.4f134105.chunk.js.map", - "692.173a6fa7.chunk.js.map": "./static/js/692.173a6fa7.chunk.js.map", - "798.40660fbe.chunk.js.map": "./static/js/798.40660fbe.chunk.js.map", + "292.c4ff2caa.chunk.js.map": "./static/js/292.c4ff2caa.chunk.js.map", + "33.b83df7a5.chunk.js.map": "./static/js/33.b83df7a5.chunk.js.map", + "637.3def862b.chunk.js.map": "./static/js/637.3def862b.chunk.js.map", + "601.e5c508d8.chunk.js.map": "./static/js/601.e5c508d8.chunk.js.map", + "902.1296f144.chunk.js.map": "./static/js/902.1296f144.chunk.js.map", + "847.ef311088.chunk.js.map": "./static/js/847.ef311088.chunk.js.map", + "692.df969bf6.chunk.js.map": "./static/js/692.df969bf6.chunk.js.map", + "798.3709ce4b.chunk.js.map": "./static/js/798.3709ce4b.chunk.js.map", "881.41f82bb6.chunk.css.map": "./static/css/881.41f82bb6.chunk.css.map", - "881.aead2ad2.chunk.js.map": "./static/js/881.aead2ad2.chunk.js.map", - "30.80b393c6.chunk.js.map": "./static/js/30.80b393c6.chunk.js.map", - "145.bbbee7ec.chunk.js.map": "./static/js/145.bbbee7ec.chunk.js.map", - "379.56027397.chunk.js.map": "./static/js/379.56027397.chunk.js.map", - "501.180adea1.chunk.js.map": "./static/js/501.180adea1.chunk.js.map", - "426.b7b6b84b.chunk.js.map": "./static/js/426.b7b6b84b.chunk.js.map", - "298.593f6fcc.chunk.js.map": "./static/js/298.593f6fcc.chunk.js.map", - "878.d04bb1bd.chunk.js.map": "./static/js/878.d04bb1bd.chunk.js.map", - "495.4b83392d.chunk.js.map": "./static/js/495.4b83392d.chunk.js.map", - "934.662d3ea1.chunk.js.map": "./static/js/934.662d3ea1.chunk.js.map", - "942.0b96affd.chunk.js.map": "./static/js/942.0b96affd.chunk.js.map", - "21.53327062.chunk.js.map": "./static/js/21.53327062.chunk.js.map", - "332.ae2fe11c.chunk.js.map": "./static/js/332.ae2fe11c.chunk.js.map", + "881.00fdf530.chunk.js.map": "./static/js/881.00fdf530.chunk.js.map", + "30.352379d0.chunk.js.map": "./static/js/30.352379d0.chunk.js.map", + "145.be7fdd7f.chunk.js.map": "./static/js/145.be7fdd7f.chunk.js.map", + "379.568a6c2b.chunk.js.map": "./static/js/379.568a6c2b.chunk.js.map", + "501.281db5ed.chunk.js.map": "./static/js/501.281db5ed.chunk.js.map", + "426.97329da0.chunk.js.map": "./static/js/426.97329da0.chunk.js.map", + "298.81cdf2af.chunk.js.map": "./static/js/298.81cdf2af.chunk.js.map", + "878.a6714b9f.chunk.js.map": "./static/js/878.a6714b9f.chunk.js.map", + "495.97be3b33.chunk.js.map": "./static/js/495.97be3b33.chunk.js.map", + "934.307cf5b4.chunk.js.map": "./static/js/934.307cf5b4.chunk.js.map", + "942.82cd3d7e.chunk.js.map": "./static/js/942.82cd3d7e.chunk.js.map", + "21.76c78632.chunk.js.map": "./static/js/21.76c78632.chunk.js.map", + "332.2e44c6de.chunk.js.map": "./static/js/332.2e44c6de.chunk.js.map", "367.41f82bb6.chunk.css.map": "./static/css/367.41f82bb6.chunk.css.map", - "367.2251aaba.chunk.js.map": "./static/js/367.2251aaba.chunk.js.map", - "32.322d0e88.chunk.js.map": "./static/js/32.322d0e88.chunk.js.map", - "873.bed79c0a.chunk.js.map": "./static/js/873.bed79c0a.chunk.js.map", - "405.5df626d3.chunk.js.map": "./static/js/405.5df626d3.chunk.js.map", - "223.1d2c84fb.chunk.js.map": "./static/js/223.1d2c84fb.chunk.js.map", - "112.36b0c5ce.chunk.js.map": "./static/js/112.36b0c5ce.chunk.js.map", - "417.9842b54e.chunk.js.map": "./static/js/417.9842b54e.chunk.js.map", - "801.aa2347a0.chunk.js.map": "./static/js/801.aa2347a0.chunk.js.map", - "547.275f062a.chunk.js.map": "./static/js/547.275f062a.chunk.js.map", - "481.e5b43da0.chunk.js.map": "./static/js/481.e5b43da0.chunk.js.map", - "784.51c69ff6.chunk.js.map": "./static/js/784.51c69ff6.chunk.js.map", - "411.d1015441.chunk.js.map": "./static/js/411.d1015441.chunk.js.map", - "660.2814265d.chunk.js.map": "./static/js/660.2814265d.chunk.js.map", - "600.664cd3ec.chunk.js.map": "./static/js/600.664cd3ec.chunk.js.map", - "520.b7dd882b.chunk.js.map": "./static/js/520.b7dd882b.chunk.js.map", - "796.65f40105.chunk.js.map": "./static/js/796.65f40105.chunk.js.map", - "455.36b87621.chunk.js.map": "./static/js/455.36b87621.chunk.js.map", - "216.3a6753d9.chunk.js.map": "./static/js/216.3a6753d9.chunk.js.map" + "367.ca5c7e28.chunk.js.map": "./static/js/367.ca5c7e28.chunk.js.map", + "32.4cb9b9ed.chunk.js.map": "./static/js/32.4cb9b9ed.chunk.js.map", + "873.569db77f.chunk.js.map": "./static/js/873.569db77f.chunk.js.map", + "405.b9b2a85f.chunk.js.map": "./static/js/405.b9b2a85f.chunk.js.map", + "223.3c9782cc.chunk.js.map": "./static/js/223.3c9782cc.chunk.js.map", + "112.9ebf20ee.chunk.js.map": "./static/js/112.9ebf20ee.chunk.js.map", + "804.124473a6.chunk.js.map": "./static/js/804.124473a6.chunk.js.map", + "801.2e0a56b4.chunk.js.map": "./static/js/801.2e0a56b4.chunk.js.map", + "547.c1467b27.chunk.js.map": "./static/js/547.c1467b27.chunk.js.map", + "758.6a55f114.chunk.js.map": "./static/js/758.6a55f114.chunk.js.map", + "779.b83bd5d8.chunk.js.map": "./static/js/779.b83bd5d8.chunk.js.map", + "411.8d65581b.chunk.js.map": "./static/js/411.8d65581b.chunk.js.map", + "660.d1d4b9af.chunk.js.map": "./static/js/660.d1d4b9af.chunk.js.map", + "600.7f86045f.chunk.js.map": "./static/js/600.7f86045f.chunk.js.map", + "520.37510671.chunk.js.map": "./static/js/520.37510671.chunk.js.map", + "796.8828c23e.chunk.js.map": "./static/js/796.8828c23e.chunk.js.map", + "455.1793f7b1.chunk.js.map": "./static/js/455.1793f7b1.chunk.js.map", + "216.ab33f243.chunk.js.map": "./static/js/216.ab33f243.chunk.js.map" }, "entrypoints": [ - "static/css/main.49948cf4.css", - "static/js/main.107f720c.js" + "static/css/main.31d1c65b.css", + "static/js/main.b7cf4fb6.js" ] } \ No newline at end of file diff --git a/web-app/build/index.html b/web-app/build/index.html index 1a4f3606249..f4b37738f7b 100644 --- a/web-app/build/index.html +++ b/web-app/build/index.html @@ -1 +1 @@ -MinIO Console
\ No newline at end of file +MinIO Console
\ No newline at end of file diff --git a/web-app/build/static/css/main.31d1c65b.css b/web-app/build/static/css/main.31d1c65b.css new file mode 100644 index 00000000000..8ec5d4fba14 --- /dev/null +++ b/web-app/build/static/css/main.31d1c65b.css @@ -0,0 +1,2 @@ +.ReactVirtualized__Table__headerRow{font-weight:700;text-transform:uppercase}.ReactVirtualized__Table__headerRow,.ReactVirtualized__Table__row{align-items:center;display:flex;flex-direction:row}.ReactVirtualized__Table__headerTruncatedText{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ReactVirtualized__Table__headerColumn,.ReactVirtualized__Table__rowColumn{margin-right:10px;min-width:0}.ReactVirtualized__Table__rowColumn{text-overflow:ellipsis;white-space:nowrap}.ReactVirtualized__Table__headerColumn:first-of-type,.ReactVirtualized__Table__rowColumn:first-of-type{margin-left:10px}.ReactVirtualized__Table__sortableHeaderColumn{cursor:pointer}.ReactVirtualized__Table__sortableHeaderIconContainer{align-items:center;display:flex}.ReactVirtualized__Table__sortableHeaderIcon{fill:currentColor;flex:0 0 24px;height:1em;width:1em}.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top,width,height}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{transition:none;will-change:width,height;z-index:1}.react-grid-item.react-draggable-dragging{transition:none;will-change:transform;z-index:3}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;-webkit-user-select:none;-o-user-select:none;user-select:none;z-index:2}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{height:20px;position:absolute;width:20px}.react-grid-item>.react-resizable-handle:after{border-bottom:2px solid #0006;border-right:2px solid #0006;bottom:3px;content:"";height:5px;position:absolute;right:3px;width:5px}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;cursor:sw-resize;left:0;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;cursor:se-resize;right:0}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{cursor:nw-resize;left:0;top:0;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{cursor:ne-resize;right:0;top:0;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e,.react-grid-item>.react-resizable-handle.react-resizable-handle-w{cursor:ew-resize;margin-top:-10px;top:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{cursor:ns-resize;left:50%;margin-left:-10px}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgd2lkdGg9IjYiIGhlaWdodD0iNiI+PHBhdGggZD0iTTYgNkgwVjQuMmg0LjJWMEg2djZaIiBvcGFjaXR5PSIuMzAyIi8+PC9zdmc+);background-origin:content-box;background-position:100% 100%;background-repeat:no-repeat;box-sizing:border-box;height:20px;padding:0 3px 3px 0;position:absolute;width:20px}.react-resizable-handle-sw{bottom:0;cursor:sw-resize;left:0;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;cursor:se-resize;right:0}.react-resizable-handle-nw{cursor:nw-resize;left:0;top:0;transform:rotate(180deg)}.react-resizable-handle-ne{cursor:ne-resize;right:0;top:0;transform:rotate(270deg)}.react-resizable-handle-e,.react-resizable-handle-w{cursor:ew-resize;margin-top:-10px;top:50%}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{cursor:ns-resize;left:50%;margin-left:-10px}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}input.removeArrows::-webkit-inner-spin-button,input.removeArrows::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input.removeArrows[type=number]{-moz-appearance:textfield} +/*# sourceMappingURL=main.31d1c65b.css.map*/ \ No newline at end of file diff --git a/web-app/build/static/css/main.31d1c65b.css.map b/web-app/build/static/css/main.31d1c65b.css.map new file mode 100644 index 00000000000..8a51b1f4638 --- /dev/null +++ b/web-app/build/static/css/main.31d1c65b.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/main.31d1c65b.css","mappings":"AAwBA,oCACE,eAAgB,CAChB,wBAIF,CACA,kEAFE,kBAAmB,CAFnB,YAAa,CACb,kBAOF,CAEA,8CACE,oBAAqB,CACrB,cAAe,CAGf,eAAgB,CADhB,sBAAuB,CADvB,kBAGF,CAEA,2EAEE,iBAAkB,CAClB,WACF,CACA,oCACE,sBAAuB,CACvB,kBACF,CAEA,uGAEE,gBACF,CACA,+CACE,cACF,CAEA,sDAEE,kBAAmB,CADnB,YAEF,CACA,6CAIE,iBAAkB,CAHlB,aAAc,CACd,UAAW,CACX,SAEF,CCxEA,mBACE,iBAAkB,CAClB,0BACF,CACA,iBACE,uBAA0B,CAC1B,yCACF,CACA,qBACE,mBAAoB,CACpB,wBAAiB,CAAjB,gBACF,CACA,+BACE,0CACF,CACA,0BACE,eAAgB,CAEhB,wBAA0B,CAD1B,SAEF,CAEA,0CACE,eAAgB,CAEhB,qBAAsB,CADtB,SAEF,CAEA,0BACE,iBACF,CAEA,wCACE,cAAe,CACf,UAAY,CACZ,uBAA0B,CAE1B,wBAAyB,CAGzB,mBAAoB,CACpB,gBAAiB,CALjB,SAMF,CAEA,6DACE,eACF,CAEA,yCAGE,WAAY,CAFZ,iBAAkB,CAClB,UAEF,CAEA,+CAQE,6BAA2C,CAD3C,4BAA0C,CAH1C,UAAW,CAHX,UAAW,CAKX,UAAW,CAJX,iBAAkB,CAClB,SAAU,CAEV,SAIF,CAEA,8CACE,YACF,CAEA,mEACE,QAAS,CAET,gBAAiB,CADjB,MAAO,CAEP,uBACF,CACA,mEACE,QAAS,CAET,gBAAiB,CADjB,OAEF,CACA,mEAGE,gBAAiB,CADjB,MAAO,CADP,KAAM,CAGN,wBACF,CACA,mEAGE,gBAAiB,CADjB,OAAQ,CADR,KAAM,CAGN,wBACF,CACA,oIAIE,gBAAiB,CADjB,gBAAiB,CADjB,OAGF,CACA,kEACE,MAAO,CACP,wBACF,CACA,kEACE,OAAQ,CACR,wBACF,CACA,oIAIE,gBAAiB,CAFjB,QAAS,CACT,iBAEF,CACA,kEACE,KAAM,CACN,wBACF,CACA,kEACE,QAAS,CACT,uBACF,CCtHA,iBACE,iBACF,CACA,wBAOE,wPAAuY,CAFvY,6BAA8B,CAG9B,6BAAiC,CAJjC,2BAA4B,CAE5B,qBAAsB,CAHtB,WAAY,CAMZ,mBAAoB,CARpB,iBAAkB,CAClB,UAQF,CACA,2BACE,QAAS,CAET,gBAAiB,CADjB,MAAO,CAEP,uBACF,CACA,2BACE,QAAS,CAET,gBAAiB,CADjB,OAEF,CACA,2BAGE,gBAAiB,CADjB,MAAO,CADP,KAAM,CAGN,wBACF,CACA,2BAGE,gBAAiB,CADjB,OAAQ,CADR,KAAM,CAGN,wBACF,CACA,oDAIE,gBAAiB,CADjB,gBAAiB,CADjB,OAGF,CACA,0BACE,MAAO,CACP,wBACF,CACA,0BACE,OAAQ,CACR,wBACF,CACA,oDAIE,gBAAiB,CAFjB,QAAS,CACT,iBAEF,CACA,0BACE,KAAM,CACN,wBACF,CACA,0BACE,QAAS,CACT,uBACF,CChEA,KAGE,kCAAmC,CACnC,iCAAkC,CAFlC,4BAAgC,CADhC,QAIF,CAEA,KACE,uEAEF,CAGA,4FAEE,uBAAwB,CACxB,QACF,CAGA,gCACE,yBACF","sources":["../node_modules/react-virtualized/source/styles.css","../node_modules/react-grid-layout/css/styles.css","../node_modules/react-resizable/css/styles.css","index.css"],"sourcesContent":["/* Collection default theme */\n\n.ReactVirtualized__Collection {\n}\n\n.ReactVirtualized__Collection__innerScrollContainer {\n}\n\n/* Grid default theme */\n\n.ReactVirtualized__Grid {\n}\n\n.ReactVirtualized__Grid__innerScrollContainer {\n}\n\n/* Table default theme */\n\n.ReactVirtualized__Table {\n}\n\n.ReactVirtualized__Table__Grid {\n}\n\n.ReactVirtualized__Table__headerRow {\n font-weight: 700;\n text-transform: uppercase;\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n.ReactVirtualized__Table__row {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n\n.ReactVirtualized__Table__headerTruncatedText {\n display: inline-block;\n max-width: 100%;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.ReactVirtualized__Table__headerColumn,\n.ReactVirtualized__Table__rowColumn {\n margin-right: 10px;\n min-width: 0px;\n}\n.ReactVirtualized__Table__rowColumn {\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ReactVirtualized__Table__headerColumn:first-of-type,\n.ReactVirtualized__Table__rowColumn:first-of-type {\n margin-left: 10px;\n}\n.ReactVirtualized__Table__sortableHeaderColumn {\n cursor: pointer;\n}\n\n.ReactVirtualized__Table__sortableHeaderIconContainer {\n display: flex;\n align-items: center;\n}\n.ReactVirtualized__Table__sortableHeaderIcon {\n flex: 0 0 24px;\n height: 1em;\n width: 1em;\n fill: currentColor;\n}\n\n/* List default theme */\n\n.ReactVirtualized__List {\n}\n",".react-grid-layout {\n position: relative;\n transition: height 200ms ease;\n}\n.react-grid-item {\n transition: all 200ms ease;\n transition-property: left, top, width, height;\n}\n.react-grid-item img {\n pointer-events: none;\n user-select: none;\n}\n.react-grid-item.cssTransforms {\n transition-property: transform, width, height;\n}\n.react-grid-item.resizing {\n transition: none;\n z-index: 1;\n will-change: width, height;\n}\n\n.react-grid-item.react-draggable-dragging {\n transition: none;\n z-index: 3;\n will-change: transform;\n}\n\n.react-grid-item.dropping {\n visibility: hidden;\n}\n\n.react-grid-item.react-grid-placeholder {\n background: red;\n opacity: 0.2;\n transition-duration: 100ms;\n z-index: 2;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n -o-user-select: none;\n user-select: none;\n}\n\n.react-grid-item.react-grid-placeholder.placeholder-resizing {\n transition: none;\n}\n\n.react-grid-item > .react-resizable-handle {\n position: absolute;\n width: 20px;\n height: 20px;\n}\n\n.react-grid-item > .react-resizable-handle::after {\n content: \"\";\n position: absolute;\n right: 3px;\n bottom: 3px;\n width: 5px;\n height: 5px;\n border-right: 2px solid rgba(0, 0, 0, 0.4);\n border-bottom: 2px solid rgba(0, 0, 0, 0.4);\n}\n\n.react-resizable-hide > .react-resizable-handle {\n display: none;\n}\n\n.react-grid-item > .react-resizable-handle.react-resizable-handle-sw {\n bottom: 0;\n left: 0;\n cursor: sw-resize;\n transform: rotate(90deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-se {\n bottom: 0;\n right: 0;\n cursor: se-resize;\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-nw {\n top: 0;\n left: 0;\n cursor: nw-resize;\n transform: rotate(180deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-ne {\n top: 0;\n right: 0;\n cursor: ne-resize;\n transform: rotate(270deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-w,\n.react-grid-item > .react-resizable-handle.react-resizable-handle-e {\n top: 50%;\n margin-top: -10px;\n cursor: ew-resize;\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-w {\n left: 0;\n transform: rotate(135deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-e {\n right: 0;\n transform: rotate(315deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-n,\n.react-grid-item > .react-resizable-handle.react-resizable-handle-s {\n left: 50%;\n margin-left: -10px;\n cursor: ns-resize;\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-n {\n top: 0;\n transform: rotate(225deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-s {\n bottom: 0;\n transform: rotate(45deg);\n}\n",".react-resizable {\n position: relative;\n}\n.react-resizable-handle {\n position: absolute;\n width: 20px;\n height: 20px;\n background-repeat: no-repeat;\n background-origin: content-box;\n box-sizing: border-box;\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+');\n background-position: bottom right;\n padding: 0 3px 3px 0;\n}\n.react-resizable-handle-sw {\n bottom: 0;\n left: 0;\n cursor: sw-resize;\n transform: rotate(90deg);\n}\n.react-resizable-handle-se {\n bottom: 0;\n right: 0;\n cursor: se-resize;\n}\n.react-resizable-handle-nw {\n top: 0;\n left: 0;\n cursor: nw-resize;\n transform: rotate(180deg);\n}\n.react-resizable-handle-ne {\n top: 0;\n right: 0;\n cursor: ne-resize;\n transform: rotate(270deg);\n}\n.react-resizable-handle-w,\n.react-resizable-handle-e {\n top: 50%;\n margin-top: -10px;\n cursor: ew-resize;\n}\n.react-resizable-handle-w {\n left: 0;\n transform: rotate(135deg);\n}\n.react-resizable-handle-e {\n right: 0;\n transform: rotate(315deg);\n}\n.react-resizable-handle-n,\n.react-resizable-handle-s {\n left: 50%;\n margin-left: -10px;\n cursor: ns-resize;\n}\n.react-resizable-handle-n {\n top: 0;\n transform: rotate(225deg);\n}\n.react-resizable-handle-s {\n bottom: 0;\n transform: rotate(45deg);\n}","body {\n margin: 0;\n font-family: \"Inter\", sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, \"Courier New\",\n monospace;\n}\n\n/* Chrome, Safari, Edge, Opera */\ninput.removeArrows::-webkit-outer-spin-button,\ninput.removeArrows::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n/* Firefox */\ninput.removeArrows[type=\"number\"] {\n -moz-appearance: textfield;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/css/main.49948cf4.css b/web-app/build/static/css/main.49948cf4.css deleted file mode 100644 index 2359daf5952..00000000000 --- a/web-app/build/static/css/main.49948cf4.css +++ /dev/null @@ -1,2 +0,0 @@ -.ReactVirtualized__Table__headerRow{font-weight:700;text-transform:uppercase}.ReactVirtualized__Table__headerRow,.ReactVirtualized__Table__row{align-items:center;display:flex;flex-direction:row}.ReactVirtualized__Table__headerTruncatedText{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ReactVirtualized__Table__headerColumn,.ReactVirtualized__Table__rowColumn{margin-right:10px;min-width:0}.ReactVirtualized__Table__rowColumn{text-overflow:ellipsis;white-space:nowrap}.ReactVirtualized__Table__headerColumn:first-of-type,.ReactVirtualized__Table__rowColumn:first-of-type{margin-left:10px}.ReactVirtualized__Table__sortableHeaderColumn{cursor:pointer}.ReactVirtualized__Table__sortableHeaderIconContainer{align-items:center;display:flex}.ReactVirtualized__Table__sortableHeaderIcon{fill:currentColor;flex:0 0 24px;height:1em;width:1em}.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform}.react-grid-item.resizing{will-change:width,height;z-index:1}.react-grid-item.react-draggable-dragging{transition:none;will-change:transform;z-index:3}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;-webkit-user-select:none;-o-user-select:none;user-select:none;z-index:2}.react-grid-item>.react-resizable-handle{height:20px;position:absolute;width:20px}.react-grid-item>.react-resizable-handle:after{border-bottom:2px solid rgba(0,0,0,.4);border-right:2px solid rgba(0,0,0,.4);bottom:3px;content:"";height:5px;position:absolute;right:3px;width:5px}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;cursor:sw-resize;left:0;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;cursor:se-resize;right:0}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{cursor:nw-resize;left:0;top:0;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{cursor:ne-resize;right:0;top:0;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e,.react-grid-item>.react-resizable-handle.react-resizable-handle-w{cursor:ew-resize;margin-top:-10px;top:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{cursor:ns-resize;left:50%;margin-left:-10px}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgd2lkdGg9IjYiIGhlaWdodD0iNiI+PHBhdGggZD0iTTYgNkgwVjQuMmg0LjJWMEg2djZaIiBvcGFjaXR5PSIuMzAyIi8+PC9zdmc+);background-origin:content-box;background-position:100% 100%;background-repeat:no-repeat;box-sizing:border-box;height:20px;padding:0 3px 3px 0;position:absolute;width:20px}.react-resizable-handle-sw{bottom:0;cursor:sw-resize;left:0;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;cursor:se-resize;right:0}.react-resizable-handle-nw{cursor:nw-resize;left:0;top:0;transform:rotate(180deg)}.react-resizable-handle-ne{cursor:ne-resize;right:0;top:0;transform:rotate(270deg)}.react-resizable-handle-e,.react-resizable-handle-w{cursor:ew-resize;margin-top:-10px;top:50%}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{cursor:ns-resize;left:50%;margin-left:-10px}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}input.removeArrows::-webkit-inner-spin-button,input.removeArrows::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input.removeArrows[type=number]{-moz-appearance:textfield} -/*# sourceMappingURL=main.49948cf4.css.map*/ \ No newline at end of file diff --git a/web-app/build/static/css/main.49948cf4.css.map b/web-app/build/static/css/main.49948cf4.css.map deleted file mode 100644 index 0f2df7dfa43..00000000000 --- a/web-app/build/static/css/main.49948cf4.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/css/main.49948cf4.css","mappings":"AAwBA,oCACE,eAAgB,CAChB,wBAIF,CACA,kEAFE,kBAAmB,CAFnB,YAAa,CACb,kBAOF,CAEA,8CACE,oBAAqB,CACrB,cAAe,CAGf,eAAgB,CADhB,sBAAuB,CADvB,kBAGF,CAEA,2EAEE,iBAAkB,CAClB,WACF,CACA,oCACE,sBAAuB,CACvB,kBACF,CAEA,uGAEE,gBACF,CACA,+CACE,cACF,CAEA,sDAEE,kBAAmB,CADnB,YAEF,CACA,6CAIE,iBAAkB,CAHlB,aAAc,CACd,UAAW,CACX,SAEF,CCxEA,mBACE,iBAAkB,CAClB,0BACF,CACA,iBACE,uBAA0B,CAC1B,4BACF,CACA,qBACE,mBAAoB,CACpB,wBAAiB,CAAjB,gBACF,CACA,+BACE,6BACF,CACA,0BAEE,wBAA0B,CAD1B,SAEF,CAEA,0CACE,eAAgB,CAEhB,qBAAsB,CADtB,SAEF,CAEA,0BACE,iBACF,CAEA,wCACE,cAAe,CACf,UAAY,CACZ,uBAA0B,CAE1B,wBAAyB,CAGzB,mBAAoB,CACpB,gBAAiB,CALjB,SAMF,CAEA,yCAGE,WAAY,CAFZ,iBAAkB,CAClB,UAEF,CAEA,+CAQE,sCAA2C,CAD3C,qCAA0C,CAH1C,UAAW,CAHX,UAAW,CAKX,UAAW,CAJX,iBAAkB,CAClB,SAAU,CAEV,SAIF,CAEA,8CACE,YACF,CAEA,mEACE,QAAS,CAET,gBAAiB,CADjB,MAAO,CAEP,uBACF,CACA,mEACE,QAAS,CAET,gBAAiB,CADjB,OAEF,CACA,mEAGE,gBAAiB,CADjB,MAAO,CADP,KAAM,CAGN,wBACF,CACA,mEAGE,gBAAiB,CADjB,OAAQ,CADR,KAAM,CAGN,wBACF,CACA,oIAIE,gBAAiB,CADjB,gBAAiB,CADjB,OAGF,CACA,kEACE,MAAO,CACP,wBACF,CACA,kEACE,OAAQ,CACR,wBACF,CACA,oIAIE,gBAAiB,CAFjB,QAAS,CACT,iBAEF,CACA,kEACE,KAAM,CACN,wBACF,CACA,kEACE,QAAS,CACT,uBACF,CCjHA,iBACE,iBACF,CACA,wBAOE,wPAAuY,CAFvY,6BAA8B,CAG9B,6BAAiC,CAJjC,2BAA4B,CAE5B,qBAAsB,CAHtB,WAAY,CAMZ,mBAAoB,CARpB,iBAAkB,CAClB,UAQF,CACA,2BACE,QAAS,CAET,gBAAiB,CADjB,MAAO,CAEP,uBACF,CACA,2BACE,QAAS,CAET,gBAAiB,CADjB,OAEF,CACA,2BAGE,gBAAiB,CADjB,MAAO,CADP,KAAM,CAGN,wBACF,CACA,2BAGE,gBAAiB,CADjB,OAAQ,CADR,KAAM,CAGN,wBACF,CACA,oDAIE,gBAAiB,CADjB,gBAAiB,CADjB,OAGF,CACA,0BACE,MAAO,CACP,wBACF,CACA,0BACE,OAAQ,CACR,wBACF,CACA,oDAIE,gBAAiB,CAFjB,QAAS,CACT,iBAEF,CACA,0BACE,KAAM,CACN,wBACF,CACA,0BACE,QAAS,CACT,uBACF,CChEA,KAGE,kCAAmC,CACnC,iCAAkC,CAFlC,4BAAgC,CADhC,QAIF,CAEA,KACE,uEAEF,CAGA,4FAEE,uBAAwB,CACxB,QACF,CAGA,gCACE,yBACF","sources":["../node_modules/react-virtualized/source/styles.css","../node_modules/react-grid-layout/css/styles.css","../node_modules/react-resizable/css/styles.css","index.css"],"sourcesContent":["/* Collection default theme */\n\n.ReactVirtualized__Collection {\n}\n\n.ReactVirtualized__Collection__innerScrollContainer {\n}\n\n/* Grid default theme */\n\n.ReactVirtualized__Grid {\n}\n\n.ReactVirtualized__Grid__innerScrollContainer {\n}\n\n/* Table default theme */\n\n.ReactVirtualized__Table {\n}\n\n.ReactVirtualized__Table__Grid {\n}\n\n.ReactVirtualized__Table__headerRow {\n font-weight: 700;\n text-transform: uppercase;\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n.ReactVirtualized__Table__row {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n\n.ReactVirtualized__Table__headerTruncatedText {\n display: inline-block;\n max-width: 100%;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.ReactVirtualized__Table__headerColumn,\n.ReactVirtualized__Table__rowColumn {\n margin-right: 10px;\n min-width: 0px;\n}\n.ReactVirtualized__Table__rowColumn {\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ReactVirtualized__Table__headerColumn:first-of-type,\n.ReactVirtualized__Table__rowColumn:first-of-type {\n margin-left: 10px;\n}\n.ReactVirtualized__Table__sortableHeaderColumn {\n cursor: pointer;\n}\n\n.ReactVirtualized__Table__sortableHeaderIconContainer {\n display: flex;\n align-items: center;\n}\n.ReactVirtualized__Table__sortableHeaderIcon {\n flex: 0 0 24px;\n height: 1em;\n width: 1em;\n fill: currentColor;\n}\n\n/* List default theme */\n\n.ReactVirtualized__List {\n}\n",".react-grid-layout {\n position: relative;\n transition: height 200ms ease;\n}\n.react-grid-item {\n transition: all 200ms ease;\n transition-property: left, top;\n}\n.react-grid-item img {\n pointer-events: none;\n user-select: none; \n}\n.react-grid-item.cssTransforms {\n transition-property: transform;\n}\n.react-grid-item.resizing {\n z-index: 1;\n will-change: width, height;\n}\n\n.react-grid-item.react-draggable-dragging {\n transition: none;\n z-index: 3;\n will-change: transform;\n}\n\n.react-grid-item.dropping {\n visibility: hidden;\n}\n\n.react-grid-item.react-grid-placeholder {\n background: red;\n opacity: 0.2;\n transition-duration: 100ms;\n z-index: 2;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n -o-user-select: none;\n user-select: none;\n}\n\n.react-grid-item > .react-resizable-handle {\n position: absolute;\n width: 20px;\n height: 20px;\n}\n\n.react-grid-item > .react-resizable-handle::after {\n content: \"\";\n position: absolute;\n right: 3px;\n bottom: 3px;\n width: 5px;\n height: 5px;\n border-right: 2px solid rgba(0, 0, 0, 0.4);\n border-bottom: 2px solid rgba(0, 0, 0, 0.4);\n}\n\n.react-resizable-hide > .react-resizable-handle {\n display: none;\n}\n\n.react-grid-item > .react-resizable-handle.react-resizable-handle-sw {\n bottom: 0;\n left: 0;\n cursor: sw-resize;\n transform: rotate(90deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-se {\n bottom: 0;\n right: 0;\n cursor: se-resize;\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-nw {\n top: 0;\n left: 0;\n cursor: nw-resize;\n transform: rotate(180deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-ne {\n top: 0;\n right: 0;\n cursor: ne-resize;\n transform: rotate(270deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-w,\n.react-grid-item > .react-resizable-handle.react-resizable-handle-e {\n top: 50%;\n margin-top: -10px;\n cursor: ew-resize;\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-w {\n left: 0;\n transform: rotate(135deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-e {\n right: 0;\n transform: rotate(315deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-n,\n.react-grid-item > .react-resizable-handle.react-resizable-handle-s {\n left: 50%;\n margin-left: -10px;\n cursor: ns-resize;\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-n {\n top: 0;\n transform: rotate(225deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-s {\n bottom: 0;\n transform: rotate(45deg);\n}\n",".react-resizable {\n position: relative;\n}\n.react-resizable-handle {\n position: absolute;\n width: 20px;\n height: 20px;\n background-repeat: no-repeat;\n background-origin: content-box;\n box-sizing: border-box;\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+');\n background-position: bottom right;\n padding: 0 3px 3px 0;\n}\n.react-resizable-handle-sw {\n bottom: 0;\n left: 0;\n cursor: sw-resize;\n transform: rotate(90deg);\n}\n.react-resizable-handle-se {\n bottom: 0;\n right: 0;\n cursor: se-resize;\n}\n.react-resizable-handle-nw {\n top: 0;\n left: 0;\n cursor: nw-resize;\n transform: rotate(180deg);\n}\n.react-resizable-handle-ne {\n top: 0;\n right: 0;\n cursor: ne-resize;\n transform: rotate(270deg);\n}\n.react-resizable-handle-w,\n.react-resizable-handle-e {\n top: 50%;\n margin-top: -10px;\n cursor: ew-resize;\n}\n.react-resizable-handle-w {\n left: 0;\n transform: rotate(135deg);\n}\n.react-resizable-handle-e {\n right: 0;\n transform: rotate(315deg);\n}\n.react-resizable-handle-n,\n.react-resizable-handle-s {\n left: 50%;\n margin-left: -10px;\n cursor: ns-resize;\n}\n.react-resizable-handle-n {\n top: 0;\n transform: rotate(225deg);\n}\n.react-resizable-handle-s {\n bottom: 0;\n transform: rotate(45deg);\n}","body {\n margin: 0;\n font-family: \"Inter\", sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, \"Courier New\",\n monospace;\n}\n\n/* Chrome, Safari, Edge, Opera */\ninput.removeArrows::-webkit-outer-spin-button,\ninput.removeArrows::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n/* Firefox */\ninput.removeArrows[type=\"number\"] {\n -moz-appearance: textfield;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/112.36b0c5ce.chunk.js b/web-app/build/static/js/112.36b0c5ce.chunk.js deleted file mode 100644 index 6b4073093c3..00000000000 --- a/web-app/build/static/js/112.36b0c5ce.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[112],{9505:function(e,n,t){var a=t(29439),c=t(72791),o=t(81207);n.Z=function(e,n){var t=(0,c.useState)(!1),i=(0,a.Z)(t,2),r=i[0],s=i[1];return[r,function(t,a,c,i){s(!0),o.Z.invoke(t,a,c,i).then((function(n){s(!1),e(n)})).catch((function(e){s(!1),n(e)}))}]}},32112:function(e,n,t){t.r(n);var a=t(29439),c=t(72791),o=t(51691),i=t(21435),r=t(61889),s=t(9505),u=t(40306),l=t(75952),f=t(87995),p=t(41320),d=t(80184);n.default=function(e){var n=e.deleteOpen,t=e.selectedPVC,h=e.closeDeleteModalAndRefresh,m=(0,p.TL)(),C=(0,c.useState)(""),v=(0,a.Z)(C,2),Z=v[0],x=v[1],b=(0,s.Z)((function(){return h(!0)}),(function(e){return m((0,f.Ih)(e))})),P=(0,a.Z)(b,2),j=P[0],k=P[1];return(0,d.jsx)(u.Z,{title:"Delete PVC",confirmText:"Delete",isOpen:n,titleIcon:(0,d.jsx)(l.NvT,{}),isLoading:j,onConfirm:function(){Z===t.name?k("DELETE","/api/v1/namespaces/".concat(t.namespace,"/tenants/").concat(t.tenant,"/pvc/").concat(t.name)):m((0,f.Ih)({errorMessage:"PVC name is incorrect",detailedError:""}))},onClose:function(){return h(!1)},confirmButtonProps:{disabled:Z!==t.name||j},confirmationContent:(0,d.jsxs)(o.Z,{children:["To continue please type ",(0,d.jsx)("b",{children:t.name})," in the box.",(0,d.jsx)(r.ZP,{item:!0,xs:12,children:(0,d.jsx)(i.Z,{id:"retype-PVC",name:"retype-PVC",onChange:function(e){x(e.target.value)},label:"",value:Z})})]})})}}}]); -//# sourceMappingURL=112.36b0c5ce.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/112.36b0c5ce.chunk.js.map b/web-app/build/static/js/112.36b0c5ce.chunk.js.map deleted file mode 100644 index bdd5ee4363b..00000000000 --- a/web-app/build/static/js/112.36b0c5ce.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/112.36b0c5ce.chunk.js","mappings":"4IA+BA,IAvBe,SACbA,EACAC,GAEA,IAAAC,GAAkCC,EAAAA,EAAAA,WAAkB,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAnDI,EAASF,EAAA,GAAEG,EAAYH,EAAA,GAgB9B,MAAO,CAACE,EAdQ,SAACE,EAAgBC,EAAaC,EAAYC,GACxDJ,GAAa,GACbK,EAAAA,EACGC,OAAOL,EAAQC,EAAKC,EAAMC,GAC1BG,MAAK,SAACC,GACLR,GAAa,GACbP,EAAUe,EACZ,IACCC,OAAM,SAACC,GACNV,GAAa,GACbN,EAAQgB,EACV,GACJ,EAGF,C,2JCqEA,UA/DkB,SAAHC,GAII,IAHjBC,EAAUD,EAAVC,WACAC,EAAWF,EAAXE,YACAC,EAA0BH,EAA1BG,2BAEMC,GAAWC,EAAAA,EAAAA,MACjBrB,GAAkCC,EAAAA,EAAAA,UAAS,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAvCsB,EAASpB,EAAA,GAAEqB,EAAYrB,EAAA,GAO9BsB,GAAyCC,EAAAA,EAAAA,IALpB,WAAH,OAASN,GAA2B,EAAM,IACzC,SAACJ,GAAyB,OAC3CK,GAASM,EAAAA,EAAAA,IAAqBX,GAAM,IAGmCY,GAAAxB,EAAAA,EAAAA,GAAAqB,EAAA,GAAlEI,EAAaD,EAAA,GAAEE,EAAeF,EAAA,GAkBrC,OACEG,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CACZC,MAAK,aACLC,YAAa,SACbC,OAAQjB,EACRkB,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAiB,IAC7BhC,UAAWwB,EACXS,UAvBoB,WAClBf,IAAcJ,EAAYoB,KAS9BT,EACE,SAAS,sBAADU,OACcrB,EAAYsB,UAAS,aAAAD,OAAYrB,EAAYuB,OAAM,SAAAF,OAAQrB,EAAYoB,OAV7FlB,GACEM,EAAAA,EAAAA,IAAqB,CACnBgB,aAAc,wBACdC,cAAe,KASvB,EAUIC,QA5BY,WAAH,OAASzB,GAA2B,EAAO,EA6BpD0B,mBAAoB,CAClBC,SAAUxB,IAAcJ,EAAYoB,MAAQV,GAE9CmB,qBACEC,EAAAA,EAAAA,MAACC,EAAAA,EAAiB,CAAAC,SAAA,CAAC,4BACOpB,EAAAA,EAAAA,KAAA,KAAAoB,SAAIhC,EAAYoB,OAAS,gBACjDR,EAAAA,EAAAA,KAACqB,EAAAA,GAAI,CAACC,MAAI,EAACC,GAAI,GAAGH,UAChBpB,EAAAA,EAAAA,KAACwB,EAAAA,EAAe,CACdC,GAAG,aACHjB,KAAK,aACLkB,SAAU,SAACC,GACTlC,EAAakC,EAAMC,OAAOC,MAC5B,EACAC,MAAM,GACND,MAAOrC,UAOrB,C","sources":["screens/Console/Common/Hooks/useApi.tsx","screens/Console/Tenants/TenantDetails/DeletePVC.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport api from \"../../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\n\ntype NoReturnFunction = (param?: any) => void;\ntype ApiMethodToInvoke = (method: string, url: string, data?: any) => void;\ntype IsApiInProgress = boolean;\n\nconst useApi = (\n onSuccess: NoReturnFunction,\n onError: NoReturnFunction,\n): [IsApiInProgress, ApiMethodToInvoke] => {\n const [isLoading, setIsLoading] = useState(false);\n\n const callApi = (method: string, url: string, data?: any, headers?: any) => {\n setIsLoading(true);\n api\n .invoke(method, url, data, headers)\n .then((res: any) => {\n setIsLoading(false);\n onSuccess(res);\n })\n .catch((err: ErrorResponseHandler) => {\n setIsLoading(false);\n onError(err);\n });\n };\n\n return [isLoading, callApi];\n};\n\nexport default useApi;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { DialogContentText } from \"@mui/material\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport Grid from \"@mui/material/Grid\";\n\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { IStoragePVCs } from \"../../Storage/types\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IDeletePVC {\n deleteOpen: boolean;\n selectedPVC: IStoragePVCs;\n closeDeleteModalAndRefresh: (refreshList: boolean) => any;\n}\n\nconst DeletePVC = ({\n deleteOpen,\n selectedPVC,\n closeDeleteModalAndRefresh,\n}: IDeletePVC) => {\n const dispatch = useAppDispatch();\n const [retypePVC, setRetypePVC] = useState(\"\");\n\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n const onConfirmDelete = () => {\n if (retypePVC !== selectedPVC.name) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"PVC name is incorrect\",\n detailedError: \"\",\n }),\n );\n return;\n }\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/namespaces/${selectedPVC.namespace}/tenants/${selectedPVC.tenant}/pvc/${selectedPVC.name}`,\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: retypePVC !== selectedPVC.name || deleteLoading,\n }}\n confirmationContent={\n \n To continue please type {selectedPVC.name} in the box.\n \n ) => {\n setRetypePVC(event.target.value);\n }}\n label=\"\"\n value={retypePVC}\n />\n \n \n }\n />\n );\n};\n\nexport default DeletePVC;\n"],"names":["onSuccess","onError","_useState","useState","_useState2","_slicedToArray","isLoading","setIsLoading","method","url","data","headers","api","invoke","then","res","catch","err","_ref","deleteOpen","selectedPVC","closeDeleteModalAndRefresh","dispatch","useAppDispatch","retypePVC","setRetypePVC","_useApi","useApi","setErrorSnackMessage","_useApi2","deleteLoading","invokeDeleteApi","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","onConfirm","name","concat","namespace","tenant","errorMessage","detailedError","onClose","confirmButtonProps","disabled","confirmationContent","_jsxs","DialogContentText","children","Grid","item","xs","InputBoxWrapper","id","onChange","event","target","value","label"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/112.9ebf20ee.chunk.js b/web-app/build/static/js/112.9ebf20ee.chunk.js new file mode 100644 index 00000000000..6cda57668ac --- /dev/null +++ b/web-app/build/static/js/112.9ebf20ee.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[112],{9505:(e,n,t)=>{t.d(n,{Z:()=>c});var a=t(72791),s=t(81207);const c=(e,n)=>{const[t,c]=(0,a.useState)(!1);return[t,(t,a,o,r)=>{c(!0),s.Z.invoke(t,a,o,r).then((n=>{c(!1),e(n)})).catch((e=>{c(!1),n(e)}))}]}},32112:(e,n,t)=>{t.r(n),t.d(n,{default:()=>m});var a=t(72791),s=t(51691),c=t(21435),o=t(61889),r=t(9505),i=t(40306),l=t(75952),p=t(87995),d=t(41320),h=t(80184);const m=e=>{let{deleteOpen:n,selectedPVC:t,closeDeleteModalAndRefresh:m}=e;const u=(0,d.TL)(),[C,x]=(0,a.useState)(""),[b,f]=(0,r.Z)((()=>m(!0)),(e=>u((0,p.Ih)(e))));return(0,h.jsx)(i.Z,{title:"Delete PVC",confirmText:"Delete",isOpen:n,titleIcon:(0,h.jsx)(l.NvT,{}),isLoading:b,onConfirm:()=>{C===t.name?f("DELETE","/api/v1/namespaces/".concat(t.namespace,"/tenants/").concat(t.tenant,"/pvc/").concat(t.name)):u((0,p.Ih)({errorMessage:"PVC name is incorrect",detailedError:""}))},onClose:()=>m(!1),confirmButtonProps:{disabled:C!==t.name||b},confirmationContent:(0,h.jsxs)(s.Z,{children:["To continue please type ",(0,h.jsx)("b",{children:t.name})," in the box.",(0,h.jsx)(o.ZP,{item:!0,xs:12,children:(0,h.jsx)(c.Z,{id:"retype-PVC",name:"retype-PVC",onChange:e=>{x(e.target.value)},label:"",value:C})})]})})}}}]); +//# sourceMappingURL=112.9ebf20ee.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/112.9ebf20ee.chunk.js.map b/web-app/build/static/js/112.9ebf20ee.chunk.js.map new file mode 100644 index 00000000000..5573094a26a --- /dev/null +++ b/web-app/build/static/js/112.9ebf20ee.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/112.9ebf20ee.chunk.js","mappings":"4IAQA,MAuBA,EAvBeA,CACbC,EACAC,KAEA,MAAOC,EAAWC,IAAgBC,EAAAA,EAAAA,WAAkB,GAgBpD,MAAO,CAACF,EAdQG,CAACC,EAAgBC,EAAaC,EAAYC,KACxDN,GAAa,GACbO,EAAAA,EACGC,OAAOL,EAAQC,EAAKC,EAAMC,GAC1BG,MAAMC,IACLV,GAAa,GACbH,EAAUa,EAAI,IAEfC,OAAOC,IACNZ,GAAa,GACbF,EAAQc,EAAI,GACZ,EAGqB,C,iKCO7B,MA+DA,EA/DkBC,IAIC,IAJA,WACjBC,EAAU,YACVC,EAAW,2BACXC,GACWH,EACX,MAAMI,GAAWC,EAAAA,EAAAA,OACVC,EAAWC,IAAgBnB,EAAAA,EAAAA,UAAS,KAOpCoB,EAAeC,IAAmB1B,EAAAA,EAAAA,IALpB2B,IAAMP,GAA2B,KAClCJ,GAClBK,GAASO,EAAAA,EAAAA,IAAqBZ,MAqBhC,OACEa,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CACZC,MAAK,aACLC,YAAa,SACbC,OAAQf,EACRgB,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAiB,IAC7BhC,UAAWsB,EACXW,UAvBoBC,KAClBd,IAAcJ,EAAYmB,KAS9BZ,EACE,SAAS,sBAADa,OACcpB,EAAYqB,UAAS,aAAAD,OAAYpB,EAAYsB,OAAM,SAAAF,OAAQpB,EAAYmB,OAV7FjB,GACEO,EAAAA,EAAAA,IAAqB,CACnBc,aAAc,wBACdC,cAAe,KAQpB,EAWCC,QA5BYA,IAAMxB,GAA2B,GA6B7CyB,mBAAoB,CAClBC,SAAUvB,IAAcJ,EAAYmB,MAAQb,GAE9CsB,qBACEC,EAAAA,EAAAA,MAACC,EAAAA,EAAiB,CAAAC,SAAA,CAAC,4BACOrB,EAAAA,EAAAA,KAAA,KAAAqB,SAAI/B,EAAYmB,OAAS,gBACjDT,EAAAA,EAAAA,KAACsB,EAAAA,GAAI,CAACC,MAAI,EAACC,GAAI,GAAGH,UAChBrB,EAAAA,EAAAA,KAACyB,EAAAA,EAAe,CACdC,GAAG,aACHjB,KAAK,aACLkB,SAAWC,IACTjC,EAAaiC,EAAMC,OAAOC,MAAM,EAElCC,MAAM,GACND,MAAOpC,UAKf,C","sources":["screens/Console/Common/Hooks/useApi.tsx","screens/Console/Tenants/TenantDetails/DeletePVC.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport api from \"../../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\n\ntype NoReturnFunction = (param?: any) => void;\ntype ApiMethodToInvoke = (method: string, url: string, data?: any) => void;\ntype IsApiInProgress = boolean;\n\nconst useApi = (\n onSuccess: NoReturnFunction,\n onError: NoReturnFunction,\n): [IsApiInProgress, ApiMethodToInvoke] => {\n const [isLoading, setIsLoading] = useState(false);\n\n const callApi = (method: string, url: string, data?: any, headers?: any) => {\n setIsLoading(true);\n api\n .invoke(method, url, data, headers)\n .then((res: any) => {\n setIsLoading(false);\n onSuccess(res);\n })\n .catch((err: ErrorResponseHandler) => {\n setIsLoading(false);\n onError(err);\n });\n };\n\n return [isLoading, callApi];\n};\n\nexport default useApi;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { DialogContentText } from \"@mui/material\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport Grid from \"@mui/material/Grid\";\n\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { IStoragePVCs } from \"../../Storage/types\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IDeletePVC {\n deleteOpen: boolean;\n selectedPVC: IStoragePVCs;\n closeDeleteModalAndRefresh: (refreshList: boolean) => any;\n}\n\nconst DeletePVC = ({\n deleteOpen,\n selectedPVC,\n closeDeleteModalAndRefresh,\n}: IDeletePVC) => {\n const dispatch = useAppDispatch();\n const [retypePVC, setRetypePVC] = useState(\"\");\n\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n const onConfirmDelete = () => {\n if (retypePVC !== selectedPVC.name) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"PVC name is incorrect\",\n detailedError: \"\",\n }),\n );\n return;\n }\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/namespaces/${selectedPVC.namespace}/tenants/${selectedPVC.tenant}/pvc/${selectedPVC.name}`,\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: retypePVC !== selectedPVC.name || deleteLoading,\n }}\n confirmationContent={\n \n To continue please type {selectedPVC.name} in the box.\n \n ) => {\n setRetypePVC(event.target.value);\n }}\n label=\"\"\n value={retypePVC}\n />\n \n \n }\n />\n );\n};\n\nexport default DeletePVC;\n"],"names":["useApi","onSuccess","onError","isLoading","setIsLoading","useState","callApi","method","url","data","headers","api","invoke","then","res","catch","err","_ref","deleteOpen","selectedPVC","closeDeleteModalAndRefresh","dispatch","useAppDispatch","retypePVC","setRetypePVC","deleteLoading","invokeDeleteApi","onDelSuccess","setErrorSnackMessage","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","onConfirm","onConfirmDelete","name","concat","namespace","tenant","errorMessage","detailedError","onClose","confirmButtonProps","disabled","confirmationContent","_jsxs","DialogContentText","children","Grid","item","xs","InputBoxWrapper","id","onChange","event","target","value","label"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/140.2b6604a2.chunk.js b/web-app/build/static/js/140.2b6604a2.chunk.js deleted file mode 100644 index db1bd173976..00000000000 --- a/web-app/build/static/js/140.2b6604a2.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[140],{65140:function(e,n,a){a.r(n);var t=a(29439),c=a(1413),r=a(72791),o=a(57689),i=a(11087),s=a(11135),l=a(25787),u=a(64554),d=a(13400),p=a(23814),h=a(77608),m=a(75952),f=a(47974),x=a(80184);n.default=(0,l.Z)((function(e){return(0,s.Z)((0,c.Z)({breadcrumLink:{textDecoration:"none",color:"black"},iframeStyle:{border:0,position:"absolute",height:"calc(100vh - 77px)",width:"100%"},divContainer:{position:"absolute",left:0,top:80,height:"calc(100vh - 81px)",width:"100%",borderTop:"1px solid #dedede"},loader:{width:100,margin:"auto",marginTop:80}},p.Bz))}))((function(e){var n=e.classes,a=(0,o.s0)(),c=(0,o.UO)(),s=(0,r.useState)(!0),l=(0,t.Z)(s,2),p=l[0],v=l[1],j=c.tenantName||"",b=c.tenantNamespace||"",g=r.useRef(null);return(0,x.jsxs)(r.Fragment,{children:[(0,x.jsx)(u.Z,{children:(0,x.jsx)(f.Z,{label:(0,x.jsxs)(r.Fragment,{children:[(0,x.jsx)(i.rU,{to:"/tenants",className:n.breadcrumLink,children:"Tenants"})," > ",(0,x.jsx)(i.rU,{to:"/namespaces/".concat(b,"/tenants/").concat(j),className:n.breadcrumLink,children:j})," > Management"]}),actions:(0,x.jsxs)(r.Fragment,{children:[(0,x.jsx)(d.Z,{color:"primary","aria-label":"Refresh List",component:"span",onClick:function(){if(null!==g&&null!==g.current&&null!==g.current.contentDocument){var e=g.current.contentDocument.location.toString(),n="&";if(e.indexOf("?")<0&&(n="?"),e.indexOf("cp=y")<0){var a="".concat(e).concat(n,"cp=y");g.current.contentDocument.location.replace(a)}else g.current.contentDocument.location.reload()}},size:"large",children:(0,x.jsx)(m.DuK,{})}),(0,x.jsx)(d.Z,{color:"primary","aria-label":"Refresh List",component:"span",onClick:function(){a("/namespaces/".concat(b,"/tenants/").concat(j))},size:"large",children:(0,x.jsx)(h.Z,{})})]})})}),(0,x.jsxs)("div",{className:n.divContainer,children:[p&&(0,x.jsx)("div",{className:n.loader,children:(0,x.jsx)(m.aNw,{})}),(0,x.jsx)("iframe",{ref:g,className:n.iframeStyle,title:"metrics",src:"/api/hop/".concat(b,"/").concat(j,"/?cp=y"),onLoad:function(e){v(!1)}})]})]})}))},77608:function(e,n,a){var t=a(64836);n.Z=void 0;var c=t(a(45649)),r=a(80184),o=(0,c.default)((0,r.jsx)("path",{d:"M10.09 15.59 11.5 17l5-5-5-5-1.41 1.41L12.67 11H3v2h9.67l-2.58 2.59zM19 3H5c-1.11 0-2 .9-2 2v4h2V5h14v14H5v-4H3v4c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"}),"ExitToApp");n.Z=o}}]); -//# sourceMappingURL=140.2b6604a2.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/140.2b6604a2.chunk.js.map b/web-app/build/static/js/140.2b6604a2.chunk.js.map deleted file mode 100644 index f38d37bc9d0..00000000000 --- a/web-app/build/static/js/140.2b6604a2.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/140.2b6604a2.chunk.js","mappings":"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","sources":["screens/Console/Tenants/TenantDetails/hop/Hop.tsx","../node_modules/@mui/icons-material/ExitToApp.js"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Link, useNavigate, useParams } from \"react-router-dom\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Box, IconButton } from \"@mui/material\";\nimport { containerForHeader } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport ExitToAppIcon from \"@mui/icons-material/ExitToApp\";\nimport { Loader, RefreshIcon } from \"mds\";\nimport PageHeaderWrapper from \"../../../Common/PageHeaderWrapper/PageHeaderWrapper\";\n\ninterface IHopSimple {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n breadcrumLink: {\n textDecoration: \"none\",\n color: \"black\",\n },\n iframeStyle: {\n border: 0,\n position: \"absolute\",\n height: \"calc(100vh - 77px)\",\n width: \"100%\",\n },\n divContainer: {\n position: \"absolute\",\n left: 0,\n top: 80,\n height: \"calc(100vh - 81px)\",\n width: \"100%\",\n borderTop: \"1px solid #dedede\",\n },\n loader: {\n width: 100,\n margin: \"auto\",\n marginTop: 80,\n },\n\n ...containerForHeader,\n });\n\nconst Hop = ({ classes }: IHopSimple) => {\n const navigate = useNavigate();\n const params = useParams();\n\n const [loading, setLoading] = useState(true);\n\n const tenantName = params.tenantName || \"\";\n const tenantNamespace = params.tenantNamespace || \"\";\n const consoleFrame = React.useRef(null);\n\n return (\n \n \n \n \n Tenants\n \n {` > `}\n \n {tenantName}\n \n {` > Management`}\n \n }\n actions={\n \n {\n if (\n consoleFrame !== null &&\n consoleFrame.current !== null &&\n consoleFrame.current.contentDocument !== null\n ) {\n const loc =\n consoleFrame.current.contentDocument.location.toString();\n\n let add = \"&\";\n\n if (loc.indexOf(\"?\") < 0) {\n add = `?`;\n }\n\n if (loc.indexOf(\"cp=y\") < 0) {\n const next = `${loc}${add}cp=y`;\n consoleFrame.current.contentDocument.location.replace(\n next,\n );\n } else {\n consoleFrame.current.contentDocument.location.reload();\n }\n }\n }}\n size=\"large\"\n >\n \n \n {\n navigate(\n `/namespaces/${tenantNamespace}/tenants/${tenantName}`,\n );\n }}\n size=\"large\"\n >\n \n \n \n }\n />\n \n
\n {loading && (\n
\n \n
\n )}\n {\n setLoading(false);\n }}\n />\n
\n \n );\n};\n\nexport default withStyles(styles)(Hop);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M10.09 15.59 11.5 17l5-5-5-5-1.41 1.41L12.67 11H3v2h9.67l-2.58 2.59zM19 3H5c-1.11 0-2 .9-2 2v4h2V5h14v14H5v-4H3v4c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n}), 'ExitToApp');\nexports.default = _default;"],"names":["withStyles","theme","createStyles","_objectSpread","breadcrumLink","textDecoration","color","iframeStyle","border","position","height","width","divContainer","left","top","borderTop","loader","margin","marginTop","containerForHeader","_ref","classes","navigate","useNavigate","params","useParams","_useState","useState","_useState2","_slicedToArray","loading","setLoading","tenantName","tenantNamespace","consoleFrame","React","_jsxs","Fragment","children","_jsx","Box","PageHeaderWrapper","label","Link","to","className","concat","actions","IconButton","component","onClick","current","contentDocument","loc","location","toString","add","indexOf","next","replace","reload","size","RefreshIcon","ExitToAppIcon","Loader","ref","title","src","onLoad","val","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/140.eacad513.chunk.js b/web-app/build/static/js/140.eacad513.chunk.js new file mode 100644 index 00000000000..b9e755b5378 --- /dev/null +++ b/web-app/build/static/js/140.eacad513.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[140],{65140:(e,n,a)=>{a.r(n),a.d(n,{default:()=>x});var t=a(72791),c=a(57689),r=a(11087),s=a(11135),o=a(25787),l=a(64554),i=a(13400),d=a(23814),p=a(77608),h=a(75952),m=a(47974),u=a(80184);const x=(0,o.Z)((e=>(0,s.Z)({breadcrumLink:{textDecoration:"none",color:"black"},iframeStyle:{border:0,position:"absolute",height:"calc(100vh - 77px)",width:"100%"},divContainer:{position:"absolute",left:0,top:80,height:"calc(100vh - 81px)",width:"100%",borderTop:"1px solid #dedede"},loader:{width:100,margin:"auto",marginTop:80},...d.Bz})))((e=>{let{classes:n}=e;const a=(0,c.s0)(),s=(0,c.UO)(),[o,d]=(0,t.useState)(!0),x=s.tenantName||"",f=s.tenantNamespace||"",j=t.useRef(null);return(0,u.jsxs)(t.Fragment,{children:[(0,u.jsx)(l.Z,{children:(0,u.jsx)(m.Z,{label:(0,u.jsxs)(t.Fragment,{children:[(0,u.jsx)(r.rU,{to:"/tenants",className:n.breadcrumLink,children:"Tenants"})," > ",(0,u.jsx)(r.rU,{to:"/namespaces/".concat(f,"/tenants/").concat(x),className:n.breadcrumLink,children:x})," > Management"]}),actions:(0,u.jsxs)(t.Fragment,{children:[(0,u.jsx)(i.Z,{color:"primary","aria-label":"Refresh List",component:"span",onClick:()=>{if(null!==j&&null!==j.current&&null!==j.current.contentDocument){const e=j.current.contentDocument.location.toString();let n="&";if(e.indexOf("?")<0&&(n="?"),e.indexOf("cp=y")<0){const a="".concat(e).concat(n,"cp=y");j.current.contentDocument.location.replace(a)}else j.current.contentDocument.location.reload()}},size:"large",children:(0,u.jsx)(h.DuK,{})}),(0,u.jsx)(i.Z,{color:"primary","aria-label":"Refresh List",component:"span",onClick:()=>{a("/namespaces/".concat(f,"/tenants/").concat(x))},size:"large",children:(0,u.jsx)(p.Z,{})})]})})}),(0,u.jsxs)("div",{className:n.divContainer,children:[o&&(0,u.jsx)("div",{className:n.loader,children:(0,u.jsx)(h.aNw,{})}),(0,u.jsx)("iframe",{ref:j,className:n.iframeStyle,title:"metrics",src:"/api/hop/".concat(f,"/").concat(x,"/?cp=y"),onLoad:e=>{d(!1)}})]})]})}))},77608:(e,n,a)=>{var t=a(64836);n.Z=void 0;var c=t(a(45649)),r=a(80184),s=(0,c.default)((0,r.jsx)("path",{d:"M10.09 15.59 11.5 17l5-5-5-5-1.41 1.41L12.67 11H3v2h9.67l-2.58 2.59zM19 3H5c-1.11 0-2 .9-2 2v4h2V5h14v14H5v-4H3v4c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"}),"ExitToApp");n.Z=s}}]); +//# sourceMappingURL=140.eacad513.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/140.eacad513.chunk.js.map b/web-app/build/static/js/140.eacad513.chunk.js.map new file mode 100644 index 00000000000..a21c7c34d1d --- /dev/null +++ b/web-app/build/static/js/140.eacad513.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/140.eacad513.chunk.js","mappings":"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","sources":["screens/Console/Tenants/TenantDetails/hop/Hop.tsx","../node_modules/@mui/icons-material/ExitToApp.js"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Link, useNavigate, useParams } from \"react-router-dom\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Box, IconButton } from \"@mui/material\";\nimport { containerForHeader } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport ExitToAppIcon from \"@mui/icons-material/ExitToApp\";\nimport { Loader, RefreshIcon } from \"mds\";\nimport PageHeaderWrapper from \"../../../Common/PageHeaderWrapper/PageHeaderWrapper\";\n\ninterface IHopSimple {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n breadcrumLink: {\n textDecoration: \"none\",\n color: \"black\",\n },\n iframeStyle: {\n border: 0,\n position: \"absolute\",\n height: \"calc(100vh - 77px)\",\n width: \"100%\",\n },\n divContainer: {\n position: \"absolute\",\n left: 0,\n top: 80,\n height: \"calc(100vh - 81px)\",\n width: \"100%\",\n borderTop: \"1px solid #dedede\",\n },\n loader: {\n width: 100,\n margin: \"auto\",\n marginTop: 80,\n },\n\n ...containerForHeader,\n });\n\nconst Hop = ({ classes }: IHopSimple) => {\n const navigate = useNavigate();\n const params = useParams();\n\n const [loading, setLoading] = useState(true);\n\n const tenantName = params.tenantName || \"\";\n const tenantNamespace = params.tenantNamespace || \"\";\n const consoleFrame = React.useRef(null);\n\n return (\n \n \n \n \n Tenants\n \n {` > `}\n \n {tenantName}\n \n {` > Management`}\n \n }\n actions={\n \n {\n if (\n consoleFrame !== null &&\n consoleFrame.current !== null &&\n consoleFrame.current.contentDocument !== null\n ) {\n const loc =\n consoleFrame.current.contentDocument.location.toString();\n\n let add = \"&\";\n\n if (loc.indexOf(\"?\") < 0) {\n add = `?`;\n }\n\n if (loc.indexOf(\"cp=y\") < 0) {\n const next = `${loc}${add}cp=y`;\n consoleFrame.current.contentDocument.location.replace(\n next,\n );\n } else {\n consoleFrame.current.contentDocument.location.reload();\n }\n }\n }}\n size=\"large\"\n >\n \n \n {\n navigate(\n `/namespaces/${tenantNamespace}/tenants/${tenantName}`,\n );\n }}\n size=\"large\"\n >\n \n \n \n }\n />\n \n
\n {loading && (\n
\n \n
\n )}\n {\n setLoading(false);\n }}\n />\n
\n \n );\n};\n\nexport default withStyles(styles)(Hop);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M10.09 15.59 11.5 17l5-5-5-5-1.41 1.41L12.67 11H3v2h9.67l-2.58 2.59zM19 3H5c-1.11 0-2 .9-2 2v4h2V5h14v14H5v-4H3v4c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n}), 'ExitToApp');\nexports.default = _default;"],"names":["withStyles","theme","createStyles","breadcrumLink","textDecoration","color","iframeStyle","border","position","height","width","divContainer","left","top","borderTop","loader","margin","marginTop","containerForHeader","_ref","classes","navigate","useNavigate","params","useParams","loading","setLoading","useState","tenantName","tenantNamespace","consoleFrame","React","_jsxs","Fragment","children","_jsx","Box","PageHeaderWrapper","label","Link","to","className","concat","actions","IconButton","component","onClick","current","contentDocument","loc","location","toString","add","indexOf","next","replace","reload","size","RefreshIcon","ExitToAppIcon","Loader","ref","title","src","onLoad","val","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/145.bbbee7ec.chunk.js b/web-app/build/static/js/145.bbbee7ec.chunk.js deleted file mode 100644 index 94a3b3a3ebf..00000000000 --- a/web-app/build/static/js/145.bbbee7ec.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[145],{59145:function(e,n,t){t.r(n),t.d(n,{default:function(){return k}});var i=t(29439),o=t(1413),a=t(72791),s=t(78687),c=t(11135),l=t(25787),r=t(61889),u=t(23814),d=t(41320),f=t(20890),p=t(45248),m=t(99779),x=t(11087),v=t(35527),h=t(75952),b=t(27454),g=t(80184),Z=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)({paperContainer:{padding:"15px",display:"flex",alignItems:"center",justifyContent:"center"},licenseInfoValue:{textTransform:"none",fontSize:14,fontWeight:"bold"},licenseContainer:{position:"relative",padding:"20px 52px 0px 28px",background:"#032F51",boxShadow:"0px 3px 7px #00000014","& h2":{color:"#FFF",marginBottom:67},"& a":{textDecoration:"none"},"& h3":{color:"#FFFFFF",marginBottom:"30px",fontWeight:"bold"},"& h6":{color:"#FFFFFF !important"}},licenseInfo:{color:"#FFFFFF",position:"relative"},licenseInfoTitle:{textTransform:"none",color:"#BFBFBF",fontSize:11},verifiedIcon:{width:96,position:"absolute",right:0,bottom:29},noUnderLine:{textDecoration:"none"}},u.Bz))}))((function(e){var n,t,i=e.classes,o=e.tenant,s=e.loadingActivateProduct,c=e.loadingLicenseInfo,l=e.licenseInfo,u=e.activateProduct,d=null!==o&&void 0!==o&&o.subnet_license?m.ou.fromISO(null===(n=o.subnet_license)||void 0===n?void 0:n.expires_at):m.ou.now();return(0,g.jsx)(v.Z,{className:o&&o.subnet_license?i.licenseContainer:"",children:o&&o.subnet_license?(0,g.jsx)(a.Fragment,{children:(0,g.jsxs)(r.ZP,{container:!0,className:i.licenseInfo,children:[(0,g.jsxs)(r.ZP,{item:!0,xs:6,children:[(0,g.jsx)(f.Z,{variant:"button",display:"block",gutterBottom:!0,className:i.licenseInfoTitle,children:"License"}),(0,g.jsx)(f.Z,{variant:"overline",display:"block",gutterBottom:!0,className:i.licenseInfoValue,children:"Commercial License"}),(0,g.jsx)(f.Z,{variant:"button",display:"block",gutterBottom:!0,className:i.licenseInfoTitle,children:"Organization"}),(0,g.jsx)(f.Z,{variant:"overline",display:"block",gutterBottom:!0,className:i.licenseInfoValue,children:o.subnet_license.organization}),(0,g.jsx)(f.Z,{variant:"button",display:"block",gutterBottom:!0,className:i.licenseInfoTitle,children:"Registered Capacity"}),(0,g.jsx)(f.Z,{variant:"overline",display:"block",gutterBottom:!0,className:i.licenseInfoValue,children:(0,p.ae)((1099511627776*((null===(t=o.subnet_license)||void 0===t?void 0:t.storage_capacity)||0)).toString(10))}),(0,g.jsx)(f.Z,{variant:"button",display:"block",gutterBottom:!0,className:i.licenseInfoTitle,children:"Expiry Date"}),(0,g.jsx)(f.Z,{variant:"overline",display:"block",gutterBottom:!0,className:i.licenseInfoValue,children:d.toFormat("yyyy-MM-dd")})]}),(0,g.jsxs)(r.ZP,{item:!0,xs:6,children:[(0,g.jsx)(f.Z,{variant:"button",display:"block",gutterBottom:!0,className:i.licenseInfoTitle,children:"Subscription Plan"}),(0,g.jsx)(f.Z,{variant:"overline",display:"block",gutterBottom:!0,className:i.licenseInfoValue,children:o.subnet_license.plan}),(0,g.jsx)(f.Z,{variant:"button",display:"block",gutterBottom:!0,className:i.licenseInfoTitle,children:"Requestor"}),(0,g.jsx)(f.Z,{variant:"overline",display:"block",gutterBottom:!0,className:i.licenseInfoValue,children:o.subnet_license.email})]}),(0,g.jsx)("img",{className:i.verifiedIcon,src:"/verified.svg",alt:"verified"})]})}):!c&&(0,g.jsxs)(r.ZP,{className:i.paperContainer,children:[!l&&(0,g.jsx)(x.rU,{to:"/license",onClick:function(e){e.stopPropagation()},className:i.noUnderLine,children:(0,g.jsx)(b.Z,{tooltip:"Activate Product",children:(0,g.jsx)(h.zxk,{id:"activate-product",label:"Activate Product",onClick:function(){return!1},variant:"callAction"})})}),l&&o&&(0,g.jsx)(b.Z,{tooltip:"Attach License",children:(0,g.jsx)(h.zxk,{id:"attach-license",disabled:s,label:"Attach License",onClick:function(){return u(o.namespace,o.name)},variant:"callAction"})})]})})})),j=t(81207),F=t(87995),I=t(17238),k=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)({},u.oZ),{},{loaderAlign:{textAlign:"center"}},u.Bz))}))((function(e){var n=e.classes,t=(0,d.TL)(),o=(0,s.v9)((function(e){return e.tenants.loadingTenant})),c=(0,s.v9)((function(e){return e.tenants.tenantInfo})),l=(0,a.useState)(),u=(0,i.Z)(l,2),f=u[0],p=u[1],m=(0,a.useState)(!0),x=(0,i.Z)(m,2),v=x[0],b=x[1],k=(0,a.useState)(!1),y=(0,i.Z)(k,2),N=y[0],B=y[1];return(0,a.useEffect)((function(){v&&j.Z.invoke("GET","/api/v1/subscription/info").then((function(e){p(e),b(!1)})).catch((function(e){b(!1)}))}),[v]),(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)("h1",{className:n.sectionTitle,children:"License"}),o?(0,g.jsx)("div",{className:n.loaderAlign,children:(0,g.jsx)(h.aNw,{})}):(0,g.jsx)(a.Fragment,{children:c&&(0,g.jsx)(r.ZP,{container:!0,children:(0,g.jsx)(r.ZP,{item:!0,xs:12,children:(0,g.jsx)(Z,{tenant:c,loadingLicenseInfo:v,loadingActivateProduct:N,licenseInfo:f,activateProduct:function(e,n){N||(B(!0),j.Z.invoke("POST","/api/v1/subscription/namespaces/".concat(e,"/tenants/").concat(n,"/activate"),{}).then((function(){B(!1),t((0,I.V2)(!0)),b(!0)})).catch((function(e){B(!1),t((0,F.Ih)(e))})))}})})})})]})}))}}]); -//# sourceMappingURL=145.bbbee7ec.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/145.bbbee7ec.chunk.js.map b/web-app/build/static/js/145.bbbee7ec.chunk.js.map deleted file mode 100644 index a80b2737880..00000000000 --- a/web-app/build/static/js/145.bbbee7ec.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/145.bbbee7ec.chunk.js","mappings":"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","sources":["screens/Console/Tenants/TenantDetails/SubnetLicenseTenant.tsx","screens/Console/Tenants/TenantDetails/TenantLicense.tsx"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport { containerForHeader } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { Typography } from \"@mui/material\";\nimport { niceBytes } from \"../../../../common/utils\";\nimport { DateTime } from \"luxon\";\nimport { Link } from \"react-router-dom\";\nimport Paper from \"@mui/material/Paper\";\nimport { Button } from \"mds\";\nimport { SubnetInfo } from \"../../License/types\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport { Tenant } from \"../../../../api/operatorApi\";\n\ninterface ISubnetLicenseTenant {\n classes: any;\n tenant: Tenant | null;\n loadingActivateProduct: any;\n loadingLicenseInfo: boolean;\n licenseInfo: SubnetInfo | undefined;\n activateProduct: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n paperContainer: {\n padding: \"15px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n licenseInfoValue: {\n textTransform: \"none\",\n fontSize: 14,\n fontWeight: \"bold\",\n },\n licenseContainer: {\n position: \"relative\",\n padding: \"20px 52px 0px 28px\",\n background: \"#032F51\",\n boxShadow: \"0px 3px 7px #00000014\",\n \"& h2\": {\n color: \"#FFF\",\n marginBottom: 67,\n },\n \"& a\": {\n textDecoration: \"none\",\n },\n \"& h3\": {\n color: \"#FFFFFF\",\n marginBottom: \"30px\",\n fontWeight: \"bold\",\n },\n \"& h6\": {\n color: \"#FFFFFF !important\",\n },\n },\n licenseInfo: { color: \"#FFFFFF\", position: \"relative\" },\n licenseInfoTitle: {\n textTransform: \"none\",\n color: \"#BFBFBF\",\n fontSize: 11,\n },\n verifiedIcon: {\n width: 96,\n position: \"absolute\",\n right: 0,\n bottom: 29,\n },\n noUnderLine: {\n textDecoration: \"none\",\n },\n ...containerForHeader,\n });\n\nconst SubnetLicenseTenant = ({\n classes,\n tenant,\n loadingActivateProduct,\n loadingLicenseInfo,\n licenseInfo,\n activateProduct,\n}: ISubnetLicenseTenant) => {\n const expiryTime = tenant?.subnet_license\n ? DateTime.fromISO(tenant.subnet_license?.expires_at!)\n : DateTime.now();\n\n return (\n \n {tenant && tenant.subnet_license ? (\n \n \n \n \n License\n \n \n Commercial License\n \n \n Organization\n \n \n {tenant.subnet_license.organization}\n \n \n Registered Capacity\n \n \n {niceBytes(\n (\n (tenant.subnet_license?.storage_capacity || 0) *\n 1099511627776\n ) // 1 Terabyte = 1099511627776 Bytes\n .toString(10),\n )}\n \n \n Expiry Date\n \n \n {expiryTime.toFormat(\"yyyy-MM-dd\")}\n \n \n \n \n Subscription Plan\n \n \n {tenant.subnet_license.plan}\n \n \n Requestor\n \n \n {tenant.subnet_license.email}\n \n \n \n \n \n ) : (\n !loadingLicenseInfo && (\n \n {!licenseInfo && (\n {\n e.stopPropagation();\n }}\n className={classes.noUnderLine}\n >\n \n false}\n variant={\"callAction\"}\n />\n \n \n )}\n {licenseInfo && tenant && (\n \n activateProduct(tenant.namespace, tenant.name)}\n variant={\"callAction\"}\n />\n \n )}\n \n )\n )}\n \n );\n};\n\nexport default withStyles(styles)(SubnetLicenseTenant);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n containerForHeader,\n tenantDetailsStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { SubnetInfo } from \"../../License/types\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport SubnetLicenseTenant from \"./SubnetLicenseTenant\";\nimport api from \"../../../../common/api\";\nimport { Loader } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { setTenantDetailsLoad } from \"../tenantsSlice\";\n\ninterface ITenantLicense {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n loaderAlign: {\n textAlign: \"center\",\n },\n ...containerForHeader,\n });\n\nconst TenantLicense = ({ classes }: ITenantLicense) => {\n const dispatch = useAppDispatch();\n\n const loadingTenant = useSelector(\n (state: AppState) => state.tenants.loadingTenant,\n );\n const tenant = useSelector((state: AppState) => state.tenants.tenantInfo);\n\n const [licenseInfo, setLicenseInfo] = useState();\n const [loadingLicenseInfo, setLoadingLicenseInfo] = useState(true);\n const [loadingActivateProduct, setLoadingActivateProduct] =\n useState(false);\n\n const activateProduct = (namespace: string, tenant: string) => {\n if (loadingActivateProduct) {\n return;\n }\n setLoadingActivateProduct(true);\n api\n .invoke(\n \"POST\",\n `/api/v1/subscription/namespaces/${namespace}/tenants/${tenant}/activate`,\n {},\n )\n .then(() => {\n setLoadingActivateProduct(false);\n dispatch(setTenantDetailsLoad(true));\n setLoadingLicenseInfo(true);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoadingActivateProduct(false);\n dispatch(setErrorSnackMessage(err));\n });\n };\n\n useEffect(() => {\n if (loadingLicenseInfo) {\n api\n .invoke(\"GET\", `/api/v1/subscription/info`)\n .then((res: SubnetInfo) => {\n setLicenseInfo(res);\n setLoadingLicenseInfo(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoadingLicenseInfo(false);\n });\n }\n }, [loadingLicenseInfo]);\n\n return (\n \n

License

\n {loadingTenant ? (\n
\n \n
\n ) : (\n \n {tenant && (\n \n \n \n \n \n )}\n \n )}\n
\n );\n};\n\nexport default withStyles(styles)(TenantLicense);\n"],"names":["withStyles","theme","createStyles","_objectSpread","paperContainer","padding","display","alignItems","justifyContent","licenseInfoValue","textTransform","fontSize","fontWeight","licenseContainer","position","background","boxShadow","color","marginBottom","textDecoration","licenseInfo","licenseInfoTitle","verifiedIcon","width","right","bottom","noUnderLine","containerForHeader","_ref","_tenant$subnet_licens","_tenant$subnet_licens2","classes","tenant","loadingActivateProduct","loadingLicenseInfo","activateProduct","expiryTime","subnet_license","DateTime","fromISO","expires_at","now","_jsx","Paper","className","children","React","_jsxs","Grid","container","item","xs","Typography","variant","gutterBottom","organization","niceBytes","storage_capacity","toString","toFormat","plan","email","src","alt","Link","to","onClick","e","stopPropagation","TooltipWrapper","tooltip","Button","id","label","disabled","namespace","name","tenantDetailsStyles","loaderAlign","textAlign","dispatch","useAppDispatch","loadingTenant","useSelector","state","tenants","tenantInfo","_useState","useState","_useState2","_slicedToArray","setLicenseInfo","_useState3","_useState4","setLoadingLicenseInfo","_useState5","_useState6","setLoadingActivateProduct","useEffect","api","invoke","then","res","catch","err","Fragment","sectionTitle","Loader","SubnetLicenseTenant","concat","setTenantDetailsLoad","setErrorSnackMessage"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/145.be7fdd7f.chunk.js b/web-app/build/static/js/145.be7fdd7f.chunk.js new file mode 100644 index 00000000000..49a365dce13 --- /dev/null +++ b/web-app/build/static/js/145.be7fdd7f.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[145],{59145:(e,t,n)=>{n.r(t),n.d(t,{default:()=>Z});var i=n(72791),a=n(78687),s=n(11135),o=n(25787),l=n(61889),c=n(23814),r=n(41320),d=n(20890),u=n(45248),p=n(99779),m=n(11087),x=n(35527),v=n(75952),h=n(27454),b=n(80184);const f=(0,o.Z)((e=>(0,s.Z)({paperContainer:{padding:"15px",display:"flex",alignItems:"center",justifyContent:"center"},licenseInfoValue:{textTransform:"none",fontSize:14,fontWeight:"bold"},licenseContainer:{position:"relative",padding:"20px 52px 0px 28px",background:"#032F51",boxShadow:"0px 3px 7px #00000014","& h2":{color:"#FFF",marginBottom:67},"& a":{textDecoration:"none"},"& h3":{color:"#FFFFFF",marginBottom:"30px",fontWeight:"bold"},"& h6":{color:"#FFFFFF !important"}},licenseInfo:{color:"#FFFFFF",position:"relative"},licenseInfoTitle:{textTransform:"none",color:"#BFBFBF",fontSize:11},verifiedIcon:{width:96,position:"absolute",right:0,bottom:29},noUnderLine:{textDecoration:"none"},...c.Bz})))((e=>{var t,n;let{classes:a,tenant:s,loadingActivateProduct:o,loadingLicenseInfo:c,licenseInfo:r,activateProduct:f}=e;const g=null!==s&&void 0!==s&&s.subnet_license?p.ou.fromISO(null===(t=s.subnet_license)||void 0===t?void 0:t.expires_at):p.ou.now();return(0,b.jsx)(x.Z,{className:s&&s.subnet_license?a.licenseContainer:"",children:s&&s.subnet_license?(0,b.jsx)(i.Fragment,{children:(0,b.jsxs)(l.ZP,{container:!0,className:a.licenseInfo,children:[(0,b.jsxs)(l.ZP,{item:!0,xs:6,children:[(0,b.jsx)(d.Z,{variant:"button",display:"block",gutterBottom:!0,className:a.licenseInfoTitle,children:"License"}),(0,b.jsx)(d.Z,{variant:"overline",display:"block",gutterBottom:!0,className:a.licenseInfoValue,children:"Commercial License"}),(0,b.jsx)(d.Z,{variant:"button",display:"block",gutterBottom:!0,className:a.licenseInfoTitle,children:"Organization"}),(0,b.jsx)(d.Z,{variant:"overline",display:"block",gutterBottom:!0,className:a.licenseInfoValue,children:s.subnet_license.organization}),(0,b.jsx)(d.Z,{variant:"button",display:"block",gutterBottom:!0,className:a.licenseInfoTitle,children:"Registered Capacity"}),(0,b.jsx)(d.Z,{variant:"overline",display:"block",gutterBottom:!0,className:a.licenseInfoValue,children:(0,u.ae)((1099511627776*((null===(n=s.subnet_license)||void 0===n?void 0:n.storage_capacity)||0)).toString(10))}),(0,b.jsx)(d.Z,{variant:"button",display:"block",gutterBottom:!0,className:a.licenseInfoTitle,children:"Expiry Date"}),(0,b.jsx)(d.Z,{variant:"overline",display:"block",gutterBottom:!0,className:a.licenseInfoValue,children:g.toFormat("yyyy-MM-dd")})]}),(0,b.jsxs)(l.ZP,{item:!0,xs:6,children:[(0,b.jsx)(d.Z,{variant:"button",display:"block",gutterBottom:!0,className:a.licenseInfoTitle,children:"Subscription Plan"}),(0,b.jsx)(d.Z,{variant:"overline",display:"block",gutterBottom:!0,className:a.licenseInfoValue,children:s.subnet_license.plan}),(0,b.jsx)(d.Z,{variant:"button",display:"block",gutterBottom:!0,className:a.licenseInfoTitle,children:"Requestor"}),(0,b.jsx)(d.Z,{variant:"overline",display:"block",gutterBottom:!0,className:a.licenseInfoValue,children:s.subnet_license.email})]}),(0,b.jsx)("img",{className:a.verifiedIcon,src:"/verified.svg",alt:"verified"})]})}):!c&&(0,b.jsxs)(l.ZP,{className:a.paperContainer,children:[!r&&(0,b.jsx)(m.rU,{to:"/license",onClick:e=>{e.stopPropagation()},className:a.noUnderLine,children:(0,b.jsx)(h.Z,{tooltip:"Activate Product",children:(0,b.jsx)(v.zxk,{id:"activate-product",label:"Activate Product",onClick:()=>!1,variant:"callAction"})})}),r&&s&&(0,b.jsx)(h.Z,{tooltip:"Attach License",children:(0,b.jsx)(v.zxk,{id:"attach-license",disabled:o,label:"Attach License",onClick:()=>f(s.namespace,s.name),variant:"callAction"})})]})})}));var g=n(81207),j=n(87995),F=n(17238);const Z=(0,o.Z)((e=>(0,s.Z)({...c.oZ,loaderAlign:{textAlign:"center"},...c.Bz})))((e=>{let{classes:t}=e;const n=(0,r.TL)(),s=(0,a.v9)((e=>e.tenants.loadingTenant)),o=(0,a.v9)((e=>e.tenants.tenantInfo)),[c,d]=(0,i.useState)(),[u,p]=(0,i.useState)(!0),[m,x]=(0,i.useState)(!1);return(0,i.useEffect)((()=>{u&&g.Z.invoke("GET","/api/v1/subscription/info").then((e=>{d(e),p(!1)})).catch((e=>{p(!1)}))}),[u]),(0,b.jsxs)(i.Fragment,{children:[(0,b.jsx)("h1",{className:t.sectionTitle,children:"License"}),s?(0,b.jsx)("div",{className:t.loaderAlign,children:(0,b.jsx)(v.aNw,{})}):(0,b.jsx)(i.Fragment,{children:o&&(0,b.jsx)(l.ZP,{container:!0,children:(0,b.jsx)(l.ZP,{item:!0,xs:12,children:(0,b.jsx)(f,{tenant:o,loadingLicenseInfo:u,loadingActivateProduct:m,licenseInfo:c,activateProduct:(e,t)=>{m||(x(!0),g.Z.invoke("POST","/api/v1/subscription/namespaces/".concat(e,"/tenants/").concat(t,"/activate"),{}).then((()=>{x(!1),n((0,F.V2)(!0)),p(!0)})).catch((e=>{x(!1),n((0,j.Ih)(e))})))}})})})})]})}))}}]); +//# sourceMappingURL=145.be7fdd7f.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/145.be7fdd7f.chunk.js.map b/web-app/build/static/js/145.be7fdd7f.chunk.js.map new file mode 100644 index 00000000000..92272621f25 --- /dev/null +++ b/web-app/build/static/js/145.be7fdd7f.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/145.be7fdd7f.chunk.js","mappings":"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","sources":["screens/Console/Tenants/TenantDetails/SubnetLicenseTenant.tsx","screens/Console/Tenants/TenantDetails/TenantLicense.tsx"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport { containerForHeader } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { Typography } from \"@mui/material\";\nimport { niceBytes } from \"../../../../common/utils\";\nimport { DateTime } from \"luxon\";\nimport { Link } from \"react-router-dom\";\nimport Paper from \"@mui/material/Paper\";\nimport { Button } from \"mds\";\nimport { SubnetInfo } from \"../../License/types\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport { Tenant } from \"../../../../api/operatorApi\";\n\ninterface ISubnetLicenseTenant {\n classes: any;\n tenant: Tenant | null;\n loadingActivateProduct: any;\n loadingLicenseInfo: boolean;\n licenseInfo: SubnetInfo | undefined;\n activateProduct: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n paperContainer: {\n padding: \"15px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n licenseInfoValue: {\n textTransform: \"none\",\n fontSize: 14,\n fontWeight: \"bold\",\n },\n licenseContainer: {\n position: \"relative\",\n padding: \"20px 52px 0px 28px\",\n background: \"#032F51\",\n boxShadow: \"0px 3px 7px #00000014\",\n \"& h2\": {\n color: \"#FFF\",\n marginBottom: 67,\n },\n \"& a\": {\n textDecoration: \"none\",\n },\n \"& h3\": {\n color: \"#FFFFFF\",\n marginBottom: \"30px\",\n fontWeight: \"bold\",\n },\n \"& h6\": {\n color: \"#FFFFFF !important\",\n },\n },\n licenseInfo: { color: \"#FFFFFF\", position: \"relative\" },\n licenseInfoTitle: {\n textTransform: \"none\",\n color: \"#BFBFBF\",\n fontSize: 11,\n },\n verifiedIcon: {\n width: 96,\n position: \"absolute\",\n right: 0,\n bottom: 29,\n },\n noUnderLine: {\n textDecoration: \"none\",\n },\n ...containerForHeader,\n });\n\nconst SubnetLicenseTenant = ({\n classes,\n tenant,\n loadingActivateProduct,\n loadingLicenseInfo,\n licenseInfo,\n activateProduct,\n}: ISubnetLicenseTenant) => {\n const expiryTime = tenant?.subnet_license\n ? DateTime.fromISO(tenant.subnet_license?.expires_at!)\n : DateTime.now();\n\n return (\n \n {tenant && tenant.subnet_license ? (\n \n \n \n \n License\n \n \n Commercial License\n \n \n Organization\n \n \n {tenant.subnet_license.organization}\n \n \n Registered Capacity\n \n \n {niceBytes(\n (\n (tenant.subnet_license?.storage_capacity || 0) *\n 1099511627776\n ) // 1 Terabyte = 1099511627776 Bytes\n .toString(10),\n )}\n \n \n Expiry Date\n \n \n {expiryTime.toFormat(\"yyyy-MM-dd\")}\n \n \n \n \n Subscription Plan\n \n \n {tenant.subnet_license.plan}\n \n \n Requestor\n \n \n {tenant.subnet_license.email}\n \n \n \n \n \n ) : (\n !loadingLicenseInfo && (\n \n {!licenseInfo && (\n {\n e.stopPropagation();\n }}\n className={classes.noUnderLine}\n >\n \n false}\n variant={\"callAction\"}\n />\n \n \n )}\n {licenseInfo && tenant && (\n \n activateProduct(tenant.namespace, tenant.name)}\n variant={\"callAction\"}\n />\n \n )}\n \n )\n )}\n \n );\n};\n\nexport default withStyles(styles)(SubnetLicenseTenant);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n containerForHeader,\n tenantDetailsStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { SubnetInfo } from \"../../License/types\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport SubnetLicenseTenant from \"./SubnetLicenseTenant\";\nimport api from \"../../../../common/api\";\nimport { Loader } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { setTenantDetailsLoad } from \"../tenantsSlice\";\n\ninterface ITenantLicense {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n loaderAlign: {\n textAlign: \"center\",\n },\n ...containerForHeader,\n });\n\nconst TenantLicense = ({ classes }: ITenantLicense) => {\n const dispatch = useAppDispatch();\n\n const loadingTenant = useSelector(\n (state: AppState) => state.tenants.loadingTenant,\n );\n const tenant = useSelector((state: AppState) => state.tenants.tenantInfo);\n\n const [licenseInfo, setLicenseInfo] = useState();\n const [loadingLicenseInfo, setLoadingLicenseInfo] = useState(true);\n const [loadingActivateProduct, setLoadingActivateProduct] =\n useState(false);\n\n const activateProduct = (namespace: string, tenant: string) => {\n if (loadingActivateProduct) {\n return;\n }\n setLoadingActivateProduct(true);\n api\n .invoke(\n \"POST\",\n `/api/v1/subscription/namespaces/${namespace}/tenants/${tenant}/activate`,\n {},\n )\n .then(() => {\n setLoadingActivateProduct(false);\n dispatch(setTenantDetailsLoad(true));\n setLoadingLicenseInfo(true);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoadingActivateProduct(false);\n dispatch(setErrorSnackMessage(err));\n });\n };\n\n useEffect(() => {\n if (loadingLicenseInfo) {\n api\n .invoke(\"GET\", `/api/v1/subscription/info`)\n .then((res: SubnetInfo) => {\n setLicenseInfo(res);\n setLoadingLicenseInfo(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoadingLicenseInfo(false);\n });\n }\n }, [loadingLicenseInfo]);\n\n return (\n \n

License

\n {loadingTenant ? (\n
\n \n
\n ) : (\n \n {tenant && (\n \n \n \n \n \n )}\n \n )}\n
\n );\n};\n\nexport default withStyles(styles)(TenantLicense);\n"],"names":["withStyles","theme","createStyles","paperContainer","padding","display","alignItems","justifyContent","licenseInfoValue","textTransform","fontSize","fontWeight","licenseContainer","position","background","boxShadow","color","marginBottom","textDecoration","licenseInfo","licenseInfoTitle","verifiedIcon","width","right","bottom","noUnderLine","containerForHeader","_ref","_tenant$subnet_licens","_tenant$subnet_licens2","classes","tenant","loadingActivateProduct","loadingLicenseInfo","activateProduct","expiryTime","subnet_license","DateTime","fromISO","expires_at","now","_jsx","Paper","className","children","React","_jsxs","Grid","container","item","xs","Typography","variant","gutterBottom","organization","niceBytes","storage_capacity","toString","toFormat","plan","email","src","alt","Link","to","onClick","e","stopPropagation","TooltipWrapper","tooltip","Button","id","label","disabled","namespace","name","tenantDetailsStyles","loaderAlign","textAlign","dispatch","useAppDispatch","loadingTenant","useSelector","state","tenants","tenantInfo","setLicenseInfo","useState","setLoadingLicenseInfo","setLoadingActivateProduct","useEffect","api","invoke","then","res","catch","err","Fragment","sectionTitle","Loader","SubnetLicenseTenant","concat","setTenantDetailsLoad","setErrorSnackMessage"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/21.53327062.chunk.js b/web-app/build/static/js/21.53327062.chunk.js deleted file mode 100644 index 031a653d700..00000000000 --- a/web-app/build/static/js/21.53327062.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[21],{68456:function(e,n,a){a.d(n,{QT:function(){return o},YH:function(){return c},mo:function(){return s}});var t=a(61889),i=a(75952),r=a(80184),s=function(){return(0,r.jsxs)(t.ZP,{container:!0,columnGap:1,children:[(0,r.jsx)(t.ZP,{children:(0,r.jsx)(i.gyG,{width:"16px",height:"16px"})}),(0,r.jsx)(t.ZP,{item:!0,children:"Open ID"})]})},o=function(){return(0,r.jsxs)(t.ZP,{container:!0,columnGap:1,children:[(0,r.jsx)(t.ZP,{children:(0,r.jsx)(i.vcZ,{width:"16px",height:"16px"})}),(0,r.jsx)(t.ZP,{item:!0,children:"LDAP / Active Directory"})]})},c=function(){return(0,r.jsxs)(t.ZP,{container:!0,columnGap:1,children:[(0,r.jsx)(t.ZP,{children:(0,r.jsx)(i.oyc,{width:"16px",height:"16px"})}),(0,r.jsx)(t.ZP,{item:!0,children:"Built-in"})]})}},37021:function(e,n,a){a.r(n);var t=a(93433),i=a(29439),r=a(1413),s=a(72791),o=a(78687),c=a(51691),l=a(20890),d=a(96040),u=a(13400),m=a(75952),h=a(61889),p=a(11135),x=a(25787),v=a(20165),f=a(3579),_=a(23814),Z=a(68456),j=a(84741),g=a(40968),D=a(87995),N=a(41320),S=a(83679),b=a(21435),I=a(37516),y=a(40306),k=a(81207),A=a(42419),w=a(27247),C=a(50896),P=a(80184);function R(){return null}var F=(0,o.$j)((function(e){return{loadingTenant:e.tenants.loadingTenant,selectedTenant:e.tenants.currentTenant,tenant:e.tenants.tenantInfo}}),null);n.default=(0,x.Z)((function(e){return(0,p.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({adUserDnRows:{display:"flex",marginBottom:10},buttonTray:{marginLeft:10,display:"flex",height:38,"& button":{background:"#EAEAEA"}}},_.oZ),_.bK),{},{loaderAlign:{textAlign:"center"}},_.Bz),_.QV),_.DF),_.oO),_.AK))}))(F((function(e){var n=e.classes,a=(0,N.TL)(),r=(0,o.v9)((function(e){return e.tenants.tenantInfo})),p=(0,o.v9)((function(e){return e.tenants.loadingTenant})),x=(0,s.useState)(!1),_=(0,i.Z)(x,2),F=_[0],T=_[1],L=(0,s.useState)(!1),O=(0,i.Z)(L,2),U=O[0],B=O[1],G=(0,s.useState)("Built-in"),q=(0,i.Z)(G,2),z=q[0],K=q[1],E=(0,s.useState)(""),H=(0,i.Z)(E,2),V=H[0],M=H[1],Q=(0,s.useState)(""),Y=(0,i.Z)(Q,2),W=Y[0],$=Y[1],J=(0,s.useState)(""),X=(0,i.Z)(J,2),ee=X[0],ne=X[1],ae=(0,s.useState)(!1),te=(0,i.Z)(ae,2),ie=te[0],re=te[1],se=(0,s.useState)(""),oe=(0,i.Z)(se,2),ce=oe[0],le=oe[1],de=(0,s.useState)(""),ue=(0,i.Z)(de,2),me=ue[0],he=ue[1],pe=(0,s.useState)(""),xe=(0,i.Z)(pe,2),ve=xe[0],fe=xe[1],_e=(0,s.useState)(""),Ze=(0,i.Z)(_e,2),je=Ze[0],ge=Ze[1],De=(0,s.useState)(""),Ne=(0,i.Z)(De,2),Se=Ne[0],be=Ne[1],Ie=(0,s.useState)(""),ye=(0,i.Z)(Ie,2),ke=ye[0],Ae=ye[1],we=(0,s.useState)(!1),Ce=(0,i.Z)(we,2),Pe=Ce[0],Re=Ce[1],Fe=(0,s.useState)(""),Te=(0,i.Z)(Fe,2),Le=Te[0],Oe=Te[1],Ue=(0,s.useState)(""),Be=(0,i.Z)(Ue,2),Ge=Be[0],qe=Be[1],ze=(0,s.useState)(""),Ke=(0,i.Z)(ze,2),Ee=Ke[0],He=Ke[1],Ve=(0,s.useState)(""),Me=(0,i.Z)(Ve,2),Qe=Me[0],Ye=Me[1],We=(0,s.useState)(!1),$e=(0,i.Z)(We,2),Je=$e[0],Xe=$e[1],en=(0,s.useState)(!1),nn=(0,i.Z)(en,2),an=nn[0],tn=nn[1],rn=(0,s.useState)(!1),sn=(0,i.Z)(rn,2),on=sn[0],cn=sn[1],ln=(0,s.useState)([""]),dn=(0,i.Z)(ln,2),un=dn[0],mn=dn[1],hn=(0,s.useState)([""]),pn=(0,i.Z)(hn,2),xn=pn[0],vn=pn[1],fn=(0,s.useState)({}),_n=(0,i.Z)(fn,2),Zn=_n[0],jn=_n[1],gn=function(e){jn((0,j.h)(Zn,e))},Dn=(0,s.useState)(!1),Nn=(0,i.Z)(Dn,2),Sn=Nn[0],bn=Nn[1];(0,s.useEffect)((function(){var e=[];"OpenID"===z&&(e=[].concat((0,t.Z)(e),[{fieldKey:"openID_CONFIGURATION_URL",required:!0,value:V},{fieldKey:"openID_clientID",required:!0,value:W},{fieldKey:"openID_secretID",required:!0,value:ee},{fieldKey:"openID_claimName",required:!1,value:me}])),"AD"===z&&(e=[].concat((0,t.Z)(e),[{fieldKey:"AD_URL",required:!0,value:je},{fieldKey:"ad_lookupBindDN",required:!0,value:Se}]));var n=(0,g.R)(e);bn(0===Object.keys(n).length),jn(n)}),[z,V,W,ee,me,je,Se]);var In=(0,s.useCallback)((function(){k.Z.invoke("GET","/api/v1/namespaces/".concat(null===r||void 0===r?void 0:r.namespace,"/tenants/").concat(null===r||void 0===r?void 0:r.name,"/identity-provider")).then((function(e){e&&(e.oidc?(K("OpenID"),M(e.oidc.configuration_url),$(e.oidc.client_id),ne(e.oidc.secret_id),le(e.oidc.callback_url),he(e.oidc.claim_name),fe(e.oidc.scopes)):e.active_directory&&(K("AD"),ge(e.active_directory.url),be(e.active_directory.lookup_bind_dn),Ae(e.active_directory.lookup_bind_password),Oe(e.active_directory.user_dn_search_base_dn),qe(e.active_directory.user_dn_search_filter),He(e.active_directory.group_search_base_dn),Ye(e.active_directory.group_search_filter),Xe(e.active_directory.skip_tls_verification),tn(e.active_directory.server_insecure),cn(e.active_directory.server_start_tls)))})).catch((function(e){a((0,D.Ih)(e))}))}),[r,a]);(0,s.useEffect)((function(){r&&In()}),[r,In]);return(0,P.jsxs)(s.Fragment,{children:[(0,P.jsx)(y.Z,{title:"Save and Restart",confirmText:"Restart",cancelText:"Cancel",titleIcon:(0,P.jsx)(m.EjK,{}),isLoading:F,onClose:function(){return B(!1)},isOpen:U,onConfirm:function(){T(!0);var e={};switch(z){case"AD":e.active_directory={url:je,lookup_bind_dn:Se,lookup_bind_password:ke,user_dn_search_base_dn:Le,user_dn_search_filter:Ge,group_search_base_dn:Ee,group_search_filter:Qe,skip_tls_verification:Je,server_insecure:an,server_start_tls:on};break;case"OpenID":e.oidc={configuration_url:V,client_id:W,secret_id:ee,callback_url:ce,claim_name:me,scopes:ve}}k.Z.invoke("POST","/api/v1/namespaces/".concat(null===r||void 0===r?void 0:r.namespace,"/tenants/").concat(null===r||void 0===r?void 0:r.name,"/identity-provider"),e).then((function(){T(!1),B(!1),In()})).catch((function(e){a((0,D.Ih)(e)),T(!1)}))},confirmationContent:(0,P.jsx)(c.Z,{children:"Are you sure you want to save the changes and restart the service?"})}),p?(0,P.jsx)("div",{className:n.loaderAlign,children:(0,P.jsx)(m.aNw,{})}):(0,P.jsxs)(s.Fragment,{children:[(0,P.jsxs)(h.ZP,{item:!0,xs:12,children:[(0,P.jsx)("h1",{className:n.sectionTitle,children:"Identity Provider"}),(0,P.jsx)(R,{})]}),(0,P.jsx)(h.ZP,{item:!0,xs:12,className:n.protocolRadioOptions,paddingBottom:1,children:(0,P.jsx)(S.Z,{currentSelection:z,id:"idp-options",name:"idp-options",label:"Protocol",onChange:function(e){K(e.target.value)},selectorOptions:[{label:(0,P.jsx)(Z.YH,{}),value:"Built-in"},{label:(0,P.jsx)(Z.mo,{}),value:"OpenID"},{label:(0,P.jsx)(Z.QT,{}),value:"AD"}]})}),"OpenID"===z&&(0,P.jsxs)(s.Fragment,{children:[(0,P.jsx)(h.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,P.jsx)(b.Z,{id:"openID_CONFIGURATION_URL",name:"openID_CONFIGURATION_URL",onChange:function(e){M(e.target.value),gn("openID_CONFIGURATION_URL")},label:"Configuration URL",value:V,placeholder:"https://your-identity-provider.com/.well-known/openid-configuration",error:Zn.openID_CONFIGURATION_URL||"",required:!0})}),(0,P.jsx)(h.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,P.jsx)(b.Z,{id:"openID_clientID",name:"openID_clientID",onChange:function(e){$(e.target.value),gn("openID_clientID")},label:"Client ID",value:W,error:Zn.openID_clientID||"",required:!0})}),(0,P.jsx)(h.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,P.jsx)(b.Z,{type:ie?"text":"password",id:"openID_secretID",name:"openID_secretID",onChange:function(e){ne(e.target.value),gn("openID_secretID")},label:"Secret ID",value:ee,error:Zn.openID_secretID||"",required:!0,overlayIcon:ie?(0,P.jsx)(v.Z,{}):(0,P.jsx)(f.Z,{}),overlayAction:function(){return re(!ie)}})}),(0,P.jsx)(h.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,P.jsx)(b.Z,{id:"openID_claimName",name:"openID_claimName",onChange:function(e){he(e.target.value),gn("openID_claimName")},label:"Claim Name",value:me,placeholder:"policy",error:Zn.openID_claimName||""})}),(0,P.jsx)(h.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,P.jsx)(b.Z,{id:"openID_scopes",name:"openID_scopes",onChange:function(e){fe(e.target.value),gn("openID_scopes")},label:"Scopes",value:ve})})]}),"AD"===z&&(0,P.jsxs)(s.Fragment,{children:[(0,P.jsx)(h.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,P.jsx)(b.Z,{id:"AD_URL",name:"AD_URL",onChange:function(e){ge(e.target.value),gn("AD_URL")},label:"LDAP Server Address",value:je,placeholder:"ldap-server:636",error:Zn.AD_URL||"",required:!0})}),(0,P.jsx)(h.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,P.jsx)(I.Z,{value:"ad_skipTLS",id:"ad_skipTLS",name:"ad_skipTLS",checked:Je,onChange:function(e){var n=e.target.checked;Xe(n)},label:"Skip TLS Verification"})}),(0,P.jsx)(h.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,P.jsx)(I.Z,{value:"ad_serverInsecure",id:"ad_serverInsecure",name:"ad_serverInsecure",checked:an,onChange:function(e){var n=e.target.checked;tn(n)},label:"Server Insecure"})}),an?(0,P.jsxs)(h.ZP,{item:!0,xs:12,children:[(0,P.jsx)(l.Z,{className:n.error,variant:"caption",display:"block",gutterBottom:!0,children:"Warning: All traffic with Active Directory will be unencrypted"}),(0,P.jsx)("br",{})]}):null,(0,P.jsx)(h.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,P.jsx)(I.Z,{value:"ad_serverStartTLS",id:"ad_serverStartTLS",name:"ad_serverStartTLS",checked:on,onChange:function(e){var n=e.target.checked;cn(n)},label:"Start TLS connection to AD/LDAP server"})}),(0,P.jsx)(h.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,P.jsx)(b.Z,{id:"ad_lookupBindDN",name:"ad_lookupBindDN",onChange:function(e){be(e.target.value),gn("ad_lookupBindDN")},label:"Lookup Bind DN",value:Se,placeholder:"cn=admin,dc=min,dc=io",error:Zn.ad_lookupBindDN||"",required:!0})}),(0,P.jsx)(h.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,P.jsx)(b.Z,{type:Pe?"text":"password",id:"ad_lookupBindPassword",name:"ad_lookupBindPassword",onChange:function(e){Ae(e.target.value)},label:"Lookup Bind Password",value:ke,placeholder:"admin",overlayIcon:Pe?(0,P.jsx)(v.Z,{}):(0,P.jsx)(f.Z,{}),overlayAction:function(){return Re(!Pe)}})}),(0,P.jsx)(h.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,P.jsx)(b.Z,{id:"ad_userDNSearchBaseDN",name:"ad_userDNSearchBaseDN",onChange:function(e){Oe(e.target.value)},label:"User DN Search Base DN",value:Le,placeholder:"dc=min,dc=io"})}),(0,P.jsx)(h.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,P.jsx)(b.Z,{id:"ad_userDNSearchFilter",name:"ad_userDNSearchFilter",onChange:function(e){qe(e.target.value)},label:"User DN Search Filter",value:Ge,placeholder:"(sAMAcountName=%s)"})}),(0,P.jsx)(h.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,P.jsx)(b.Z,{id:"ad_groupSearchBaseDN",name:"ad_groupSearchBaseDN",onChange:function(e){He(e.target.value)},label:"Group Search Base DN",value:Ee,placeholder:"ou=hwengg,dc=min,dc=io;ou=swengg,dc=min,dc=io"})}),(0,P.jsx)(h.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,P.jsx)(b.Z,{id:"ad_groupSearchFilter",name:"ad_groupSearchFilter",onChange:function(e){Ye(e.target.value)},label:"Group Search Filter",value:Qe,placeholder:"(&(objectclass=groupOfNames)(member=%s))"})})]}),(0,P.jsx)(h.ZP,{item:!0,xs:12,className:n.buttonContainer,children:(0,P.jsx)(m.zxk,{id:"save-idp",type:"submit",variant:"callAction",color:"primary",disabled:!Sn||F,onClick:function(){return B(!0)},label:"Save"})}),"AD"===z&&(0,P.jsxs)(s.Fragment,{children:[(0,P.jsx)(C.Z,{children:"User & Group management"}),(0,P.jsx)("br",{}),(0,P.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,P.jsx)("legend",{className:n.descriptionText,children:"List of user DNs (Distinguished Names) to be added as Tenant Administrators"}),(0,P.jsx)(h.ZP,{item:!0,xs:12,children:un.map((function(e,a){return(0,P.jsx)(s.Fragment,{children:(0,P.jsxs)("div",{className:n.adUserDnRows,children:[(0,P.jsx)(b.Z,{id:"ad-userdn-".concat(a.toString()),label:"",placeholder:"",name:"ad-userdn-".concat(a.toString()),value:un[a],onChange:function(e){mn(un.map((function(n,t){return t===a?e.target.value:n})))},index:a,error:Zn["ad-userdn-".concat(a.toString())]||""},"csv-ad-userdn-".concat(a.toString())),(0,P.jsxs)("div",{className:n.buttonTray,children:[(0,P.jsx)(d.Z,{title:"Add User","aria-label":"add",children:(0,P.jsx)(u.Z,{size:"small",onClick:function(){mn([].concat((0,t.Z)(un),[""]))},children:(0,P.jsx)(A.Z,{})})}),(0,P.jsx)(d.Z,{title:"Remove","aria-label":"add",children:(0,P.jsx)(u.Z,{size:"small",style:{marginLeft:16},onClick:function(){un.length>1&&mn(un.filter((function(e,n){return n!==a})))},children:(0,P.jsx)(w.Z,{})})})]})]})},"identityField-".concat(a.toString()))}))})]}),(0,P.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,P.jsx)("legend",{className:n.descriptionText,children:"List of group DNs (Distinguished Names) to be added as Tenant Administrators"}),(0,P.jsx)(h.ZP,{item:!0,xs:12,children:xn.map((function(e,a){return(0,P.jsx)(s.Fragment,{children:(0,P.jsxs)("div",{className:n.adUserDnRows,children:[(0,P.jsx)(b.Z,{id:"ad-groupdn-".concat(a.toString()),label:"",placeholder:"",name:"ad-groupdn-".concat(a.toString()),value:xn[a],onChange:function(e){vn(xn.map((function(n,t){return t===a?e.target.value:n})))},index:a,error:Zn["ad-groupdn-".concat(a.toString())]||""},"csv-ad-groupdn-".concat(a.toString())),(0,P.jsxs)("div",{className:n.buttonTray,children:[(0,P.jsx)(d.Z,{title:"Add Group","aria-label":"add",children:(0,P.jsx)(u.Z,{size:"small",onClick:function(){vn([].concat((0,t.Z)(xn),[""]))},children:(0,P.jsx)(A.Z,{})})}),(0,P.jsx)(d.Z,{title:"Remove","aria-label":"add",children:(0,P.jsx)(u.Z,{size:"small",style:{marginLeft:16},onClick:function(){xn.length>1&&vn(xn.filter((function(e,n){return n!==a})))},children:(0,P.jsx)(w.Z,{})})})]})]})},"identityField-".concat(a.toString()))}))})]}),(0,P.jsx)("br",{}),(0,P.jsx)(h.ZP,{item:!0,xs:12,className:n.buttonContainer,children:(0,P.jsx)(m.zxk,{id:"add-additional-dns",type:"submit",variant:"callAction",disabled:!Sn||F,onClick:function(){return function(){T(!0);var e={};"AD"===z&&(e={user_dns:un.filter((function(e){return""!==e.trim()})),group_dns:xn.filter((function(e){return""!==e.trim()}))});k.Z.invoke("POST","/api/v1/namespaces/".concat(null===r||void 0===r?void 0:r.namespace,"/tenants/").concat(null===r||void 0===r?void 0:r.name,"/set-administrators"),e).then((function(){T(!1),vn([""]),mn([""]),In(),a((0,D.y1)("Administrators added successfully"))})).catch((function(e){a((0,D.Ih)(e)),T(!1)}))}()},label:"Add additional DNs"})})]})]})]})})))},42419:function(e,n,a){var t=a(64836);n.Z=void 0;var i=t(a(45649)),r=a(80184),s=(0,i.default)((0,r.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add");n.Z=s},27247:function(e,n,a){var t=a(64836);n.Z=void 0;var i=t(a(45649)),r=a(80184),s=(0,i.default)((0,r.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"}),"Delete");n.Z=s}}]); -//# sourceMappingURL=21.53327062.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/21.53327062.chunk.js.map b/web-app/build/static/js/21.53327062.chunk.js.map deleted file mode 100644 index f6dddeb3aeb..00000000000 --- a/web-app/build/static/js/21.53327062.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/21.53327062.chunk.js","mappings":"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","sources":["screens/Console/Tenants/LogoComponents.tsx","screens/Console/Tenants/TenantDetails/TenantIdentityProvider.tsx","../node_modules/@mui/icons-material/Add.js","../node_modules/@mui/icons-material/Delete.js"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Grid } from \"@mui/material\";\nimport { LDAPIcon, OIDCIcon, UsersIcon } from \"mds\";\n\nexport const OIDCLogoElement = () => {\n return (\n \n \n \n \n Open ID\n \n );\n};\n\nexport const LDAPLogoElement = () => {\n return (\n \n \n \n \n LDAP / Active Directory\n \n );\n};\n\nexport const BuiltInLogoElement = () => {\n return (\n \n \n \n \n Built-in\n \n );\n};\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { connect, useSelector } from \"react-redux\";\nimport {\n DialogContentText,\n IconButton,\n Tooltip,\n Typography,\n} from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button, ConfirmModalIcon, Loader } from \"mds\";\nimport Grid from \"@mui/material/Grid\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport {\n containerForHeader,\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n spacingUtils,\n tenantDetailsStyles,\n wizardCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n ITenantIdentityProviderResponse,\n ITenantSetAdministratorsRequest,\n} from \"../types\";\nimport {\n BuiltInLogoElement,\n LDAPLogoElement,\n OIDCLogoElement,\n} from \"../LogoComponents\";\nimport { clearValidationError } from \"../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../utils/validationFunctions\";\nimport {\n setErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport RadioGroupSelector from \"../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport api from \"../../../../common/api\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport SectionTitle from \"../../Common/SectionTitle\";\n\ninterface ITenantIdentityProvider {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n adUserDnRows: {\n display: \"flex\",\n marginBottom: 10,\n },\n buttonTray: {\n marginLeft: 10,\n display: \"flex\",\n height: 38,\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n ...tenantDetailsStyles,\n ...spacingUtils,\n loaderAlign: {\n textAlign: \"center\",\n },\n ...containerForHeader,\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nfunction FormHr() {\n return null;\n}\n\nconst TenantIdentityProvider = ({ classes }: ITenantIdentityProvider) => {\n const dispatch = useAppDispatch();\n\n const tenant = useSelector((state: AppState) => state.tenants.tenantInfo);\n const loadingTenant = useSelector(\n (state: AppState) => state.tenants.loadingTenant,\n );\n\n const [isSending, setIsSending] = useState(false);\n const [dialogOpen, setDialogOpen] = useState(false);\n const [idpSelection, setIdpSelection] = useState(\"Built-in\");\n const [openIDConfigurationURL, setOpenIDConfigurationURL] =\n useState(\"\");\n const [openIDClientID, setOpenIDClientID] = useState(\"\");\n const [openIDSecretID, setOpenIDSecretID] = useState(\"\");\n const [showOIDCSecretID, setShowOIDCSecretID] = useState(false);\n const [openIDCallbackURL, setOpenIDCallbackURL] = useState(\"\");\n const [openIDClaimName, setOpenIDClaimName] = useState(\"\");\n const [openIDScopes, setOpenIDScopes] = useState(\"\");\n const [ADURL, setADURL] = useState(\"\");\n const [ADLookupBindDN, setADLookupBindDN] = useState(\"\");\n const [ADLookupBindPassword, setADLookupBindPassword] = useState(\"\");\n const [showADLookupBindPassword, setShowADLookupBindPassword] =\n useState(false);\n const [ADUserDNSearchBaseDN, setADUserDNSearchBaseDN] = useState(\"\");\n const [ADUserDNSearchFilter, setADUserDNSearchFilter] = useState(\"\");\n const [ADGroupSearchBaseDN, setADGroupSearchBaseDN] = useState(\"\");\n const [ADGroupSearchFilter, setADGroupSearchFilter] = useState(\"\");\n const [ADSkipTLS, setADSkipTLS] = useState(false);\n const [ADServerInsecure, setADServerInsecure] = useState(false);\n const [ADServerStartTLS, setADServerStartTLS] = useState(false);\n const [ADUserDNs, setADUserDNs] = useState([\"\"]);\n const [ADGroupDNs, setADGroupDNs] = useState([\"\"]);\n const [validationErrors, setValidationErrors] = useState({});\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n const [isFormValid, setIsFormValid] = useState(false);\n\n // Validation\n useEffect(() => {\n let identityProviderValidation: IValidation[] = [];\n\n if (idpSelection === \"OpenID\") {\n identityProviderValidation = [\n ...identityProviderValidation,\n {\n fieldKey: \"openID_CONFIGURATION_URL\",\n required: true,\n value: openIDConfigurationURL,\n },\n {\n fieldKey: \"openID_clientID\",\n required: true,\n value: openIDClientID,\n },\n {\n fieldKey: \"openID_secretID\",\n required: true,\n value: openIDSecretID,\n },\n {\n fieldKey: \"openID_claimName\",\n required: false,\n value: openIDClaimName,\n },\n ];\n }\n\n if (idpSelection === \"AD\") {\n identityProviderValidation = [\n ...identityProviderValidation,\n {\n fieldKey: \"AD_URL\",\n required: true,\n value: ADURL,\n },\n {\n fieldKey: \"ad_lookupBindDN\",\n required: true,\n value: ADLookupBindDN,\n },\n ];\n }\n\n const commonVal = commonFormValidation(identityProviderValidation);\n\n setIsFormValid(Object.keys(commonVal).length === 0);\n\n setValidationErrors(commonVal);\n }, [\n idpSelection,\n openIDConfigurationURL,\n openIDClientID,\n openIDSecretID,\n openIDClaimName,\n ADURL,\n ADLookupBindDN,\n ]);\n\n const getTenantIdentityProviderInfo = useCallback(() => {\n api\n .invoke(\n \"GET\",\n `/api/v1/namespaces/${tenant?.namespace}/tenants/${tenant?.name}/identity-provider`,\n )\n .then((res: ITenantIdentityProviderResponse) => {\n if (res) {\n if (res.oidc) {\n setIdpSelection(\"OpenID\");\n setOpenIDConfigurationURL(res.oidc.configuration_url);\n setOpenIDClientID(res.oidc.client_id);\n setOpenIDSecretID(res.oidc.secret_id);\n setOpenIDCallbackURL(res.oidc.callback_url);\n setOpenIDClaimName(res.oidc.claim_name);\n setOpenIDScopes(res.oidc.scopes);\n } else if (res.active_directory) {\n setIdpSelection(\"AD\");\n setADURL(res.active_directory.url);\n setADLookupBindDN(res.active_directory.lookup_bind_dn);\n setADLookupBindPassword(res.active_directory.lookup_bind_password);\n setADUserDNSearchBaseDN(\n res.active_directory.user_dn_search_base_dn,\n );\n setADUserDNSearchFilter(res.active_directory.user_dn_search_filter);\n setADGroupSearchBaseDN(res.active_directory.group_search_base_dn);\n setADGroupSearchFilter(res.active_directory.group_search_filter);\n setADSkipTLS(res.active_directory.skip_tls_verification);\n setADServerInsecure(res.active_directory.server_insecure);\n setADServerStartTLS(res.active_directory.server_start_tls);\n }\n }\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n });\n }, [tenant, dispatch]);\n\n useEffect(() => {\n if (tenant) {\n getTenantIdentityProviderInfo();\n }\n }, [tenant, getTenantIdentityProviderInfo]);\n\n const updateTenantIdentityProvider = () => {\n setIsSending(true);\n let payload: ITenantIdentityProviderResponse = {};\n switch (idpSelection) {\n case \"AD\":\n payload.active_directory = {\n url: ADURL,\n lookup_bind_dn: ADLookupBindDN,\n lookup_bind_password: ADLookupBindPassword,\n user_dn_search_base_dn: ADUserDNSearchBaseDN,\n user_dn_search_filter: ADUserDNSearchFilter,\n group_search_base_dn: ADGroupSearchBaseDN,\n group_search_filter: ADGroupSearchFilter,\n skip_tls_verification: ADSkipTLS,\n server_insecure: ADServerInsecure,\n server_start_tls: ADServerStartTLS,\n };\n break;\n case \"OpenID\":\n payload.oidc = {\n configuration_url: openIDConfigurationURL,\n client_id: openIDClientID,\n secret_id: openIDSecretID,\n callback_url: openIDCallbackURL,\n claim_name: openIDClaimName,\n scopes: openIDScopes,\n };\n break;\n default:\n // Built-in IDP will be used by default\n }\n\n api\n .invoke(\n \"POST\",\n `/api/v1/namespaces/${tenant?.namespace}/tenants/${tenant?.name}/identity-provider`,\n payload,\n )\n .then(() => {\n setIsSending(false);\n // Close confirmation modal\n setDialogOpen(false);\n getTenantIdentityProviderInfo();\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setIsSending(false);\n });\n };\n\n const setAdministrators = () => {\n setIsSending(true);\n let payload: ITenantSetAdministratorsRequest = {};\n switch (idpSelection) {\n case \"AD\":\n payload = {\n user_dns: ADUserDNs.filter((user) => user.trim() !== \"\"),\n group_dns: ADGroupDNs.filter((group) => group.trim() !== \"\"),\n };\n break;\n default:\n // Built-in IDP will be used by default\n }\n\n api\n .invoke(\n \"POST\",\n `/api/v1/namespaces/${tenant?.namespace}/tenants/${tenant?.name}/set-administrators`,\n payload,\n )\n .then(() => {\n setIsSending(false);\n setADGroupDNs([\"\"]);\n setADUserDNs([\"\"]);\n getTenantIdentityProviderInfo();\n dispatch(setSnackBarMessage(`Administrators added successfully`));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setIsSending(false);\n });\n };\n\n return (\n \n }\n isLoading={isSending}\n onClose={() => setDialogOpen(false)}\n isOpen={dialogOpen}\n onConfirm={updateTenantIdentityProvider}\n confirmationContent={\n \n Are you sure you want to save the changes and restart the service?\n \n }\n />\n {loadingTenant ? (\n
\n \n
\n ) : (\n \n \n

Identity Provider

\n \n
\n \n {\n setIdpSelection(e.target.value);\n }}\n selectorOptions={[\n { label: , value: \"Built-in\" },\n { label: , value: \"OpenID\" },\n { label: , value: \"AD\" },\n ]}\n />\n \n\n {idpSelection === \"OpenID\" && (\n \n \n ) => {\n setOpenIDConfigurationURL(e.target.value);\n cleanValidation(\"openID_CONFIGURATION_URL\");\n }}\n label=\"Configuration URL\"\n value={openIDConfigurationURL}\n placeholder=\"https://your-identity-provider.com/.well-known/openid-configuration\"\n error={validationErrors[\"openID_CONFIGURATION_URL\"] || \"\"}\n required\n />\n \n \n ) => {\n setOpenIDClientID(e.target.value);\n cleanValidation(\"openID_clientID\");\n }}\n label=\"Client ID\"\n value={openIDClientID}\n error={validationErrors[\"openID_clientID\"] || \"\"}\n required\n />\n \n \n ) => {\n setOpenIDSecretID(e.target.value);\n cleanValidation(\"openID_secretID\");\n }}\n label=\"Secret ID\"\n value={openIDSecretID}\n error={validationErrors[\"openID_secretID\"] || \"\"}\n required\n overlayIcon={\n showOIDCSecretID ? (\n \n ) : (\n \n )\n }\n overlayAction={() => setShowOIDCSecretID(!showOIDCSecretID)}\n />\n \n \n ) => {\n setOpenIDClaimName(e.target.value);\n cleanValidation(\"openID_claimName\");\n }}\n label=\"Claim Name\"\n value={openIDClaimName}\n placeholder=\"policy\"\n error={validationErrors[\"openID_claimName\"] || \"\"}\n />\n \n \n ) => {\n setOpenIDScopes(e.target.value);\n cleanValidation(\"openID_scopes\");\n }}\n label=\"Scopes\"\n value={openIDScopes}\n />\n \n \n )}\n\n {idpSelection === \"AD\" && (\n \n \n ) => {\n setADURL(e.target.value);\n cleanValidation(\"AD_URL\");\n }}\n label=\"LDAP Server Address\"\n value={ADURL}\n placeholder=\"ldap-server:636\"\n error={validationErrors[\"AD_URL\"] || \"\"}\n required\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n setADSkipTLS(checked);\n }}\n label={\"Skip TLS Verification\"}\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n setADServerInsecure(checked);\n }}\n label={\"Server Insecure\"}\n />\n \n {ADServerInsecure ? (\n \n \n Warning: All traffic with Active Directory will be\n unencrypted\n \n
\n
\n ) : null}\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n setADServerStartTLS(checked);\n }}\n label={\"Start TLS connection to AD/LDAP server\"}\n />\n \n \n ) => {\n setADLookupBindDN(e.target.value);\n cleanValidation(\"ad_lookupBindDN\");\n }}\n label=\"Lookup Bind DN\"\n value={ADLookupBindDN}\n placeholder=\"cn=admin,dc=min,dc=io\"\n error={validationErrors[\"ad_lookupBindDN\"] || \"\"}\n required\n />\n \n \n ) => {\n setADLookupBindPassword(e.target.value);\n }}\n label=\"Lookup Bind Password\"\n value={ADLookupBindPassword}\n placeholder=\"admin\"\n overlayIcon={\n showADLookupBindPassword ? (\n \n ) : (\n \n )\n }\n overlayAction={() =>\n setShowADLookupBindPassword(!showADLookupBindPassword)\n }\n />\n \n \n ) => {\n setADUserDNSearchBaseDN(e.target.value);\n }}\n label=\"User DN Search Base DN\"\n value={ADUserDNSearchBaseDN}\n placeholder=\"dc=min,dc=io\"\n />\n \n \n ) => {\n setADUserDNSearchFilter(e.target.value);\n }}\n label=\"User DN Search Filter\"\n value={ADUserDNSearchFilter}\n placeholder=\"(sAMAcountName=%s)\"\n />\n \n \n ) => {\n setADGroupSearchBaseDN(e.target.value);\n }}\n label=\"Group Search Base DN\"\n value={ADGroupSearchBaseDN}\n placeholder=\"ou=hwengg,dc=min,dc=io;ou=swengg,dc=min,dc=io\"\n />\n \n \n ) => {\n setADGroupSearchFilter(e.target.value);\n }}\n label=\"Group Search Filter\"\n value={ADGroupSearchFilter}\n placeholder=\"(&(objectclass=groupOfNames)(member=%s))\"\n />\n \n
\n )}\n\n \n setDialogOpen(true)}\n label={\"Save\"}\n />\n \n\n {idpSelection === \"AD\" && (\n \n User & Group management\n
\n
\n \n List of user DNs (Distinguished Names) to be added as Tenant\n Administrators\n \n \n {ADUserDNs.map((_, index) => {\n return (\n \n
\n ,\n ) => {\n setADUserDNs(\n ADUserDNs.map((group, i) =>\n i === index ? e.target.value : group,\n ),\n );\n }}\n index={index}\n key={`csv-ad-userdn-${index.toString()}`}\n error={\n validationErrors[\n `ad-userdn-${index.toString()}`\n ] || \"\"\n }\n />\n
\n \n {\n setADUserDNs([...ADUserDNs, \"\"]);\n }}\n >\n \n \n \n \n {\n if (ADUserDNs.length > 1) {\n setADUserDNs(\n ADUserDNs.filter((_, i) => i !== index),\n );\n }\n }}\n >\n \n \n \n
\n
\n
\n );\n })}\n
\n
\n
\n \n List of group DNs (Distinguished Names) to be added as Tenant\n Administrators\n \n \n {ADGroupDNs.map((_, index) => {\n return (\n \n
\n ,\n ) => {\n setADGroupDNs(\n ADGroupDNs.map((group, i) =>\n i === index ? e.target.value : group,\n ),\n );\n }}\n index={index}\n key={`csv-ad-groupdn-${index.toString()}`}\n error={\n validationErrors[\n `ad-groupdn-${index.toString()}`\n ] || \"\"\n }\n />\n
\n \n {\n setADGroupDNs([...ADGroupDNs, \"\"]);\n }}\n >\n \n \n \n \n {\n if (ADGroupDNs.length > 1) {\n setADGroupDNs(\n ADGroupDNs.filter((_, i) => i !== index),\n );\n }\n }}\n >\n \n \n \n
\n
\n
\n );\n })}\n
\n
\n
\n \n setAdministrators()}\n label={\"Add additional DNs\"}\n />\n \n
\n )}\n
\n )}\n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n loadingTenant: state.tenants.loadingTenant,\n selectedTenant: state.tenants.currentTenant,\n tenant: state.tenants.tenantInfo,\n});\n\nconst connector = connect(mapState, null);\n\nexport default withStyles(styles)(connector(TenantIdentityProvider));\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"\n}), 'Add');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\"\n}), 'Delete');\nexports.default = _default;"],"names":["OIDCLogoElement","_jsxs","Grid","container","columnGap","children","_jsx","OIDCIcon","width","height","item","LDAPLogoElement","LDAPIcon","BuiltInLogoElement","UsersIcon","FormHr","connector","connect","state","loadingTenant","tenants","selectedTenant","currentTenant","tenant","tenantInfo","withStyles","theme","createStyles","_objectSpread","adUserDnRows","display","marginBottom","buttonTray","marginLeft","background","tenantDetailsStyles","spacingUtils","loaderAlign","textAlign","containerForHeader","createTenantCommon","formFieldStyles","modalBasic","wizardCommon","_ref","classes","dispatch","useAppDispatch","useSelector","_useState","useState","_useState2","_slicedToArray","isSending","setIsSending","_useState3","_useState4","dialogOpen","setDialogOpen","_useState5","_useState6","idpSelection","setIdpSelection","_useState7","_useState8","openIDConfigurationURL","setOpenIDConfigurationURL","_useState9","_useState10","openIDClientID","setOpenIDClientID","_useState11","_useState12","openIDSecretID","setOpenIDSecretID","_useState13","_useState14","showOIDCSecretID","setShowOIDCSecretID","_useState15","_useState16","openIDCallbackURL","setOpenIDCallbackURL","_useState17","_useState18","openIDClaimName","setOpenIDClaimName","_useState19","_useState20","openIDScopes","setOpenIDScopes","_useState21","_useState22","ADURL","setADURL","_useState23","_useState24","ADLookupBindDN","setADLookupBindDN","_useState25","_useState26","ADLookupBindPassword","setADLookupBindPassword","_useState27","_useState28","showADLookupBindPassword","setShowADLookupBindPassword","_useState29","_useState30","ADUserDNSearchBaseDN","setADUserDNSearchBaseDN","_useState31","_useState32","ADUserDNSearchFilter","setADUserDNSearchFilter","_useState33","_useState34","ADGroupSearchBaseDN","setADGroupSearchBaseDN","_useState35","_useState36","ADGroupSearchFilter","setADGroupSearchFilter","_useState37","_useState38","ADSkipTLS","setADSkipTLS","_useState39","_useState40","ADServerInsecure","setADServerInsecure","_useState41","_useState42","ADServerStartTLS","setADServerStartTLS","_useState43","_useState44","ADUserDNs","setADUserDNs","_useState45","_useState46","ADGroupDNs","setADGroupDNs","_useState47","_useState48","validationErrors","setValidationErrors","cleanValidation","fieldName","clearValidationError","_useState49","_useState50","isFormValid","setIsFormValid","useEffect","identityProviderValidation","concat","_toConsumableArray","fieldKey","required","value","commonVal","commonFormValidation","Object","keys","length","getTenantIdentityProviderInfo","useCallback","api","invoke","namespace","name","then","res","oidc","configuration_url","client_id","secret_id","callback_url","claim_name","scopes","active_directory","url","lookup_bind_dn","lookup_bind_password","user_dn_search_base_dn","user_dn_search_filter","group_search_base_dn","group_search_filter","skip_tls_verification","server_insecure","server_start_tls","catch","err","setErrorSnackMessage","React","ConfirmDialog","title","confirmText","cancelText","titleIcon","ConfirmModalIcon","isLoading","onClose","isOpen","onConfirm","payload","confirmationContent","DialogContentText","className","Loader","Fragment","xs","sectionTitle","protocolRadioOptions","paddingBottom","RadioGroupSelector","currentSelection","id","label","onChange","e","target","selectorOptions","formFieldRow","InputBoxWrapper","placeholder","error","type","overlayIcon","VisibilityOffIcon","RemoveRedEyeIcon","overlayAction","FormSwitchWrapper","checked","Typography","variant","gutterBottom","buttonContainer","Button","color","disabled","onClick","SectionTitle","fieldGroup","descriptionText","map","_","index","toString","group","i","Tooltip","IconButton","size","AddIcon","style","filter","DeleteIcon","user_dns","user","trim","group_dns","setSnackBarMessage","setAdministrators","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/21.76c78632.chunk.js b/web-app/build/static/js/21.76c78632.chunk.js new file mode 100644 index 00000000000..97b081b8047 --- /dev/null +++ b/web-app/build/static/js/21.76c78632.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[21],{68456:(e,a,t)=>{t.d(a,{QT:()=>l,YH:()=>o,mo:()=>r});var s=t(61889),n=t(75952),i=t(80184);const r=()=>(0,i.jsxs)(s.ZP,{container:!0,columnGap:1,children:[(0,i.jsx)(s.ZP,{children:(0,i.jsx)(n.gyG,{width:"16px",height:"16px"})}),(0,i.jsx)(s.ZP,{item:!0,children:"Open ID"})]}),l=()=>(0,i.jsxs)(s.ZP,{container:!0,columnGap:1,children:[(0,i.jsx)(s.ZP,{children:(0,i.jsx)(n.vcZ,{width:"16px",height:"16px"})}),(0,i.jsx)(s.ZP,{item:!0,children:"LDAP / Active Directory"})]}),o=()=>(0,i.jsxs)(s.ZP,{container:!0,columnGap:1,children:[(0,i.jsx)(s.ZP,{children:(0,i.jsx)(n.oyc,{width:"16px",height:"16px"})}),(0,i.jsx)(s.ZP,{item:!0,children:"Built-in"})]})},37021:(e,a,t)=>{t.r(a),t.d(a,{default:()=>P});var s=t(72791),n=t(78687),i=t(51691),r=t(20890),l=t(96040),o=t(13400),d=t(75952),c=t(61889),u=t(11135),m=t(25787),h=t(20165),p=t(3579),x=t(23814),v=t(68456),_=t(84741),j=t(40968),g=t(87995),D=t(41320),Z=t(83679),N=t(21435),S=t(37516),f=t(40306),b=t(81207),I=t(42419),y=t(27247),k=t(50896),A=t(80184);function w(){return null}const C=(0,n.$j)((e=>({loadingTenant:e.tenants.loadingTenant,selectedTenant:e.tenants.currentTenant,tenant:e.tenants.tenantInfo})),null),P=(0,m.Z)((e=>(0,u.Z)({adUserDnRows:{display:"flex",marginBottom:10},buttonTray:{marginLeft:10,display:"flex",height:38,"& button":{background:"#EAEAEA"}},...x.oZ,...x.bK,loaderAlign:{textAlign:"center"},...x.Bz,...x.QV,...x.DF,...x.oO,...x.AK})))(C((e=>{let{classes:a}=e;const t=(0,D.TL)(),u=(0,n.v9)((e=>e.tenants.tenantInfo)),m=(0,n.v9)((e=>e.tenants.loadingTenant)),[x,C]=(0,s.useState)(!1),[P,R]=(0,s.useState)(!1),[F,T]=(0,s.useState)("Built-in"),[L,O]=(0,s.useState)(""),[U,B]=(0,s.useState)(""),[G,q]=(0,s.useState)(""),[z,K]=(0,s.useState)(!1),[E,H]=(0,s.useState)(""),[V,M]=(0,s.useState)(""),[Q,Y]=(0,s.useState)(""),[W,$]=(0,s.useState)(""),[J,X]=(0,s.useState)(""),[ee,ae]=(0,s.useState)(""),[te,se]=(0,s.useState)(!1),[ne,ie]=(0,s.useState)(""),[re,le]=(0,s.useState)(""),[oe,de]=(0,s.useState)(""),[ce,ue]=(0,s.useState)(""),[me,he]=(0,s.useState)(!1),[pe,xe]=(0,s.useState)(!1),[ve,_e]=(0,s.useState)(!1),[je,ge]=(0,s.useState)([""]),[De,Ze]=(0,s.useState)([""]),[Ne,Se]=(0,s.useState)({}),fe=e=>{Se((0,_.h)(Ne,e))},[be,Ie]=(0,s.useState)(!1);(0,s.useEffect)((()=>{let e=[];"OpenID"===F&&(e=[...e,{fieldKey:"openID_CONFIGURATION_URL",required:!0,value:L},{fieldKey:"openID_clientID",required:!0,value:U},{fieldKey:"openID_secretID",required:!0,value:G},{fieldKey:"openID_claimName",required:!1,value:V}]),"AD"===F&&(e=[...e,{fieldKey:"AD_URL",required:!0,value:W},{fieldKey:"ad_lookupBindDN",required:!0,value:J}]);const a=(0,j.R)(e);Ie(0===Object.keys(a).length),Se(a)}),[F,L,U,G,V,W,J]);const ye=(0,s.useCallback)((()=>{b.Z.invoke("GET","/api/v1/namespaces/".concat(null===u||void 0===u?void 0:u.namespace,"/tenants/").concat(null===u||void 0===u?void 0:u.name,"/identity-provider")).then((e=>{e&&(e.oidc?(T("OpenID"),O(e.oidc.configuration_url),B(e.oidc.client_id),q(e.oidc.secret_id),H(e.oidc.callback_url),M(e.oidc.claim_name),Y(e.oidc.scopes)):e.active_directory&&(T("AD"),$(e.active_directory.url),X(e.active_directory.lookup_bind_dn),ae(e.active_directory.lookup_bind_password),ie(e.active_directory.user_dn_search_base_dn),le(e.active_directory.user_dn_search_filter),de(e.active_directory.group_search_base_dn),ue(e.active_directory.group_search_filter),he(e.active_directory.skip_tls_verification),xe(e.active_directory.server_insecure),_e(e.active_directory.server_start_tls)))})).catch((e=>{t((0,g.Ih)(e))}))}),[u,t]);(0,s.useEffect)((()=>{u&&ye()}),[u,ye]);return(0,A.jsxs)(s.Fragment,{children:[(0,A.jsx)(f.Z,{title:"Save and Restart",confirmText:"Restart",cancelText:"Cancel",titleIcon:(0,A.jsx)(d.EjK,{}),isLoading:x,onClose:()=>R(!1),isOpen:P,onConfirm:()=>{C(!0);let e={};switch(F){case"AD":e.active_directory={url:W,lookup_bind_dn:J,lookup_bind_password:ee,user_dn_search_base_dn:ne,user_dn_search_filter:re,group_search_base_dn:oe,group_search_filter:ce,skip_tls_verification:me,server_insecure:pe,server_start_tls:ve};break;case"OpenID":e.oidc={configuration_url:L,client_id:U,secret_id:G,callback_url:E,claim_name:V,scopes:Q}}b.Z.invoke("POST","/api/v1/namespaces/".concat(null===u||void 0===u?void 0:u.namespace,"/tenants/").concat(null===u||void 0===u?void 0:u.name,"/identity-provider"),e).then((()=>{C(!1),R(!1),ye()})).catch((e=>{t((0,g.Ih)(e)),C(!1)}))},confirmationContent:(0,A.jsx)(i.Z,{children:"Are you sure you want to save the changes and restart the service?"})}),m?(0,A.jsx)("div",{className:a.loaderAlign,children:(0,A.jsx)(d.aNw,{})}):(0,A.jsxs)(s.Fragment,{children:[(0,A.jsxs)(c.ZP,{item:!0,xs:12,children:[(0,A.jsx)("h1",{className:a.sectionTitle,children:"Identity Provider"}),(0,A.jsx)(w,{})]}),(0,A.jsx)(c.ZP,{item:!0,xs:12,className:a.protocolRadioOptions,paddingBottom:1,children:(0,A.jsx)(Z.Z,{currentSelection:F,id:"idp-options",name:"idp-options",label:"Protocol",onChange:e=>{T(e.target.value)},selectorOptions:[{label:(0,A.jsx)(v.YH,{}),value:"Built-in"},{label:(0,A.jsx)(v.mo,{}),value:"OpenID"},{label:(0,A.jsx)(v.QT,{}),value:"AD"}]})}),"OpenID"===F&&(0,A.jsxs)(s.Fragment,{children:[(0,A.jsx)(c.ZP,{item:!0,xs:12,className:a.formFieldRow,children:(0,A.jsx)(N.Z,{id:"openID_CONFIGURATION_URL",name:"openID_CONFIGURATION_URL",onChange:e=>{O(e.target.value),fe("openID_CONFIGURATION_URL")},label:"Configuration URL",value:L,placeholder:"https://your-identity-provider.com/.well-known/openid-configuration",error:Ne.openID_CONFIGURATION_URL||"",required:!0})}),(0,A.jsx)(c.ZP,{item:!0,xs:12,className:a.formFieldRow,children:(0,A.jsx)(N.Z,{id:"openID_clientID",name:"openID_clientID",onChange:e=>{B(e.target.value),fe("openID_clientID")},label:"Client ID",value:U,error:Ne.openID_clientID||"",required:!0})}),(0,A.jsx)(c.ZP,{item:!0,xs:12,className:a.formFieldRow,children:(0,A.jsx)(N.Z,{type:z?"text":"password",id:"openID_secretID",name:"openID_secretID",onChange:e=>{q(e.target.value),fe("openID_secretID")},label:"Secret ID",value:G,error:Ne.openID_secretID||"",required:!0,overlayIcon:z?(0,A.jsx)(h.Z,{}):(0,A.jsx)(p.Z,{}),overlayAction:()=>K(!z)})}),(0,A.jsx)(c.ZP,{item:!0,xs:12,className:a.formFieldRow,children:(0,A.jsx)(N.Z,{id:"openID_claimName",name:"openID_claimName",onChange:e=>{M(e.target.value),fe("openID_claimName")},label:"Claim Name",value:V,placeholder:"policy",error:Ne.openID_claimName||""})}),(0,A.jsx)(c.ZP,{item:!0,xs:12,className:a.formFieldRow,children:(0,A.jsx)(N.Z,{id:"openID_scopes",name:"openID_scopes",onChange:e=>{Y(e.target.value),fe("openID_scopes")},label:"Scopes",value:Q})})]}),"AD"===F&&(0,A.jsxs)(s.Fragment,{children:[(0,A.jsx)(c.ZP,{item:!0,xs:12,className:a.formFieldRow,children:(0,A.jsx)(N.Z,{id:"AD_URL",name:"AD_URL",onChange:e=>{$(e.target.value),fe("AD_URL")},label:"LDAP Server Address",value:W,placeholder:"ldap-server:636",error:Ne.AD_URL||"",required:!0})}),(0,A.jsx)(c.ZP,{item:!0,xs:12,className:a.formFieldRow,children:(0,A.jsx)(S.Z,{value:"ad_skipTLS",id:"ad_skipTLS",name:"ad_skipTLS",checked:me,onChange:e=>{const a=e.target.checked;he(a)},label:"Skip TLS Verification"})}),(0,A.jsx)(c.ZP,{item:!0,xs:12,className:a.formFieldRow,children:(0,A.jsx)(S.Z,{value:"ad_serverInsecure",id:"ad_serverInsecure",name:"ad_serverInsecure",checked:pe,onChange:e=>{const a=e.target.checked;xe(a)},label:"Server Insecure"})}),pe?(0,A.jsxs)(c.ZP,{item:!0,xs:12,children:[(0,A.jsx)(r.Z,{className:a.error,variant:"caption",display:"block",gutterBottom:!0,children:"Warning: All traffic with Active Directory will be unencrypted"}),(0,A.jsx)("br",{})]}):null,(0,A.jsx)(c.ZP,{item:!0,xs:12,className:a.formFieldRow,children:(0,A.jsx)(S.Z,{value:"ad_serverStartTLS",id:"ad_serverStartTLS",name:"ad_serverStartTLS",checked:ve,onChange:e=>{const a=e.target.checked;_e(a)},label:"Start TLS connection to AD/LDAP server"})}),(0,A.jsx)(c.ZP,{item:!0,xs:12,className:a.formFieldRow,children:(0,A.jsx)(N.Z,{id:"ad_lookupBindDN",name:"ad_lookupBindDN",onChange:e=>{X(e.target.value),fe("ad_lookupBindDN")},label:"Lookup Bind DN",value:J,placeholder:"cn=admin,dc=min,dc=io",error:Ne.ad_lookupBindDN||"",required:!0})}),(0,A.jsx)(c.ZP,{item:!0,xs:12,className:a.formFieldRow,children:(0,A.jsx)(N.Z,{type:te?"text":"password",id:"ad_lookupBindPassword",name:"ad_lookupBindPassword",onChange:e=>{ae(e.target.value)},label:"Lookup Bind Password",value:ee,placeholder:"admin",overlayIcon:te?(0,A.jsx)(h.Z,{}):(0,A.jsx)(p.Z,{}),overlayAction:()=>se(!te)})}),(0,A.jsx)(c.ZP,{item:!0,xs:12,className:a.formFieldRow,children:(0,A.jsx)(N.Z,{id:"ad_userDNSearchBaseDN",name:"ad_userDNSearchBaseDN",onChange:e=>{ie(e.target.value)},label:"User DN Search Base DN",value:ne,placeholder:"dc=min,dc=io"})}),(0,A.jsx)(c.ZP,{item:!0,xs:12,className:a.formFieldRow,children:(0,A.jsx)(N.Z,{id:"ad_userDNSearchFilter",name:"ad_userDNSearchFilter",onChange:e=>{le(e.target.value)},label:"User DN Search Filter",value:re,placeholder:"(sAMAcountName=%s)"})}),(0,A.jsx)(c.ZP,{item:!0,xs:12,className:a.formFieldRow,children:(0,A.jsx)(N.Z,{id:"ad_groupSearchBaseDN",name:"ad_groupSearchBaseDN",onChange:e=>{de(e.target.value)},label:"Group Search Base DN",value:oe,placeholder:"ou=hwengg,dc=min,dc=io;ou=swengg,dc=min,dc=io"})}),(0,A.jsx)(c.ZP,{item:!0,xs:12,className:a.formFieldRow,children:(0,A.jsx)(N.Z,{id:"ad_groupSearchFilter",name:"ad_groupSearchFilter",onChange:e=>{ue(e.target.value)},label:"Group Search Filter",value:ce,placeholder:"(&(objectclass=groupOfNames)(member=%s))"})})]}),(0,A.jsx)(c.ZP,{item:!0,xs:12,className:a.buttonContainer,children:(0,A.jsx)(d.zxk,{id:"save-idp",type:"submit",variant:"callAction",color:"primary",disabled:!be||x,onClick:()=>R(!0),label:"Save"})}),"AD"===F&&(0,A.jsxs)(s.Fragment,{children:[(0,A.jsx)(k.Z,{children:"User & Group management"}),(0,A.jsx)("br",{}),(0,A.jsxs)("fieldset",{className:a.fieldGroup,children:[(0,A.jsx)("legend",{className:a.descriptionText,children:"List of user DNs (Distinguished Names) to be added as Tenant Administrators"}),(0,A.jsx)(c.ZP,{item:!0,xs:12,children:je.map(((e,t)=>(0,A.jsx)(s.Fragment,{children:(0,A.jsxs)("div",{className:a.adUserDnRows,children:[(0,A.jsx)(N.Z,{id:"ad-userdn-".concat(t.toString()),label:"",placeholder:"",name:"ad-userdn-".concat(t.toString()),value:je[t],onChange:e=>{ge(je.map(((a,s)=>s===t?e.target.value:a)))},index:t,error:Ne["ad-userdn-".concat(t.toString())]||""},"csv-ad-userdn-".concat(t.toString())),(0,A.jsxs)("div",{className:a.buttonTray,children:[(0,A.jsx)(l.Z,{title:"Add User","aria-label":"add",children:(0,A.jsx)(o.Z,{size:"small",onClick:()=>{ge([...je,""])},children:(0,A.jsx)(I.Z,{})})}),(0,A.jsx)(l.Z,{title:"Remove","aria-label":"add",children:(0,A.jsx)(o.Z,{size:"small",style:{marginLeft:16},onClick:()=>{je.length>1&&ge(je.filter(((e,a)=>a!==t)))},children:(0,A.jsx)(y.Z,{})})})]})]})},"identityField-".concat(t.toString()))))})]}),(0,A.jsxs)("fieldset",{className:a.fieldGroup,children:[(0,A.jsx)("legend",{className:a.descriptionText,children:"List of group DNs (Distinguished Names) to be added as Tenant Administrators"}),(0,A.jsx)(c.ZP,{item:!0,xs:12,children:De.map(((e,t)=>(0,A.jsx)(s.Fragment,{children:(0,A.jsxs)("div",{className:a.adUserDnRows,children:[(0,A.jsx)(N.Z,{id:"ad-groupdn-".concat(t.toString()),label:"",placeholder:"",name:"ad-groupdn-".concat(t.toString()),value:De[t],onChange:e=>{Ze(De.map(((a,s)=>s===t?e.target.value:a)))},index:t,error:Ne["ad-groupdn-".concat(t.toString())]||""},"csv-ad-groupdn-".concat(t.toString())),(0,A.jsxs)("div",{className:a.buttonTray,children:[(0,A.jsx)(l.Z,{title:"Add Group","aria-label":"add",children:(0,A.jsx)(o.Z,{size:"small",onClick:()=>{Ze([...De,""])},children:(0,A.jsx)(I.Z,{})})}),(0,A.jsx)(l.Z,{title:"Remove","aria-label":"add",children:(0,A.jsx)(o.Z,{size:"small",style:{marginLeft:16},onClick:()=>{De.length>1&&Ze(De.filter(((e,a)=>a!==t)))},children:(0,A.jsx)(y.Z,{})})})]})]})},"identityField-".concat(t.toString()))))})]}),(0,A.jsx)("br",{}),(0,A.jsx)(c.ZP,{item:!0,xs:12,className:a.buttonContainer,children:(0,A.jsx)(d.zxk,{id:"add-additional-dns",type:"submit",variant:"callAction",disabled:!be||x,onClick:()=>(()=>{C(!0);let e={};"AD"===F&&(e={user_dns:je.filter((e=>""!==e.trim())),group_dns:De.filter((e=>""!==e.trim()))});b.Z.invoke("POST","/api/v1/namespaces/".concat(null===u||void 0===u?void 0:u.namespace,"/tenants/").concat(null===u||void 0===u?void 0:u.name,"/set-administrators"),e).then((()=>{C(!1),Ze([""]),ge([""]),ye(),t((0,g.y1)("Administrators added successfully"))})).catch((e=>{t((0,g.Ih)(e)),C(!1)}))})(),label:"Add additional DNs"})})]})]})]})})))},42419:(e,a,t)=>{var s=t(64836);a.Z=void 0;var n=s(t(45649)),i=t(80184),r=(0,n.default)((0,i.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add");a.Z=r},27247:(e,a,t)=>{var s=t(64836);a.Z=void 0;var n=s(t(45649)),i=t(80184),r=(0,n.default)((0,i.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"}),"Delete");a.Z=r}}]); +//# sourceMappingURL=21.76c78632.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/21.76c78632.chunk.js.map b/web-app/build/static/js/21.76c78632.chunk.js.map new file mode 100644 index 00000000000..01aa6893a26 --- /dev/null +++ b/web-app/build/static/js/21.76c78632.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/21.76c78632.chunk.js","mappings":"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","sources":["screens/Console/Tenants/LogoComponents.tsx","screens/Console/Tenants/TenantDetails/TenantIdentityProvider.tsx","../node_modules/@mui/icons-material/Add.js","../node_modules/@mui/icons-material/Delete.js"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Grid } from \"@mui/material\";\nimport { LDAPIcon, OIDCIcon, UsersIcon } from \"mds\";\n\nexport const OIDCLogoElement = () => {\n return (\n \n \n \n \n Open ID\n \n );\n};\n\nexport const LDAPLogoElement = () => {\n return (\n \n \n \n \n LDAP / Active Directory\n \n );\n};\n\nexport const BuiltInLogoElement = () => {\n return (\n \n \n \n \n Built-in\n \n );\n};\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { connect, useSelector } from \"react-redux\";\nimport {\n DialogContentText,\n IconButton,\n Tooltip,\n Typography,\n} from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button, ConfirmModalIcon, Loader } from \"mds\";\nimport Grid from \"@mui/material/Grid\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport {\n containerForHeader,\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n spacingUtils,\n tenantDetailsStyles,\n wizardCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n ITenantIdentityProviderResponse,\n ITenantSetAdministratorsRequest,\n} from \"../types\";\nimport {\n BuiltInLogoElement,\n LDAPLogoElement,\n OIDCLogoElement,\n} from \"../LogoComponents\";\nimport { clearValidationError } from \"../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../utils/validationFunctions\";\nimport {\n setErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport RadioGroupSelector from \"../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport api from \"../../../../common/api\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport SectionTitle from \"../../Common/SectionTitle\";\n\ninterface ITenantIdentityProvider {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n adUserDnRows: {\n display: \"flex\",\n marginBottom: 10,\n },\n buttonTray: {\n marginLeft: 10,\n display: \"flex\",\n height: 38,\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n ...tenantDetailsStyles,\n ...spacingUtils,\n loaderAlign: {\n textAlign: \"center\",\n },\n ...containerForHeader,\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nfunction FormHr() {\n return null;\n}\n\nconst TenantIdentityProvider = ({ classes }: ITenantIdentityProvider) => {\n const dispatch = useAppDispatch();\n\n const tenant = useSelector((state: AppState) => state.tenants.tenantInfo);\n const loadingTenant = useSelector(\n (state: AppState) => state.tenants.loadingTenant,\n );\n\n const [isSending, setIsSending] = useState(false);\n const [dialogOpen, setDialogOpen] = useState(false);\n const [idpSelection, setIdpSelection] = useState(\"Built-in\");\n const [openIDConfigurationURL, setOpenIDConfigurationURL] =\n useState(\"\");\n const [openIDClientID, setOpenIDClientID] = useState(\"\");\n const [openIDSecretID, setOpenIDSecretID] = useState(\"\");\n const [showOIDCSecretID, setShowOIDCSecretID] = useState(false);\n const [openIDCallbackURL, setOpenIDCallbackURL] = useState(\"\");\n const [openIDClaimName, setOpenIDClaimName] = useState(\"\");\n const [openIDScopes, setOpenIDScopes] = useState(\"\");\n const [ADURL, setADURL] = useState(\"\");\n const [ADLookupBindDN, setADLookupBindDN] = useState(\"\");\n const [ADLookupBindPassword, setADLookupBindPassword] = useState(\"\");\n const [showADLookupBindPassword, setShowADLookupBindPassword] =\n useState(false);\n const [ADUserDNSearchBaseDN, setADUserDNSearchBaseDN] = useState(\"\");\n const [ADUserDNSearchFilter, setADUserDNSearchFilter] = useState(\"\");\n const [ADGroupSearchBaseDN, setADGroupSearchBaseDN] = useState(\"\");\n const [ADGroupSearchFilter, setADGroupSearchFilter] = useState(\"\");\n const [ADSkipTLS, setADSkipTLS] = useState(false);\n const [ADServerInsecure, setADServerInsecure] = useState(false);\n const [ADServerStartTLS, setADServerStartTLS] = useState(false);\n const [ADUserDNs, setADUserDNs] = useState([\"\"]);\n const [ADGroupDNs, setADGroupDNs] = useState([\"\"]);\n const [validationErrors, setValidationErrors] = useState({});\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n const [isFormValid, setIsFormValid] = useState(false);\n\n // Validation\n useEffect(() => {\n let identityProviderValidation: IValidation[] = [];\n\n if (idpSelection === \"OpenID\") {\n identityProviderValidation = [\n ...identityProviderValidation,\n {\n fieldKey: \"openID_CONFIGURATION_URL\",\n required: true,\n value: openIDConfigurationURL,\n },\n {\n fieldKey: \"openID_clientID\",\n required: true,\n value: openIDClientID,\n },\n {\n fieldKey: \"openID_secretID\",\n required: true,\n value: openIDSecretID,\n },\n {\n fieldKey: \"openID_claimName\",\n required: false,\n value: openIDClaimName,\n },\n ];\n }\n\n if (idpSelection === \"AD\") {\n identityProviderValidation = [\n ...identityProviderValidation,\n {\n fieldKey: \"AD_URL\",\n required: true,\n value: ADURL,\n },\n {\n fieldKey: \"ad_lookupBindDN\",\n required: true,\n value: ADLookupBindDN,\n },\n ];\n }\n\n const commonVal = commonFormValidation(identityProviderValidation);\n\n setIsFormValid(Object.keys(commonVal).length === 0);\n\n setValidationErrors(commonVal);\n }, [\n idpSelection,\n openIDConfigurationURL,\n openIDClientID,\n openIDSecretID,\n openIDClaimName,\n ADURL,\n ADLookupBindDN,\n ]);\n\n const getTenantIdentityProviderInfo = useCallback(() => {\n api\n .invoke(\n \"GET\",\n `/api/v1/namespaces/${tenant?.namespace}/tenants/${tenant?.name}/identity-provider`,\n )\n .then((res: ITenantIdentityProviderResponse) => {\n if (res) {\n if (res.oidc) {\n setIdpSelection(\"OpenID\");\n setOpenIDConfigurationURL(res.oidc.configuration_url);\n setOpenIDClientID(res.oidc.client_id);\n setOpenIDSecretID(res.oidc.secret_id);\n setOpenIDCallbackURL(res.oidc.callback_url);\n setOpenIDClaimName(res.oidc.claim_name);\n setOpenIDScopes(res.oidc.scopes);\n } else if (res.active_directory) {\n setIdpSelection(\"AD\");\n setADURL(res.active_directory.url);\n setADLookupBindDN(res.active_directory.lookup_bind_dn);\n setADLookupBindPassword(res.active_directory.lookup_bind_password);\n setADUserDNSearchBaseDN(\n res.active_directory.user_dn_search_base_dn,\n );\n setADUserDNSearchFilter(res.active_directory.user_dn_search_filter);\n setADGroupSearchBaseDN(res.active_directory.group_search_base_dn);\n setADGroupSearchFilter(res.active_directory.group_search_filter);\n setADSkipTLS(res.active_directory.skip_tls_verification);\n setADServerInsecure(res.active_directory.server_insecure);\n setADServerStartTLS(res.active_directory.server_start_tls);\n }\n }\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n });\n }, [tenant, dispatch]);\n\n useEffect(() => {\n if (tenant) {\n getTenantIdentityProviderInfo();\n }\n }, [tenant, getTenantIdentityProviderInfo]);\n\n const updateTenantIdentityProvider = () => {\n setIsSending(true);\n let payload: ITenantIdentityProviderResponse = {};\n switch (idpSelection) {\n case \"AD\":\n payload.active_directory = {\n url: ADURL,\n lookup_bind_dn: ADLookupBindDN,\n lookup_bind_password: ADLookupBindPassword,\n user_dn_search_base_dn: ADUserDNSearchBaseDN,\n user_dn_search_filter: ADUserDNSearchFilter,\n group_search_base_dn: ADGroupSearchBaseDN,\n group_search_filter: ADGroupSearchFilter,\n skip_tls_verification: ADSkipTLS,\n server_insecure: ADServerInsecure,\n server_start_tls: ADServerStartTLS,\n };\n break;\n case \"OpenID\":\n payload.oidc = {\n configuration_url: openIDConfigurationURL,\n client_id: openIDClientID,\n secret_id: openIDSecretID,\n callback_url: openIDCallbackURL,\n claim_name: openIDClaimName,\n scopes: openIDScopes,\n };\n break;\n default:\n // Built-in IDP will be used by default\n }\n\n api\n .invoke(\n \"POST\",\n `/api/v1/namespaces/${tenant?.namespace}/tenants/${tenant?.name}/identity-provider`,\n payload,\n )\n .then(() => {\n setIsSending(false);\n // Close confirmation modal\n setDialogOpen(false);\n getTenantIdentityProviderInfo();\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setIsSending(false);\n });\n };\n\n const setAdministrators = () => {\n setIsSending(true);\n let payload: ITenantSetAdministratorsRequest = {};\n switch (idpSelection) {\n case \"AD\":\n payload = {\n user_dns: ADUserDNs.filter((user) => user.trim() !== \"\"),\n group_dns: ADGroupDNs.filter((group) => group.trim() !== \"\"),\n };\n break;\n default:\n // Built-in IDP will be used by default\n }\n\n api\n .invoke(\n \"POST\",\n `/api/v1/namespaces/${tenant?.namespace}/tenants/${tenant?.name}/set-administrators`,\n payload,\n )\n .then(() => {\n setIsSending(false);\n setADGroupDNs([\"\"]);\n setADUserDNs([\"\"]);\n getTenantIdentityProviderInfo();\n dispatch(setSnackBarMessage(`Administrators added successfully`));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setIsSending(false);\n });\n };\n\n return (\n \n }\n isLoading={isSending}\n onClose={() => setDialogOpen(false)}\n isOpen={dialogOpen}\n onConfirm={updateTenantIdentityProvider}\n confirmationContent={\n \n Are you sure you want to save the changes and restart the service?\n \n }\n />\n {loadingTenant ? (\n
\n \n
\n ) : (\n \n \n

Identity Provider

\n \n
\n \n {\n setIdpSelection(e.target.value);\n }}\n selectorOptions={[\n { label: , value: \"Built-in\" },\n { label: , value: \"OpenID\" },\n { label: , value: \"AD\" },\n ]}\n />\n \n\n {idpSelection === \"OpenID\" && (\n \n \n ) => {\n setOpenIDConfigurationURL(e.target.value);\n cleanValidation(\"openID_CONFIGURATION_URL\");\n }}\n label=\"Configuration URL\"\n value={openIDConfigurationURL}\n placeholder=\"https://your-identity-provider.com/.well-known/openid-configuration\"\n error={validationErrors[\"openID_CONFIGURATION_URL\"] || \"\"}\n required\n />\n \n \n ) => {\n setOpenIDClientID(e.target.value);\n cleanValidation(\"openID_clientID\");\n }}\n label=\"Client ID\"\n value={openIDClientID}\n error={validationErrors[\"openID_clientID\"] || \"\"}\n required\n />\n \n \n ) => {\n setOpenIDSecretID(e.target.value);\n cleanValidation(\"openID_secretID\");\n }}\n label=\"Secret ID\"\n value={openIDSecretID}\n error={validationErrors[\"openID_secretID\"] || \"\"}\n required\n overlayIcon={\n showOIDCSecretID ? (\n \n ) : (\n \n )\n }\n overlayAction={() => setShowOIDCSecretID(!showOIDCSecretID)}\n />\n \n \n ) => {\n setOpenIDClaimName(e.target.value);\n cleanValidation(\"openID_claimName\");\n }}\n label=\"Claim Name\"\n value={openIDClaimName}\n placeholder=\"policy\"\n error={validationErrors[\"openID_claimName\"] || \"\"}\n />\n \n \n ) => {\n setOpenIDScopes(e.target.value);\n cleanValidation(\"openID_scopes\");\n }}\n label=\"Scopes\"\n value={openIDScopes}\n />\n \n \n )}\n\n {idpSelection === \"AD\" && (\n \n \n ) => {\n setADURL(e.target.value);\n cleanValidation(\"AD_URL\");\n }}\n label=\"LDAP Server Address\"\n value={ADURL}\n placeholder=\"ldap-server:636\"\n error={validationErrors[\"AD_URL\"] || \"\"}\n required\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n setADSkipTLS(checked);\n }}\n label={\"Skip TLS Verification\"}\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n setADServerInsecure(checked);\n }}\n label={\"Server Insecure\"}\n />\n \n {ADServerInsecure ? (\n \n \n Warning: All traffic with Active Directory will be\n unencrypted\n \n
\n
\n ) : null}\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n setADServerStartTLS(checked);\n }}\n label={\"Start TLS connection to AD/LDAP server\"}\n />\n \n \n ) => {\n setADLookupBindDN(e.target.value);\n cleanValidation(\"ad_lookupBindDN\");\n }}\n label=\"Lookup Bind DN\"\n value={ADLookupBindDN}\n placeholder=\"cn=admin,dc=min,dc=io\"\n error={validationErrors[\"ad_lookupBindDN\"] || \"\"}\n required\n />\n \n \n ) => {\n setADLookupBindPassword(e.target.value);\n }}\n label=\"Lookup Bind Password\"\n value={ADLookupBindPassword}\n placeholder=\"admin\"\n overlayIcon={\n showADLookupBindPassword ? (\n \n ) : (\n \n )\n }\n overlayAction={() =>\n setShowADLookupBindPassword(!showADLookupBindPassword)\n }\n />\n \n \n ) => {\n setADUserDNSearchBaseDN(e.target.value);\n }}\n label=\"User DN Search Base DN\"\n value={ADUserDNSearchBaseDN}\n placeholder=\"dc=min,dc=io\"\n />\n \n \n ) => {\n setADUserDNSearchFilter(e.target.value);\n }}\n label=\"User DN Search Filter\"\n value={ADUserDNSearchFilter}\n placeholder=\"(sAMAcountName=%s)\"\n />\n \n \n ) => {\n setADGroupSearchBaseDN(e.target.value);\n }}\n label=\"Group Search Base DN\"\n value={ADGroupSearchBaseDN}\n placeholder=\"ou=hwengg,dc=min,dc=io;ou=swengg,dc=min,dc=io\"\n />\n \n \n ) => {\n setADGroupSearchFilter(e.target.value);\n }}\n label=\"Group Search Filter\"\n value={ADGroupSearchFilter}\n placeholder=\"(&(objectclass=groupOfNames)(member=%s))\"\n />\n \n
\n )}\n\n \n setDialogOpen(true)}\n label={\"Save\"}\n />\n \n\n {idpSelection === \"AD\" && (\n \n User & Group management\n
\n
\n \n List of user DNs (Distinguished Names) to be added as Tenant\n Administrators\n \n \n {ADUserDNs.map((_, index) => {\n return (\n \n
\n ,\n ) => {\n setADUserDNs(\n ADUserDNs.map((group, i) =>\n i === index ? e.target.value : group,\n ),\n );\n }}\n index={index}\n key={`csv-ad-userdn-${index.toString()}`}\n error={\n validationErrors[\n `ad-userdn-${index.toString()}`\n ] || \"\"\n }\n />\n
\n \n {\n setADUserDNs([...ADUserDNs, \"\"]);\n }}\n >\n \n \n \n \n {\n if (ADUserDNs.length > 1) {\n setADUserDNs(\n ADUserDNs.filter((_, i) => i !== index),\n );\n }\n }}\n >\n \n \n \n
\n
\n
\n );\n })}\n
\n
\n
\n \n List of group DNs (Distinguished Names) to be added as Tenant\n Administrators\n \n \n {ADGroupDNs.map((_, index) => {\n return (\n \n
\n ,\n ) => {\n setADGroupDNs(\n ADGroupDNs.map((group, i) =>\n i === index ? e.target.value : group,\n ),\n );\n }}\n index={index}\n key={`csv-ad-groupdn-${index.toString()}`}\n error={\n validationErrors[\n `ad-groupdn-${index.toString()}`\n ] || \"\"\n }\n />\n
\n \n {\n setADGroupDNs([...ADGroupDNs, \"\"]);\n }}\n >\n \n \n \n \n {\n if (ADGroupDNs.length > 1) {\n setADGroupDNs(\n ADGroupDNs.filter((_, i) => i !== index),\n );\n }\n }}\n >\n \n \n \n
\n
\n
\n );\n })}\n
\n
\n
\n \n setAdministrators()}\n label={\"Add additional DNs\"}\n />\n \n
\n )}\n
\n )}\n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n loadingTenant: state.tenants.loadingTenant,\n selectedTenant: state.tenants.currentTenant,\n tenant: state.tenants.tenantInfo,\n});\n\nconst connector = connect(mapState, null);\n\nexport default withStyles(styles)(connector(TenantIdentityProvider));\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"\n}), 'Add');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\"\n}), 'Delete');\nexports.default = _default;"],"names":["OIDCLogoElement","_jsxs","Grid","container","columnGap","children","_jsx","OIDCIcon","width","height","item","LDAPLogoElement","LDAPIcon","BuiltInLogoElement","UsersIcon","FormHr","connector","connect","state","loadingTenant","tenants","selectedTenant","currentTenant","tenant","tenantInfo","withStyles","theme","createStyles","adUserDnRows","display","marginBottom","buttonTray","marginLeft","background","tenantDetailsStyles","spacingUtils","loaderAlign","textAlign","containerForHeader","createTenantCommon","formFieldStyles","modalBasic","wizardCommon","_ref","classes","dispatch","useAppDispatch","useSelector","isSending","setIsSending","useState","dialogOpen","setDialogOpen","idpSelection","setIdpSelection","openIDConfigurationURL","setOpenIDConfigurationURL","openIDClientID","setOpenIDClientID","openIDSecretID","setOpenIDSecretID","showOIDCSecretID","setShowOIDCSecretID","openIDCallbackURL","setOpenIDCallbackURL","openIDClaimName","setOpenIDClaimName","openIDScopes","setOpenIDScopes","ADURL","setADURL","ADLookupBindDN","setADLookupBindDN","ADLookupBindPassword","setADLookupBindPassword","showADLookupBindPassword","setShowADLookupBindPassword","ADUserDNSearchBaseDN","setADUserDNSearchBaseDN","ADUserDNSearchFilter","setADUserDNSearchFilter","ADGroupSearchBaseDN","setADGroupSearchBaseDN","ADGroupSearchFilter","setADGroupSearchFilter","ADSkipTLS","setADSkipTLS","ADServerInsecure","setADServerInsecure","ADServerStartTLS","setADServerStartTLS","ADUserDNs","setADUserDNs","ADGroupDNs","setADGroupDNs","validationErrors","setValidationErrors","cleanValidation","fieldName","clearValidationError","isFormValid","setIsFormValid","useEffect","identityProviderValidation","fieldKey","required","value","commonVal","commonFormValidation","Object","keys","length","getTenantIdentityProviderInfo","useCallback","api","invoke","concat","namespace","name","then","res","oidc","configuration_url","client_id","secret_id","callback_url","claim_name","scopes","active_directory","url","lookup_bind_dn","lookup_bind_password","user_dn_search_base_dn","user_dn_search_filter","group_search_base_dn","group_search_filter","skip_tls_verification","server_insecure","server_start_tls","catch","err","setErrorSnackMessage","React","ConfirmDialog","title","confirmText","cancelText","titleIcon","ConfirmModalIcon","isLoading","onClose","isOpen","onConfirm","updateTenantIdentityProvider","payload","confirmationContent","DialogContentText","className","Loader","Fragment","xs","sectionTitle","protocolRadioOptions","paddingBottom","RadioGroupSelector","currentSelection","id","label","onChange","e","target","selectorOptions","formFieldRow","InputBoxWrapper","placeholder","error","type","overlayIcon","VisibilityOffIcon","RemoveRedEyeIcon","overlayAction","FormSwitchWrapper","checked","Typography","variant","gutterBottom","buttonContainer","Button","color","disabled","onClick","SectionTitle","fieldGroup","descriptionText","map","_","index","toString","group","i","Tooltip","IconButton","size","AddIcon","style","filter","DeleteIcon","setAdministrators","user_dns","user","trim","group_dns","setSnackBarMessage","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/216.3a6753d9.chunk.js b/web-app/build/static/js/216.3a6753d9.chunk.js deleted file mode 100644 index 491312f1ffb..00000000000 --- a/web-app/build/static/js/216.3a6753d9.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[216],{3216:function(e,n,t){t.d(n,{Z:function(){return L}});var o=t(29439),i=t(93433),r=t(1413),l=t(72791),c=t(20890),a=t(13400),s=t(15473),d=t(61889),u=t(35527),h=t(57482),p=t(94454),x=t(57689),g=t(5171),v=t(26181),m=t.n(v),f=t(26769),w=t.n(f),b=t(11135),j=t(25787),C=t(97911),y=t(26759),S=t(70366),k=t(11087),Z=t(96040),N="#081C42",R="#081C42",T=t(80184),F=function(e){var n=e.active,t=void 0!==n&&n;return(0,T.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",children:(0,T.jsx)("path",{fill:t?R:N,d:"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96z"})})},B=function(e){var n=e.active,t=void 0!==n&&n;return(0,T.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",children:(0,T.jsx)("path",{fill:t?R:N,d:"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3v-3h18v3z"})})},A=function(e){var n=e.active,t=void 0!==n&&n;return(0,T.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",children:(0,T.jsx)("path",{fill:t?R:N,d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11H7v-2h10v2z"})})},z=function(e){return(0,T.jsx)("svg",(0,r.Z)((0,r.Z)({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",className:"min-icon",fill:"currentcolor"},e),{},{children:(0,T.jsx)("path",{d:"M20 16h2v-2h-2v2zm0-9v5h2V7h-2zM10 4c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 10c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"})}))},I=t(75952),M=(0,j.Z)((function(){return(0,b.Z)({spacing:{margin:"0 8px"},buttonDisabled:{"&.MuiButtonBase-root.Mui-disabled":{cursor:"not-allowed",filter:"grayscale(100%)",opacity:"30%"}}})}))((function(e){var n=e.type,t=e.onClick,o=e.valueToSend,i=e.idField,r=e.selected,l=e.to,c=e.sendOnlyId,s=void 0!==c&&c,d=e.disabled,u=void 0!==d&&d,h=e.classes,p=e.label,x=s?o[i]:o,g="string"===typeof n?function(e,n){switch(e){case"view":case"preview":return(0,T.jsx)(I.P99,{});case"edit":return(0,T.jsx)(I.dY8,{});case"delete":return(0,T.jsx)(I.XHJ,{});case"description":return(0,T.jsx)(I.v42,{});case"share":return(0,T.jsx)(I.aAc,{});case"cloud":return(0,T.jsx)(F,{active:n});case"console":return(0,T.jsx)(B,{active:n});case"download":return(0,T.jsx)(I._8t,{});case"disable":return(0,T.jsx)(A,{active:n});case"format":return(0,T.jsx)(z,{})}return null}(n,r):n,v=(0,T.jsx)(a.Z,{"aria-label":"string"===typeof n?n:"",size:"small",className:"".concat(h.spacing," ").concat(u?h.buttonDisabled:""),disabled:u,onClick:t?function(e){e.stopPropagation(),u?e.preventDefault():t(x)}:function(){return null},sx:{width:"30px",height:"30px"},children:g});return p&&""!==p&&(v=(0,T.jsx)(Z.Z,{title:p,children:v})),t?v:w()(l)?u?v:(0,T.jsx)(k.rU,{to:"".concat(l,"/").concat(x),onClick:function(e){e.stopPropagation()},children:v}):null})),P=t(30829),_=t(23814),D=(0,j.Z)((function(e){return(0,b.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},_.YI),_.Hr),_.lM),{},{fieldContainer:(0,r.Z)((0,r.Z)({},_.YI.fieldContainer),{},{display:"flex",justifyContent:"flex-start",alignItems:"center",margin:"15px 0",marginBottom:0,flexBasis:"initial",flexWrap:"nowrap"}),noTopMargin:{marginTop:0}}))}))((function(e){var n=e.label,t=e.onChange,o=e.value,i=e.id,r=e.name,c=e.checked,a=void 0!==c&&c,s=e.disabled,u=void 0!==s&&s,h=e.noTopMargin,x=void 0!==h&&h,g=e.tooltip,v=void 0===g?"":g,m=e.overrideLabelClasses,f=void 0===m?"":m,w=e.overrideCheckboxStyles,b=e.classes,j=e.className;return(0,T.jsx)(l.Fragment,{children:(0,T.jsxs)(d.ZP,{item:!0,xs:12,className:"".concat(b.fieldContainer," ").concat(x?b.noTopMargin:""," ").concat(j||""),children:[(0,T.jsx)("div",{children:(0,T.jsx)(p.Z,{name:r,id:i,value:o,color:"primary",inputProps:{"aria-label":"secondary checkbox"},checked:a,onChange:t,checkedIcon:(0,T.jsx)("span",{className:b.checkedIcon}),icon:(0,T.jsx)("span",{className:b.unCheckedIcon}),disabled:u,disableRipple:!0,disableFocusRipple:!0,focusRipple:!1,centerRipple:!1,disableTouchRipple:!0,style:w||{}})}),""!==n&&(0,T.jsxs)(P.Z,{htmlFor:i,className:"".concat(b.noMinWidthLabel," ").concat(f),children:[(0,T.jsx)("span",{children:n}),""!==v&&(0,T.jsx)("div",{className:b.tooltipContainer,children:(0,T.jsx)(Z.Z,{title:v,placement:"top-start",children:(0,T.jsx)("div",{className:b.tooltip,children:(0,T.jsx)(I.byK,{})})})})]})]})})})),H=t(27454),K=function(e,n,t,o,r,c,a,s,d,u,h){var p=function(e,n,t,o,r,l,c){var a=(0,i.Z)(e);l&&(a=e.filter((function(e){return c.includes(e.elementKey)})));var s=n;return o&&(s-=45),r&&(s-=t),a.reduce((function(e,n){return n.width?e-n.width:e}),s)/a.filter((function(e){return!e.width})).length}(e,n,t,o,r,s,d);return e.map((function(e,n){if(s&&!d.includes(e.elementKey))return null;var t=!e.enableSort||!e.enableSort;return(0,T.jsx)(g.sg,{dataKey:e.elementKey,headerClassName:"titleHeader ".concat(e.headerTextAlign?"text-".concat(e.headerTextAlign):""),headerRenderer:function(){return(0,T.jsxs)(l.Fragment,{children:[u===e.elementKey&&(0,T.jsx)(l.Fragment,{children:"ASC"===h?(0,T.jsx)(S.Z,{}):(0,T.jsx)(y.Z,{})}),e.label]})},className:e.contentTextAlign?"text-".concat(e.contentTextAlign):"",cellRenderer:function(n){var t=n.rowData,o=!!c&&c.includes(w()(t)?t:t[a]);return function(e,n,t){var o=w()(e)?e:m()(e,n.elementKey,null),i=n.renderFullObject?e:o,r=n.renderFunction?n.renderFunction(i):i;return(0,T.jsx)(l.Fragment,{children:(0,T.jsx)("span",{className:t?"selected":"",children:r})})}(t,e,o)},width:e.width||p,disableSort:t,defaultSortDirection:"ASC"},"col-tb-".concat(n.toString()))}))},L=(0,j.Z)((function(){return(0,b.Z)((0,r.Z)((0,r.Z)({paper:{display:"flex",overflow:"auto",flexDirection:"column",padding:"0 16px 8px",boxShadow:"none",border:"#EAEDEE 1px solid",borderRadius:3,minHeight:200,overflowY:"scroll",position:"relative","&::-webkit-scrollbar":{width:0,height:3}},noBackground:{backgroundColor:"transparent",border:0},disabled:{backgroundColor:"#fbfafa",color:"#cccccc"},defaultPaperHeight:{height:"calc(100vh - 205px)"},loadingBox:{paddingTop:"100px",paddingBottom:"100px"},overlayColumnSelection:{position:"absolute",right:0,top:0},popoverContent:{maxHeight:250,overflowY:"auto",padding:"0 10px 10px"},shownColumnsLabel:{color:"#9c9c9c",fontSize:12,padding:10,borderBottom:"#eaeaea 1px solid",width:"100%"},checkAllWrapper:{marginTop:-16},"@global":{".rowLine":{borderBottom:"1px solid ".concat("#9c9c9c80"),height:40,fontSize:14,transitionDuration:.3,"&:focus":{outline:"initial"},"&:hover:not(.ReactVirtualized__Table__headerRow)":{userSelect:"none",backgroundColor:"#ececec",fontWeight:600,"&.canClick":{cursor:"pointer"},"&.canSelectText":{userSelect:"text"}},"& .selected":{fontWeight:600},"&:not(.deleted) .selected":{color:"#081C42"},"&.deleted .selected":{color:"#C51B3F"}},".headerItem":{userSelect:"none",fontWeight:700,fontSize:14,fontStyle:"initial",display:"flex",alignItems:"center",outline:"none"},".ReactVirtualized__Table__row":{width:"100% !important"},".ReactVirtualized__Table__headerRow":{fontWeight:700,fontSize:14,borderColor:"#39393980",textTransform:"initial"},".optionsAlignment":{textAlign:"center","& .min-icon":{width:16,height:16}},".text-center":{textAlign:"center"},".text-right":{textAlign:"right"},".progress-enabled":{paddingTop:3,display:"inline-block",margin:"0 10px",position:"relative",width:18,height:18},".progress-enabled > .MuiCircularProgress-root":{position:"absolute",left:0,top:3}}},_.lM),_.FU))}))((function(e){var n=e.itemActions,t=e.columns,i=e.onSelect,r=e.records,v=e.isLoading,f=e.loadingMessage,b=void 0===f?(0,T.jsx)(c.Z,{component:"h3",children:"Loading..."}):f,j=e.entityName,y=e.selectedItems,S=e.idField,k=e.classes,Z=e.radioSelection,N=void 0!==Z&&Z,R=e.customEmptyMessage,F=void 0===R?"":R,B=e.customPaperHeight,A=void 0===B?"":B,z=e.noBackground,P=void 0!==z&&z,L=e.columnsSelector,W=void 0!==L&&L,O=e.textSelectable,E=void 0!==O&&O,V=e.columnsShown,Y=void 0===V?[]:V,U=e.onColumnChange,q=void 0===U?function(e,n){}:U,G=e.infiniteScrollConfig,J=e.sortConfig,X=e.autoScrollToBottom,Q=void 0!==X&&X,$=e.disabled,ee=void 0!==$&&$,ne=e.onSelectAll,te=e.rowStyle,oe=e.parentClassName,ie=void 0===oe?"":oe,re=e.tooltip,le=(0,x.s0)(),ce=(0,l.useState)(!1),ae=(0,o.Z)(ce,2),se=ae[0],de=ae[1],ue=l.useState(null),he=(0,o.Z)(ue,2),pe=he[0],xe=he[1],ge=n?n.find((function(e){return"view"===e.type})):null,ve=function(e){de(!se),xe(e.currentTarget)},me=function(){de(!1),xe(null)};return(0,T.jsx)(d.ZP,{item:!0,xs:12,className:ie,children:(0,T.jsx)(H.Z,{tooltip:re||"",children:(0,T.jsxs)(u.Z,{style:{overflow:"hidden"},className:"".concat(k.paper," ").concat(P?k.noBackground:"","\n ").concat(ee?k.disabled:""," \n ").concat(""!==A?A:k.defaultPaperHeight),children:[v&&(0,T.jsxs)(d.ZP,{container:!0,className:k.loadingBox,children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,style:{textAlign:"center"},children:b}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)(h.Z,{})})]}),W&&!v&&r.length>0&&(0,T.jsx)("div",{className:k.overlayColumnSelection,children:function(e){return(0,T.jsxs)(l.Fragment,{children:[(0,T.jsx)(a.Z,{"aria-describedby":"columnsSelector",color:"primary",onClick:ve,size:"large",children:(0,T.jsx)(C.Z,{fontSize:"inherit"})}),(0,T.jsxs)(s.ZP,{anchorEl:pe,id:"columnsSelector",open:se,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},onClose:me,children:[(0,T.jsx)("div",{className:k.shownColumnsLabel,children:"Shown Columns"}),(0,T.jsx)("div",{className:k.popoverContent,children:e.map((function(e){return(0,T.jsx)(D,{label:e.label,checked:Y.includes(e.elementKey),onChange:function(n){q(e.elementKey,n.target.checked)},id:"chbox-".concat(e.label),name:"chbox-".concat(e.label),value:e.label},"tableColumns-".concat(e.label))}))})]})]})}(t)}),r&&!v&&r.length>0?(0,T.jsx)(g.b2,{isRowLoaded:function(e){var n=e.index;return!!r[n]},loadMoreRows:G?G.loadMoreRecords:function(){return new Promise((function(){return!0}))},rowCount:G?G.recordsCount:r.length,children:function(e){var o=e.onRowsRendered,c=e.registerChild;return(0,T.jsx)(g.qj,{children:function(e){var a=e.width,s=e.height,d=function(e,n){var t=45*n+15;return t<80?80:t>e?e:t}(a,n?n.filter((function(e){return"view"!==e.type})).length:0),u=!(!i||!y),h=!!(n&&n.length>1||n&&1===n.length&&"view"!==n[0].type);return(0,T.jsxs)(g.iA,{ref:c,disableHeader:!1,headerClassName:"headerItem",headerHeight:40,height:s+8,noRowsRenderer:function(){return(0,T.jsx)(l.Fragment,{children:""!==F?F:"There are no ".concat(j," yet.")})},overscanRowCount:10,rowHeight:40,width:a,rowCount:r.length,rowGetter:function(e){var n=e.index;return r[n]},onRowClick:function(e){!function(e){if(ge){var n=ge.sendOnlyId?e[S]:e,t=!1;if(ge.disableButtonFunction&&ge.disableButtonFunction(n)&&(t=!0),ge.to&&!t)return void le("".concat(ge.to,"/").concat(n));ge.onClick&&!t&&ge.onClick(n)}}(e.rowData)},rowClassName:function(e){return"rowLine ".concat(ge?"canClick":""," ").concat(!ge&&E?"canSelectText":""," ").concat(te?te(e):"")},onRowsRendered:o,sort:J?J.triggerSort:void 0,sortBy:J?J.currentSort:void 0,sortDirection:J?J.currentDirection:void 0,scrollToIndex:Q?r.length-1:-1,rowStyle:function(e){if(te){var n=te(e);return"string"===typeof n?m()(_.xS,n,{}):n}return{}},children:[u&&(0,T.jsx)(g.sg,{headerRenderer:function(){return(0,T.jsx)(l.Fragment,{children:ne?(0,T.jsx)("div",{className:k.checkAllWrapper,children:(0,T.jsx)(D,{label:"",onChange:ne,value:"all",id:"selectAll",name:"selectAll",checked:(null===y||void 0===y?void 0:y.length)===r.length})}):(0,T.jsx)(l.Fragment,{children:"Select"})})},dataKey:"select-".concat(S),width:45,disableSort:!0,cellRenderer:function(e){var n=e.rowData,t=!!y&&y.includes(w()(n)?n:n[S]);return(0,T.jsx)(p.Z,{value:w()(n)?n:n[S],color:"primary",inputProps:{"aria-label":"secondary checkbox"},className:"TableCheckbox",checked:t,onChange:i,onClick:function(e){e.stopPropagation()},checkedIcon:(0,T.jsx)("span",{className:N?k.radioSelectedIcon:k.checkedIcon}),icon:(0,T.jsx)("span",{className:N?k.radioUnselectedIcon:k.unCheckedIcon})})}}),K(t,a,d,u,h,y||[],S,W,Y,J?J.currentSort:"",J?J.currentDirection:void 0),h&&(0,T.jsx)(g.sg,{dataKey:S,width:d,headerClassName:"optionsAlignment",className:"optionsAlignment",cellRenderer:function(e){var t=e.rowData,o=!!y&&y.includes(w()(t)?t:t[S]);return function(e,n,t,o){return e.map((function(e,i){if("view"===e.type)return null;var r="string"===typeof n?n:n[o],l=!1;return e.disableButtonFunction&&e.disableButtonFunction(r)&&(l=!0),e.showLoaderFunction&&e.showLoaderFunction(r)?(0,T.jsx)("div",{className:"progress-enabled",children:(0,T.jsx)(I.aNw,{style:{width:18,height:18}},"actions-loader-".concat(e.type,"-").concat(i.toString()))}):(0,T.jsx)(M,{label:e.label,type:e.type,onClick:e.onClick,to:e.to,valueToSend:n,selected:t,idField:o,sendOnlyId:!!e.sendOnlyId,disabled:l},"actions-".concat(e.type,"-").concat(i.toString()))}))}(n||[],t,o,S)}})]})}})}}):(0,T.jsx)(l.Fragment,{children:!v&&(0,T.jsx)("div",{id:"empty-results",children:""!==F?F:"There are no ".concat(j," yet.")})})]})})})}))}}]); -//# sourceMappingURL=216.3a6753d9.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/216.3a6753d9.chunk.js.map b/web-app/build/static/js/216.3a6753d9.chunk.js.map deleted file mode 100644 index 3cd06c1d290..00000000000 --- a/web-app/build/static/js/216.3a6753d9.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/216.3a6753d9.chunk.js","mappings":"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","sources":["screens/Console/Common/TableWrapper/TableActionIcons/common.ts","screens/Console/Common/TableWrapper/TableActionIcons/CloudIcon.tsx","screens/Console/Common/TableWrapper/TableActionIcons/ConsoleIcon.tsx","screens/Console/Common/TableWrapper/TableActionIcons/DisableIcon.tsx","screens/Console/Common/TableWrapper/TableActionIcons/FormatDriveIcon.tsx","screens/Console/Common/TableWrapper/TableActionButton.tsx","screens/Console/Common/FormComponents/CheckboxWrapper/CheckboxWrapper.tsx","screens/Console/Common/TableWrapper/TableWrapper.tsx"],"sourcesContent":["export interface IIcon {\n active: boolean;\n}\n\nexport const unSelected = \"#081C42\";\nexport const selected = \"#081C42\";\n","import React from \"react\";\nimport { IIcon, selected, unSelected } from \"./common\";\n\nconst CloudIcon = ({ active = false }: IIcon) => {\n return (\n \n \n \n );\n};\n\nexport default CloudIcon;\n","import React from \"react\";\nimport { IIcon, selected, unSelected } from \"./common\";\n\nconst ConsoleIcon = ({ active = false }: IIcon) => {\n return (\n \n \n \n );\n};\n\nexport default ConsoleIcon;\n","import React from \"react\";\nimport { IIcon, selected, unSelected } from \"./common\";\n\nconst DescriptionIcon = ({ active = false }: IIcon) => {\n return (\n \n \n \n );\n};\n\nexport default DescriptionIcon;\n","import React, { SVGProps } from \"react\";\n\nconst FormatDriveIcon = (props: SVGProps) => (\n \n \n \n);\n\nexport default FormatDriveIcon;\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport isString from \"lodash/isString\";\nimport { Link } from \"react-router-dom\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IconButton, Tooltip } from \"@mui/material\";\nimport CloudIcon from \"./TableActionIcons/CloudIcon\";\nimport ConsoleIcon from \"./TableActionIcons/ConsoleIcon\";\nimport DisableIcon from \"./TableActionIcons/DisableIcon\";\nimport FormatDriveIcon from \"./TableActionIcons/FormatDriveIcon\";\nimport {\n DownloadIcon,\n EditIcon,\n IAMPoliciesIcon,\n PreviewIcon,\n ShareIcon,\n TrashIcon,\n} from \"mds\";\n\nconst styles = () =>\n createStyles({\n spacing: {\n margin: \"0 8px\",\n },\n buttonDisabled: {\n \"&.MuiButtonBase-root.Mui-disabled\": {\n cursor: \"not-allowed\",\n filter: \"grayscale(100%)\",\n opacity: \"30%\",\n },\n },\n });\n\ninterface IActionButton {\n label?: string;\n type: string | React.ReactNode;\n onClick?: (id: string) => any;\n to?: string;\n valueToSend: any;\n selected: boolean;\n sendOnlyId?: boolean;\n idField: string;\n disabled: boolean;\n classes: any;\n}\n\nconst defineIcon = (type: string, selected: boolean) => {\n switch (type) {\n case \"view\":\n return ;\n case \"edit\":\n return ;\n case \"delete\":\n return ;\n case \"description\":\n return ;\n case \"share\":\n return ;\n case \"cloud\":\n return ;\n case \"console\":\n return ;\n case \"download\":\n return ;\n case \"disable\":\n return ;\n case \"format\":\n return ;\n case \"preview\":\n return ;\n }\n\n return null;\n};\n\nconst TableActionButton = ({\n type,\n onClick,\n valueToSend,\n idField,\n selected,\n to,\n sendOnlyId = false,\n disabled = false,\n classes,\n label,\n}: IActionButton) => {\n const valueClick = sendOnlyId ? valueToSend[idField] : valueToSend;\n\n const icon = typeof type === \"string\" ? defineIcon(type, selected) : type;\n let buttonElement = (\n {\n e.stopPropagation();\n if (!disabled) {\n onClick(valueClick);\n } else {\n e.preventDefault();\n }\n }\n : () => null\n }\n sx={{\n width: \"30px\",\n height: \"30px\",\n }}\n >\n {icon}\n \n );\n\n if (label && label !== \"\") {\n buttonElement = {buttonElement};\n }\n\n if (onClick) {\n return buttonElement;\n }\n\n if (isString(to)) {\n if (!disabled) {\n return (\n {\n e.stopPropagation();\n }}\n >\n {buttonElement}\n \n );\n }\n\n return buttonElement;\n }\n\n return null;\n};\n\nexport default withStyles(styles)(TableActionButton);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport { Checkbox, Grid, InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n checkboxIcons,\n fieldBasic,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\n\ninterface CheckBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n overrideLabelClasses?: string;\n overrideCheckboxStyles?: React.CSSProperties;\n index?: number;\n noTopMargin?: boolean;\n checked: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n ...checkboxIcons,\n fieldContainer: {\n ...fieldBasic.fieldContainer,\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n margin: \"15px 0\",\n marginBottom: 0,\n flexBasis: \"initial\",\n flexWrap: \"nowrap\",\n },\n noTopMargin: {\n marginTop: 0,\n },\n });\n\nconst CheckboxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n checked = false,\n disabled = false,\n noTopMargin = false,\n tooltip = \"\",\n overrideLabelClasses = \"\",\n overrideCheckboxStyles,\n classes,\n className,\n}: CheckBoxProps) => {\n return (\n \n \n
\n }\n icon={}\n disabled={disabled}\n disableRipple\n disableFocusRipple\n focusRipple={false}\n centerRipple={false}\n disableTouchRipple\n style={overrideCheckboxStyles || {}}\n />\n
\n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(CheckboxWrapper);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { Fragment, useState } from \"react\";\nimport {\n Checkbox,\n Grid,\n IconButton,\n LinearProgress,\n Paper,\n Popover,\n Typography,\n} from \"@mui/material\";\nimport { useNavigate } from \"react-router-dom\";\nimport { AutoSizer, Column, InfiniteLoader, Table } from \"react-virtualized\";\nimport get from \"lodash/get\";\nimport isString from \"lodash/isString\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport ViewColumnIcon from \"@mui/icons-material/ViewColumn\";\nimport ArrowDropDownIcon from \"@mui/icons-material/ArrowDropDown\";\nimport ArrowDropUpIcon from \"@mui/icons-material/ArrowDropUp\";\nimport TableActionButton from \"./TableActionButton\";\nimport CheckboxWrapper from \"../FormComponents/CheckboxWrapper/CheckboxWrapper\";\nimport {\n checkboxIcons,\n radioIcons,\n TableRowPredefStyles,\n} from \"../FormComponents/common/styleLibrary\";\nimport { Loader } from \"mds\";\nimport TooltipWrapper from \"../TooltipWrapper/TooltipWrapper\";\n\n//Interfaces for table Items\n\nexport interface ItemActions {\n label?: string;\n type: string | any;\n to?: string;\n sendOnlyId?: boolean;\n disableButtonFunction?: (itemValue: any) => boolean;\n showLoaderFunction?: (itemValue: any) => boolean;\n\n onClick?(valueToSend: any): any;\n}\n\ninterface IColumns {\n label: string;\n elementKey?: string;\n renderFunction?: (input: any) => any;\n renderFullObject?: boolean;\n globalClass?: any;\n rowClass?: any;\n width?: number;\n headerTextAlign?: string;\n contentTextAlign?: string;\n enableSort?: boolean;\n}\n\ninterface IInfiniteScrollConfig {\n loadMoreRecords: (indexElements: {\n startIndex: number;\n stopIndex: number;\n }) => Promise;\n recordsCount: number;\n}\n\ninterface ISortConfig {\n triggerSort: (val: any) => any;\n currentSort: string;\n currentDirection: \"ASC\" | \"DESC\" | undefined;\n}\n\ninterface TableWrapperProps {\n itemActions?: ItemActions[] | null;\n columns: IColumns[];\n onSelect?: (e: React.ChangeEvent) => any;\n idField: string;\n isLoading: boolean;\n loadingMessage?: React.ReactNode;\n records: any[];\n classes: any;\n entityName: string;\n selectedItems?: string[];\n radioSelection?: boolean;\n customEmptyMessage?: string;\n customPaperHeight?: string;\n noBackground?: boolean;\n columnsSelector?: boolean;\n textSelectable?: boolean;\n columnsShown?: string[];\n onColumnChange?: (column: string, state: boolean) => any;\n autoScrollToBottom?: boolean;\n infiniteScrollConfig?: IInfiniteScrollConfig;\n sortConfig?: ISortConfig;\n disabled?: boolean;\n onSelectAll?: () => void;\n rowStyle?: ({\n index,\n }: {\n index: number;\n }) => \"deleted\" | \"\" | React.CSSProperties;\n parentClassName?: string;\n tooltip?: any;\n}\n\nconst borderColor = \"#9c9c9c80\";\n\nconst styles = () =>\n createStyles({\n paper: {\n display: \"flex\",\n overflow: \"auto\",\n flexDirection: \"column\",\n padding: \"0 16px 8px\",\n boxShadow: \"none\",\n border: \"#EAEDEE 1px solid\",\n borderRadius: 3,\n minHeight: 200,\n overflowY: \"scroll\",\n position: \"relative\",\n \"&::-webkit-scrollbar\": {\n width: 0,\n height: 3,\n },\n },\n noBackground: {\n backgroundColor: \"transparent\",\n border: 0,\n },\n disabled: {\n backgroundColor: \"#fbfafa\",\n color: \"#cccccc\",\n },\n defaultPaperHeight: {\n height: \"calc(100vh - 205px)\",\n },\n loadingBox: {\n paddingTop: \"100px\",\n paddingBottom: \"100px\",\n },\n overlayColumnSelection: {\n position: \"absolute\",\n right: 0,\n top: 0,\n },\n popoverContent: {\n maxHeight: 250,\n overflowY: \"auto\",\n padding: \"0 10px 10px\",\n },\n shownColumnsLabel: {\n color: \"#9c9c9c\",\n fontSize: 12,\n padding: 10,\n borderBottom: \"#eaeaea 1px solid\",\n width: \"100%\",\n },\n checkAllWrapper: {\n marginTop: -16,\n },\n \"@global\": {\n \".rowLine\": {\n borderBottom: `1px solid ${borderColor}`,\n height: 40,\n fontSize: 14,\n transitionDuration: 0.3,\n \"&:focus\": {\n outline: \"initial\",\n },\n \"&:hover:not(.ReactVirtualized__Table__headerRow)\": {\n userSelect: \"none\",\n backgroundColor: \"#ececec\",\n fontWeight: 600,\n \"&.canClick\": {\n cursor: \"pointer\",\n },\n \"&.canSelectText\": {\n userSelect: \"text\",\n },\n },\n \"& .selected\": {\n fontWeight: 600,\n },\n \"&:not(.deleted) .selected\": {\n color: \"#081C42\",\n },\n \"&.deleted .selected\": {\n color: \"#C51B3F\",\n },\n },\n \".headerItem\": {\n userSelect: \"none\",\n fontWeight: 700,\n fontSize: 14,\n fontStyle: \"initial\",\n display: \"flex\",\n alignItems: \"center\",\n outline: \"none\",\n },\n \".ReactVirtualized__Table__row\": {\n width: \"100% !important\",\n },\n \".ReactVirtualized__Table__headerRow\": {\n fontWeight: 700,\n fontSize: 14,\n borderColor: \"#39393980\",\n textTransform: \"initial\",\n },\n \".optionsAlignment\": {\n textAlign: \"center\",\n \"& .min-icon\": {\n width: 16,\n height: 16,\n },\n },\n \".text-center\": {\n textAlign: \"center\",\n },\n \".text-right\": {\n textAlign: \"right\",\n },\n \".progress-enabled\": {\n paddingTop: 3,\n display: \"inline-block\",\n margin: \"0 10px\",\n position: \"relative\",\n width: 18,\n height: 18,\n },\n \".progress-enabled > .MuiCircularProgress-root\": {\n position: \"absolute\",\n left: 0,\n top: 3,\n },\n },\n ...checkboxIcons,\n ...radioIcons,\n });\n\nconst selectWidth = 45;\n\n// Function to render elements in table\nconst subRenderFunction = (\n rowData: any,\n column: IColumns,\n isSelected: boolean,\n) => {\n const itemElement = isString(rowData)\n ? rowData\n : get(rowData, column.elementKey!, null); // If the element is just a string, we render it as it is\n const renderConst = column.renderFullObject ? rowData : itemElement;\n\n const renderElement = column.renderFunction\n ? column.renderFunction(renderConst)\n : renderConst; // If render function is set, we send the value to the function.\n\n return (\n \n {renderElement}\n \n );\n};\n\n// Function to calculate common column width for elements with no with size\nconst calculateColumnRest = (\n columns: IColumns[],\n containerWidth: number,\n actionsWidth: number,\n hasSelect: boolean,\n hasActions: boolean,\n columnsSelector: boolean,\n columnsShown: string[],\n) => {\n let colsItems = [...columns];\n\n if (columnsSelector) {\n colsItems = columns.filter((column) =>\n columnsShown.includes(column.elementKey!),\n );\n }\n\n let initialValue = containerWidth;\n\n if (hasSelect) {\n initialValue -= selectWidth;\n }\n\n if (hasActions) {\n initialValue -= actionsWidth;\n }\n\n let freeSpacing = colsItems.reduce((total, currValue) => {\n return currValue.width ? total - currValue.width : total;\n }, initialValue);\n\n return freeSpacing / colsItems.filter((el) => !el.width).length;\n};\n\n// Function that renders Columns in table\nconst generateColumnsMap = (\n columns: IColumns[],\n containerWidth: number,\n actionsWidth: number,\n hasSelect: boolean,\n hasActions: boolean,\n selectedItems: string[],\n idField: string,\n columnsSelector: boolean,\n columnsShown: string[],\n sortColumn: string,\n sortDirection: \"ASC\" | \"DESC\" | undefined,\n) => {\n const commonRestWidth = calculateColumnRest(\n columns,\n containerWidth,\n actionsWidth,\n hasSelect,\n hasActions,\n columnsSelector,\n columnsShown,\n );\n return columns.map((column: IColumns, index: number) => {\n if (columnsSelector && !columnsShown.includes(column.elementKey!)) {\n return null;\n }\n\n const disableSort = column.enableSort ? !column.enableSort : true;\n\n return (\n // @ts-ignore\n (\n \n {sortColumn === column.elementKey && (\n \n {sortDirection === \"ASC\" ? (\n \n ) : (\n \n )}\n \n )}\n {column.label}\n \n )}\n className={\n column.contentTextAlign ? `text-${column.contentTextAlign}` : \"\"\n }\n cellRenderer={({ rowData }) => {\n const isSelected = selectedItems\n ? selectedItems.includes(\n isString(rowData) ? rowData : rowData[idField],\n )\n : false;\n return subRenderFunction(rowData, column, isSelected);\n }}\n width={column.width || commonRestWidth}\n disableSort={disableSort}\n defaultSortDirection={\"ASC\"}\n />\n );\n });\n};\n\n// Function to render the action buttons\nconst elementActions = (\n actions: ItemActions[],\n valueToSend: any,\n selected: boolean,\n idField: string,\n) => {\n return actions.map((action: ItemActions, index: number) => {\n if (action.type === \"view\") {\n return null;\n }\n\n const vlSend =\n typeof valueToSend === \"string\" ? valueToSend : valueToSend[idField];\n\n let disabled = false;\n\n if (action.disableButtonFunction) {\n if (action.disableButtonFunction(vlSend)) {\n disabled = true;\n }\n }\n\n if (action.showLoaderFunction) {\n if (action.showLoaderFunction(vlSend)) {\n return (\n
\n \n
\n );\n }\n }\n\n return (\n \n );\n });\n};\n\n// Function to calculate the options column width according elements inside\nconst calculateOptionsSize = (containerWidth: number, totalOptions: number) => {\n const minContainerSize = 80;\n const sizeOptions = totalOptions * 45 + 15;\n\n if (sizeOptions < minContainerSize) {\n return minContainerSize;\n }\n\n if (sizeOptions > containerWidth) {\n return containerWidth;\n }\n\n return sizeOptions;\n};\n\n// Main function to render the Table Wrapper\nconst TableWrapper = ({\n itemActions,\n columns,\n onSelect,\n records,\n isLoading,\n loadingMessage = Loading...,\n entityName,\n selectedItems,\n idField,\n classes,\n radioSelection = false,\n customEmptyMessage = \"\",\n customPaperHeight = \"\",\n noBackground = false,\n columnsSelector = false,\n textSelectable = false,\n columnsShown = [],\n onColumnChange = (column: string, state: boolean) => {},\n infiniteScrollConfig,\n sortConfig,\n autoScrollToBottom = false,\n disabled = false,\n onSelectAll,\n rowStyle,\n parentClassName = \"\",\n tooltip,\n}: TableWrapperProps) => {\n const navigate = useNavigate();\n\n const [columnSelectorOpen, setColumnSelectorOpen] = useState(false);\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n const findView = itemActions\n ? itemActions.find((el) => el.type === \"view\")\n : null;\n\n const clickAction = (rowItem: any) => {\n if (findView) {\n const valueClick = findView.sendOnlyId ? rowItem[idField] : rowItem;\n\n let disabled = false;\n\n if (findView.disableButtonFunction) {\n if (findView.disableButtonFunction(valueClick)) {\n disabled = true;\n }\n }\n\n if (findView.to && !disabled) {\n navigate(`${findView.to}/${valueClick}`);\n return;\n }\n\n if (findView.onClick && !disabled) {\n findView.onClick(valueClick);\n }\n }\n };\n\n const openColumnsSelector = (event: { currentTarget: any }) => {\n setColumnSelectorOpen(!columnSelectorOpen);\n setAnchorEl(event.currentTarget);\n };\n\n const closeColumnSelector = () => {\n setColumnSelectorOpen(false);\n setAnchorEl(null);\n };\n\n const columnsSelection = (columns: IColumns[]) => {\n return (\n \n \n \n \n \n
Shown Columns
\n
\n {columns.map((column: IColumns) => {\n return (\n {\n onColumnChange(column.elementKey!, e.target.checked);\n }}\n id={`chbox-${column.label}`}\n name={`chbox-${column.label}`}\n value={column.label}\n />\n );\n })}\n
\n \n
\n );\n };\n\n return (\n \n \n \n {isLoading && (\n \n \n {loadingMessage}\n \n \n \n \n \n )}\n {columnsSelector && !isLoading && records.length > 0 && (\n
\n {columnsSelection(columns)}\n
\n )}\n {records && !isLoading && records.length > 0 ? (\n // @ts-ignore\n !!records[index]}\n loadMoreRows={\n infiniteScrollConfig\n ? infiniteScrollConfig.loadMoreRecords\n : () => new Promise(() => true)\n }\n rowCount={\n infiniteScrollConfig\n ? infiniteScrollConfig.recordsCount\n : records.length\n }\n >\n {({ onRowsRendered, registerChild }) => (\n // @ts-ignore\n \n {({ width, height }: any) => {\n const optionsWidth = calculateOptionsSize(\n width,\n itemActions\n ? itemActions.filter((el) => el.type !== \"view\").length\n : 0,\n );\n const hasSelect: boolean = !!(onSelect && selectedItems);\n const hasOptions: boolean = !!(\n (itemActions && itemActions.length > 1) ||\n (itemActions &&\n itemActions.length === 1 &&\n itemActions[0].type !== \"view\")\n );\n return (\n // @ts-ignore\n (\n \n {customEmptyMessage !== \"\"\n ? customEmptyMessage\n : `There are no ${entityName} yet.`}\n \n )}\n overscanRowCount={10}\n rowHeight={40}\n width={width}\n rowCount={records.length}\n rowGetter={({ index }) => records[index]}\n onRowClick={({ rowData }) => {\n clickAction(rowData);\n }}\n rowClassName={(r) =>\n `rowLine ${findView ? \"canClick\" : \"\"} ${\n !findView && textSelectable ? \"canSelectText\" : \"\"\n } ${rowStyle ? rowStyle(r) : \"\"}`\n }\n onRowsRendered={onRowsRendered}\n sort={sortConfig ? sortConfig.triggerSort : undefined}\n sortBy={sortConfig ? sortConfig.currentSort : undefined}\n sortDirection={\n sortConfig ? sortConfig.currentDirection : undefined\n }\n scrollToIndex={\n autoScrollToBottom ? records.length - 1 : -1\n }\n rowStyle={(r) => {\n if (rowStyle) {\n const returnElement = rowStyle(r);\n\n if (typeof returnElement === \"string\") {\n return get(\n TableRowPredefStyles,\n returnElement,\n {},\n );\n }\n\n return returnElement;\n }\n\n return {};\n }}\n >\n {hasSelect && (\n // @ts-ignore\n (\n \n {onSelectAll ? (\n
\n \n
\n ) : (\n Select\n )}\n
\n )}\n dataKey={`select-${idField}`}\n width={selectWidth}\n disableSort\n cellRenderer={({ rowData }) => {\n const isSelected = selectedItems\n ? selectedItems.includes(\n isString(rowData)\n ? rowData\n : rowData[idField],\n )\n : false;\n\n return (\n {\n e.stopPropagation();\n }}\n checkedIcon={\n \n }\n icon={\n \n }\n />\n );\n }}\n />\n )}\n {generateColumnsMap(\n columns,\n width,\n optionsWidth,\n hasSelect,\n hasOptions,\n selectedItems || [],\n idField,\n columnsSelector,\n columnsShown,\n sortConfig ? sortConfig.currentSort : \"\",\n sortConfig ? sortConfig.currentDirection : undefined,\n )}\n {hasOptions && (\n // @ts-ignore\n {\n const isSelected = selectedItems\n ? selectedItems.includes(\n isString(rowData)\n ? rowData\n : rowData[idField],\n )\n : false;\n return elementActions(\n itemActions || [],\n rowData,\n isSelected,\n idField,\n );\n }}\n />\n )}\n \n );\n }}\n
\n )}\n \n ) : (\n \n {!isLoading && (\n
\n {customEmptyMessage !== \"\"\n ? customEmptyMessage\n : `There are no ${entityName} yet.`}\n
\n )}\n
\n )}\n \n
\n
\n );\n};\n\nexport default withStyles(styles)(TableWrapper);\n"],"names":["unSelected","selected","_ref","_ref$active","active","_jsx","xmlns","width","height","viewBox","children","fill","d","props","_objectSpread","className","withStyles","createStyles","spacing","margin","buttonDisabled","cursor","filter","opacity","type","onClick","valueToSend","idField","to","_ref$sendOnlyId","sendOnlyId","_ref$disabled","disabled","classes","label","valueClick","icon","PreviewIcon","EditIcon","TrashIcon","IAMPoliciesIcon","ShareIcon","CloudIcon","ConsoleIcon","DownloadIcon","DisableIcon","FormatDriveIcon","defineIcon","buttonElement","IconButton","size","concat","e","stopPropagation","preventDefault","sx","Tooltip","title","isString","Link","theme","fieldBasic","tooltipHelper","checkboxIcons","fieldContainer","display","justifyContent","alignItems","marginBottom","flexBasis","flexWrap","noTopMargin","marginTop","onChange","value","id","name","_ref$checked","checked","_ref$noTopMargin","_ref$tooltip","tooltip","_ref$overrideLabelCla","overrideLabelClasses","overrideCheckboxStyles","React","_jsxs","Grid","item","xs","Checkbox","color","inputProps","checkedIcon","unCheckedIcon","disableRipple","disableFocusRipple","focusRipple","centerRipple","disableTouchRipple","style","InputLabel","htmlFor","noMinWidthLabel","tooltipContainer","placement","HelpIcon","generateColumnsMap","columns","containerWidth","actionsWidth","hasSelect","hasActions","selectedItems","columnsSelector","columnsShown","sortColumn","sortDirection","commonRestWidth","colsItems","_toConsumableArray","column","includes","elementKey","initialValue","reduce","total","currValue","el","length","calculateColumnRest","map","index","disableSort","enableSort","Column","dataKey","headerClassName","headerTextAlign","headerRenderer","Fragment","ArrowDropUpIcon","ArrowDropDownIcon","contentTextAlign","cellRenderer","rowData","isSelected","itemElement","get","renderConst","renderFullObject","renderElement","renderFunction","subRenderFunction","defaultSortDirection","toString","paper","overflow","flexDirection","padding","boxShadow","border","borderRadius","minHeight","overflowY","position","noBackground","backgroundColor","defaultPaperHeight","loadingBox","paddingTop","paddingBottom","overlayColumnSelection","right","top","popoverContent","maxHeight","shownColumnsLabel","fontSize","borderBottom","checkAllWrapper","transitionDuration","outline","userSelect","fontWeight","fontStyle","borderColor","textTransform","textAlign","left","radioIcons","_ref2","itemActions","onSelect","records","isLoading","_ref2$loadingMessage","loadingMessage","Typography","component","entityName","_ref2$radioSelection","radioSelection","_ref2$customEmptyMess","customEmptyMessage","_ref2$customPaperHeig","customPaperHeight","_ref2$noBackground","_ref2$columnsSelector","_ref2$textSelectable","textSelectable","_ref2$columnsShown","_ref2$onColumnChange","onColumnChange","state","infiniteScrollConfig","sortConfig","_ref2$autoScrollToBot","autoScrollToBottom","_ref2$disabled","onSelectAll","rowStyle","_ref2$parentClassName","parentClassName","navigate","useNavigate","_useState","useState","_useState2","_slicedToArray","columnSelectorOpen","setColumnSelectorOpen","_React$useState","_React$useState2","anchorEl","setAnchorEl","findView","find","openColumnsSelector","event","currentTarget","closeColumnSelector","TooltipWrapper","Paper","container","LinearProgress","ViewColumnIcon","Popover","open","anchorOrigin","vertical","horizontal","transformOrigin","onClose","CheckboxWrapper","target","columnsSelection","InfiniteLoader","isRowLoaded","_ref3","loadMoreRows","loadMoreRecords","Promise","rowCount","recordsCount","_ref4","onRowsRendered","registerChild","AutoSizer","_ref5","optionsWidth","totalOptions","sizeOptions","calculateOptionsSize","hasOptions","Table","ref","disableHeader","headerHeight","noRowsRenderer","overscanRowCount","rowHeight","rowGetter","_ref6","onRowClick","_ref7","rowItem","disableButtonFunction","clickAction","rowClassName","r","sort","triggerSort","undefined","sortBy","currentSort","currentDirection","scrollToIndex","returnElement","TableRowPredefStyles","_ref8","radioSelectedIcon","radioUnselectedIcon","_ref9","actions","action","vlSend","showLoaderFunction","Loader","TableActionButton","elementActions"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/216.ab33f243.chunk.js b/web-app/build/static/js/216.ab33f243.chunk.js new file mode 100644 index 00000000000..46a1523143f --- /dev/null +++ b/web-app/build/static/js/216.ab33f243.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[216],{3216:(e,t,n)=>{n.d(t,{Z:()=>D});var o=n(72791),l=n(20890),r=n(13400),i=n(15473),a=n(61889),c=n(35527),s=n(57482),d=n(94454),h=n(57689),u=n(36355),p=n(26181),x=n.n(p),g=n(26769),m=n.n(g),w=n(11135),b=n(25787),v=n(97911),j=n(26759),C=n(70366),f=n(11087),y=n(96040);const S="#081C42",k="#081C42";var N=n(80184);const R=e=>{let{active:t=!1}=e;return(0,N.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",children:(0,N.jsx)("path",{fill:t?k:S,d:"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96z"})})},Z=e=>{let{active:t=!1}=e;return(0,N.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",children:(0,N.jsx)("path",{fill:t?k:S,d:"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3v-3h18v3z"})})},T=e=>{let{active:t=!1}=e;return(0,N.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",children:(0,N.jsx)("path",{fill:t?k:S,d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11H7v-2h10v2z"})})},F=e=>(0,N.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",className:"min-icon",fill:"currentcolor",...e,children:(0,N.jsx)("path",{d:"M20 16h2v-2h-2v2zm0-9v5h2V7h-2zM10 4c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 10c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"})});var B=n(75952);const A=(0,b.Z)((()=>(0,w.Z)({spacing:{margin:"0 8px"},buttonDisabled:{"&.MuiButtonBase-root.Mui-disabled":{cursor:"not-allowed",filter:"grayscale(100%)",opacity:"30%"}}})))((e=>{let{type:t,onClick:n,valueToSend:o,idField:l,selected:i,to:a,sendOnlyId:c=!1,disabled:s=!1,classes:d,label:h}=e;const u=c?o[l]:o,p="string"===typeof t?((e,t)=>{switch(e){case"view":case"preview":return(0,N.jsx)(B.P99,{});case"edit":return(0,N.jsx)(B.dY8,{});case"delete":return(0,N.jsx)(B.XHJ,{});case"description":return(0,N.jsx)(B.v42,{});case"share":return(0,N.jsx)(B.aAc,{});case"cloud":return(0,N.jsx)(R,{active:t});case"console":return(0,N.jsx)(Z,{active:t});case"download":return(0,N.jsx)(B._8t,{});case"disable":return(0,N.jsx)(T,{active:t});case"format":return(0,N.jsx)(F,{})}return null})(t,i):t;let x=(0,N.jsx)(r.Z,{"aria-label":"string"===typeof t?t:"",size:"small",className:"".concat(d.spacing," ").concat(s?d.buttonDisabled:""),disabled:s,onClick:n?e=>{e.stopPropagation(),s?e.preventDefault():n(u)}:()=>null,sx:{width:"30px",height:"30px"},children:p});return h&&""!==h&&(x=(0,N.jsx)(y.Z,{title:h,children:x})),n?x:m()(a)?s?x:(0,N.jsx)(f.rU,{to:"".concat(a,"/").concat(u),onClick:e=>{e.stopPropagation()},children:x}):null}));var z=n(30829),I=n(23814);const M=(0,b.Z)((e=>(0,w.Z)({...I.YI,...I.Hr,...I.lM,fieldContainer:{...I.YI.fieldContainer,display:"flex",justifyContent:"flex-start",alignItems:"center",margin:"15px 0",marginBottom:0,flexBasis:"initial",flexWrap:"nowrap"},noTopMargin:{marginTop:0}})))((e=>{let{label:t,onChange:n,value:l,id:r,name:i,checked:c=!1,disabled:s=!1,noTopMargin:h=!1,tooltip:u="",overrideLabelClasses:p="",overrideCheckboxStyles:x,classes:g,className:m}=e;return(0,N.jsx)(o.Fragment,{children:(0,N.jsxs)(a.ZP,{item:!0,xs:12,className:"".concat(g.fieldContainer," ").concat(h?g.noTopMargin:""," ").concat(m||""),children:[(0,N.jsx)("div",{children:(0,N.jsx)(d.Z,{name:i,id:r,value:l,color:"primary",inputProps:{"aria-label":"secondary checkbox"},checked:c,onChange:n,checkedIcon:(0,N.jsx)("span",{className:g.checkedIcon}),icon:(0,N.jsx)("span",{className:g.unCheckedIcon}),disabled:s,disableRipple:!0,disableFocusRipple:!0,focusRipple:!1,centerRipple:!1,disableTouchRipple:!0,style:x||{}})}),""!==t&&(0,N.jsxs)(z.Z,{htmlFor:r,className:"".concat(g.noMinWidthLabel," ").concat(p),children:[(0,N.jsx)("span",{children:t}),""!==u&&(0,N.jsx)("div",{className:g.tooltipContainer,children:(0,N.jsx)(y.Z,{title:u,placement:"top-start",children:(0,N.jsx)("div",{className:g.tooltip,children:(0,N.jsx)(B.byK,{})})})})]})]})})}));var P=n(27454);const _=(e,t,n,l,r,i,a,c,s,d,h)=>{const p=((e,t,n,o,l,r,i)=>{let a=[...e];r&&(a=e.filter((e=>i.includes(e.elementKey))));let c=t;return o&&(c-=45),l&&(c-=n),a.reduce(((e,t)=>t.width?e-t.width:e),c)/a.filter((e=>!e.width)).length})(e,t,n,l,r,c,s);return e.map(((e,t)=>{if(c&&!s.includes(e.elementKey))return null;const n=!e.enableSort||!e.enableSort;return(0,N.jsx)(u.sg,{dataKey:e.elementKey,headerClassName:"titleHeader ".concat(e.headerTextAlign?"text-".concat(e.headerTextAlign):""),headerRenderer:()=>(0,N.jsxs)(o.Fragment,{children:[d===e.elementKey&&(0,N.jsx)(o.Fragment,{children:"ASC"===h?(0,N.jsx)(C.Z,{}):(0,N.jsx)(j.Z,{})}),e.label]}),className:e.contentTextAlign?"text-".concat(e.contentTextAlign):"",cellRenderer:t=>{let{rowData:n}=t;const l=!!i&&i.includes(m()(n)?n:n[a]);return((e,t,n)=>{const l=m()(e)?e:x()(e,t.elementKey,null),r=t.renderFullObject?e:l,i=t.renderFunction?t.renderFunction(r):r;return(0,N.jsx)(o.Fragment,{children:(0,N.jsx)("span",{className:n?"selected":"",children:i})})})(n,e,l)},width:e.width||p,disableSort:n,defaultSortDirection:"ASC"},"col-tb-".concat(t.toString()))}))},D=(0,b.Z)((()=>(0,w.Z)({paper:{display:"flex",overflow:"auto",flexDirection:"column",padding:"0 16px 8px",boxShadow:"none",border:"#EAEDEE 1px solid",borderRadius:3,minHeight:200,overflowY:"scroll",position:"relative","&::-webkit-scrollbar":{width:0,height:3}},noBackground:{backgroundColor:"transparent",border:0},disabled:{backgroundColor:"#fbfafa",color:"#cccccc"},defaultPaperHeight:{height:"calc(100vh - 205px)"},loadingBox:{paddingTop:"100px",paddingBottom:"100px"},overlayColumnSelection:{position:"absolute",right:0,top:0},popoverContent:{maxHeight:250,overflowY:"auto",padding:"0 10px 10px"},shownColumnsLabel:{color:"#9c9c9c",fontSize:12,padding:10,borderBottom:"#eaeaea 1px solid",width:"100%"},checkAllWrapper:{marginTop:-16},"@global":{".rowLine":{borderBottom:"1px solid ".concat("#9c9c9c80"),height:40,fontSize:14,transitionDuration:.3,"&:focus":{outline:"initial"},"&:hover:not(.ReactVirtualized__Table__headerRow)":{userSelect:"none",backgroundColor:"#ececec",fontWeight:600,"&.canClick":{cursor:"pointer"},"&.canSelectText":{userSelect:"text"}},"& .selected":{fontWeight:600},"&:not(.deleted) .selected":{color:"#081C42"},"&.deleted .selected":{color:"#C51B3F"}},".headerItem":{userSelect:"none",fontWeight:700,fontSize:14,fontStyle:"initial",display:"flex",alignItems:"center",outline:"none"},".ReactVirtualized__Table__row":{width:"100% !important"},".ReactVirtualized__Table__headerRow":{fontWeight:700,fontSize:14,borderColor:"#39393980",textTransform:"initial"},".optionsAlignment":{textAlign:"center","& .min-icon":{width:16,height:16}},".text-center":{textAlign:"center"},".text-right":{textAlign:"right"},".progress-enabled":{paddingTop:3,display:"inline-block",margin:"0 10px",position:"relative",width:18,height:18},".progress-enabled > .MuiCircularProgress-root":{position:"absolute",left:0,top:3}},...I.lM,...I.FU})))((e=>{let{itemActions:t,columns:n,onSelect:p,records:g,isLoading:w,loadingMessage:b=(0,N.jsx)(l.Z,{component:"h3",children:"Loading..."}),entityName:j,selectedItems:C,idField:f,classes:y,radioSelection:S=!1,customEmptyMessage:k="",customPaperHeight:R="",noBackground:Z=!1,columnsSelector:T=!1,textSelectable:F=!1,columnsShown:z=[],onColumnChange:D=((e,t)=>{}),infiniteScrollConfig:H,sortConfig:K,autoScrollToBottom:L=!1,disabled:W=!1,onSelectAll:O,rowStyle:E,parentClassName:V="",tooltip:Y}=e;const U=(0,h.s0)(),[q,G]=(0,o.useState)(!1),[J,X]=o.useState(null),Q=t?t.find((e=>"view"===e.type)):null,$=e=>{G(!q),X(e.currentTarget)},ee=()=>{G(!1),X(null)};return(0,N.jsx)(a.ZP,{item:!0,xs:12,className:V,children:(0,N.jsx)(P.Z,{tooltip:Y||"",children:(0,N.jsxs)(c.Z,{style:{overflow:"hidden"},className:"".concat(y.paper," ").concat(Z?y.noBackground:"","\n ").concat(W?y.disabled:""," \n ").concat(""!==R?R:y.defaultPaperHeight),children:[w&&(0,N.jsxs)(a.ZP,{container:!0,className:y.loadingBox,children:[(0,N.jsx)(a.ZP,{item:!0,xs:12,style:{textAlign:"center"},children:b}),(0,N.jsx)(a.ZP,{item:!0,xs:12,children:(0,N.jsx)(s.Z,{})})]}),T&&!w&&g.length>0&&(0,N.jsx)("div",{className:y.overlayColumnSelection,children:(e=>(0,N.jsxs)(o.Fragment,{children:[(0,N.jsx)(r.Z,{"aria-describedby":"columnsSelector",color:"primary",onClick:$,size:"large",children:(0,N.jsx)(v.Z,{fontSize:"inherit"})}),(0,N.jsxs)(i.ZP,{anchorEl:J,id:"columnsSelector",open:q,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},onClose:ee,children:[(0,N.jsx)("div",{className:y.shownColumnsLabel,children:"Shown Columns"}),(0,N.jsx)("div",{className:y.popoverContent,children:e.map((e=>(0,N.jsx)(M,{label:e.label,checked:z.includes(e.elementKey),onChange:t=>{D(e.elementKey,t.target.checked)},id:"chbox-".concat(e.label),name:"chbox-".concat(e.label),value:e.label},"tableColumns-".concat(e.label))))})]})]}))(n)}),g&&!w&&g.length>0?(0,N.jsx)(u.b2,{isRowLoaded:e=>{let{index:t}=e;return!!g[t]},loadMoreRows:H?H.loadMoreRecords:()=>new Promise((()=>!0)),rowCount:H?H.recordsCount:g.length,children:e=>{let{onRowsRendered:l,registerChild:r}=e;return(0,N.jsx)(u.qj,{children:e=>{let{width:i,height:a}=e;const c=((e,t)=>{const n=45*t+15;return n<80?80:n>e?e:n})(i,t?t.filter((e=>"view"!==e.type)).length:0),s=!(!p||!C),h=!!(t&&t.length>1||t&&1===t.length&&"view"!==t[0].type);return(0,N.jsxs)(u.iA,{ref:r,disableHeader:!1,headerClassName:"headerItem",headerHeight:40,height:a+8,noRowsRenderer:()=>(0,N.jsx)(o.Fragment,{children:""!==k?k:"There are no ".concat(j," yet.")}),overscanRowCount:10,rowHeight:40,width:i,rowCount:g.length,rowGetter:e=>{let{index:t}=e;return g[t]},onRowClick:e=>{let{rowData:t}=e;(e=>{if(Q){const t=Q.sendOnlyId?e[f]:e;let n=!1;if(Q.disableButtonFunction&&Q.disableButtonFunction(t)&&(n=!0),Q.to&&!n)return void U("".concat(Q.to,"/").concat(t));Q.onClick&&!n&&Q.onClick(t)}})(t)},rowClassName:e=>"rowLine ".concat(Q?"canClick":""," ").concat(!Q&&F?"canSelectText":""," ").concat(E?E(e):""),onRowsRendered:l,sort:K?K.triggerSort:void 0,sortBy:K?K.currentSort:void 0,sortDirection:K?K.currentDirection:void 0,scrollToIndex:L?g.length-1:-1,rowStyle:e=>{if(E){const t=E(e);return"string"===typeof t?x()(I.xS,t,{}):t}return{}},children:[s&&(0,N.jsx)(u.sg,{headerRenderer:()=>(0,N.jsx)(o.Fragment,{children:O?(0,N.jsx)("div",{className:y.checkAllWrapper,children:(0,N.jsx)(M,{label:"",onChange:O,value:"all",id:"selectAll",name:"selectAll",checked:(null===C||void 0===C?void 0:C.length)===g.length})}):(0,N.jsx)(o.Fragment,{children:"Select"})}),dataKey:"select-".concat(f),width:45,disableSort:!0,cellRenderer:e=>{let{rowData:t}=e;const n=!!C&&C.includes(m()(t)?t:t[f]);return(0,N.jsx)(d.Z,{value:m()(t)?t:t[f],color:"primary",inputProps:{"aria-label":"secondary checkbox"},className:"TableCheckbox",checked:n,onChange:p,onClick:e=>{e.stopPropagation()},checkedIcon:(0,N.jsx)("span",{className:S?y.radioSelectedIcon:y.checkedIcon}),icon:(0,N.jsx)("span",{className:S?y.radioUnselectedIcon:y.unCheckedIcon})})}}),_(n,i,c,s,h,C||[],f,T,z,K?K.currentSort:"",K?K.currentDirection:void 0),h&&(0,N.jsx)(u.sg,{dataKey:f,width:c,headerClassName:"optionsAlignment",className:"optionsAlignment",cellRenderer:e=>{let{rowData:n}=e;const o=!!C&&C.includes(m()(n)?n:n[f]);return((e,t,n,o)=>e.map(((e,l)=>{if("view"===e.type)return null;const r="string"===typeof t?t:t[o];let i=!1;return e.disableButtonFunction&&e.disableButtonFunction(r)&&(i=!0),e.showLoaderFunction&&e.showLoaderFunction(r)?(0,N.jsx)("div",{className:"progress-enabled",children:(0,N.jsx)(B.aNw,{style:{width:18,height:18}},"actions-loader-".concat(e.type,"-").concat(l.toString()))}):(0,N.jsx)(A,{label:e.label,type:e.type,onClick:e.onClick,to:e.to,valueToSend:t,selected:n,idField:o,sendOnlyId:!!e.sendOnlyId,disabled:i},"actions-".concat(e.type,"-").concat(l.toString()))})))(t||[],n,o,f)}})]})}})}}):(0,N.jsx)(o.Fragment,{children:!w&&(0,N.jsx)("div",{id:"empty-results",children:""!==k?k:"There are no ".concat(j," yet.")})})]})})})}))}}]); +//# sourceMappingURL=216.ab33f243.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/216.ab33f243.chunk.js.map b/web-app/build/static/js/216.ab33f243.chunk.js.map new file mode 100644 index 00000000000..41f76f39888 --- /dev/null +++ b/web-app/build/static/js/216.ab33f243.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/216.ab33f243.chunk.js","mappings":"yVAIO,MAAMA,EAAa,UACbC,EAAW,U,eCFxB,MAgBA,EAhBkBC,IAAgC,IAA/B,OAAEC,GAAS,GAAcD,EAC1C,OACEE,EAAAA,EAAAA,KAAA,OACEC,MAAM,6BACNC,MAAM,KACNC,OAAO,KACPC,QAAQ,YAAWC,UAEnBL,EAAAA,EAAAA,KAAA,QACEM,KAAMP,EAASF,EAAWD,EAC1BW,EAAE,8JAEA,ECIV,EAhBoBT,IAAgC,IAA/B,OAAEC,GAAS,GAAcD,EAC5C,OACEE,EAAAA,EAAAA,KAAA,OACEC,MAAM,6BACNC,MAAM,KACNC,OAAO,KACPC,QAAQ,YAAWC,UAEnBL,EAAAA,EAAAA,KAAA,QACEM,KAAMP,EAASF,EAAWD,EAC1BW,EAAE,kGAEA,ECIV,EAhBwBT,IAAgC,IAA/B,OAAEC,GAAS,GAAcD,EAChD,OACEE,EAAAA,EAAAA,KAAA,OACEC,MAAM,6BACNC,MAAM,KACNC,OAAO,KACPC,QAAQ,YAAWC,UAEnBL,EAAAA,EAAAA,KAAA,QACEM,KAAMP,EAASF,EAAWD,EAC1BW,EAAE,wFAEA,ECDV,EAZyBC,IACvBR,EAAAA,EAAAA,KAAA,OACEC,MAAM,6BACNG,QAAQ,YACRK,UAAS,WACTH,KAAM,kBACFE,EAAKH,UAETL,EAAAA,EAAAA,KAAA,QAAMO,EAAE,iJ,eCwBZ,MA8HA,GAAeG,EAAAA,EAAAA,IA9HAC,KACbC,EAAAA,EAAAA,GAAa,CACXC,QAAS,CACPC,OAAQ,SAEVC,eAAgB,CACd,oCAAqC,CACnCC,OAAQ,cACRC,OAAQ,kBACRC,QAAS,WAqHjB,EAtE0BpB,IAWJ,IAXK,KACzBqB,EAAI,QACJC,EAAO,YACPC,EAAW,QACXC,EAAO,SACPzB,EAAQ,GACR0B,EAAE,WACFC,GAAa,EAAK,SAClBC,GAAW,EAAK,QAChBC,EAAO,MACPC,GACc7B,EACd,MAAM8B,EAAaJ,EAAaH,EAAYC,GAAWD,EAEjDQ,EAAuB,kBAATV,EA3CHW,EAACX,EAActB,KAChC,OAAQsB,GACN,IAAK,OAoBL,IAAK,UACH,OAAOnB,EAAAA,EAAAA,KAAC+B,EAAAA,IAAW,IAnBrB,IAAK,OACH,OAAO/B,EAAAA,EAAAA,KAACgC,EAAAA,IAAQ,IAClB,IAAK,SACH,OAAOhC,EAAAA,EAAAA,KAACiC,EAAAA,IAAS,IACnB,IAAK,cACH,OAAOjC,EAAAA,EAAAA,KAACkC,EAAAA,IAAe,IACzB,IAAK,QACH,OAAOlC,EAAAA,EAAAA,KAACmC,EAAAA,IAAS,IACnB,IAAK,QACH,OAAOnC,EAAAA,EAAAA,KAACoC,EAAS,CAACrC,OAAQF,IAC5B,IAAK,UACH,OAAOG,EAAAA,EAAAA,KAACqC,EAAW,CAACtC,OAAQF,IAC9B,IAAK,WACH,OAAOG,EAAAA,EAAAA,KAACsC,EAAAA,IAAY,IACtB,IAAK,UACH,OAAOtC,EAAAA,EAAAA,KAACuC,EAAW,CAACxC,OAAQF,IAC9B,IAAK,SACH,OAAOG,EAAAA,EAAAA,KAACwC,EAAe,IAK3B,OAAO,IAAI,EAiB6BV,CAAWX,EAAMtB,GAAYsB,EACrE,IAAIsB,GACFzC,EAAAA,EAAAA,KAAC0C,EAAAA,EAAU,CACT,aAA4B,kBAATvB,EAAoBA,EAAO,GAC9CwB,KAAM,QACNlC,UAAS,GAAAmC,OAAKlB,EAAQb,QAAO,KAAA+B,OAAInB,EAAWC,EAAQX,eAAiB,IACrEU,SAAUA,EACVL,QACEA,EACKyB,IACCA,EAAEC,kBACGrB,EAGHoB,EAAEE,iBAFF3B,EAAQQ,EAGV,EAEF,IAAM,KAEZoB,GAAI,CACF9C,MAAO,OACPC,OAAQ,QACRE,SAEDwB,IAQL,OAJIF,GAAmB,KAAVA,IACXc,GAAgBzC,EAAAA,EAAAA,KAACiD,EAAAA,EAAO,CAACC,MAAOvB,EAAMtB,SAAEoC,KAGtCrB,EACKqB,EAGLU,IAAS5B,GACNE,EAaEgB,GAXHzC,EAAAA,EAAAA,KAACoD,EAAAA,GAAI,CACH7B,GAAE,GAAAqB,OAAKrB,EAAE,KAAAqB,OAAIhB,GACbR,QAAUyB,IACRA,EAAEC,iBAAiB,EACnBzC,SAEDoC,IAQF,IAAI,I,0BCjHb,MAsFA,GAAe/B,EAAAA,EAAAA,IAtFC2C,IACdzC,EAAAA,EAAAA,GAAa,IACR0C,EAAAA,MACAC,EAAAA,MACAC,EAAAA,GACHC,eAAgB,IACXH,EAAAA,GAAWG,eACdC,QAAS,OACTC,eAAgB,aAChBC,WAAY,SACZ9C,OAAQ,SACR+C,aAAc,EACdC,UAAW,UACXC,SAAU,UAEZC,YAAa,CACXC,UAAW,MAsEjB,EAlEwBnE,IAcF,IAdG,MACvB6B,EAAK,SACLuC,EAAQ,MACRC,EAAK,GACLC,EAAE,KACFC,EAAI,QACJC,GAAU,EAAK,SACf7C,GAAW,EAAK,YAChBuC,GAAc,EAAK,QACnBO,EAAU,GAAE,qBACZC,EAAuB,GAAE,uBACzBC,EAAsB,QACtB/C,EAAO,UACPjB,GACcX,EACd,OACEE,EAAAA,EAAAA,KAAC0E,EAAAA,SAAc,CAAArE,UACbsE,EAAAA,EAAAA,MAACC,EAAAA,GAAI,CACHC,MAAI,EACJC,GAAI,GACJrE,UAAS,GAAAmC,OAAKlB,EAAQ+B,eAAc,KAAAb,OAClCoB,EAActC,EAAQsC,YAAc,GAAE,KAAApB,OACpCnC,GAAwB,IAAKJ,SAAA,EAEjCL,EAAAA,EAAAA,KAAA,OAAAK,UACEL,EAAAA,EAAAA,KAAC+E,EAAAA,EAAQ,CACPV,KAAMA,EACND,GAAIA,EACJD,MAAOA,EACPa,MAAM,UACNC,WAAY,CAAE,aAAc,sBAC5BX,QAASA,EACTJ,SAAUA,EACVgB,aAAalF,EAAAA,EAAAA,KAAA,QAAMS,UAAWiB,EAAQwD,cACtCrD,MAAM7B,EAAAA,EAAAA,KAAA,QAAMS,UAAWiB,EAAQyD,gBAC/B1D,SAAUA,EACV2D,eAAa,EACbC,oBAAkB,EAClBC,aAAa,EACbC,cAAc,EACdC,oBAAkB,EAClBC,MAAOhB,GAA0B,CAAC,MAG3B,KAAV9C,IACCgD,EAAAA,EAAAA,MAACe,EAAAA,EAAU,CACTC,QAASvB,EACT3D,UAAS,GAAAmC,OAAKlB,EAAQkE,gBAAe,KAAAhD,OAAI4B,GAAuBnE,SAAA,EAEhEL,EAAAA,EAAAA,KAAA,QAAAK,SAAOsB,IACM,KAAZ4C,IACCvE,EAAAA,EAAAA,KAAA,OAAKS,UAAWiB,EAAQmE,iBAAiBxF,UACvCL,EAAAA,EAAAA,KAACiD,EAAAA,EAAO,CAACC,MAAOqB,EAASuB,UAAU,YAAWzF,UAC5CL,EAAAA,EAAAA,KAAA,OAAKS,UAAWiB,EAAQ6C,QAAQlE,UAC9BL,EAAAA,EAAAA,KAAC+F,EAAAA,IAAQ,iBAQR,I,eCTrB,MAkMMC,EAAqBA,CACzBC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAhF,EACAiF,EACAC,EACAC,EACAC,KAEA,MAAMC,EAhDoBC,EAC1BX,EACAC,EACAC,EACAC,EACAC,EACAE,EACAC,KAEA,IAAIK,EAAY,IAAIZ,GAEhBM,IACFM,EAAYZ,EAAQhF,QAAQ6F,GAC1BN,EAAaO,SAASD,EAAOE,eAIjC,IAAIC,EAAef,EAcnB,OAZIE,IACFa,GA7CgB,IAgDdZ,IACFY,GAAgBd,GAGAU,EAAUK,QAAO,CAACC,EAAOC,IAClCA,EAAUlH,MAAQiH,EAAQC,EAAUlH,MAAQiH,GAClDF,GAEkBJ,EAAU5F,QAAQoG,IAAQA,EAAGnH,QAAOoH,MAAM,EAiBvCV,CACtBX,EACAC,EACAC,EACAC,EACAC,EACAE,EACAC,GAEF,OAAOP,EAAQsB,KAAI,CAACT,EAAkBU,KACpC,GAAIjB,IAAoBC,EAAaO,SAASD,EAAOE,YACnD,OAAO,KAGT,MAAMS,GAAcX,EAAOY,aAAcZ,EAAOY,WAEhD,OAEE1H,EAAAA,EAAAA,KAAC2H,EAAAA,GAAM,CAELC,QAASd,EAAOE,WAChBa,gBAAe,eAAAjF,OACbkE,EAAOgB,gBAAe,QAAAlF,OAAWkE,EAAOgB,iBAAoB,IAE9DC,eAAgBA,KACdpD,EAAAA,EAAAA,MAACqD,EAAAA,SAAQ,CAAA3H,SAAA,CACNoG,IAAeK,EAAOE,aACrBhH,EAAAA,EAAAA,KAACgI,EAAAA,SAAQ,CAAA3H,SACY,QAAlBqG,GACC1G,EAAAA,EAAAA,KAACiI,EAAAA,EAAe,KAEhBjI,EAAAA,EAAAA,KAACkI,EAAAA,EAAiB,MAIvBpB,EAAOnF,SAGZlB,UACEqG,EAAOqB,iBAAgB,QAAAvF,OAAWkE,EAAOqB,kBAAqB,GAEhEC,aAActI,IAAkB,IAAjB,QAAEuI,GAASvI,EACxB,MAAMwI,IAAahC,GACfA,EAAcS,SACZ5D,IAASkF,GAAWA,EAAUA,EAAQ/G,IAG5C,MArHgBiH,EACxBF,EACAvB,EACAwB,KAEA,MAAME,EAAcrF,IAASkF,GACzBA,EACAI,IAAIJ,EAASvB,EAAOE,WAAa,MAC/B0B,EAAc5B,EAAO6B,iBAAmBN,EAAUG,EAElDI,EAAgB9B,EAAO+B,eACzB/B,EAAO+B,eAAeH,GACtBA,EAEJ,OACE1I,EAAAA,EAAAA,KAACgI,EAAAA,SAAQ,CAAA3H,UACPL,EAAAA,EAAAA,KAAA,QAAMS,UAAW6H,EAAa,WAAa,GAAGjI,SAAEuI,KACvC,EAoGEL,CAAkBF,EAASvB,EAAQwB,EAAW,EAEvDpI,MAAO4G,EAAO5G,OAASyG,EACvBc,YAAaA,EACbqB,qBAAsB,OAAM,UAAAlG,OAhCb4E,EAAMuB,YAiCrB,GAEJ,EA2bJ,GAAerI,EAAAA,EAAAA,IA9rBAC,KACbC,EAAAA,EAAAA,GAAa,CACXoI,MAAO,CACLtF,QAAS,OACTuF,SAAU,OACVC,cAAe,SACfC,QAAS,aACTC,UAAW,OACXC,OAAQ,oBACRC,aAAc,EACdC,UAAW,IACXC,UAAW,SACXC,SAAU,WACV,uBAAwB,CACtBvJ,MAAO,EACPC,OAAQ,IAGZuJ,aAAc,CACZC,gBAAiB,cACjBN,OAAQ,GAEV5H,SAAU,CACRkI,gBAAiB,UACjB3E,MAAO,WAET4E,mBAAoB,CAClBzJ,OAAQ,uBAEV0J,WAAY,CACVC,WAAY,QACZC,cAAe,SAEjBC,uBAAwB,CACtBP,SAAU,WACVQ,MAAO,EACPC,IAAK,GAEPC,eAAgB,CACdC,UAAW,IACXZ,UAAW,OACXL,QAAS,eAEXkB,kBAAmB,CACjBrF,MAAO,UACPsF,SAAU,GACVnB,QAAS,GACToB,aAAc,oBACdrK,MAAO,QAETsK,gBAAiB,CACfvG,WAAY,IAEd,UAAW,CACT,WAAY,CACVsG,aAAa,aAAD3H,OAzDA,aA0DZzC,OAAQ,GACRmK,SAAU,GACVG,mBAAoB,GACpB,UAAW,CACTC,QAAS,WAEX,mDAAoD,CAClDC,WAAY,OACZhB,gBAAiB,UACjBiB,WAAY,IACZ,aAAc,CACZ5J,OAAQ,WAEV,kBAAmB,CACjB2J,WAAY,SAGhB,cAAe,CACbC,WAAY,KAEd,4BAA6B,CAC3B5F,MAAO,WAET,sBAAuB,CACrBA,MAAO,YAGX,cAAe,CACb2F,WAAY,OACZC,WAAY,IACZN,SAAU,GACVO,UAAW,UACXnH,QAAS,OACTE,WAAY,SACZ8G,QAAS,QAEX,gCAAiC,CAC/BxK,MAAO,mBAET,sCAAuC,CACrC0K,WAAY,IACZN,SAAU,GACVQ,YAAa,YACbC,cAAe,WAEjB,oBAAqB,CACnBC,UAAW,SACX,cAAe,CACb9K,MAAO,GACPC,OAAQ,KAGZ,eAAgB,CACd6K,UAAW,UAEb,cAAe,CACbA,UAAW,SAEb,oBAAqB,CACnBlB,WAAY,EACZpG,QAAS,eACT5C,OAAQ,SACR2I,SAAU,WACVvJ,MAAO,GACPC,OAAQ,IAEV,gDAAiD,CAC/CsJ,SAAU,WACVwB,KAAM,EACNf,IAAK,OAGN1G,EAAAA,MACA0H,EAAAA,MA6jBP,EAlXqBC,IA2BK,IA3BJ,YACpBC,EAAW,QACXnF,EAAO,SACPoF,EAAQ,QACRC,EAAO,UACPC,EAAS,eACTC,GAAiBxL,EAAAA,EAAAA,KAACyL,EAAAA,EAAU,CAACC,UAAU,KAAIrL,SAAC,eAAuB,WACnEsL,EAAU,cACVrF,EAAa,QACbhF,EAAO,QACPI,EAAO,eACPkK,GAAiB,EAAK,mBACtBC,EAAqB,GAAE,kBACvBC,EAAoB,GAAE,aACtBpC,GAAe,EAAK,gBACpBnD,GAAkB,EAAK,eACvBwF,GAAiB,EAAK,aACtBvF,EAAe,GAAE,eACjBwF,EAAiBA,EAAClF,EAAgBmF,KAAjBD,GAAsC,qBACvDE,EAAoB,WACpBC,EAAU,mBACVC,GAAqB,EAAK,SAC1B3K,GAAW,EAAK,YAChB4K,EAAW,SACXC,EAAQ,gBACRC,EAAkB,GAAE,QACpBhI,GACkB4G,EAClB,MAAMqB,GAAWC,EAAAA,EAAAA,OAEVC,EAAoBC,IAAyBC,EAAAA,EAAAA,WAAkB,IAC/DC,EAAUC,GAAepI,EAAAA,SAAoB,MAE9CqI,EAAW3B,EACbA,EAAY4B,MAAM3F,GAAmB,SAAZA,EAAGlG,OAC5B,KAyBE8L,EAAuBC,IAC3BP,GAAuBD,GACvBI,EAAYI,EAAMC,cAAc,EAG5BC,GAAsBA,KAC1BT,GAAsB,GACtBG,EAAY,KAAK,EAmDnB,OACE9M,EAAAA,EAAAA,KAAC4E,EAAAA,GAAI,CAACC,MAAI,EAACC,GAAI,GAAIrE,UAAW8L,EAAgBlM,UAC5CL,EAAAA,EAAAA,KAACqN,EAAAA,EAAc,CAAC9I,QAASA,GAAoB,GAAGlE,UAC9CsE,EAAAA,EAAAA,MAAC2I,EAAAA,EAAK,CACJ7H,MAAO,CAAEwD,SAAU,UACnBxI,UAAS,GAAAmC,OAAKlB,EAAQsH,MAAK,KAAApG,OACzB8G,EAAehI,EAAQgI,aAAe,GAAE,cAAA9G,OAE1CnB,EAAWC,EAAQD,SAAW,GAAE,eAAAmB,OAEV,KAAtBkJ,EACIA,EACApK,EAAQkI,oBACXvJ,SAAA,CAEAkL,IACC5G,EAAAA,EAAAA,MAACC,EAAAA,GAAI,CAAC2I,WAAS,EAAC9M,UAAWiB,EAAQmI,WAAWxJ,SAAA,EAC5CL,EAAAA,EAAAA,KAAC4E,EAAAA,GAAI,CAACC,MAAI,EAACC,GAAI,GAAIW,MAAO,CAAEuF,UAAW,UAAW3K,SAC/CmL,KAEHxL,EAAAA,EAAAA,KAAC4E,EAAAA,GAAI,CAACC,MAAI,EAACC,GAAI,GAAGzE,UAChBL,EAAAA,EAAAA,KAACwN,EAAAA,EAAc,SAIpBjH,IAAoBgF,GAAaD,EAAQhE,OAAS,IACjDtH,EAAAA,EAAAA,KAAA,OAAKS,UAAWiB,EAAQsI,uBAAuB3J,SA1E/B4F,KAEtBtB,EAAAA,EAAAA,MAACqD,EAAAA,SAAQ,CAAA3H,SAAA,EACPL,EAAAA,EAAAA,KAAC0C,EAAAA,EAAU,CACT,mBAAkB,kBAClBsC,MAAM,UACN5D,QAAS6L,EACTtK,KAAK,QAAOtC,UAEZL,EAAAA,EAAAA,KAACyN,EAAAA,EAAc,CAACnD,SAAS,eAE3B3F,EAAAA,EAAAA,MAAC+I,EAAAA,GAAO,CACNb,SAAUA,EACVzI,GAAI,kBACJuJ,KAAMjB,EACNkB,aAAc,CACZC,SAAU,SACVC,WAAY,QAEdC,gBAAiB,CACfF,SAAU,MACVC,WAAY,QAEdE,QAASZ,GAAoB/M,SAAA,EAE7BL,EAAAA,EAAAA,KAAA,OAAKS,UAAWiB,EAAQ2I,kBAAkBhK,SAAC,mBAC3CL,EAAAA,EAAAA,KAAA,OAAKS,UAAWiB,EAAQyI,eAAe9J,SACpC4F,EAAQsB,KAAKT,IAEV9G,EAAAA,EAAAA,KAACiO,EAAe,CAEdtM,MAAOmF,EAAOnF,MACd2C,QAASkC,EAAaO,SAASD,EAAOE,YACtC9C,SAAWrB,IACTmJ,EAAelF,EAAOE,WAAanE,EAAEqL,OAAO5J,QAAQ,EAEtDF,GAAE,SAAAxB,OAAWkE,EAAOnF,OACpB0C,KAAI,SAAAzB,OAAWkE,EAAOnF,OACtBwC,MAAO2C,EAAOnF,OAAM,gBAAAiB,OARCkE,EAAOnF,kBA6C/BwM,CAAiBlI,KAGrBqF,IAAYC,GAAaD,EAAQhE,OAAS,GAEzCtH,EAAAA,EAAAA,KAACoO,EAAAA,GAAc,CACbC,YAAaC,IAAA,IAAC,MAAE9G,GAAO8G,EAAA,QAAOhD,EAAQ9D,EAAM,EAC5C+G,aACErC,EACIA,EAAqBsC,gBACrB,IAAM,IAAIC,SAAQ,KAAM,IAE9BC,SACExC,EACIA,EAAqByC,aACrBrD,EAAQhE,OACbjH,SAEAuO,IAAA,IAAC,eAAEC,EAAc,cAAEC,GAAeF,EAAA,OAEjC5O,EAAAA,EAAAA,KAAC+O,EAAAA,GAAS,CAAA1O,SACP2O,IAA6B,IAA5B,MAAE9O,EAAK,OAAEC,GAAa6O,EACtB,MAAMC,EAvLGC,EAAChJ,EAAwBiJ,KACpD,MACMC,EAA6B,GAAfD,EAAoB,GAExC,OAAIC,EAHqB,MAOrBA,EAAclJ,EACTA,EAGFkJ,CAAW,EA2KqBF,CACnBhP,EACAkL,EACIA,EAAYnK,QAAQoG,GAAmB,SAAZA,EAAGlG,OAAiBmG,OAC/C,GAEAlB,KAAwBiF,IAAY/E,GACpC+I,KACHjE,GAAeA,EAAY9D,OAAS,GACpC8D,GACwB,IAAvBA,EAAY9D,QACY,SAAxB8D,EAAY,GAAGjK,MAEnB,OAEEwD,EAAAA,EAAAA,MAAC2K,EAAAA,GAAK,CACJC,IAAKT,EACLU,eAAe,EACf3H,gBAAiB,aACjB4H,aAAc,GACdtP,OAAQA,EAAS,EACjBuP,eAAgBA,KACd1P,EAAAA,EAAAA,KAACgI,EAAAA,SAAQ,CAAA3H,SACiB,KAAvBwL,EACGA,EAAkB,gBAAAjJ,OACF+I,EAAU,WAGlCgE,iBAAkB,GAClBC,UAAW,GACX1P,MAAOA,EACPwO,SAAUpD,EAAQhE,OAClBuI,UAAWC,IAAA,IAAC,MAAEtI,GAAOsI,EAAA,OAAKxE,EAAQ9D,EAAM,EACxCuI,WAAYC,IAAkB,IAAjB,QAAE3H,GAAS2H,EAnKzBC,KACnB,GAAIlD,EAAU,CACZ,MAAMnL,EAAamL,EAASvL,WAAayO,EAAQ3O,GAAW2O,EAE5D,IAAIxO,GAAW,EAQf,GANIsL,EAASmD,uBACPnD,EAASmD,sBAAsBtO,KACjCH,GAAW,GAIXsL,EAASxL,KAAOE,EAElB,YADA+K,EAAS,GAAD5J,OAAImK,EAASxL,GAAE,KAAAqB,OAAIhB,IAIzBmL,EAAS3L,UAAYK,GACvBsL,EAAS3L,QAAQQ,EAErB,GAgJsBuO,CAAY9H,EAAQ,EAEtB+H,aAAeC,GAAC,WAAAzN,OACHmK,EAAW,WAAa,GAAE,KAAAnK,QAClCmK,GAAYhB,EAAiB,gBAAkB,GAAE,KAAAnJ,OAChD0J,EAAWA,EAAS+D,GAAK,IAE/BxB,eAAgBA,EAChByB,KAAMnE,EAAaA,EAAWoE,iBAAcC,EAC5CC,OAAQtE,EAAaA,EAAWuE,iBAAcF,EAC9C9J,cACEyF,EAAaA,EAAWwE,sBAAmBH,EAE7CI,cACExE,EAAqBd,EAAQhE,OAAS,GAAK,EAE7CgF,SAAW+D,IACT,GAAI/D,EAAU,CACZ,MAAMuE,EAAgBvE,EAAS+D,GAE/B,MAA6B,kBAAlBQ,EACFpI,IACLqI,EAAAA,GACAD,EACA,CAAC,GAIEA,CACT,CAEA,MAAO,CAAC,CAAC,EACTxQ,SAAA,CAED+F,IAECpG,EAAAA,EAAAA,KAAC2H,EAAAA,GAAM,CACLI,eAAgBA,KACd/H,EAAAA,EAAAA,KAACgI,EAAAA,SAAQ,CAAA3H,SACNgM,GACCrM,EAAAA,EAAAA,KAAA,OAAKS,UAAWiB,EAAQ8I,gBAAgBnK,UACtCL,EAAAA,EAAAA,KAACiO,EAAe,CACdtM,MAAO,GACPuC,SAAUmI,EACVlI,MAAM,MACNC,GAAI,YACJC,KAAM,YACNC,SACe,OAAbgC,QAAa,IAAbA,OAAa,EAAbA,EAAegB,UAAWgE,EAAQhE,YAKxCtH,EAAAA,EAAAA,KAACgI,EAAAA,SAAQ,CAAA3H,SAAC,aAIhBuH,QAAO,UAAAhF,OAAYtB,GACnBpB,MA3cR,GA4cQuH,aAAW,EACXW,aAAc2I,IAAkB,IAAjB,QAAE1I,GAAS0I,EACxB,MAAMzI,IAAahC,GACfA,EAAcS,SACZ5D,IAASkF,GACLA,EACAA,EAAQ/G,IAIlB,OACEtB,EAAAA,EAAAA,KAAC+E,EAAAA,EAAQ,CACPZ,MACEhB,IAASkF,GACLA,EACAA,EAAQ/G,GAEd0D,MAAM,UACNC,WAAY,CACV,aAAc,sBAEhBxE,UAAU,gBACV6D,QAASgE,EACTpE,SAAUmH,EACVjK,QAAUyB,IACRA,EAAEC,iBAAiB,EAErBoC,aACElF,EAAAA,EAAAA,KAAA,QACES,UACEmL,EACIlK,EAAQsP,kBACRtP,EAAQwD,cAIlBrD,MACE7B,EAAAA,EAAAA,KAAA,QACES,UACEmL,EACIlK,EAAQuP,oBACRvP,EAAQyD,iBAIlB,IAKTa,EACCC,EACA/F,EACA+O,EACA7I,EACAiJ,EACA/I,GAAiB,GACjBhF,EACAiF,EACAC,EACA2F,EAAaA,EAAWuE,YAAc,GACtCvE,EAAaA,EAAWwE,sBAAmBH,GAE5CnB,IAECrP,EAAAA,EAAAA,KAAC2H,EAAAA,GAAM,CACLC,QAAStG,EACTpB,MAAO+O,EACPpH,gBAAgB,mBAChBpH,UAAU,mBACV2H,aAAc8I,IAAkB,IAAjB,QAAE7I,GAAS6I,EACxB,MAAM5I,IAAahC,GACfA,EAAcS,SACZ5D,IAASkF,GACLA,EACAA,EAAQ/G,IAGlB,MAvZP6P,EACrBC,EACA/P,EACAxB,EACAyB,IAEO8P,EAAQ7J,KAAI,CAAC8J,EAAqB7J,KACvC,GAAoB,SAAhB6J,EAAOlQ,KACT,OAAO,KAGT,MAAMmQ,EACmB,kBAAhBjQ,EAA2BA,EAAcA,EAAYC,GAE9D,IAAIG,GAAW,EAQf,OANI4P,EAAOnB,uBACLmB,EAAOnB,sBAAsBoB,KAC/B7P,GAAW,GAIX4P,EAAOE,oBACLF,EAAOE,mBAAmBD,IAE1BtR,EAAAA,EAAAA,KAAA,OAAKS,UAAW,mBAAmBJ,UACjCL,EAAAA,EAAAA,KAACwR,EAAAA,IAAM,CACL/L,MAAO,CAAEvF,MAAO,GAAIC,OAAQ,KAAK,kBAAAyC,OACVyO,EAAOlQ,KAAI,KAAAyB,OAAI4E,EAAMuB,gBAQpD/I,EAAAA,EAAAA,KAACyR,EAAiB,CAChB9P,MAAO0P,EAAO1P,MACdR,KAAMkQ,EAAOlQ,KACbC,QAASiQ,EAAOjQ,QAChBG,GAAI8P,EAAO9P,GACXF,YAAaA,EACbxB,SAAUA,EAEVyB,QAASA,EACTE,aAAc6P,EAAO7P,WACrBC,SAAUA,GAAS,WAAAmB,OAHHyO,EAAOlQ,KAAI,KAAAyB,OAAI4E,EAAMuB,YAIrC,IAwW6BoI,CACL/F,GAAe,GACf/C,EACAC,EACAhH,EACD,MAID,GAGF,KAIhBtB,EAAAA,EAAAA,KAACgI,EAAAA,SAAQ,CAAA3H,UACLkL,IACAvL,EAAAA,EAAAA,KAAA,OAAKoE,GAAI,gBAAgB/D,SACC,KAAvBwL,EACGA,EAAkB,gBAAAjJ,OACF+I,EAAU,mBAOrC,G","sources":["screens/Console/Common/TableWrapper/TableActionIcons/common.ts","screens/Console/Common/TableWrapper/TableActionIcons/CloudIcon.tsx","screens/Console/Common/TableWrapper/TableActionIcons/ConsoleIcon.tsx","screens/Console/Common/TableWrapper/TableActionIcons/DisableIcon.tsx","screens/Console/Common/TableWrapper/TableActionIcons/FormatDriveIcon.tsx","screens/Console/Common/TableWrapper/TableActionButton.tsx","screens/Console/Common/FormComponents/CheckboxWrapper/CheckboxWrapper.tsx","screens/Console/Common/TableWrapper/TableWrapper.tsx"],"sourcesContent":["export interface IIcon {\n active: boolean;\n}\n\nexport const unSelected = \"#081C42\";\nexport const selected = \"#081C42\";\n","import React from \"react\";\nimport { IIcon, selected, unSelected } from \"./common\";\n\nconst CloudIcon = ({ active = false }: IIcon) => {\n return (\n \n \n \n );\n};\n\nexport default CloudIcon;\n","import React from \"react\";\nimport { IIcon, selected, unSelected } from \"./common\";\n\nconst ConsoleIcon = ({ active = false }: IIcon) => {\n return (\n \n \n \n );\n};\n\nexport default ConsoleIcon;\n","import React from \"react\";\nimport { IIcon, selected, unSelected } from \"./common\";\n\nconst DescriptionIcon = ({ active = false }: IIcon) => {\n return (\n \n \n \n );\n};\n\nexport default DescriptionIcon;\n","import React, { SVGProps } from \"react\";\n\nconst FormatDriveIcon = (props: SVGProps) => (\n \n \n \n);\n\nexport default FormatDriveIcon;\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport isString from \"lodash/isString\";\nimport { Link } from \"react-router-dom\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IconButton, Tooltip } from \"@mui/material\";\nimport CloudIcon from \"./TableActionIcons/CloudIcon\";\nimport ConsoleIcon from \"./TableActionIcons/ConsoleIcon\";\nimport DisableIcon from \"./TableActionIcons/DisableIcon\";\nimport FormatDriveIcon from \"./TableActionIcons/FormatDriveIcon\";\nimport {\n DownloadIcon,\n EditIcon,\n IAMPoliciesIcon,\n PreviewIcon,\n ShareIcon,\n TrashIcon,\n} from \"mds\";\n\nconst styles = () =>\n createStyles({\n spacing: {\n margin: \"0 8px\",\n },\n buttonDisabled: {\n \"&.MuiButtonBase-root.Mui-disabled\": {\n cursor: \"not-allowed\",\n filter: \"grayscale(100%)\",\n opacity: \"30%\",\n },\n },\n });\n\ninterface IActionButton {\n label?: string;\n type: string | React.ReactNode;\n onClick?: (id: string) => any;\n to?: string;\n valueToSend: any;\n selected: boolean;\n sendOnlyId?: boolean;\n idField: string;\n disabled: boolean;\n classes: any;\n}\n\nconst defineIcon = (type: string, selected: boolean) => {\n switch (type) {\n case \"view\":\n return ;\n case \"edit\":\n return ;\n case \"delete\":\n return ;\n case \"description\":\n return ;\n case \"share\":\n return ;\n case \"cloud\":\n return ;\n case \"console\":\n return ;\n case \"download\":\n return ;\n case \"disable\":\n return ;\n case \"format\":\n return ;\n case \"preview\":\n return ;\n }\n\n return null;\n};\n\nconst TableActionButton = ({\n type,\n onClick,\n valueToSend,\n idField,\n selected,\n to,\n sendOnlyId = false,\n disabled = false,\n classes,\n label,\n}: IActionButton) => {\n const valueClick = sendOnlyId ? valueToSend[idField] : valueToSend;\n\n const icon = typeof type === \"string\" ? defineIcon(type, selected) : type;\n let buttonElement = (\n {\n e.stopPropagation();\n if (!disabled) {\n onClick(valueClick);\n } else {\n e.preventDefault();\n }\n }\n : () => null\n }\n sx={{\n width: \"30px\",\n height: \"30px\",\n }}\n >\n {icon}\n \n );\n\n if (label && label !== \"\") {\n buttonElement = {buttonElement};\n }\n\n if (onClick) {\n return buttonElement;\n }\n\n if (isString(to)) {\n if (!disabled) {\n return (\n {\n e.stopPropagation();\n }}\n >\n {buttonElement}\n \n );\n }\n\n return buttonElement;\n }\n\n return null;\n};\n\nexport default withStyles(styles)(TableActionButton);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport { Checkbox, Grid, InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n checkboxIcons,\n fieldBasic,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\n\ninterface CheckBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n overrideLabelClasses?: string;\n overrideCheckboxStyles?: React.CSSProperties;\n index?: number;\n noTopMargin?: boolean;\n checked: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n ...checkboxIcons,\n fieldContainer: {\n ...fieldBasic.fieldContainer,\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n margin: \"15px 0\",\n marginBottom: 0,\n flexBasis: \"initial\",\n flexWrap: \"nowrap\",\n },\n noTopMargin: {\n marginTop: 0,\n },\n });\n\nconst CheckboxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n checked = false,\n disabled = false,\n noTopMargin = false,\n tooltip = \"\",\n overrideLabelClasses = \"\",\n overrideCheckboxStyles,\n classes,\n className,\n}: CheckBoxProps) => {\n return (\n \n \n
\n }\n icon={}\n disabled={disabled}\n disableRipple\n disableFocusRipple\n focusRipple={false}\n centerRipple={false}\n disableTouchRipple\n style={overrideCheckboxStyles || {}}\n />\n
\n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(CheckboxWrapper);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { Fragment, useState } from \"react\";\nimport {\n Checkbox,\n Grid,\n IconButton,\n LinearProgress,\n Paper,\n Popover,\n Typography,\n} from \"@mui/material\";\nimport { useNavigate } from \"react-router-dom\";\nimport { AutoSizer, Column, InfiniteLoader, Table } from \"react-virtualized\";\nimport get from \"lodash/get\";\nimport isString from \"lodash/isString\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport ViewColumnIcon from \"@mui/icons-material/ViewColumn\";\nimport ArrowDropDownIcon from \"@mui/icons-material/ArrowDropDown\";\nimport ArrowDropUpIcon from \"@mui/icons-material/ArrowDropUp\";\nimport TableActionButton from \"./TableActionButton\";\nimport CheckboxWrapper from \"../FormComponents/CheckboxWrapper/CheckboxWrapper\";\nimport {\n checkboxIcons,\n radioIcons,\n TableRowPredefStyles,\n} from \"../FormComponents/common/styleLibrary\";\nimport { Loader } from \"mds\";\nimport TooltipWrapper from \"../TooltipWrapper/TooltipWrapper\";\n\n//Interfaces for table Items\n\nexport interface ItemActions {\n label?: string;\n type: string | any;\n to?: string;\n sendOnlyId?: boolean;\n disableButtonFunction?: (itemValue: any) => boolean;\n showLoaderFunction?: (itemValue: any) => boolean;\n\n onClick?(valueToSend: any): any;\n}\n\ninterface IColumns {\n label: string;\n elementKey?: string;\n renderFunction?: (input: any) => any;\n renderFullObject?: boolean;\n globalClass?: any;\n rowClass?: any;\n width?: number;\n headerTextAlign?: string;\n contentTextAlign?: string;\n enableSort?: boolean;\n}\n\ninterface IInfiniteScrollConfig {\n loadMoreRecords: (indexElements: {\n startIndex: number;\n stopIndex: number;\n }) => Promise;\n recordsCount: number;\n}\n\ninterface ISortConfig {\n triggerSort: (val: any) => any;\n currentSort: string;\n currentDirection: \"ASC\" | \"DESC\" | undefined;\n}\n\ninterface TableWrapperProps {\n itemActions?: ItemActions[] | null;\n columns: IColumns[];\n onSelect?: (e: React.ChangeEvent) => any;\n idField: string;\n isLoading: boolean;\n loadingMessage?: React.ReactNode;\n records: any[];\n classes: any;\n entityName: string;\n selectedItems?: string[];\n radioSelection?: boolean;\n customEmptyMessage?: string;\n customPaperHeight?: string;\n noBackground?: boolean;\n columnsSelector?: boolean;\n textSelectable?: boolean;\n columnsShown?: string[];\n onColumnChange?: (column: string, state: boolean) => any;\n autoScrollToBottom?: boolean;\n infiniteScrollConfig?: IInfiniteScrollConfig;\n sortConfig?: ISortConfig;\n disabled?: boolean;\n onSelectAll?: () => void;\n rowStyle?: ({\n index,\n }: {\n index: number;\n }) => \"deleted\" | \"\" | React.CSSProperties;\n parentClassName?: string;\n tooltip?: any;\n}\n\nconst borderColor = \"#9c9c9c80\";\n\nconst styles = () =>\n createStyles({\n paper: {\n display: \"flex\",\n overflow: \"auto\",\n flexDirection: \"column\",\n padding: \"0 16px 8px\",\n boxShadow: \"none\",\n border: \"#EAEDEE 1px solid\",\n borderRadius: 3,\n minHeight: 200,\n overflowY: \"scroll\",\n position: \"relative\",\n \"&::-webkit-scrollbar\": {\n width: 0,\n height: 3,\n },\n },\n noBackground: {\n backgroundColor: \"transparent\",\n border: 0,\n },\n disabled: {\n backgroundColor: \"#fbfafa\",\n color: \"#cccccc\",\n },\n defaultPaperHeight: {\n height: \"calc(100vh - 205px)\",\n },\n loadingBox: {\n paddingTop: \"100px\",\n paddingBottom: \"100px\",\n },\n overlayColumnSelection: {\n position: \"absolute\",\n right: 0,\n top: 0,\n },\n popoverContent: {\n maxHeight: 250,\n overflowY: \"auto\",\n padding: \"0 10px 10px\",\n },\n shownColumnsLabel: {\n color: \"#9c9c9c\",\n fontSize: 12,\n padding: 10,\n borderBottom: \"#eaeaea 1px solid\",\n width: \"100%\",\n },\n checkAllWrapper: {\n marginTop: -16,\n },\n \"@global\": {\n \".rowLine\": {\n borderBottom: `1px solid ${borderColor}`,\n height: 40,\n fontSize: 14,\n transitionDuration: 0.3,\n \"&:focus\": {\n outline: \"initial\",\n },\n \"&:hover:not(.ReactVirtualized__Table__headerRow)\": {\n userSelect: \"none\",\n backgroundColor: \"#ececec\",\n fontWeight: 600,\n \"&.canClick\": {\n cursor: \"pointer\",\n },\n \"&.canSelectText\": {\n userSelect: \"text\",\n },\n },\n \"& .selected\": {\n fontWeight: 600,\n },\n \"&:not(.deleted) .selected\": {\n color: \"#081C42\",\n },\n \"&.deleted .selected\": {\n color: \"#C51B3F\",\n },\n },\n \".headerItem\": {\n userSelect: \"none\",\n fontWeight: 700,\n fontSize: 14,\n fontStyle: \"initial\",\n display: \"flex\",\n alignItems: \"center\",\n outline: \"none\",\n },\n \".ReactVirtualized__Table__row\": {\n width: \"100% !important\",\n },\n \".ReactVirtualized__Table__headerRow\": {\n fontWeight: 700,\n fontSize: 14,\n borderColor: \"#39393980\",\n textTransform: \"initial\",\n },\n \".optionsAlignment\": {\n textAlign: \"center\",\n \"& .min-icon\": {\n width: 16,\n height: 16,\n },\n },\n \".text-center\": {\n textAlign: \"center\",\n },\n \".text-right\": {\n textAlign: \"right\",\n },\n \".progress-enabled\": {\n paddingTop: 3,\n display: \"inline-block\",\n margin: \"0 10px\",\n position: \"relative\",\n width: 18,\n height: 18,\n },\n \".progress-enabled > .MuiCircularProgress-root\": {\n position: \"absolute\",\n left: 0,\n top: 3,\n },\n },\n ...checkboxIcons,\n ...radioIcons,\n });\n\nconst selectWidth = 45;\n\n// Function to render elements in table\nconst subRenderFunction = (\n rowData: any,\n column: IColumns,\n isSelected: boolean,\n) => {\n const itemElement = isString(rowData)\n ? rowData\n : get(rowData, column.elementKey!, null); // If the element is just a string, we render it as it is\n const renderConst = column.renderFullObject ? rowData : itemElement;\n\n const renderElement = column.renderFunction\n ? column.renderFunction(renderConst)\n : renderConst; // If render function is set, we send the value to the function.\n\n return (\n \n {renderElement}\n \n );\n};\n\n// Function to calculate common column width for elements with no with size\nconst calculateColumnRest = (\n columns: IColumns[],\n containerWidth: number,\n actionsWidth: number,\n hasSelect: boolean,\n hasActions: boolean,\n columnsSelector: boolean,\n columnsShown: string[],\n) => {\n let colsItems = [...columns];\n\n if (columnsSelector) {\n colsItems = columns.filter((column) =>\n columnsShown.includes(column.elementKey!),\n );\n }\n\n let initialValue = containerWidth;\n\n if (hasSelect) {\n initialValue -= selectWidth;\n }\n\n if (hasActions) {\n initialValue -= actionsWidth;\n }\n\n let freeSpacing = colsItems.reduce((total, currValue) => {\n return currValue.width ? total - currValue.width : total;\n }, initialValue);\n\n return freeSpacing / colsItems.filter((el) => !el.width).length;\n};\n\n// Function that renders Columns in table\nconst generateColumnsMap = (\n columns: IColumns[],\n containerWidth: number,\n actionsWidth: number,\n hasSelect: boolean,\n hasActions: boolean,\n selectedItems: string[],\n idField: string,\n columnsSelector: boolean,\n columnsShown: string[],\n sortColumn: string,\n sortDirection: \"ASC\" | \"DESC\" | undefined,\n) => {\n const commonRestWidth = calculateColumnRest(\n columns,\n containerWidth,\n actionsWidth,\n hasSelect,\n hasActions,\n columnsSelector,\n columnsShown,\n );\n return columns.map((column: IColumns, index: number) => {\n if (columnsSelector && !columnsShown.includes(column.elementKey!)) {\n return null;\n }\n\n const disableSort = column.enableSort ? !column.enableSort : true;\n\n return (\n // @ts-ignore\n (\n \n {sortColumn === column.elementKey && (\n \n {sortDirection === \"ASC\" ? (\n \n ) : (\n \n )}\n \n )}\n {column.label}\n \n )}\n className={\n column.contentTextAlign ? `text-${column.contentTextAlign}` : \"\"\n }\n cellRenderer={({ rowData }) => {\n const isSelected = selectedItems\n ? selectedItems.includes(\n isString(rowData) ? rowData : rowData[idField],\n )\n : false;\n return subRenderFunction(rowData, column, isSelected);\n }}\n width={column.width || commonRestWidth}\n disableSort={disableSort}\n defaultSortDirection={\"ASC\"}\n />\n );\n });\n};\n\n// Function to render the action buttons\nconst elementActions = (\n actions: ItemActions[],\n valueToSend: any,\n selected: boolean,\n idField: string,\n) => {\n return actions.map((action: ItemActions, index: number) => {\n if (action.type === \"view\") {\n return null;\n }\n\n const vlSend =\n typeof valueToSend === \"string\" ? valueToSend : valueToSend[idField];\n\n let disabled = false;\n\n if (action.disableButtonFunction) {\n if (action.disableButtonFunction(vlSend)) {\n disabled = true;\n }\n }\n\n if (action.showLoaderFunction) {\n if (action.showLoaderFunction(vlSend)) {\n return (\n
\n \n
\n );\n }\n }\n\n return (\n \n );\n });\n};\n\n// Function to calculate the options column width according elements inside\nconst calculateOptionsSize = (containerWidth: number, totalOptions: number) => {\n const minContainerSize = 80;\n const sizeOptions = totalOptions * 45 + 15;\n\n if (sizeOptions < minContainerSize) {\n return minContainerSize;\n }\n\n if (sizeOptions > containerWidth) {\n return containerWidth;\n }\n\n return sizeOptions;\n};\n\n// Main function to render the Table Wrapper\nconst TableWrapper = ({\n itemActions,\n columns,\n onSelect,\n records,\n isLoading,\n loadingMessage = Loading...,\n entityName,\n selectedItems,\n idField,\n classes,\n radioSelection = false,\n customEmptyMessage = \"\",\n customPaperHeight = \"\",\n noBackground = false,\n columnsSelector = false,\n textSelectable = false,\n columnsShown = [],\n onColumnChange = (column: string, state: boolean) => {},\n infiniteScrollConfig,\n sortConfig,\n autoScrollToBottom = false,\n disabled = false,\n onSelectAll,\n rowStyle,\n parentClassName = \"\",\n tooltip,\n}: TableWrapperProps) => {\n const navigate = useNavigate();\n\n const [columnSelectorOpen, setColumnSelectorOpen] = useState(false);\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n const findView = itemActions\n ? itemActions.find((el) => el.type === \"view\")\n : null;\n\n const clickAction = (rowItem: any) => {\n if (findView) {\n const valueClick = findView.sendOnlyId ? rowItem[idField] : rowItem;\n\n let disabled = false;\n\n if (findView.disableButtonFunction) {\n if (findView.disableButtonFunction(valueClick)) {\n disabled = true;\n }\n }\n\n if (findView.to && !disabled) {\n navigate(`${findView.to}/${valueClick}`);\n return;\n }\n\n if (findView.onClick && !disabled) {\n findView.onClick(valueClick);\n }\n }\n };\n\n const openColumnsSelector = (event: { currentTarget: any }) => {\n setColumnSelectorOpen(!columnSelectorOpen);\n setAnchorEl(event.currentTarget);\n };\n\n const closeColumnSelector = () => {\n setColumnSelectorOpen(false);\n setAnchorEl(null);\n };\n\n const columnsSelection = (columns: IColumns[]) => {\n return (\n \n \n \n \n \n
Shown Columns
\n
\n {columns.map((column: IColumns) => {\n return (\n {\n onColumnChange(column.elementKey!, e.target.checked);\n }}\n id={`chbox-${column.label}`}\n name={`chbox-${column.label}`}\n value={column.label}\n />\n );\n })}\n
\n \n
\n );\n };\n\n return (\n \n \n \n {isLoading && (\n \n \n {loadingMessage}\n \n \n \n \n \n )}\n {columnsSelector && !isLoading && records.length > 0 && (\n
\n {columnsSelection(columns)}\n
\n )}\n {records && !isLoading && records.length > 0 ? (\n // @ts-ignore\n !!records[index]}\n loadMoreRows={\n infiniteScrollConfig\n ? infiniteScrollConfig.loadMoreRecords\n : () => new Promise(() => true)\n }\n rowCount={\n infiniteScrollConfig\n ? infiniteScrollConfig.recordsCount\n : records.length\n }\n >\n {({ onRowsRendered, registerChild }) => (\n // @ts-ignore\n \n {({ width, height }: any) => {\n const optionsWidth = calculateOptionsSize(\n width,\n itemActions\n ? itemActions.filter((el) => el.type !== \"view\").length\n : 0,\n );\n const hasSelect: boolean = !!(onSelect && selectedItems);\n const hasOptions: boolean = !!(\n (itemActions && itemActions.length > 1) ||\n (itemActions &&\n itemActions.length === 1 &&\n itemActions[0].type !== \"view\")\n );\n return (\n // @ts-ignore\n (\n \n {customEmptyMessage !== \"\"\n ? customEmptyMessage\n : `There are no ${entityName} yet.`}\n \n )}\n overscanRowCount={10}\n rowHeight={40}\n width={width}\n rowCount={records.length}\n rowGetter={({ index }) => records[index]}\n onRowClick={({ rowData }) => {\n clickAction(rowData);\n }}\n rowClassName={(r) =>\n `rowLine ${findView ? \"canClick\" : \"\"} ${\n !findView && textSelectable ? \"canSelectText\" : \"\"\n } ${rowStyle ? rowStyle(r) : \"\"}`\n }\n onRowsRendered={onRowsRendered}\n sort={sortConfig ? sortConfig.triggerSort : undefined}\n sortBy={sortConfig ? sortConfig.currentSort : undefined}\n sortDirection={\n sortConfig ? sortConfig.currentDirection : undefined\n }\n scrollToIndex={\n autoScrollToBottom ? records.length - 1 : -1\n }\n rowStyle={(r) => {\n if (rowStyle) {\n const returnElement = rowStyle(r);\n\n if (typeof returnElement === \"string\") {\n return get(\n TableRowPredefStyles,\n returnElement,\n {},\n );\n }\n\n return returnElement;\n }\n\n return {};\n }}\n >\n {hasSelect && (\n // @ts-ignore\n (\n \n {onSelectAll ? (\n
\n \n
\n ) : (\n Select\n )}\n
\n )}\n dataKey={`select-${idField}`}\n width={selectWidth}\n disableSort\n cellRenderer={({ rowData }) => {\n const isSelected = selectedItems\n ? selectedItems.includes(\n isString(rowData)\n ? rowData\n : rowData[idField],\n )\n : false;\n\n return (\n {\n e.stopPropagation();\n }}\n checkedIcon={\n \n }\n icon={\n \n }\n />\n );\n }}\n />\n )}\n {generateColumnsMap(\n columns,\n width,\n optionsWidth,\n hasSelect,\n hasOptions,\n selectedItems || [],\n idField,\n columnsSelector,\n columnsShown,\n sortConfig ? sortConfig.currentSort : \"\",\n sortConfig ? sortConfig.currentDirection : undefined,\n )}\n {hasOptions && (\n // @ts-ignore\n {\n const isSelected = selectedItems\n ? selectedItems.includes(\n isString(rowData)\n ? rowData\n : rowData[idField],\n )\n : false;\n return elementActions(\n itemActions || [],\n rowData,\n isSelected,\n idField,\n );\n }}\n />\n )}\n \n );\n }}\n
\n )}\n \n ) : (\n \n {!isLoading && (\n
\n {customEmptyMessage !== \"\"\n ? customEmptyMessage\n : `There are no ${entityName} yet.`}\n
\n )}\n
\n )}\n \n
\n
\n );\n};\n\nexport default withStyles(styles)(TableWrapper);\n"],"names":["unSelected","selected","_ref","active","_jsx","xmlns","width","height","viewBox","children","fill","d","props","className","withStyles","styles","createStyles","spacing","margin","buttonDisabled","cursor","filter","opacity","type","onClick","valueToSend","idField","to","sendOnlyId","disabled","classes","label","valueClick","icon","defineIcon","PreviewIcon","EditIcon","TrashIcon","IAMPoliciesIcon","ShareIcon","CloudIcon","ConsoleIcon","DownloadIcon","DisableIcon","FormatDriveIcon","buttonElement","IconButton","size","concat","e","stopPropagation","preventDefault","sx","Tooltip","title","isString","Link","theme","fieldBasic","tooltipHelper","checkboxIcons","fieldContainer","display","justifyContent","alignItems","marginBottom","flexBasis","flexWrap","noTopMargin","marginTop","onChange","value","id","name","checked","tooltip","overrideLabelClasses","overrideCheckboxStyles","React","_jsxs","Grid","item","xs","Checkbox","color","inputProps","checkedIcon","unCheckedIcon","disableRipple","disableFocusRipple","focusRipple","centerRipple","disableTouchRipple","style","InputLabel","htmlFor","noMinWidthLabel","tooltipContainer","placement","HelpIcon","generateColumnsMap","columns","containerWidth","actionsWidth","hasSelect","hasActions","selectedItems","columnsSelector","columnsShown","sortColumn","sortDirection","commonRestWidth","calculateColumnRest","colsItems","column","includes","elementKey","initialValue","reduce","total","currValue","el","length","map","index","disableSort","enableSort","Column","dataKey","headerClassName","headerTextAlign","headerRenderer","Fragment","ArrowDropUpIcon","ArrowDropDownIcon","contentTextAlign","cellRenderer","rowData","isSelected","subRenderFunction","itemElement","get","renderConst","renderFullObject","renderElement","renderFunction","defaultSortDirection","toString","paper","overflow","flexDirection","padding","boxShadow","border","borderRadius","minHeight","overflowY","position","noBackground","backgroundColor","defaultPaperHeight","loadingBox","paddingTop","paddingBottom","overlayColumnSelection","right","top","popoverContent","maxHeight","shownColumnsLabel","fontSize","borderBottom","checkAllWrapper","transitionDuration","outline","userSelect","fontWeight","fontStyle","borderColor","textTransform","textAlign","left","radioIcons","_ref2","itemActions","onSelect","records","isLoading","loadingMessage","Typography","component","entityName","radioSelection","customEmptyMessage","customPaperHeight","textSelectable","onColumnChange","state","infiniteScrollConfig","sortConfig","autoScrollToBottom","onSelectAll","rowStyle","parentClassName","navigate","useNavigate","columnSelectorOpen","setColumnSelectorOpen","useState","anchorEl","setAnchorEl","findView","find","openColumnsSelector","event","currentTarget","closeColumnSelector","TooltipWrapper","Paper","container","LinearProgress","ViewColumnIcon","Popover","open","anchorOrigin","vertical","horizontal","transformOrigin","onClose","CheckboxWrapper","target","columnsSelection","InfiniteLoader","isRowLoaded","_ref3","loadMoreRows","loadMoreRecords","Promise","rowCount","recordsCount","_ref4","onRowsRendered","registerChild","AutoSizer","_ref5","optionsWidth","calculateOptionsSize","totalOptions","sizeOptions","hasOptions","Table","ref","disableHeader","headerHeight","noRowsRenderer","overscanRowCount","rowHeight","rowGetter","_ref6","onRowClick","_ref7","rowItem","disableButtonFunction","clickAction","rowClassName","r","sort","triggerSort","undefined","sortBy","currentSort","currentDirection","scrollToIndex","returnElement","TableRowPredefStyles","_ref8","radioSelectedIcon","radioUnselectedIcon","_ref9","elementActions","actions","action","vlSend","showLoaderFunction","Loader","TableActionButton"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/223.1d2c84fb.chunk.js.map b/web-app/build/static/js/223.1d2c84fb.chunk.js.map deleted file mode 100644 index f155ff9b7a7..00000000000 --- a/web-app/build/static/js/223.1d2c84fb.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/223.1d2c84fb.chunk.js","mappings":"yMA8HA,UAtG4B,SAAHA,GAMlB,IALLC,EAAMD,EAANC,OACAC,EAAOF,EAAPE,QAUA,OACEC,EAAAA,EAAAA,KAACC,EAAAA,EAAY,CACXC,UAAWJ,EACXK,MAAM,UACNJ,QAAS,WACPA,GACF,EAAEK,UAEFC,EAAAA,EAAAA,MAACC,EAAAA,EAAG,CACFC,GAAI,CACFC,QAAS,OACTC,SAAU,SACV,eAAgB,CACdC,MAAO,UACPC,WAAY,MAEdP,SAAA,EAEFJ,EAAAA,EAAAA,KAACM,EAAAA,EAAG,CACFC,GAAI,CACFC,QAAS,OACTI,WAAY,SACZC,aAAc,OACdC,eAAgB,SAChB,cAAe,CACbC,KAAM,OACNC,MAAO,QACPC,OAAQ,SAEVb,UAEFJ,EAAAA,EAAAA,KAACkB,EAAAA,IAAc,OAEjBb,EAAAA,EAAAA,MAACC,EAAAA,EAAG,CACFC,GAAI,CACFM,aAAc,QACdT,SAAA,CACH,sFAEoBJ,EAAAA,EAAAA,KAACmB,EAAAA,EAAW,IAAI,gDACvB,KACZnB,EAAAA,EAAAA,KAAA,KACEoB,KAAI,6CACJC,IAAI,WACJC,UAAW,YAAYlB,SACxB,oDAIHC,EAAAA,EAAAA,MAACC,EAAAA,EAAG,CACFC,GAAI,CACFgB,cAAe,QACfnB,SAAA,CACH,yNAIiB,KAChBJ,EAAAA,EAAAA,KAAA,KACEoB,KAAI,+BACJC,IAAI,WACJC,UAAW,YAAYlB,SACxB,+BAKHJ,EAAAA,EAAAA,KAACwB,EAAAA,EAAU,KAEXxB,EAAAA,EAAAA,KAACM,EAAAA,EAAG,CACFC,GAAI,CACFkB,UAAW,OACXjB,QAAS,OACTI,WAAY,SACZE,eAAgB,UAChBV,UAEFJ,EAAAA,EAAAA,KAAC0B,EAAAA,IAAM,CACLC,GAAI,UACJC,KAAK,SACLC,QAAQ,aACRC,QAtFgB,YACxBC,EAAAA,EAAAA,MACAhC,GACF,EAoFUiC,MAAO,sBAMnB,C","sources":["screens/Console/License/LicenseConsentModal.tsx"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport { Box } from \"@mui/material\";\nimport { AGPLV3DarkLogo, Button } from \"mds\";\nimport { setLicenseConsent } from \"./utils\";\nimport LicenseLink from \"./LicenseLink\";\nimport LicenseFAQ from \"./LicenseFAQ\";\n\nconst LicenseConsentModal = ({\n isOpen,\n onClose,\n}: {\n onClose: () => void;\n isOpen: boolean;\n}) => {\n const recordAgplConsent = () => {\n setLicenseConsent(); //to Local storage.\n onClose();\n };\n\n return (\n {\n onClose();\n }}\n >\n \n \n \n \n \n By using this software, you acknowledge that MinIO software is\n licensed under the , for which, the full text can be\n found here:{\" \"}\n \n https://www.gnu.org/licenses/agpl-3.0.html.\n \n \n \n Please review the terms carefully and ensure you are in compliance\n with the obligations of the license. If you are not able to satisfy\n the license obligations, we offer a commercial license which is\n available here:{\" \"}\n \n https://min.io/signup.\n \n \n\n \n\n \n \n \n \n \n );\n};\n\nexport default LicenseConsentModal;\n"],"names":["_ref","isOpen","onClose","_jsx","ModalWrapper","modalOpen","title","children","_jsxs","Box","sx","display","flexFlow","color","fontWeight","alignItems","marginBottom","justifyContent","fill","width","height","AGPLV3DarkLogo","LicenseLink","href","rel","className","paddingBottom","LicenseFAQ","marginTop","Button","id","type","variant","onClick","setLicenseConsent","label"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/223.1d2c84fb.chunk.js b/web-app/build/static/js/223.3c9782cc.chunk.js similarity index 56% rename from web-app/build/static/js/223.1d2c84fb.chunk.js rename to web-app/build/static/js/223.3c9782cc.chunk.js index 3690e7ec041..b4c30a2aab0 100644 --- a/web-app/build/static/js/223.1d2c84fb.chunk.js +++ b/web-app/build/static/js/223.3c9782cc.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[223],{75223:function(e,n,t){t.r(n);t(72791);var i=t(56028),s=t(64554),l=t(75952),o=t(78290),a=t(88824),r=t(33713),c=t(80184);n.default=function(e){var n=e.isOpen,t=e.onClose;return(0,c.jsx)(i.Z,{modalOpen:n,title:"License",onClose:function(){t()},children:(0,c.jsxs)(s.Z,{sx:{display:"flex",flexFlow:"column","& .link-text":{color:"#2781B0",fontWeight:600}},children:[(0,c.jsx)(s.Z,{sx:{display:"flex",alignItems:"center",marginBottom:"40px",justifyContent:"center","& .min-icon":{fill:"blue",width:"188px",height:"62px"}},children:(0,c.jsx)(l.BKr,{})}),(0,c.jsxs)(s.Z,{sx:{marginBottom:"27px"},children:["By using this software, you acknowledge that MinIO software is licensed under the ",(0,c.jsx)(a.Z,{}),", for which, the full text can be found here:"," ",(0,c.jsx)("a",{href:"https://www.gnu.org/licenses/agpl-3.0.html",rel:"noopener",className:"link-text",children:"https://www.gnu.org/licenses/agpl-3.0.html."})]}),(0,c.jsxs)(s.Z,{sx:{paddingBottom:"23px"},children:["Please review the terms carefully and ensure you are in compliance with the obligations of the license. If you are not able to satisfy the license obligations, we offer a commercial license which is available here:"," ",(0,c.jsx)("a",{href:"https://min.io/signup?ref=op",rel:"noopener",className:"link-text",children:"https://min.io/signup."})]}),(0,c.jsx)(r.Z,{}),(0,c.jsx)(s.Z,{sx:{marginTop:"19px",display:"flex",alignItems:"center",justifyContent:"center"},children:(0,c.jsx)(l.zxk,{id:"confirm",type:"button",variant:"callAction",onClick:function(){(0,o.NI)(),t()},label:"Acknowledge"})})]})})}}}]); -//# sourceMappingURL=223.1d2c84fb.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[223],{75223:(e,n,t)=>{t.r(n),t.d(n,{default:()=>h});t(72791);var s=t(56028),i=t(64554),l=t(75952),o=t(78290),a=t(88824),r=t(33713),c=t(80184);const h=e=>{let{isOpen:n,onClose:t}=e;return(0,c.jsx)(s.Z,{modalOpen:n,title:"License",onClose:()=>{t()},children:(0,c.jsxs)(i.Z,{sx:{display:"flex",flexFlow:"column","& .link-text":{color:"#2781B0",fontWeight:600}},children:[(0,c.jsx)(i.Z,{sx:{display:"flex",alignItems:"center",marginBottom:"40px",justifyContent:"center","& .min-icon":{fill:"blue",width:"188px",height:"62px"}},children:(0,c.jsx)(l.BKr,{})}),(0,c.jsxs)(i.Z,{sx:{marginBottom:"27px"},children:["By using this software, you acknowledge that MinIO software is licensed under the ",(0,c.jsx)(a.Z,{}),", for which, the full text can be found here:"," ",(0,c.jsx)("a",{href:"https://www.gnu.org/licenses/agpl-3.0.html",rel:"noopener",className:"link-text",children:"https://www.gnu.org/licenses/agpl-3.0.html."})]}),(0,c.jsxs)(i.Z,{sx:{paddingBottom:"23px"},children:["Please review the terms carefully and ensure you are in compliance with the obligations of the license. If you are not able to satisfy the license obligations, we offer a commercial license which is available here:"," ",(0,c.jsx)("a",{href:"https://min.io/signup?ref=op",rel:"noopener",className:"link-text",children:"https://min.io/signup."})]}),(0,c.jsx)(r.Z,{}),(0,c.jsx)(i.Z,{sx:{marginTop:"19px",display:"flex",alignItems:"center",justifyContent:"center"},children:(0,c.jsx)(l.zxk,{id:"confirm",type:"button",variant:"callAction",onClick:()=>{(0,o.NI)(),t()},label:"Acknowledge"})})]})})}}}]); +//# sourceMappingURL=223.3c9782cc.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/223.3c9782cc.chunk.js.map b/web-app/build/static/js/223.3c9782cc.chunk.js.map new file mode 100644 index 00000000000..74cc17185f9 --- /dev/null +++ b/web-app/build/static/js/223.3c9782cc.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/223.3c9782cc.chunk.js","mappings":"0NAwBA,MAsGA,EAtG4BA,IAMrB,IANsB,OAC3BC,EAAM,QACNC,GAIDF,EAMC,OACEG,EAAAA,EAAAA,KAACC,EAAAA,EAAY,CACXC,UAAWJ,EACXK,MAAM,UACNJ,QAASA,KACPA,GAAS,EACTK,UAEFC,EAAAA,EAAAA,MAACC,EAAAA,EAAG,CACFC,GAAI,CACFC,QAAS,OACTC,SAAU,SACV,eAAgB,CACdC,MAAO,UACPC,WAAY,MAEdP,SAAA,EAEFJ,EAAAA,EAAAA,KAACM,EAAAA,EAAG,CACFC,GAAI,CACFC,QAAS,OACTI,WAAY,SACZC,aAAc,OACdC,eAAgB,SAChB,cAAe,CACbC,KAAM,OACNC,MAAO,QACPC,OAAQ,SAEVb,UAEFJ,EAAAA,EAAAA,KAACkB,EAAAA,IAAc,OAEjBb,EAAAA,EAAAA,MAACC,EAAAA,EAAG,CACFC,GAAI,CACFM,aAAc,QACdT,SAAA,CACH,sFAEoBJ,EAAAA,EAAAA,KAACmB,EAAAA,EAAW,IAAI,gDACvB,KACZnB,EAAAA,EAAAA,KAAA,KACEoB,KAAI,6CACJC,IAAI,WACJC,UAAW,YAAYlB,SACxB,oDAIHC,EAAAA,EAAAA,MAACC,EAAAA,EAAG,CACFC,GAAI,CACFgB,cAAe,QACfnB,SAAA,CACH,yNAIiB,KAChBJ,EAAAA,EAAAA,KAAA,KACEoB,KAAI,+BACJC,IAAI,WACJC,UAAW,YAAYlB,SACxB,+BAKHJ,EAAAA,EAAAA,KAACwB,EAAAA,EAAU,KAEXxB,EAAAA,EAAAA,KAACM,EAAAA,EAAG,CACFC,GAAI,CACFkB,UAAW,OACXjB,QAAS,OACTI,WAAY,SACZE,eAAgB,UAChBV,UAEFJ,EAAAA,EAAAA,KAAC0B,EAAAA,IAAM,CACLC,GAAI,UACJC,KAAK,SACLC,QAAQ,aACRC,QAtFgBC,MACxBC,EAAAA,EAAAA,MACAjC,GAAS,EAqFDkC,MAAO,sBAIA,C","sources":["screens/Console/License/LicenseConsentModal.tsx"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport { Box } from \"@mui/material\";\nimport { AGPLV3DarkLogo, Button } from \"mds\";\nimport { setLicenseConsent } from \"./utils\";\nimport LicenseLink from \"./LicenseLink\";\nimport LicenseFAQ from \"./LicenseFAQ\";\n\nconst LicenseConsentModal = ({\n isOpen,\n onClose,\n}: {\n onClose: () => void;\n isOpen: boolean;\n}) => {\n const recordAgplConsent = () => {\n setLicenseConsent(); //to Local storage.\n onClose();\n };\n\n return (\n {\n onClose();\n }}\n >\n \n \n \n \n \n By using this software, you acknowledge that MinIO software is\n licensed under the , for which, the full text can be\n found here:{\" \"}\n \n https://www.gnu.org/licenses/agpl-3.0.html.\n \n \n \n Please review the terms carefully and ensure you are in compliance\n with the obligations of the license. If you are not able to satisfy\n the license obligations, we offer a commercial license which is\n available here:{\" \"}\n \n https://min.io/signup.\n \n \n\n \n\n \n \n \n \n \n );\n};\n\nexport default LicenseConsentModal;\n"],"names":["_ref","isOpen","onClose","_jsx","ModalWrapper","modalOpen","title","children","_jsxs","Box","sx","display","flexFlow","color","fontWeight","alignItems","marginBottom","justifyContent","fill","width","height","AGPLV3DarkLogo","LicenseLink","href","rel","className","paddingBottom","LicenseFAQ","marginTop","Button","id","type","variant","onClick","recordAgplConsent","setLicenseConsent","label"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/260.0a6c9eba.chunk.js b/web-app/build/static/js/260.0a6c9eba.chunk.js deleted file mode 100644 index 6d59c5417c4..00000000000 --- a/web-app/build/static/js/260.0a6c9eba.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[260],{1260:function(t,e,n){n.r(e);var o=n(72791),a=n(57689),c=n(41320),u=n(45248),l=n(87995),r=n(46078),s=n(81207),f=n(7241),i=n(80184);e.default=function(){var t=(0,c.TL)(),e=(0,a.s0)();return(0,o.useEffect)((function(){!function(){var n=function(){(0,u.Ov)(),t((0,l.wr)(!1)),localStorage.setItem("userLoggedIn",""),localStorage.setItem("redirect-path",""),t((0,r.lX)()),e("/login")},o=localStorage.getItem("auth-state");s.Z.invoke("POST","/api/v1/logout",{state:o}).then((function(){n()})).catch((function(t){console.log(t),n()}))}()}),[t,e]),(0,i.jsx)(f.Z,{})}}}]); -//# sourceMappingURL=260.0a6c9eba.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/260.0a6c9eba.chunk.js.map b/web-app/build/static/js/260.0a6c9eba.chunk.js.map deleted file mode 100644 index 402ead68f24..00000000000 --- a/web-app/build/static/js/260.0a6c9eba.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/260.0a6c9eba.chunk.js","mappings":"oNAuDA,UA7BmB,WACjB,IAAMA,GAAWC,EAAAA,EAAAA,MACXC,GAAWC,EAAAA,EAAAA,MAwBjB,OAvBAC,EAAAA,EAAAA,YAAU,YACO,WACb,IAAMC,EAAgB,YACpBC,EAAAA,EAAAA,MACAN,GAASO,EAAAA,EAAAA,KAAW,IACpBC,aAAaC,QAAQ,eAAgB,IACrCD,aAAaC,QAAQ,gBAAiB,IACtCT,GAASU,EAAAA,EAAAA,OACTR,EAAS,SACX,EACMS,EAAQH,aAAaI,QAAQ,cACnCC,EAAAA,EACGC,OAAO,OAAO,iBAAmB,CAAEH,MAAAA,IACnCI,MAAK,WACJV,GACF,IACCW,OAAM,SAACC,GACNC,QAAQC,IAAIF,GACZZ,GACF,GACJ,CACAe,EACF,GAAG,CAACpB,EAAUE,KACPmB,EAAAA,EAAAA,KAACC,EAAAA,EAAgB,GAC1B,C","sources":["screens/LogoutPage/LogoutPage.tsx"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useAppDispatch } from \"../../store\";\nimport { ErrorResponseHandler } from \"../../common/types\";\nimport { clearSession } from \"../../common/utils\";\nimport { userLogged } from \"../../systemSlice\";\nimport { resetSession } from \"../Console/consoleSlice\";\nimport api from \"../../common/api\";\nimport LoadingComponent from \"../../common/LoadingComponent\";\n\nconst LogoutPage = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n useEffect(() => {\n const logout = () => {\n const deleteSession = () => {\n clearSession();\n dispatch(userLogged(false));\n localStorage.setItem(\"userLoggedIn\", \"\");\n localStorage.setItem(\"redirect-path\", \"\");\n dispatch(resetSession());\n navigate(`/login`);\n };\n const state = localStorage.getItem(\"auth-state\");\n api\n .invoke(\"POST\", `/api/v1/logout`, { state })\n .then(() => {\n deleteSession();\n })\n .catch((err: ErrorResponseHandler) => {\n console.log(err);\n deleteSession();\n });\n };\n logout();\n }, [dispatch, navigate]);\n return ;\n};\n\nexport default LogoutPage;\n"],"names":["dispatch","useAppDispatch","navigate","useNavigate","useEffect","deleteSession","clearSession","userLogged","localStorage","setItem","resetSession","state","getItem","api","invoke","then","catch","err","console","log","logout","_jsx","LoadingComponent"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/260.f4b645a4.chunk.js b/web-app/build/static/js/260.f4b645a4.chunk.js new file mode 100644 index 00000000000..9635515b56a --- /dev/null +++ b/web-app/build/static/js/260.f4b645a4.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[260],{1260:(e,t,a)=>{a.r(t),a.d(t,{default:()=>h});var o=a(72791),s=a(57689),c=a(41320),l=a(45248),r=a(87995),n=a(46078),u=a(81207),g=a(7241),p=a(80184);const h=()=>{const e=(0,c.TL)(),t=(0,s.s0)();return(0,o.useEffect)((()=>{(()=>{const a=()=>{(0,l.Ov)(),e((0,r.wr)(!1)),localStorage.setItem("userLoggedIn",""),localStorage.setItem("redirect-path",""),e((0,n.lX)()),t("/login")},o=localStorage.getItem("auth-state");u.Z.invoke("POST","/api/v1/logout",{state:o}).then((()=>{a()})).catch((e=>{console.log(e),a()}))})()}),[e,t]),(0,p.jsx)(g.Z,{})}}}]); +//# sourceMappingURL=260.f4b645a4.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/260.f4b645a4.chunk.js.map b/web-app/build/static/js/260.f4b645a4.chunk.js.map new file mode 100644 index 00000000000..2a10b298a3b --- /dev/null +++ b/web-app/build/static/js/260.f4b645a4.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/260.f4b645a4.chunk.js","mappings":"qOA0BA,MA6BA,EA7BmBA,KACjB,MAAMC,GAAWC,EAAAA,EAAAA,MACXC,GAAWC,EAAAA,EAAAA,MAwBjB,OAvBAC,EAAAA,EAAAA,YAAU,KACOC,MACb,MAAMC,EAAgBA,MACpBC,EAAAA,EAAAA,MACAP,GAASQ,EAAAA,EAAAA,KAAW,IACpBC,aAAaC,QAAQ,eAAgB,IACrCD,aAAaC,QAAQ,gBAAiB,IACtCV,GAASW,EAAAA,EAAAA,OACTT,EAAS,SAAS,EAEdU,EAAQH,aAAaI,QAAQ,cACnCC,EAAAA,EACGC,OAAO,OAAO,iBAAmB,CAAEH,UACnCI,MAAK,KACJV,GAAe,IAEhBW,OAAOC,IACNC,QAAQC,IAAIF,GACZZ,GAAe,GACf,EAEND,EAAQ,GACP,CAACL,EAAUE,KACPmB,EAAAA,EAAAA,KAACC,EAAAA,EAAgB,GAAG,C","sources":["screens/LogoutPage/LogoutPage.tsx"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useAppDispatch } from \"../../store\";\nimport { ErrorResponseHandler } from \"../../common/types\";\nimport { clearSession } from \"../../common/utils\";\nimport { userLogged } from \"../../systemSlice\";\nimport { resetSession } from \"../Console/consoleSlice\";\nimport api from \"../../common/api\";\nimport LoadingComponent from \"../../common/LoadingComponent\";\n\nconst LogoutPage = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n useEffect(() => {\n const logout = () => {\n const deleteSession = () => {\n clearSession();\n dispatch(userLogged(false));\n localStorage.setItem(\"userLoggedIn\", \"\");\n localStorage.setItem(\"redirect-path\", \"\");\n dispatch(resetSession());\n navigate(`/login`);\n };\n const state = localStorage.getItem(\"auth-state\");\n api\n .invoke(\"POST\", `/api/v1/logout`, { state })\n .then(() => {\n deleteSession();\n })\n .catch((err: ErrorResponseHandler) => {\n console.log(err);\n deleteSession();\n });\n };\n logout();\n }, [dispatch, navigate]);\n return ;\n};\n\nexport default LogoutPage;\n"],"names":["LogoutPage","dispatch","useAppDispatch","navigate","useNavigate","useEffect","logout","deleteSession","clearSession","userLogged","localStorage","setItem","resetSession","state","getItem","api","invoke","then","catch","err","console","log","_jsx","LoadingComponent"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/292.5b893eb9.chunk.js b/web-app/build/static/js/292.5b893eb9.chunk.js deleted file mode 100644 index d33139169a1..00000000000 --- a/web-app/build/static/js/292.5b893eb9.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[292],{37798:function(e,n,t){t.r(n),t.d(n,{default:function(){return Z}});var i=t(1413),a=t(72791),r=t(26181),s=t.n(r),o=t(75952),l=t(11135),c=t(25787),d=t(56028),u=t(61889),m=t(28029),f=t(63466),p=t(78029),x=t.n(p),h=t(23814),v=t(27454),g=t(80184),y=(0,c.Z)((function(e){return(0,l.Z)({container:{display:"flex",flexFlow:"column",padding:"20px 0 8px 0"},inputWithCopy:{"& .MuiInputBase-root ":{width:"100%",background:"#FBFAFA","& .MuiInputBase-input":{height:".8rem"},"& .MuiInputAdornment-positionEnd":{marginRight:".5rem","& .MuiButtonBase-root":{height:"2rem"}}},"& .MuiButtonBase-root .min-icon":{width:".8rem",height:".8rem"}},inputLabel:(0,i.Z)((0,i.Z)({},h.YI.inputLabel),{},{fontSize:".8rem"})})}))((function(e){var n=e.label,t=void 0===n?"":n,i=e.value,a=void 0===i?"":i,r=e.classes,s=void 0===r?{}:r;return(0,g.jsxs)("div",{className:s.container,children:[(0,g.jsxs)("div",{className:s.inputLabel,children:[t,":"]}),(0,g.jsx)("div",{className:s.inputWithCopy,children:(0,g.jsx)(m.Z,{value:a,readOnly:!0,endAdornment:(0,g.jsx)(f.Z,{position:"end",children:(0,g.jsx)(v.Z,{tooltip:"Copy",children:(0,g.jsx)(x(),{text:a,children:(0,g.jsx)(o.zxk,{id:"copy-clipboard","aria-label":"copy",onClick:function(){},onMouseDown:function(){},style:{width:"28px",height:"28px",padding:"0px"},icon:(0,g.jsx)(o.TIy,{})})})})})})})]})})),j=function(e,n){var t=document.createElement("a");t.setAttribute("href","data:text/plain;charset=utf-8,"+n),t.setAttribute("download",e),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)},Z=(0,c.Z)((function(e){return(0,l.Z)({warningBlock:{color:"red",fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}},credentialTitle:{padding:".8rem 0 0 0",fontWeight:600,fontSize:".9rem"},buttonContainer:{display:"flex",justifyContent:"flex-end",marginTop:"1rem"},credentialsPanel:{overflowY:"auto",maxHeight:350},promptTitle:{display:"flex",alignItems:"center"},buttonSpacer:{marginRight:".9rem"}})}))((function(e){var n=e.classes,t=e.newServiceAccount,r=e.open,l=e.closeModal,c=e.entity;if(!t)return null;var m=s()(t,"console",null),f=s()(t,"idp",!1);return(0,g.jsx)(d.Z,{modalOpen:r,onClose:function(){l()},title:(0,g.jsx)("div",{className:n.promptTitle,children:(0,g.jsxs)("div",{children:["New ",c," Created"]})}),titleIcon:(0,g.jsx)(o.tVY,{}),children:(0,g.jsxs)(u.ZP,{container:!0,children:[(0,g.jsxs)(u.ZP,{item:!0,xs:12,className:n.formScrollable,children:["A new ",c," has been created with the following details:",!f&&m&&(0,g.jsx)(a.Fragment,{children:(0,g.jsxs)(u.ZP,{item:!0,xs:12,className:n.credentialsPanel,children:[(0,g.jsx)("div",{className:n.credentialTitle,children:"Console Credentials"}),Array.isArray(m)&&m.map((function(e,n){return(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(y,{label:"Access Key",value:e.accessKey}),(0,g.jsx)(y,{label:"Secret Key",value:e.secretKey})]})})),!Array.isArray(m)&&(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(y,{label:"Access Key",value:m.accessKey}),(0,g.jsx)(y,{label:"Secret Key",value:m.secretKey})]})]})}),(null===m||void 0===m)&&(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(y,{label:"Access Key",value:t.accessKey||""}),(0,g.jsx)(y,{label:"Secret Key",value:t.secretKey||""})]}),f?(0,g.jsx)("div",{className:n.warningBlock,children:"Please Login via the configured external identity provider."}):(0,g.jsxs)("div",{className:n.warningBlock,children:[(0,g.jsx)(o.e6P,{}),(0,g.jsx)("span",{children:"Write these down, as this is the only time the secret will be displayed."})]})]}),(0,g.jsx)(u.ZP,{item:!0,xs:12,className:n.buttonContainer,children:!f&&(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(v.Z,{tooltip:"Download credentials in a JSON file formatted for import using mc alias import. This will only include the default login credentials.",children:(0,g.jsx)(o.zxk,{id:"download-button",label:"Download for import",className:n.buttonSpacer,onClick:function(){var e={};m?e=Array.isArray(m)?m.map((function(e){return{url:e.url,accessKey:e.accessKey,secretKey:e.secretKey,api:"s3v4",path:"auto"}}))[0]:{url:m.url,accessKey:m.accessKey,secretKey:m.secretKey,api:"s3v4",path:"auto"}:e={url:t.url,accessKey:t.accessKey,secretKey:t.secretKey,api:"s3v4",path:"auto"};j("credentials.json",JSON.stringify((0,i.Z)({},e)))},icon:(0,g.jsx)(o._8t,{}),variant:"callAction"})}),Array.isArray(m)&&m.length>1&&(0,g.jsx)(v.Z,{tooltip:"Download all access credentials to a JSON file. NOTE: This file is not formatted for import using mc alias import. If you plan to import this alias from the file, please use the Download for Import button. ",children:(0,g.jsx)(o.zxk,{id:"download-all-button",label:"Download all access credentials",className:n.buttonSpacer,onClick:function(){var e={};m&&Array.isArray(m)&&m.length>1&&(e=m.map((function(e){return{accessKey:e.accessKey,secretKey:e.secretKey}})));j("all_credentials.json",JSON.stringify((0,i.Z)({},e)))},icon:(0,g.jsx)(o._8t,{}),variant:"callAction",color:"primary"})})]})})]})})}))},92217:function(e,n,t){var i=t(1413),a=t(72791),r=t(61889),s=t(30829),o=t(96040),l=t(64554),c=t(11135),d=t(25787),u=t(75952),m=t(23814),f=t(78029),p=t.n(f),x=t(9534),h=t(27454),v=t(80184);n.Z=(0,d.Z)((function(e){return(0,c.Z)((0,i.Z)({},m.YI))}))((function(e){var n=e.value,t=e.label,i=void 0===t?"":t,c=e.tooltip,d=void 0===c?"":c,m=e.mode,f=void 0===m?"json":m,g=e.classes,y=e.onBeforeChange,j=(e.readOnly,e.editorHeight),Z=void 0===j?"250px":j;return(0,v.jsxs)(a.Fragment,{children:[(0,v.jsx)(r.ZP,{item:!0,xs:12,sx:{marginBottom:"10px"},children:(0,v.jsxs)(s.Z,{className:g.inputLabel,children:[(0,v.jsx)("span",{children:i}),""!==d&&(0,v.jsx)("div",{className:g.tooltipContainer,children:(0,v.jsx)(o.Z,{title:d,placement:"top-start",children:(0,v.jsx)("div",{className:g.tooltip,children:(0,v.jsx)(u.byK,{})})})})]})}),(0,v.jsx)(r.ZP,{item:!0,xs:12,style:{maxHeight:Z,overflow:"auto",border:"1px solid #eaeaea"},children:(0,v.jsx)(x.Z,{value:n,language:f,onChange:function(e){y(null,null,e.target.value)},id:"code_wrapper",padding:15,style:{fontSize:12,backgroundColor:"#fefefe",fontFamily:"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace",minHeight:Z||"initial",color:"#000000"}})}),(0,v.jsx)(r.ZP,{item:!0,xs:12,sx:{background:"#f7f7f7",border:"1px solid #eaeaea",borderTop:0},children:(0,v.jsx)(l.Z,{sx:{display:"flex",alignItems:"center",padding:"2px",paddingRight:"5px",justifyContent:"flex-end","& button":{height:"26px",width:"26px",padding:"2px"," .min-icon":{marginLeft:"0"}}},children:(0,v.jsx)(h.Z,{tooltip:"Copy to Clipboard",children:(0,v.jsx)(p(),{text:n,children:(0,v.jsx)(u.zxk,{type:"button",id:"copy-code-mirror",icon:(0,v.jsx)(u.TIy,{}),color:"primary",variant:"regular"})})})})})]})}))},54639:function(e,n,t){t.d(n,{Z:function(){return j}});var i=t(29439),a=t(1413),r=t(72791),s=t(26181),o=t.n(s),l=t(61889),c=t(30829),d=t(96040),u=t(13400),m=t(99663),f=t(86711),p=t(11135),x=t(25787),h=t(23814),v=t(75952),g=t(22512),y=t(80184),j=(0,x.Z)((function(e){return(0,p.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},h.YI),h.Hr),{},{valueString:{maxWidth:350,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:2},fileInputField:{margin:"13px 0","@media (max-width: 900px)":{flexFlow:"column"}}},h.bV),{},{inputLabel:(0,a.Z)((0,a.Z)({},h.YI.inputLabel),{},{fontWeight:"normal"}),textBoxContainer:(0,a.Z)((0,a.Z)({},h.YI.textBoxContainer),{},{maxWidth:"100%",border:"1px solid #eaeaea",paddingLeft:"15px"})}))}))((function(e){var n=e.label,t=e.classes,a=e.onChange,s=e.id,p=e.name,x=e.disabled,h=void 0!==x&&x,j=e.tooltip,Z=void 0===j?"":j,b=e.required,C=e.error,N=void 0===C?"":C,S=e.accept,_=void 0===S?"":S,T=e.value,A=void 0===T?"":T,k=(0,r.useState)(!1),w=(0,i.Z)(k,2),P=w[0],I=w[1];return(0,y.jsx)(r.Fragment,{children:(0,y.jsxs)(l.ZP,{item:!0,xs:12,className:"".concat(t.fileInputField," ").concat(t.fieldBottom," ").concat(t.fieldContainer," ").concat(""!==N?t.errorInField:""),children:[""!==n&&(0,y.jsxs)(c.Z,{htmlFor:s,className:"".concat(""!==N?t.fieldLabelError:""," ").concat(t.inputLabel),children:[(0,y.jsxs)("span",{children:[n,b?"*":""]}),""!==Z&&(0,y.jsx)("div",{className:t.tooltipContainer,children:(0,y.jsx)(d.Z,{title:Z,placement:"top-start",children:(0,y.jsx)("div",{className:t.tooltip,children:(0,y.jsx)(v.byK,{})})})})]}),P||""===A?(0,y.jsxs)("div",{className:t.textBoxContainer,children:[(0,y.jsx)("input",{type:"file",name:p,onChange:function(e){var n=o()(e,"target.files[0].name","");!function(e,n){var t=e.target.files[0],i=new FileReader;i.readAsDataURL(t),i.onload=function(){var e=i.result;if(e){var t=e.toString().split("base64,");2===t.length&&n(t[1])}}}(e,(function(e){a(e,n)}))},accept:_,required:b,disabled:h,className:t.fileInputField}),""!==A&&(0,y.jsx)(u.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){I(!1)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,y.jsx)(f.Z,{})}),""!==N&&(0,y.jsx)(g.Z,{errorMessage:N})]}):(0,y.jsxs)("div",{className:t.fileReselect,children:[(0,y.jsx)("div",{className:t.valueString,children:A}),(0,y.jsx)(u.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){I(!0)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,y.jsx)(m.Z,{})})]})]})})}))},13871:function(e,n,t){var i,a=t(30168),r=(0,t(26088).Z)("hr")(i||(i=(0,a.Z)(["\n border-top: 0;\n border-left: 0;\n border-right: 0;\n border-color: #999999;\n background-color: transparent;\n"])));n.Z=r},56028:function(e,n,t){var i=t(29439),a=t(1413),r=t(72791),s=t(78687),o=t(13400),l=t(48888),c=t(5289),d=t(65661),u=t(39157),m=t(11135),f=t(25787),p=t(23814),x=t(41320),h=t(29823),v=t(86352),g=t(87995),y=t(80184);n.Z=(0,f.Z)((function(e){return(0,m.Z)((0,a.Z)((0,a.Z)({},p.Qw),{},{content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},p.sN))}))((function(e){var n=e.onClose,t=e.modalOpen,m=e.title,f=e.children,p=e.classes,j=e.wideLimit,Z=void 0===j||j,b=e.noContentPadding,C=e.titleIcon,N=void 0===C?null:C,S=(0,x.TL)(),_=(0,r.useState)(!1),T=(0,i.Z)(_,2),A=T[0],k=T[1],w=(0,s.v9)((function(e){return e.system.modalSnackBar}));(0,r.useEffect)((function(){S((0,g.MK)(""))}),[S]),(0,r.useEffect)((function(){if(w){if(""===w.message)return void k(!1);"error"!==w.type&&k(!0)}}),[w]);var P=Z?{classes:{paper:p.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},I="";return w&&(I=w.detailedErrorMsg,(""===w.detailedErrorMsg||w.detailedErrorMsg.length<5)&&(I=w.message)),(0,y.jsxs)(c.Z,(0,a.Z)((0,a.Z)({open:t,classes:p},P),{},{scroll:"paper",onClose:function(e,t){"backdropClick"!==t&&n()},className:p.root,children:[(0,y.jsxs)(d.Z,{className:p.title,children:[(0,y.jsxs)("div",{className:p.titleText,children:[N," ",m]}),(0,y.jsx)("div",{className:p.closeContainer,children:(0,y.jsx)(o.Z,{"aria-label":"close",id:"close",className:p.closeButton,onClick:n,disableRipple:!0,size:"small",children:(0,y.jsx)(h.Z,{})})})]}),(0,y.jsx)(v.Z,{isModal:!0}),(0,y.jsx)(l.Z,{open:A,className:p.snackBarModal,onClose:function(){k(!1),S((0,g.MK)(""))},message:I,ContentProps:{className:"".concat(p.snackBar," ").concat(w&&"error"===w.type?p.errorSnackBar:"")},autoHideDuration:w&&"error"===w.type?1e4:5e3}),(0,y.jsx)(u.Z,{className:b?"":p.content,children:f})]}))}))},27454:function(e,n,t){var i=t(1413),a=t(72791),r=t(96040),s=t(80184);n.Z=function(e){var n=e.tooltip,t=e.children,o=e.errorProps,l=void 0===o?null:o,c=e.placement;return(0,s.jsx)(r.Z,{title:n,placement:c,children:(0,s.jsx)("span",{children:l?(0,a.cloneElement)(t,(0,i.Z)({},l)):t})})}},80505:function(e,n,t){t.r(n),t.d(n,{default:function(){return Ue}});var i=t(29439),a=t(1413),r=t(72791),s=t(26181),o=t.n(s),l=t(78687),c=t(61889),d=t(57482),u=t(11135),m=t(23814),f=t(28371),p=t(41320),x=t(93433),h=t(25787),v=t(35527),g=t(13400),y=t(94721),j=t(84741),Z=t(40968),b=t(37516),C=t(21435),N=t(42419),S=t(75952),_=t(76773),T=t(90673),A=t(80007),k=t(80184),w=(0,h.Z)((function(e){return(0,u.Z)((0,a.Z)((0,a.Z)((0,a.Z)({configSectionItem:{marginRight:15,marginBottom:15,"& .multiContainer":{border:"1px solid red"}},tenantCustomizationFields:{marginLeft:30,width:"88%",margin:"auto"},containerItem:{marginRight:15},fieldGroup:(0,a.Z)((0,a.Z)({},m.QV.fieldGroup),{},{paddingTop:15,marginBottom:25}),responsiveSectionItem:{"@media (max-width: 900px)":{flexFlow:"column",alignItems:"flex-start","& div > div":{marginBottom:5,marginRight:0}}},wrapperContainer:{display:"flex",marginBottom:15},envVarRow:{display:"flex",alignItems:"center",justifyContent:"flex-start","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1,"& div label":{minWidth:50}}},fileItem:{marginRight:10,display:"flex","& div label":{minWidth:50},"@media (max-width: 900px)":{flexFlow:"column"}},rowActions:{display:"flex",justifyContent:"flex-end","@media (max-width: 900px)":{flex:1}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}}},m.oO),m.AK),m.DF))}))((function(e){var n=e.classes,t=(0,p.TL)(),s=(0,l.v9)((function(e){return e.createTenant.fields.configure.exposeMinIO})),o=(0,l.v9)((function(e){return e.createTenant.fields.configure.exposeConsole})),d=(0,l.v9)((function(e){return e.createTenant.fields.configure.exposeSFTP})),u=(0,l.v9)((function(e){return e.createTenant.fields.configure.setDomains})),m=(0,l.v9)((function(e){return e.createTenant.fields.configure.consoleDomain})),f=(0,l.v9)((function(e){return e.createTenant.fields.configure.minioDomains})),h=(0,l.v9)((function(e){return e.createTenant.fields.configure.tenantCustom})),w=(0,l.v9)((function(e){return e.createTenant.fields.configure.envVars})),P=(0,l.v9)((function(e){return e.createTenant.fields.configure.tenantSecurityContext})),I=(0,l.v9)((function(e){return e.createTenant.fields.configure.customRuntime})),R=(0,l.v9)((function(e){return e.createTenant.fields.configure.runtimeClassName})),D=(0,r.useState)({}),F=(0,i.Z)(D,2),K=F[0],E=F[1],L=(0,r.useCallback)((function(e,n){t((0,_.HM)({pageName:"configure",field:e,value:n}))}),[t]);(0,r.useEffect)((function(){var e=[];if(h&&(e=[{fieldKey:"tenant_securityContext_runAsUser",required:!0,value:P.runAsUser,customValidation:""===P.runAsUser||parseInt(P.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"tenant_securityContext_runAsGroup",required:!0,value:P.runAsGroup,customValidation:""===P.runAsGroup||parseInt(P.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"tenant_securityContext_fsGroup",required:!0,value:P.fsGroup,customValidation:""===P.fsGroup||parseInt(P.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}]),u){var n=f.map((function(e,n){return{fieldKey:"minio-domain-".concat(n.toString()),required:!1,value:e,pattern:/^(https?):\/\/([a-zA-Z0-9\-.]+)(:[0-9]+)?$/,customPatternMessage:"MinIO domain is not in the form of http|https://subdomain.domain"}}));e=[].concat((0,x.Z)(e),(0,x.Z)(n),[{fieldKey:"console_domain",required:!1,value:m,pattern:/^(https?):\/\/([a-zA-Z0-9\-.]+)(:[0-9]+)?(\/[a-zA-Z0-9\-./]*)?$/,customPatternMessage:"Console domain is not in the form of http|https://subdomain.domain:port/subpath1/subpath2"}])}var i=(0,Z.R)(e);t((0,_.NO)({pageName:"configure",valid:0===Object.keys(i).length})),E(i)}),[t,h,P,u,m,f]);var z=function(e){E((0,j.h)(K,e))};return(0,k.jsxs)(v.Z,{className:n.paperWrapper,children:[(0,k.jsxs)("div",{className:n.headerElement,children:[(0,k.jsx)(A.Z,{children:"Configure"}),(0,k.jsx)("span",{className:n.descriptionText,children:"Basic configurations for tenant management"})]}),(0,k.jsxs)("div",{className:n.headerElement,children:[(0,k.jsx)("h4",{className:n.h3Section,children:"Services"}),(0,k.jsx)("span",{className:n.descriptionText,children:"Whether the tenant's services should request an external IP via LoadBalancer service type."})]}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,k.jsx)(b.Z,{value:"expose_minio",id:"expose_minio",name:"expose_minio",checked:s,onChange:function(e){var n=e.target.checked;L("exposeMinIO",n)},label:"Expose MinIO Service"})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,k.jsx)(b.Z,{value:"expose_console",id:"expose_console",name:"expose_console",checked:o,onChange:function(e){var n=e.target.checked;L("exposeConsole",n)},label:"Expose Console Service"})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,k.jsx)(b.Z,{value:"expose_sftp",id:"expose_sftp",name:"expose_sftp",checked:d,onChange:function(e){var n=e.target.checked;L("exposeSFTP",n)},label:"Expose SFTP Service"})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,k.jsx)(b.Z,{value:"custom_domains",id:"custom_domains",name:"custom_domains",checked:u,onChange:function(e){var n=e.target.checked;L("setDomains",n)},label:"Set Custom Domains"})}),u&&(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.tenantCustomizationFields,children:(0,k.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,k.jsx)("legend",{className:n.descriptionText,children:"Custom Domains for MinIO"}),(0,k.jsxs)(c.ZP,{item:!0,xs:12,className:"".concat(n.configSectionItem),children:[(0,k.jsx)("div",{className:n.containerItem,children:(0,k.jsx)(C.Z,{id:"console_domain",name:"console_domain",onChange:function(e){L("consoleDomain",e.target.value),z("tenant_securityContext_runAsUser")},label:"Console Domain",value:m,placeholder:"Eg. http://subdomain.domain:port/subpath1/subpath2",error:K.console_domain||""})}),(0,k.jsxs)("div",{children:[(0,k.jsx)("h4",{children:"MinIO Domains"}),(0,k.jsx)("div",{className:"".concat(n.responsiveSectionItem),children:f.map((function(e,i){return(0,k.jsxs)("div",{className:"".concat(n.containerItem," ").concat(n.wrapperContainer),children:[(0,k.jsx)(C.Z,{id:"minio-domain-".concat(i.toString()),name:"minio-domain-".concat(i.toString()),onChange:function(e){!function(e,n){var t=(0,x.Z)(f);t[n]=e,L("minioDomains",t)}(e.target.value,i)},label:"MinIO Domain ".concat(i+1),value:e,placeholder:"Eg. http://subdomain.domain",error:K["minio-domain-".concat(i.toString())]||""}),(0,k.jsx)("div",{className:n.overlayAction,children:(0,k.jsx)(g.Z,{size:"small",onClick:function(){return t((0,_.x_)())},disabled:i!==f.length-1,children:(0,k.jsx)(N.Z,{})})}),(0,k.jsx)("div",{className:n.overlayAction,children:(0,k.jsx)(g.Z,{size:"small",onClick:function(){return t((0,_.JL)(i))},disabled:f.length<=1,children:(0,k.jsx)(S.HFL,{})})})]},"minio-domain-key-".concat(i.toString()))}))})]})]})]})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,k.jsx)(b.Z,{value:"tenantConfig",id:"tenant_configuration",name:"tenant_configuration",checked:h,onChange:function(e){var n=e.target.checked;L("tenantCustom",n)},label:"Security Context"})}),h&&(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.tenantCustomizationFields,children:(0,k.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,k.jsx)("legend",{className:n.descriptionText,children:"SecurityContext for MinIO"}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:"".concat(n.configSectionItem),children:(0,k.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveSectionItem),children:[(0,k.jsx)("div",{className:n.containerItem,children:(0,k.jsx)(C.Z,{type:"number",id:"tenant_securityContext_runAsUser",name:"tenant_securityContext_runAsUser",onChange:function(e){L("tenantSecurityContext",(0,a.Z)((0,a.Z)({},P),{},{runAsUser:e.target.value})),z("tenant_securityContext_runAsUser")},label:"Run As User",value:P.runAsUser,required:!0,error:K.tenant_securityContext_runAsUser||"",min:"0"})}),(0,k.jsx)("div",{className:n.containerItem,children:(0,k.jsx)(C.Z,{type:"number",id:"tenant_securityContext_runAsGroup",name:"tenant_securityContext_runAsGroup",onChange:function(e){L("tenantSecurityContext",(0,a.Z)((0,a.Z)({},P),{},{runAsGroup:e.target.value})),z("tenant_securityContext_runAsGroup")},label:"Run As Group",value:P.runAsGroup,required:!0,error:K.tenant_securityContext_runAsGroup||"",min:"0"})})]})}),(0,k.jsx)("br",{}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:"".concat(n.configSectionItem),children:(0,k.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveSectionItem),children:[(0,k.jsx)("div",{className:n.containerItem,children:(0,k.jsx)(C.Z,{type:"number",id:"tenant_securityContext_fsGroup",name:"tenant_securityContext_fsGroup",onChange:function(e){L("tenantSecurityContext",(0,a.Z)((0,a.Z)({},P),{},{fsGroup:e.target.value})),z("tenant_securityContext_fsGroup")},label:"FsGroup",value:P.fsGroup,required:!0,error:K.tenant_securityContext_fsGroup||"",min:"0"})}),(0,k.jsx)("div",{className:n.containerItem,children:(0,k.jsx)("div",{className:n.configSectionItem,children:(0,k.jsx)(T.Z,{label:"FsGroupChangePolicy",id:"securityContext_fsGroupChangePolicy",name:"securityContext_fsGroupChangePolicy",value:P.fsGroupChangePolicy,onChange:function(e){L("tenantSecurityContext",(0,a.Z)((0,a.Z)({},P),{},{fsGroupChangePolicy:e.target.value}))},options:[{label:"Always",value:"Always"},{label:"OnRootMismatch",value:"OnRootMismatch"}]})})})]})}),(0,k.jsx)("br",{}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,k.jsx)("div",{className:n.multiContainer,children:(0,k.jsx)(b.Z,{value:"tenantSecurityContextRunAsNonRoot",id:"tenant_securityContext_runAsNonRoot",name:"tenant_securityContext_runAsNonRoot",checked:P.runAsNonRoot,onChange:function(e){var n=e.target.checked;L("tenantSecurityContext",(0,a.Z)((0,a.Z)({},P),{},{runAsNonRoot:n}))},label:"Do not run as Root"})})})]})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,k.jsx)(b.Z,{value:"customRuntime",id:"tenant_custom_runtime",name:"tenant_custom_runtime",checked:I,onChange:function(e){var n=e.target.checked;L("customRuntime",n)},label:"Custom Runtime Configurations"})}),I&&(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.tenantCustomizationFields,children:(0,k.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,k.jsx)("legend",{className:n.descriptionText,children:"Custom Runtime Configurations"}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:"".concat(n.configSectionItem),children:(0,k.jsx)("div",{className:n.containerItem,children:(0,k.jsx)(C.Z,{id:"tenant_runtime_runtimeClassName",name:"tenant_runtime_runtimeClassName",onChange:function(e){L("runtimeClassName",e.target.value),z("tenant_runtime_runtimeClassName")},label:"Runtime Class Name",value:R,error:K.tenant_runtime_runtimeClassName||""})})})]})}),(0,k.jsx)(y.Z,{}),(0,k.jsxs)("div",{className:n.headerElement,children:[(0,k.jsx)(A.Z,{children:"Additional Environment Variables"}),(0,k.jsx)("span",{className:n.descriptionText,children:"Define additional environment variables to be used by your MinIO pods"})]}),(0,k.jsx)(c.ZP,{container:!0,children:w.map((function(e,i){return(0,k.jsxs)(c.ZP,{item:!0,xs:12,className:"".concat(n.formFieldRow," ").concat(n.envVarRow),children:[(0,k.jsx)(c.ZP,{item:!0,xs:5,className:n.fileItem,children:(0,k.jsx)(C.Z,{id:"env_var_key",name:"env_var_key",label:"Key",value:e.key,onChange:function(e){var n=(0,x.Z)(w);t((0,_.Ct)(n.map((function(n,t){return t===i?{key:e.target.value,value:n.value}:n}))))},index:i},"env_var_key_".concat(i.toString()))}),(0,k.jsx)(c.ZP,{item:!0,xs:5,className:n.fileItem,children:(0,k.jsx)(C.Z,{id:"env_var_value",name:"env_var_value",label:"Value",value:e.value,onChange:function(e){var n=(0,x.Z)(w);t((0,_.Ct)(n.map((function(n,t){return t===i?{key:n.key,value:e.target.value}:n}))))},index:i},"env_var_value_".concat(i.toString()))}),(0,k.jsxs)(c.ZP,{item:!0,xs:2,className:n.rowActions,children:[(0,k.jsx)("div",{className:n.overlayAction,children:(0,k.jsx)(g.Z,{size:"small",onClick:function(){var e=(0,x.Z)(w);e.push({key:"",value:""}),t((0,_.Ct)(e))},disabled:i!==w.length-1,children:(0,k.jsx)(N.Z,{})})}),(0,k.jsx)("div",{className:n.overlayAction,children:(0,k.jsx)(g.Z,{size:"small",onClick:function(){var e=w.filter((function(e,n){return n!==i}));t((0,_.Ct)(e))},disabled:w.length<=1,children:(0,k.jsx)(S.HFL,{})})})]})]},"tenant-envVar-".concat(i.toString()))}))})]})})),P=t(83679),I=t(20890),R=t(96040),D=t(72455),F=t(27247),K=(0,D.Z)((function(e){return(0,u.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)({adUserDnRows:{display:"flex",marginBottom:10},buttonTray:{marginLeft:10,display:"flex",height:38,"& button":{background:"#EAEAEA"}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}}},m.QV),m.DF),m.oO),m.AK))})),E=function(){var e=(0,p.TL)(),n=K(),t=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.idpSelection})),a=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADURL})),s=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADSkipTLS})),o=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADServerInsecure})),d=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADGroupSearchBaseDN})),u=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADGroupSearchFilter})),m=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADUserDNs})),f=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADGroupDNs})),h=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADLookupBindDN})),v=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADLookupBindPassword})),y=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADUserDNSearchBaseDN})),S=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADUserDNSearchFilter})),T=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADServerStartTLS})),A=(0,r.useState)({}),w=(0,i.Z)(A,2),P=w[0],D=w[1],E=(0,r.useCallback)((function(n,t){e((0,_.HM)({pageName:"identityProvider",field:n,value:t}))}),[e]),L=function(e){D((0,j.h)(P,e))};return(0,r.useEffect)((function(){var n=[];"AD"===t&&(n=[].concat((0,x.Z)(n),[{fieldKey:"AD_URL",required:!0,value:a},{fieldKey:"ad_lookupBindDN",required:!0,value:h}]));var i=(0,Z.R)(n);e((0,_.NO)({pageName:"identityProvider",valid:0===Object.keys(i).length})),D(i)}),[h,t,a,d,u,m,f,e]),(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"AD_URL",name:"AD_URL",onChange:function(e){E("ADURL",e.target.value),L("AD_URL")},label:"LDAP Server Address",value:a,placeholder:"ldap-server:636",error:P.AD_URL||"",required:!0})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(b.Z,{value:"ad_skipTLS",id:"ad_skipTLS",name:"ad_skipTLS",checked:s,onChange:function(e){var n=e.target.checked;E("ADSkipTLS",n)},label:"Skip TLS Verification"})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(b.Z,{value:"ad_serverInsecure",id:"ad_serverInsecure",name:"ad_serverInsecure",checked:o,onChange:function(e){var n=e.target.checked;E("ADServerInsecure",n)},label:"Server Insecure"})}),o?(0,k.jsxs)(c.ZP,{item:!0,xs:12,children:[(0,k.jsx)(I.Z,{className:n.error,variant:"caption",display:"block",gutterBottom:!0,children:"Warning: All traffic with Active Directory will be unencrypted"}),(0,k.jsx)("br",{})]}):null,(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(b.Z,{value:"ad_serverStartTLS",id:"ad_serverStartTLS",name:"ad_serverStartTLS",checked:T,onChange:function(e){var n=e.target.checked;E("ADServerStartTLS",n)},label:"Start TLS connection to AD/LDAP server"})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"ad_lookupBindDN",name:"ad_lookupBindDN",onChange:function(e){E("ADLookupBindDN",e.target.value),L("ad_lookupBindDN")},label:"Lookup Bind DN",value:h,placeholder:"cn=admin,dc=min,dc=io",error:P.ad_lookupBindDN||"",required:!0})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"ad_lookupBindPassword",name:"ad_lookupBindPassword",onChange:function(e){E("ADLookupBindPassword",e.target.value)},label:"Lookup Bind Password",value:v,placeholder:"admin"})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"ad_userDNSearchBaseDN",name:"ad_userDNSearchBaseDN",onChange:function(e){E("ADUserDNSearchBaseDN",e.target.value)},label:"User DN Search Base DN",value:y,placeholder:"dc=min,dc=io"})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"ad_userDNSearchFilter",name:"ad_userDNSearchFilter",onChange:function(e){E("ADUserDNSearchFilter",e.target.value)},label:"User DN Search Filter",value:S,placeholder:"(sAMAcountName=%s)"})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"ad_groupSearchBaseDN",name:"ad_groupSearchBaseDN",onChange:function(e){E("ADGroupSearchBaseDN",e.target.value)},label:"Group Search Base DN",value:d,placeholder:"ou=hwengg,dc=min,dc=io;ou=swengg,dc=min,dc=io"})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"ad_groupSearchFilter",name:"ad_groupSearchFilter",onChange:function(e){E("ADGroupSearchFilter",e.target.value)},label:"Group Search Filter",value:u,placeholder:"(&(objectclass=groupOfNames)(member=%s))"})}),(0,k.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,k.jsx)("legend",{className:n.descriptionText,children:"List of user DNs (Distinguished Names) to be Tenant Administrators"}),(0,k.jsx)(c.ZP,{item:!0,xs:12,children:m.map((function(t,i){return(0,k.jsx)(r.Fragment,{children:(0,k.jsxs)("div",{className:n.adUserDnRows,children:[(0,k.jsx)(C.Z,{id:"ad-userdn-".concat(i.toString()),label:"",placeholder:"",name:"ad-userdn-".concat(i.toString()),value:m[i],onChange:function(n){e((0,_.hK)({index:i,userDN:n.target.value})),L("ad-userdn-".concat(i.toString()))},index:i,error:P["ad-userdn-".concat(i.toString())]||""},"csv-ad-userdn-".concat(i.toString())),(0,k.jsxs)("div",{className:n.buttonTray,children:[(0,k.jsx)(R.Z,{title:"Add User","aria-label":"add",children:(0,k.jsx)(g.Z,{size:"small",onClick:function(){e((0,_.Y$)())},children:(0,k.jsx)(N.Z,{})})}),(0,k.jsx)(R.Z,{title:"Remove","aria-label":"add",children:(0,k.jsx)(g.Z,{size:"small",style:{marginLeft:16},onClick:function(){m.length>1&&e((0,_.GU)(i))},children:(0,k.jsx)(F.Z,{})})})]})]})},"identityField-".concat(i.toString()))}))})]}),(0,k.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,k.jsx)("legend",{className:n.descriptionText,children:"List of group DNs (Distinguished Names) to be Tenant Administrators"}),(0,k.jsx)(c.ZP,{item:!0,xs:12,children:f.map((function(t,i){return(0,k.jsx)(r.Fragment,{children:(0,k.jsxs)("div",{className:n.adUserDnRows,children:[(0,k.jsx)(C.Z,{id:"ad-groupdn-".concat(i.toString()),label:"",placeholder:"",name:"ad-groupdn-".concat(i.toString()),value:f[i],onChange:function(n){e((0,_.in)({index:i,userDN:n.target.value})),L("ad-groupdn-".concat(i.toString()))},index:i,error:P["ad-groupdn-".concat(i.toString())]||""},"csv-ad-groupdn-".concat(i.toString())),(0,k.jsxs)("div",{className:n.buttonTray,children:[(0,k.jsx)(R.Z,{title:"Add Group","aria-label":"add",children:(0,k.jsx)(g.Z,{size:"small",onClick:function(){e((0,_.Fe)())},children:(0,k.jsx)(N.Z,{})})}),(0,k.jsx)(R.Z,{title:"Remove","aria-label":"add",children:(0,k.jsx)(g.Z,{size:"small",style:{marginLeft:16},onClick:function(){f.length>1&&e((0,_.Hu)(i))},children:(0,k.jsx)(F.Z,{})})})]})]})},"identityField-".concat(i.toString()))}))})]})]})},L=(0,D.Z)((function(e){return(0,u.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)({buttonTray:{marginLeft:10,display:"flex",height:38,"& button":{background:"#EAEAEA"}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}}},m.QV),m.DF),m.oO),m.AK))})),z=function(){var e=(0,p.TL)(),n=L(),t=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.idpSelection})),a=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.openIDConfigurationURL})),s=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.openIDClientID})),o=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.openIDSecretID})),d=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.openIDClaimName})),u=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.openIDScopes})),m=(0,r.useState)({}),f=(0,i.Z)(m,2),h=f[0],v=f[1],g=(0,r.useCallback)((function(n,t){e((0,_.HM)({pageName:"identityProvider",field:n,value:t}))}),[e]),y=function(e){v((0,j.h)(h,e))};return(0,r.useEffect)((function(){var n=[];"OpenID"===t&&(n=[].concat((0,x.Z)(n),[{fieldKey:"openID_CONFIGURATION_URL",required:!0,value:a},{fieldKey:"openID_clientID",required:!0,value:s},{fieldKey:"openID_secretID",required:!0,value:o},{fieldKey:"openID_claimName",required:!1,value:d}]));var i=(0,Z.R)(n);e((0,_.NO)({pageName:"identityProvider",valid:0===Object.keys(i).length})),v(i)}),[t,s,o,a,d,e]),(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"openID_CONFIGURATION_URL",name:"openID_CONFIGURATION_URL",onChange:function(e){g("openIDConfigurationURL",e.target.value),y("openID_CONFIGURATION_URL")},label:"Configuration URL",value:a,placeholder:"https://your-identity-provider.com/.well-known/openid-configuration",error:h.openID_CONFIGURATION_URL||"",required:!0})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"openID_clientID",name:"openID_clientID",onChange:function(e){g("openIDClientID",e.target.value),y("openID_clientID")},label:"Client ID",value:s,error:h.openID_clientID||"",required:!0})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"openID_secretID",name:"openID_secretID",onChange:function(e){g("openIDSecretID",e.target.value),y("openID_secretID")},label:"Secret ID",value:o,error:h.openID_secretID||"",required:!0})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"openID_claimName",name:"openID_claimName",onChange:function(e){g("openIDClaimName",e.target.value),y("openID_claimName")},label:"Claim Name",value:d,placeholder:"policy",error:h.openID_claimName||""})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"openID_scopes",name:"openID_scopes",onChange:function(e){g("openIDScopes",e.target.value),y("openID_scopes")},label:"Scopes",value:u})})]})},O=t(22918),M=(0,D.Z)((function(e){return(0,u.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)({buttonTray:{marginLeft:10,display:"flex",height:38,"& button":{background:"#EAEAEA"}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},shortened:{gridTemplateColumns:"auto auto 50px 50px",display:"grid",gridGap:15,marginBottom:10,"& input":{fontWeight:400}}},m.QV),m.DF),m.oO),m.AK))})),G=function(){var e=(0,p.TL)(),n=M(),t=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.idpSelection})),a=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.accessKeys})),s=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.secretKeys})),o=(0,r.useState)({}),c=(0,i.Z)(o,2),d=c[0],u=c[1],m=function(e){u((0,j.h)(d,e))};return(0,r.useEffect)((function(){var n=[];if("Built-in"===t){n=(0,x.Z)(n);for(var i=0;i.amanzonaws.com",value:a,error:v.aws_endpoint||"",required:!0})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"aws_region",name:"aws_region",onChange:function(e){y("awsRegion",e.target.value),b("aws_region")},label:"Region",tooltip:"Region is the AWS region the SecretsManager is located",value:s,error:v.aws_region||"",required:!0})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"aws_kmsKey",name:"aws_kmsKey",onChange:function(e){y("awsKMSKey",e.target.value)},label:"KMS Key",tooltip:"KMSKey is the AWS-KMS key ID (CMK-ID) used to en/decrypt secrets managed by the SecretsManager. If empty, the default AWS KMS key is used",value:o})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,children:(0,k.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,k.jsx)("legend",{className:n.descriptionText,children:"Credentials"}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"aws_accessKey",name:"aws_accessKey",onChange:function(e){y("awsAccessKey",e.target.value),b("aws_accessKey")},label:"Access Key",tooltip:"AccessKey is the access key for authenticating to AWS",value:d,error:v.aws_accessKey||"",required:!0})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"aws_secretKey",name:"aws_secretKey",onChange:function(e){y("awsSecretKey",e.target.value),b("aws_secretKey")},label:"Secret Key",tooltip:"SecretKey is the secret key for authenticating to AWS",value:u,error:v.aws_secretKey||"",required:!0})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"aws_token",name:"aws_token",tooltip:"SessionToken is an optional session token for authenticating to AWS when using STS",onChange:function(e){y("awsToken",e.target.value)},label:"Token",value:m})})]})})]})},se=t(25228),oe=t(43896),le=t(92217),ce=t(13871),de=(0,h.Z)((function(e){return(0,u.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)({encryptionTypeOptions:{marginBottom:15},mutualTlsConfig:{marginTop:15,"& fieldset":{flex:1}},rightSpacer:{marginRight:15},responsiveContainer:{"@media (max-width: 900px)":{display:"flex",flexFlow:"column"}}},m.QV),m.DF),m.oO),m.AK))}))((function(e){var n=e.classes,t=(0,p.TL)(),s=(0,l.v9)((function(e){return e.createTenant.fields.encryption.replicas})),o=(0,l.v9)((function(e){return e.createTenant.fields.encryption.rawConfiguration})),d=(0,l.v9)((function(e){return e.createTenant.fields.encryption.encryptionTab})),u=(0,l.v9)((function(e){return e.createTenant.fields.encryption.enableEncryption})),m=(0,l.v9)((function(e){return e.createTenant.fields.encryption.encryptionType})),f=(0,l.v9)((function(e){return e.createTenant.fields.encryption.gcpProjectID})),h=(0,l.v9)((function(e){return e.createTenant.fields.encryption.gcpEndpoint})),g=(0,l.v9)((function(e){return e.createTenant.fields.encryption.gcpClientEmail})),y=(0,l.v9)((function(e){return e.createTenant.fields.encryption.gcpClientID})),N=(0,l.v9)((function(e){return e.createTenant.fields.encryption.gcpPrivateKeyID})),S=(0,l.v9)((function(e){return e.createTenant.fields.encryption.gcpPrivateKey})),A=(0,l.v9)((function(e){return e.createTenant.fields.encryption.enableCustomCertsForKES})),w=(0,l.v9)((function(e){return e.createTenant.fields.security.enableAutoCert})),I=(0,l.v9)((function(e){return e.createTenant.fields.security.enableTLS})),R=(0,l.v9)((function(e){return e.createTenant.certificates.minioServerCertificates})),D=(0,l.v9)((function(e){return e.createTenant.certificates.kesServerCertificate})),F=(0,l.v9)((function(e){return e.createTenant.certificates.minioMTLSCertificate})),K=(0,l.v9)((function(e){return e.createTenant.certificates.kmsMTLSCertificate})),E=(0,l.v9)((function(e){return e.createTenant.certificates.kmsCA})),L=(0,l.v9)((function(e){return e.createTenant.fields.security.enableCustomCerts})),z=(0,l.v9)((function(e){return e.createTenant.fields.encryption.kesSecurityContext})),O=(0,r.useState)({}),M=(0,i.Z)(O,2),G=M[0],B=M[1],V=!1;I&&(w||R&&R.filter((function(e){return e.encoded_key&&e.encoded_cert})).length>0)&&(V=!0);var q=(0,r.useCallback)((function(e,n){t((0,_.HM)({pageName:"encryption",field:e,value:n}))}),[t]),H=function(e){B((0,j.h)(G,e))};return(0,r.useEffect)((function(){var e=[];u&&(e=[{fieldKey:"rawConfiguration",required:d>0,value:o},{fieldKey:"replicas",required:!0,value:s,customValidation:parseInt(s)<1,customValidationMessage:"Replicas needs to be 1 or greater"},{fieldKey:"kes_securityContext_runAsUser",required:!0,value:z.runAsUser,customValidation:""===z.runAsUser||parseInt(z.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"kes_securityContext_runAsGroup",required:!0,value:z.runAsGroup,customValidation:""===z.runAsGroup||parseInt(z.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"kes_securityContext_fsGroup",required:!0,value:z.fsGroup,customValidation:""===z.fsGroup||parseInt(z.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}],L&&(e=[].concat((0,x.Z)(e),[{fieldKey:"serverKey",required:!w,value:D.encoded_key},{fieldKey:"serverCert",required:!w,value:D.encoded_cert},{fieldKey:"clientKey",required:!w,value:F.encoded_key},{fieldKey:"clientCert",required:!w,value:F.encoded_cert}])));var n=(0,Z.R)(e);t((0,_.NO)({pageName:"encryption",valid:0===Object.keys(n).length})),B(n)}),[o,d,u,m,f,h,g,y,N,S,t,w,L,D.encoded_key,D.encoded_cert,F.encoded_key,F.encoded_cert,z,s]),(0,k.jsxs)(v.Z,{className:n.paperWrapper,children:[(0,k.jsxs)(c.ZP,{container:!0,alignItems:"center",children:[(0,k.jsx)(c.ZP,{item:!0,xs:!0,children:(0,k.jsx)(Q,{children:"Encryption"})}),(0,k.jsx)(c.ZP,{item:!0,xs:4,justifyContent:"end",textAlign:"right",children:(0,k.jsx)(b.Z,{label:"",indicatorLabels:["Enabled","Disabled"],checked:u,value:"tenant_encryption",id:"tenant-encryption",name:"tenant-encryption",onChange:function(e){var n=e.target.checked;q("enableEncryption",n)},description:"",disabled:!V})})]}),(0,k.jsxs)(c.ZP,{container:!0,spacing:1,children:[(0,k.jsx)(c.ZP,{item:!0,xs:12,children:(0,k.jsx)("span",{className:n.descriptionText,children:"MinIO Server-Side Encryption (SSE) protects objects as part of write operations, allowing clients to take advantage of server processing power to secure objects at the storage layer (encryption-at-rest). SSE also provides key functionality to regulatory and compliance requirements around secure locking and erasure."})}),(0,k.jsx)(c.ZP,{xs:12,children:(0,k.jsx)(ce.Z,{})}),u&&(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)(c.ZP,{item:!0,xs:12,children:(0,k.jsxs)(se.Z,{value:d,onChange:function(e,n){q("encryptionTab",n)},indicatorColor:"primary",textColor:"primary","aria-label":"cluster-tabs",variant:"scrollable",scrollButtons:"auto",children:[(0,k.jsx)(oe.Z,{id:"kms-options",label:"Options"}),(0,k.jsx)(oe.Z,{id:"kms-raw-configuration",label:"Raw Edit"})]})}),d?(0,k.jsx)(r.Fragment,{children:(0,k.jsx)(c.ZP,{item:!0,xs:12,children:(0,k.jsx)(le.Z,{value:o,mode:"yaml",onBeforeChange:function(e,n,t){q("rawConfiguration",t)},editorHeight:"550px"})})}):(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.encryptionTypeOptions,children:(0,k.jsx)(P.Z,{currentSelection:m,id:"encryptionType",name:"encryptionType",label:"KMS",onChange:function(e){q("encryptionType",e.target.value)},selectorOptions:[{label:"Vault",value:"vault"},{label:"AWS",value:"aws"},{label:"Gemalto",value:"gemalto"},{label:"GCP",value:"gcp"},{label:"Azure",value:"azure"}]})}),"vault"===m&&(0,k.jsx)(Y,{}),"azure"===m&&(0,k.jsx)(X,{}),"gcp"===m&&(0,k.jsx)(ne,{}),"aws"===m&&(0,k.jsx)(re,{}),"gemalto"===m&&(0,k.jsx)(ie,{})]}),(0,k.jsx)("div",{className:n.headerElement,children:(0,k.jsx)("h4",{className:n.h3Section,children:"Additional Configurations"})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,children:(0,k.jsx)(b.Z,{value:"enableCustomCertsForKES",id:"enableCustomCertsForKES",name:"enableCustomCertsForKES",checked:A||!w,onChange:function(e){var n=e.target.checked;q("enableCustomCertsForKES",n)},label:"Custom Certificates",disabled:!w})}),(A||!w)&&(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)(c.ZP,{container:!0,children:(0,k.jsx)(c.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,k.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,k.jsx)("legend",{className:n.descriptionText,children:"Encryption server certificates"}),(0,k.jsx)(U.Z,{onChange:function(e,n){t((0,_.uN)({key:"key",fileName:n,value:e})),H("serverKey")},accept:".key,.pem",id:"serverKey",name:"serverKey",label:"Key",error:G.serverKey||"",value:D.key,required:!w}),(0,k.jsx)(U.Z,{onChange:function(e,n){t((0,_.uN)({key:"cert",fileName:n,value:e})),H("serverCert")},accept:".cer,.crt,.cert,.pem",id:"serverCert",name:"serverCert",label:"Cert",error:G.serverCert||"",value:D.cert,required:!w})]})})}),(0,k.jsx)(c.ZP,{container:!0,style:{marginBottom:15},children:(0,k.jsx)(c.ZP,{item:!0,xs:12,children:(0,k.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,k.jsx)("legend",{className:n.descriptionText,children:"MinIO mTLS certificates (connection between MinIO and the Encryption server)"}),(0,k.jsx)(U.Z,{onChange:function(e,n){t((0,_.Ud)({key:"key",fileName:n,value:e})),H("clientKey")},accept:".key,.pem",id:"clientKey",name:"clientKey",label:"Key",error:G.clientKey||"",value:F.key,required:!w}),(0,k.jsx)(U.Z,{onChange:function(e,n){t((0,_.Ud)({key:"cert",fileName:n,value:e})),H("clientCert")},accept:".cer,.crt,.cert,.pem",id:"clientCert",name:"clientCert",label:"Cert",error:G.clientCert||"",value:F.cert,required:!w})]})})}),(0,k.jsx)(c.ZP,{container:!0,className:n.mutualTlsConfig,children:(0,k.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,k.jsx)("legend",{className:n.descriptionText,children:"KMS mTLS certificates (connection between the Encryption server and the KMS)"}),(0,k.jsx)(U.Z,{onChange:function(e,n){t((0,_.Tr)({key:"key",fileName:n,value:e})),H("vault_key")},accept:".key,.pem",id:"vault_key",name:"vault_key",label:"Key",value:K.key}),(0,k.jsx)(U.Z,{onChange:function(e,n){t((0,_.Tr)({key:"cert",fileName:n,value:e})),H("vault_cert")},accept:".cer,.crt,.cert,.pem",id:"vault_cert",name:"vault_cert",label:"Cert",value:K.cert}),(0,k.jsx)(U.Z,{onChange:function(e,n){t((0,_.b9)({fileName:n,value:e})),H("vault_ca")},accept:".cer,.crt,.cert,.pem",id:"vault_ca",name:"vault_ca",label:"CA",value:E.cert})]})})]}),(0,k.jsxs)(c.ZP,{item:!0,xs:12,children:[(0,k.jsx)(c.ZP,{item:!0,xs:12,classes:n.formFieldRow,children:(0,k.jsx)(C.Z,{type:"number",min:"1",id:"replicas",name:"replicas",onChange:function(e){q("replicas",e.target.value),H("replicas")},label:"Replicas",value:s,required:!0,error:G.replicas||""})}),(0,k.jsxs)("fieldset",{className:n.fieldGroup,style:{marginTop:15},children:[(0,k.jsx)("legend",{className:n.descriptionText,children:"SecurityContext for KES pods"}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.kesSecurityContext,children:(0,k.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveContainer),children:[(0,k.jsx)("div",{className:"".concat(n.formFieldRow," ").concat(n.rightSpacer),children:(0,k.jsx)(C.Z,{type:"number",id:"kes_securityContext_runAsUser",name:"kes_securityContext_runAsUser",onChange:function(e){q("kesSecurityContext",(0,a.Z)((0,a.Z)({},z),{},{runAsUser:e.target.value})),H("kes_securityContext_runAsUser")},label:"Run As User",value:z.runAsUser,required:!0,error:G.kes_securityContext_runAsUser||"",min:"0"})}),(0,k.jsx)("div",{className:"".concat(n.formFieldRow," ").concat(n.rightSpacer),children:(0,k.jsx)(C.Z,{type:"number",id:"kes_securityContext_runAsGroup",name:"kes_securityContext_runAsGroup",onChange:function(e){q("kesSecurityContext",(0,a.Z)((0,a.Z)({},z),{},{runAsGroup:e.target.value})),H("kes_securityContext_runAsGroup")},label:"Run As Group",value:z.runAsGroup,required:!0,error:G.kes_securityContext_runAsGroup||"",min:"0"})})]})}),(0,k.jsx)("br",{}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.kesSecurityContext,children:(0,k.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveContainer),children:[(0,k.jsx)("div",{className:"".concat(n.formFieldRow," ").concat(n.rightSpacer),children:(0,k.jsx)(C.Z,{type:"number",id:"kes_securityContext_fsGroup",name:"kes_securityContext_fsGroup",onChange:function(e){q("kesSecurityContext",(0,a.Z)((0,a.Z)({},z),{},{fsGroup:e.target.value})),H("kes_securityContext_fsGroup")},label:"FsGroup",value:z.fsGroup,required:!0,error:G.kes_securityContext_fsGroup||"",min:"0"})}),(0,k.jsx)("div",{className:"".concat(n.formFieldRow," ").concat(n.rightSpacer),children:(0,k.jsx)(T.Z,{label:"FsGroupChangePolicy",id:"securityContext_fsGroupChangePolicy",name:"securityContext_fsGroupChangePolicy",value:z.fsGroupChangePolicy,onChange:function(e){q("kesSecurityContext",(0,a.Z)((0,a.Z)({},z),{},{fsGroupChangePolicy:e.target.value}))},options:[{label:"Always",value:"Always"},{label:"OnRootMismatch",value:"OnRootMismatch"}]})})]})}),(0,k.jsx)("br",{}),(0,k.jsx)(c.ZP,{item:!0,xs:12,children:(0,k.jsx)("div",{className:n.multiContainer,children:(0,k.jsx)(b.Z,{value:"kesSecurityContextRunAsNonRoot",id:"kes_securityContext_runAsNonRoot",name:"kes_securityContext_runAsNonRoot",checked:z.runAsNonRoot,onChange:function(e){var n=e.target.checked;q("kesSecurityContext",(0,a.Z)((0,a.Z)({},z),{},{runAsNonRoot:n}))},label:"Do not run as Root"})})})]})]})]})]})]})})),ue=t(4942),me=t(81207),fe=t(45660),pe=t(87995),xe=(0,h.Z)((function(e){return(0,u.Z)((0,a.Z)((0,a.Z)({overlayAction:{marginLeft:10,display:"flex",alignItems:"center","& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},affinityConfigField:{display:"flex"},affinityFieldLabel:{display:"flex",flexFlow:"column",flex:1},radioField:{display:"flex",alignItems:"flex-start",marginTop:10,"& div:first-child":{display:"flex",flexFlow:"column",alignItems:"baseline",textAlign:"left !important"}},affinityLabelKey:{"& div:first-child":{marginBottom:0}},affinityLabelValue:{marginLeft:10,"& div:first-child":{marginBottom:0}},rowActions:{display:"flex",alignItems:"center"},affinityRow:{marginBottom:10,display:"flex"}},m.oO),m.AK))}))((function(e){var n=e.classes,t=(0,p.TL)(),s=(0,l.v9)((function(e){return e.createTenant.fields.affinity.podAffinity})),o=(0,l.v9)((function(e){return e.createTenant.fields.affinity.nodeSelectorLabels})),d=(0,l.v9)((function(e){return e.createTenant.fields.affinity.withPodAntiAffinity})),u=(0,l.v9)((function(e){return e.createTenant.nodeSelectorPairs})),m=(0,l.v9)((function(e){return e.createTenant.tolerations})),f=(0,r.useState)({}),h=(0,i.Z)(f,2),y=h[0],j=h[1],N=(0,r.useState)(!0),w=(0,i.Z)(N,2),I=w[0],R=w[1],D=(0,r.useState)({}),F=(0,i.Z)(D,2),K=F[0],E=F[1],L=(0,r.useState)([]),z=(0,i.Z)(L,2),O=z[0],M=z[1],G=(0,r.useCallback)((function(e,n){t((0,_.HM)({pageName:"affinity",field:e,value:n}))}),[t]);(0,r.useEffect)((function(){I&&me.Z.invoke("GET","/api/v1/nodes/labels").then((function(e){R(!1),E(e);var n=[];for(var t in e)n.push({label:t,value:t});M(n)})).catch((function(e){R(!1),t((0,pe.zb)(e)),E({})}))}),[t,I]),(0,r.useEffect)((function(){if(u){var e=u.filter((function(e){return""!==e.key})).map((function(e){return"".concat(e.key,"=").concat(e.value)})).filter((function(e,n,t){return t.indexOf(e)===n})).join("&");G("nodeSelectorLabels",e)}}),[u,G]),(0,r.useEffect)((function(){var e=[];if("nodeSelector"===s){var n=!0,i=o.split("&");1===i.length&&""===i[0]&&(n=!1),i.forEach((function(e,t){var a=e.split("=");2!==a.length&&(n=!1),t+1!==i.length&&(""!==a[0]&&""!==a[1]||(n=!1))})),e=[].concat((0,x.Z)(e),[{fieldKey:"labels",required:!0,value:o,customValidation:!n,customValidationMessage:"You need to add at least one label key-pair"}])}var a=(0,Z.R)(e);t((0,_.NO)({pageName:"affinity",valid:0===Object.keys(a).length})),j(a)}),[t,s,o]);var B=function(e,n,i){var r=(0,a.Z)((0,a.Z)({},m[e]),{},(0,ue.Z)({},n,i));t((0,_.iU)({index:e,tolerationValue:r}))};return(0,k.jsxs)(v.Z,{className:n.paperWrapper,children:[(0,k.jsxs)("div",{className:n.headerElement,children:[(0,k.jsx)(A.Z,{children:"Pod Placement"}),(0,k.jsx)("span",{className:n.descriptionText,children:"Configure how pods will be assigned to nodes"})]}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.affinityConfigField,children:(0,k.jsxs)(c.ZP,{item:!0,className:n.affinityFieldLabel,children:[(0,k.jsx)("div",{className:n.label,children:"Type"}),(0,k.jsx)("div",{className:"".concat(n.descriptionText," ").concat(n.affinityHelpText),children:"MinIO supports multiple configurations for Pod Affinity"}),(0,k.jsx)(c.ZP,{item:!0,className:n.radioField,children:(0,k.jsx)(P.Z,{currentSelection:s,id:"affinity-options",name:"affinity-options",label:" ",onChange:function(e){G("podAffinity",e.target.value)},selectorOptions:[{label:"None",value:"none"},{label:"Default (Pod Anti-Affinity)",value:"default"},{label:"Node Selector",value:"nodeSelector"}]})})]})}),"nodeSelector"===s&&(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)("br",{}),(0,k.jsx)(c.ZP,{item:!0,xs:12,children:(0,k.jsx)(b.Z,{value:"with_pod_anti_affinity",id:"with_pod_anti_affinity",name:"with_pod_anti_affinity",checked:d,onChange:function(e){var n=e.target.checked;G("withPodAntiAffinity",n)},label:"With Pod Anti-Affinity"})}),(0,k.jsxs)(c.ZP,{item:!0,xs:12,children:[(0,k.jsx)("h3",{children:"Labels"}),(0,k.jsx)("span",{className:n.error,children:y.labels}),(0,k.jsx)(c.ZP,{container:!0,children:u&&u.map((function(e,i){return(0,k.jsxs)(c.ZP,{item:!0,xs:12,className:n.affinityRow,children:[(0,k.jsxs)(c.ZP,{item:!0,xs:5,className:n.affinityLabelKey,children:[O.length>0&&(0,k.jsx)(T.Z,{onChange:function(e){var n=e.target.value,a={key:n,value:K[n][0]},r=(0,x.Z)(u);r[i]=a,t((0,_.i$)(r))},id:"select-access-policy",name:"select-access-policy",label:"",value:e.key,options:O}),0===O.length&&(0,k.jsx)(C.Z,{id:"nodeselector-key-".concat(i.toString()),label:"",name:"nodeselector-".concat(i.toString()),value:e.key,onChange:function(e){var n=(0,x.Z)(u);n[i]={key:n[i].key,value:e.target.value},t((0,_.i$)(n))},index:i,placeholder:"Key"})]}),(0,k.jsxs)(c.ZP,{item:!0,xs:5,className:n.affinityLabelValue,children:[O.length>0&&(0,k.jsx)(T.Z,{onChange:function(e){var n=(0,x.Z)(u);n[i]={key:n[i].key,value:e.target.value},t((0,_.i$)(n))},id:"select-access-policy",name:"select-access-policy",label:"",value:e.value,options:K[e.key]?K[e.key].map((function(e){return{label:e,value:e}})):[]}),0===O.length&&(0,k.jsx)(C.Z,{id:"nodeselector-value-".concat(i.toString()),label:"",name:"nodeselector-".concat(i.toString()),value:e.value,onChange:function(e){var n=(0,x.Z)(u);n[i]={key:n[i].key,value:e.target.value},t((0,_.i$)(n))},index:i,placeholder:"value"})]}),(0,k.jsxs)(c.ZP,{item:!0,xs:2,className:n.rowActions,children:[(0,k.jsx)("div",{className:n.overlayAction,children:(0,k.jsx)(g.Z,{size:"small",onClick:function(){var e=(0,x.Z)(u);O.length>0?e.push({key:O[0].value,value:K[O[0].value][0]}):e.push({key:"",value:""}),t((0,_.i$)(e))},disabled:i!==u.length-1,children:(0,k.jsx)(S.dtP,{})})}),(0,k.jsx)("div",{className:n.overlayAction,children:(0,k.jsx)(g.Z,{size:"small",onClick:function(){var e=u.filter((function(e,n){return n!==i}));t((0,_.i$)(e))},disabled:u.length<=1,children:(0,k.jsx)(S.HFL,{})})})]})]},"affinity-keyVal-".concat(i.toString()))}))})]})]}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.affinityConfigField,children:(0,k.jsxs)(c.ZP,{item:!0,className:n.affinityFieldLabel,children:[(0,k.jsx)("h3",{children:"Tolerations"}),(0,k.jsx)("span",{className:n.error,children:y.tolerations}),(0,k.jsx)(c.ZP,{container:!0,children:m&&m.map((function(e,i){var a;return(0,k.jsxs)(c.ZP,{item:!0,xs:12,className:n.affinityRow,children:[(0,k.jsx)(fe.Z,{effect:e.effect,onEffectChange:function(e){B(i,"effect",e)},tolerationKey:e.key,onTolerationKeyChange:function(e){B(i,"key",e)},operator:e.operator,onOperatorChange:function(e){B(i,"operator",e)},value:e.value,onValueChange:function(e){B(i,"value",e)},tolerationSeconds:(null===(a=e.tolerationSeconds)||void 0===a?void 0:a.seconds)||0,onSecondsChange:function(e){B(i,"tolerationSeconds",{seconds:e})},index:i}),(0,k.jsx)("div",{className:n.overlayAction,children:(0,k.jsx)(g.Z,{size:"small",onClick:function(){t((0,_.ly)())},disabled:i!==m.length-1,children:(0,k.jsx)(S.dtP,{})})}),(0,k.jsx)("div",{className:n.overlayAction,children:(0,k.jsx)(g.Z,{size:"small",onClick:function(){return t((0,_.JX)(i))},disabled:m.length<=1,children:(0,k.jsx)(S.HFL,{})})})]},"affinity-keyVal-".concat(i.toString()))}))})]})})]})})),he=(0,h.Z)((function(e){return(0,u.Z)((0,a.Z)((0,a.Z)({},m.DF),m.AK))}))((function(e){var n=e.classes,t=(0,p.TL)(),a=(0,l.v9)((function(e){return e.createTenant.fields.configure.customImage})),s=(0,l.v9)((function(e){return e.createTenant.fields.configure.imageName})),o=(0,l.v9)((function(e){return e.createTenant.fields.configure.customDockerhub})),d=(0,l.v9)((function(e){return e.createTenant.fields.configure.imageRegistry})),u=(0,l.v9)((function(e){return e.createTenant.fields.configure.imageRegistryUsername})),m=(0,l.v9)((function(e){return e.createTenant.fields.configure.imageRegistryPassword})),f=(0,l.v9)((function(e){return e.createTenant.fields.configure.tenantCustom})),h=(0,l.v9)((function(e){return e.createTenant.fields.configure.kesImage})),g=(0,r.useState)({}),y=(0,i.Z)(g,2),N=y[0],S=y[1],T=(0,r.useCallback)((function(e,n){t((0,_.HM)({pageName:"configure",field:e,value:n}))}),[t]);(0,r.useEffect)((function(){var e=[];a&&(e=[].concat((0,x.Z)(e),[{fieldKey:"image",required:!1,value:s,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/minio:VERSION'"},{fieldKey:"kesImage",required:!1,value:h,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/kes:VERSION'"}]),o&&(e=[].concat((0,x.Z)(e),[{fieldKey:"registry",required:!0,value:d},{fieldKey:"registryUsername",required:!0,value:u},{fieldKey:"registryPassword",required:!0,value:m}])));var n=(0,Z.R)(e);t((0,_.NO)({pageName:"configure",valid:0===Object.keys(n).length})),S(n)}),[a,s,h,o,d,u,m,t,f]);var w=function(e){S((0,j.h)(N,e))};return(0,k.jsxs)(v.Z,{className:n.paperWrapper,children:[(0,k.jsxs)("div",{className:n.headerElement,children:[(0,k.jsx)(A.Z,{children:"Container Images"}),(0,k.jsx)("span",{className:n.descriptionText,children:"Specify the container images used by the Tenant and its features."})]}),(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"image",name:"image",onChange:function(e){T("imageName",e.target.value),w("image")},label:"MinIO",value:s,error:N.image||"",placeholder:"minio/minio:RELEASE.2023-09-07T02-05-02Z"})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"kesImage",name:"kesImage",onChange:function(e){T("kesImage",e.target.value),w("kesImage")},label:"KES",value:h,error:N.kesImage||"",placeholder:"minio/kes:2023-08-19T17-27-47Z"})})]}),a&&(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)("h4",{children:"Custom Container Registry"})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(b.Z,{value:"custom_docker_hub",id:"custom_docker_hub",name:"custom_docker_hub",checked:o,onChange:function(e){var n=e.target.checked;T("customDockerhub",n)},label:"Use a private container registry"})})]}),o&&(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"registry",name:"registry",onChange:function(e){T("imageRegistry",e.target.value)},label:"Endpoint",value:d,error:N.registry||"",placeholder:"https://index.docker.io/v1/",required:!0})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"registryUsername",name:"registryUsername",onChange:function(e){T("imageRegistryUsername",e.target.value)},label:"Username",value:u,error:N.registryUsername||"",required:!0})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(C.Z,{id:"registryPassword",name:"registryPassword",onChange:function(e){T("imageRegistryPassword",e.target.value)},label:"Password",value:m,error:N.registryPassword||"",required:!0})})]})]})})),ve=t(74794),ge=t(79836),ye=t(53382),je=t(53994),Ze=t(35855),be=t(45248),Ce=(0,h.Z)((function(e){return(0,u.Z)((0,a.Z)((0,a.Z)({root:{margin:4},table:{"& .MuiTableCell-root":{fontSize:13}}},m.oO),m.AK))}))((function(e){var n=e.classes,t=(0,l.v9)((function(e){return e.createTenant.fields.tenantSize.nodes})),i=(0,l.v9)((function(e){return e.createTenant.fields.tenantSize.resourcesMemoryRequest})),a=(0,l.v9)((function(e){return e.createTenant.fields.tenantSize.ecParity})),s=(0,l.v9)((function(e){return e.createTenant.fields.tenantSize.distribution})),o=(0,l.v9)((function(e){return e.createTenant.fields.tenantSize.ecParityCalc})),c=(0,l.v9)((function(e){return e.createTenant.fields.tenantSize.resourcesCPURequest})),d=(0,l.v9)((function(e){return e.createTenant.fields.tenantSize.integrationSelection})),u=o.storageFactors.find((function(e){return e.erasureCode===a}));return(0,k.jsxs)("div",{className:n.root,children:[(0,k.jsx)("h4",{children:"Resource Allocation"}),(0,k.jsx)(y.Z,{}),(0,k.jsx)(ge.Z,{className:n.table,"aria-label":"simple table",size:"small",children:(0,k.jsxs)(ye.Z,{children:[(0,k.jsxs)(Ze.Z,{children:[(0,k.jsx)(je.Z,{scope:"row",children:"Number of Servers"}),(0,k.jsx)(je.Z,{align:"right",children:parseInt(t)>0?t:"-"})]}),""===d.typeSelection&&""===d.storageClass&&(0,k.jsxs)(r.Fragment,{children:[(0,k.jsxs)(Ze.Z,{children:[(0,k.jsx)(je.Z,{scope:"row",children:"Drives per Server"}),(0,k.jsx)(je.Z,{align:"right",children:s?s.disks:"-"})]}),(0,k.jsxs)(Ze.Z,{children:[(0,k.jsx)(je.Z,{scope:"row",children:"Drive Capacity"}),(0,k.jsx)(je.Z,{align:"right",children:s?(0,be.ae)(s.pvSize):"-"})]})]}),(0,k.jsxs)(Ze.Z,{children:[(0,k.jsx)(je.Z,{scope:"row",children:"Total Volumes"}),(0,k.jsx)(je.Z,{align:"right",children:s?s.persistentVolumes:"-"})]}),""===d.typeSelection&&""===d.storageClass&&(0,k.jsxs)(r.Fragment,{children:[(0,k.jsxs)(Ze.Z,{children:[(0,k.jsx)(je.Z,{scope:"row",children:"Memory per Node"}),(0,k.jsxs)(je.Z,{align:"right",children:[i," Gi"]})]}),(0,k.jsxs)(Ze.Z,{children:[(0,k.jsx)(je.Z,{style:{borderBottom:0},scope:"row",children:"CPU Selection"}),(0,k.jsx)(je.Z,{style:{borderBottom:0},align:"right",children:c})]})]})]})}),0===o.error&&u&&(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)("h4",{children:"Erasure Code Configuration"}),(0,k.jsx)(y.Z,{}),(0,k.jsx)(ge.Z,{className:n.table,"aria-label":"simple table",size:"small",children:(0,k.jsxs)(ye.Z,{children:[(0,k.jsxs)(Ze.Z,{children:[(0,k.jsx)(je.Z,{scope:"row",children:"EC Parity"}),(0,k.jsx)(je.Z,{align:"right",children:""!==a?a:"-"})]}),(0,k.jsxs)(Ze.Z,{children:[(0,k.jsx)(je.Z,{scope:"row",children:"Raw Capacity"}),(0,k.jsx)(je.Z,{align:"right",children:(0,be.ae)(o.rawCapacity)})]}),(0,k.jsxs)(Ze.Z,{children:[(0,k.jsx)(je.Z,{scope:"row",children:"Usable Capacity"}),(0,k.jsx)(je.Z,{align:"right",children:(0,be.ae)(u.maxCapacity)})]}),(0,k.jsxs)(Ze.Z,{children:[(0,k.jsx)(je.Z,{style:{borderBottom:0},scope:"row",children:"Server Failures Tolerated"}),(0,k.jsx)(je.Z,{style:{borderBottom:0},align:"right",children:s?Math.floor(u.maxFailureTolerations/s.disks):"-"})]})]})})]}),""!==d.typeSelection&&""!==d.storageClass&&(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)("h4",{children:"Single Instance Configuration"}),(0,k.jsx)(y.Z,{}),(0,k.jsx)(ge.Z,{className:n.table,"aria-label":"simple table",size:"small",children:(0,k.jsxs)(ye.Z,{children:[(0,k.jsxs)(Ze.Z,{children:[(0,k.jsx)(je.Z,{scope:"row",children:"CPU"}),(0,k.jsx)(je.Z,{align:"right",children:0!==d.CPU?d.CPU:"-"})]}),(0,k.jsxs)(Ze.Z,{children:[(0,k.jsx)(je.Z,{scope:"row",children:"Memory"}),(0,k.jsx)(je.Z,{align:"right",children:0!==d.memory?"".concat(d.memory," Gi"):"-"})]}),(0,k.jsxs)(Ze.Z,{children:[(0,k.jsx)(je.Z,{scope:"row",children:"Drives per Server"}),(0,k.jsx)(je.Z,{align:"right",children:0!==d.drivesPerServer?"".concat(d.drivesPerServer):"-"})]}),(0,k.jsxs)(Ze.Z,{children:[(0,k.jsx)(je.Z,{style:{borderBottom:0},scope:"row",children:"Drive Size"}),(0,k.jsxs)(je.Z,{style:{borderBottom:0},align:"right",children:[d.driveSize.driveSize,d.driveSize.sizeUnit]})]})]})})]})]})})),Ne=t(19720),Se=t(45884),_e=t(46078),Te=t(51691),Ae=t(40306),ke=t(98222),we=(0,D.Z)((function(e){return(0,u.Z)((0,a.Z)((0,a.Z)({wrapText:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"}},m.oO),m.Qw))})),Pe=function(){var e=(0,p.TL)(),n=we(),t=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.namespace})),i=(0,l.v9)((function(e){return e.createTenant.addNSLoading})),a=(0,l.v9)((function(e){return e.createTenant.addNSOpen}));return(0,k.jsx)(Ae.Z,{title:"New namespace",confirmText:"Create",confirmButtonProps:{variant:"callAction"},isOpen:a,titleIcon:(0,k.jsx)(S.EjK,{}),isLoading:i,onConfirm:function(){e((0,ke.QD)())},onClose:function(){e((0,_.pb)())},confirmationContent:(0,k.jsxs)(r.Fragment,{children:[i&&(0,k.jsx)(d.Z,{}),(0,k.jsxs)(Te.Z,{children:["Are you sure you want to add a namespace called",(0,k.jsx)("br",{}),(0,k.jsx)("b",{className:n.wrapText,children:t}),"?"]})]})})},Ie=t(48573),Re=t.n(Ie),De=function(e){e.formToRender;var n=(0,p.TL)(),t=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.namespace})),i=(0,l.v9)((function(e){return e.createTenant.showNSCreateButton})),a=(0,l.v9)((function(e){return e.createTenant.validationErrors.namespace})),s=(0,l.v9)((function(e){return e.createTenant.addNSOpen})),o=(0,r.useMemo)((function(){return Re()((function(){n((0,ke.IO)())}),500)}),[n]);(0,r.useEffect)((function(){if(""!==t)return o(),o.cancel}),[o,t]);return(0,k.jsxs)(r.Fragment,{children:[s&&(0,k.jsx)(Pe,{}),(0,k.jsx)(C.Z,{id:"namespace",name:"namespace",onChange:function(e){n((0,_.Zx)(e.target.value))},label:"Namespace",value:t,error:a||"",overlayId:"add-namespace",overlayIcon:i?(0,k.jsx)(S.dtP,{}):null,overlayAction:function(){n((0,_.Oj)())},required:!0})]})},Fe=function(){var e=(0,p.TL)(),n=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.tenantName})),t=(0,l.v9)((function(e){return e.createTenant.validationErrors["tenant-name"]}));return(0,k.jsx)(C.Z,{id:"tenant-name",name:"tenant-name",onChange:function(n){e((0,_.V7)(n.target.value))},label:"Name",value:n,required:!0,error:t||""})},Ke=(0,h.Z)((function(e){return(0,u.Z)((0,a.Z)((0,a.Z)((0,a.Z)({sizePreview:{marginLeft:10,background:"#FFFFFF",border:"1px solid #EAEAEA",padding:2,marginTop:20}},m.DF),m.oO),m.AK))}))((function(e){var n=e.classes,t=e.formToRender,i=(0,p.TL)(),a=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.selectedStorageClass})),s=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.selectedStorageType})),d=(0,l.v9)((function(e){return e.createTenant.storageClasses})),u=(0,l.v9)(_e.$4),m=(0,r.useCallback)((function(e,n){i((0,_.HM)({pageName:"nameTenant",field:e,value:n}))}),[i]);return(0,r.useEffect)((function(){var e=t===Se.cy.default&&d.length>0||t!==Se.cy.default&&""!==s;i((0,_.NO)({pageName:"nameTenant",valid:e}))}),[d,i,s,t]),(0,k.jsx)(r.Fragment,{children:(0,k.jsxs)(c.ZP,{container:!0,children:[(0,k.jsx)(c.ZP,{item:!0,sx:{width:"calc(100% - 320px)"},children:(0,k.jsx)(v.Z,{className:n.paperWrapper,sx:{minHeight:550},children:(0,k.jsxs)(c.ZP,{container:!0,children:[(0,k.jsxs)(c.ZP,{item:!0,xs:12,children:[(0,k.jsxs)("div",{className:n.headerElement,children:[(0,k.jsx)(A.Z,{children:"Name"}),(0,k.jsx)("span",{className:n.descriptionText,children:"How would you like to name this new tenant?"})]}),(0,k.jsx)("div",{className:n.formFieldRow,children:(0,k.jsx)(Fe,{})})]}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(De,{formToRender:t})}),t===Se.cy.default?(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(T.Z,{id:"storage_class",name:"storage_class",onChange:function(e){m("selectedStorageClass",e.target.value)},label:"Storage Class",value:a,options:d,disabled:d.length<1})}):(0,k.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(T.Z,{id:"storage_type",name:"storage_type",onChange:function(e){i((0,_.Qy)({storageType:e.target.value,features:u}))},label:o()(Se.Hd,"".concat(t,".variantSelectorLabel"),"Storage Type"),value:s,options:o()(Se.Hd,"".concat(t,".variantSelectorValues"),[])})}),t===Se.cy.default?(0,k.jsx)(Ne.Z,{}):o()(Se.Hd,"".concat(t,".sizingComponent"),null)]})})}),(0,k.jsx)(c.ZP,{item:!0,children:(0,k.jsx)("div",{className:n.sizePreview,children:(0,k.jsx)(Ce,{})})})]})})})),Ee=function(){var e=(0,l.v9)(_e.$4),n=(0,r.useState)(null),t=(0,i.Z)(n,2),a=t[0],s=t[1];return(0,r.useEffect)((function(){var n=Se.cy.default;e&&0!==e.length&&Object.keys(Se.I8).forEach((function(t){e.includes(t)&&(n=o()(Se.I8,t,Se.cy.default))}));s(n)}),[e]),null===a?null:(0,k.jsx)(Ke,{formToRender:a})},Le=["nameTenant","tenantSize","configure","affinity","identityProvider","security","encryption"],ze=t(84218),Oe=function(){var e=(0,p.TL)(),n=(0,l.v9)((function(e){return e.createTenant.addingTenant})),t=(0,l.v9)((function(e){return e.createTenant.validPages})),i=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.selectedStorageClass})),a=!n&&""!==i&&Le.every((function(e){return t.includes(e)}));return(0,k.jsx)(S.zxk,{id:"wizard-button-Create",variant:"callAction",color:"primary",onClick:function(){e((0,ze.e)())},disabled:!a,label:"Create"},"button-AddTenant-Create")},Me=t(37798),Ge=t(57689),Be=function(){var e=(0,p.TL)(),n=(0,Ge.s0)(),t=(0,l.v9)((function(e){return e.createTenant.showNewCredentials})),i=(0,l.v9)((function(e){return e.createTenant.createdAccount}));return(0,k.jsx)(r.Fragment,{children:t&&(0,k.jsx)(Me.default,{newServiceAccount:i,open:t,closeModal:function(){e((0,_.dS)()),n("/tenants")},entity:"Tenant"})})},Ve=t(47974),qe=(0,D.Z)((function(e){return(0,u.Z)((0,a.Z)((0,a.Z)((0,a.Z)({pageBox:{border:"1px solid #EAEAEA"}},m.oO),m.AK),m.Je))})),Ue=function(){var e=(0,p.TL)(),n=(0,Ge.s0)(),t=qe(),a=(0,l.v9)(_e.$4),s=(0,l.v9)((function(e){return e.createTenant.addingTenant})),u=(0,r.useState)(null),m=(0,i.Z)(u,2),x=m[0],h=m[1];(0,r.useEffect)((function(){var e=Se.cy.default;a&&0!==a.length&&Object.keys(Se.I8).forEach((function(n){a.includes(n)&&(e=o()(Se.I8,n,Se.cy.default))}));h(e)}),[a]);var v={label:"Cancel",type:"other",enabled:!0,action:function(){e((0,_.dS)()),n("/tenants")}},g={componentRender:(0,k.jsx)(Oe,{},"create-tenant")},y=[{label:"Setup",componentRender:(0,k.jsx)(Ee,{}),buttons:[v,g]},{label:"Configure",advancedOnly:!0,componentRender:(0,k.jsx)(w,{}),buttons:[v,g]},{label:"Images",advancedOnly:!0,componentRender:(0,k.jsx)(he,{}),buttons:[v,g]},{label:"Pod Placement",advancedOnly:!0,componentRender:(0,k.jsx)(xe,{}),buttons:[v,g]},{label:"Identity Provider",advancedOnly:!0,componentRender:(0,k.jsx)(q,{}),buttons:[v,g]},{label:"Security",advancedOnly:!0,componentRender:(0,k.jsx)(W,{}),buttons:[v,g]},{label:"Encryption",advancedOnly:!0,componentRender:(0,k.jsx)(de,{}),buttons:[v,g]}];return(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)(Be,{}),(0,k.jsx)(Ve.Z,{label:(0,k.jsx)(S.hbI,{onClick:function(){e((0,_.dS)()),n("/tenants")},label:"Tenants"})}),(0,k.jsxs)(ve.Z,{children:[s&&(0,k.jsx)(c.ZP,{item:!0,xs:12,children:(0,k.jsx)(d.Z,{})}),(0,k.jsx)(c.ZP,{item:!0,xs:12,className:t.pageBox,children:(0,k.jsx)(f.Z,{wizardSteps:y})}),x===Se.cy.aws&&(0,k.jsx)(c.ZP,{item:!0,xs:12,style:{marginTop:16},children:(0,k.jsx)(S.KfX,{title:"EBS Volume Configuration.",iconComponent:(0,k.jsx)(S.idV,{}),help:(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)("b",{children:"Performance Optimized"}),": Uses the ",(0,k.jsx)("i",{children:"gp3"})," EBS storage class class configured at 1,000Mi/s throughput and 16,000 IOPS, however the minimum volume size for this type of EBS volume is ",(0,k.jsx)("b",{children:"32Gi"}),".",(0,k.jsx)("br",{}),(0,k.jsx)("br",{}),(0,k.jsx)("b",{children:"Storage Optimized"}),": Uses the ",(0,k.jsx)("i",{children:"sc1"})," EBS storage class, however the minimum volume size for this type of EBS volume is \xa0",(0,k.jsx)("b",{children:"16Ti"})," to unlock their maximum throughput speed of 250Mi/s."]})})})]})]})}},88070:function(e,n,t){t(72791);var i=t(78687),a=t(64554),r=t(75952),s=t(57689),o=t(80184),l=function(e){var n=e.icon,t=e.description;return(0,o.jsxs)(a.Z,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[n," ",(0,o.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:t})]})};n.Z=function(){var e=(0,s.UO)(),n=e.tenantName||"",t=e.tenantNamespace||"",c=(0,i.v9)((function(e){return""!==t?t:""!==e.createTenant.fields.nameTenant.namespace?e.createTenant.fields.nameTenant.namespace:""})),d=(0,i.v9)((function(e){return""!==n?n:""!==e.createTenant.fields.nameTenant.tenantName?e.createTenant.fields.nameTenant.tenantName:""}));return(0,o.jsx)(a.Z,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px",marginTop:{xs:"0px"}},children:(0,o.jsxs)(a.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,o.jsx)(l,{icon:(0,o.jsx)(r.Baz,{}),description:"TLS Certificates Warning"}),(0,o.jsxs)(a.Z,{sx:{fontSize:"14px",marginBottom:"15px"},children:["Automatic certificate generation is not enabled.",(0,o.jsx)("br",{}),(0,o.jsx)("br",{}),"If you wish to continue only with ",(0,o.jsx)("b",{children:"custom certificates"})," make sure they are valid for the following internode hostnames, i.e.:",(0,o.jsx)("br",{}),(0,o.jsx)("br",{}),(0,o.jsxs)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:["minio.",c,(0,o.jsx)("br",{}),"minio.",c,".svc",(0,o.jsx)("br",{}),"minio.",c,".svc.",(0,o.jsx)("br",{}),"*.",d,"-hl.",c,".svc.",(0,o.jsx)("br",{}),"*.",c,".svc."]}),(0,o.jsx)("br",{}),"Replace ",(0,o.jsx)("em",{children:""}),","," ",(0,o.jsx)("em",{children:""})," and",(0,o.jsx)("em",{children:""})," with the actual values for your MinIO tenant.",(0,o.jsx)("br",{}),(0,o.jsx)("br",{}),"You can learn more at our"," ",(0,o.jsx)("a",{href:"https://min.io/docs/minio/kubernetes/upstream/operations/network-encryption.html?ref=op#id5",target:"_blank",rel:"noopener",children:"documentation"}),"."]})]})})}},68456:function(e,n,t){t.d(n,{QT:function(){return o},YH:function(){return l},mo:function(){return s}});var i=t(61889),a=t(75952),r=t(80184),s=function(){return(0,r.jsxs)(i.ZP,{container:!0,columnGap:1,children:[(0,r.jsx)(i.ZP,{children:(0,r.jsx)(a.gyG,{width:"16px",height:"16px"})}),(0,r.jsx)(i.ZP,{item:!0,children:"Open ID"})]})},o=function(){return(0,r.jsxs)(i.ZP,{container:!0,columnGap:1,children:[(0,r.jsx)(i.ZP,{children:(0,r.jsx)(a.vcZ,{width:"16px",height:"16px"})}),(0,r.jsx)(i.ZP,{item:!0,children:"LDAP / Active Directory"})]})},l=function(){return(0,r.jsxs)(i.ZP,{container:!0,columnGap:1,children:[(0,r.jsx)(i.ZP,{children:(0,r.jsx)(a.oyc,{width:"16px",height:"16px"})}),(0,r.jsx)(i.ZP,{item:!0,children:"Built-in"})]})}},22512:function(e,n,t){var i=t(72791),a=t(20890),r=t(11135),s=t(25787),o=t(80184);n.Z=(0,s.Z)((function(e){var n;return(0,r.Z)({errorBlock:{color:(null===(n=e.palette)||void 0===n?void 0:n.error.main)||"#C83B51"}})}))((function(e){var n=e.classes,t=e.errorMessage,r=e.withBreak,s=void 0===r||r;return(0,o.jsxs)(i.Fragment,{children:[s&&(0,o.jsx)("br",{}),(0,o.jsx)(a.Z,{component:"p",variant:"body1",className:n.errorBlock,children:t})]})}))},42419:function(e,n,t){var i=t(64836);n.Z=void 0;var a=i(t(45649)),r=t(80184),s=(0,a.default)((0,r.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add");n.Z=s},99663:function(e,n,t){var i=t(64836);n.Z=void 0;var a=i(t(45649)),r=t(80184),s=(0,a.default)((0,r.jsx)("path",{d:"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z"}),"AttachFile");n.Z=s},86711:function(e,n,t){var i=t(64836);n.Z=void 0;var a=i(t(45649)),r=t(80184),s=(0,a.default)((0,r.jsx)("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"}),"Cancel");n.Z=s},22918:function(e,n,t){var i=t(64836);n.Z=void 0;var a=i(t(45649)),r=t(80184),s=(0,a.default)((0,r.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM7.5 18c-.83 0-1.5-.67-1.5-1.5S6.67 15 7.5 15s1.5.67 1.5 1.5S8.33 18 7.5 18zm0-9C6.67 9 6 8.33 6 7.5S6.67 6 7.5 6 9 6.67 9 7.5 8.33 9 7.5 9zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm0-9c-.83 0-1.5-.67-1.5-1.5S15.67 6 16.5 6s1.5.67 1.5 1.5S17.33 9 16.5 9z"}),"Casino");n.Z=s},27247:function(e,n,t){var i=t(64836);n.Z=void 0;var a=i(t(45649)),r=t(80184),s=(0,a.default)((0,r.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"}),"Delete");n.Z=s},94721:function(e,n,t){var i=t(63366),a=t(87462),r=t(72791),s=t(28182),o=t(94419),l=t(12065),c=t(66934),d=t(31402),u=t(90133),m=t(80184),f=["absolute","children","className","component","flexItem","light","orientation","role","textAlign","variant"],p=(0,c.ZP)("div",{name:"MuiDivider",slot:"Root",overridesResolver:function(e,n){var t=e.ownerState;return[n.root,t.absolute&&n.absolute,n[t.variant],t.light&&n.light,"vertical"===t.orientation&&n.vertical,t.flexItem&&n.flexItem,t.children&&n.withChildren,t.children&&"vertical"===t.orientation&&n.withChildrenVertical,"right"===t.textAlign&&"vertical"!==t.orientation&&n.textAlignRight,"left"===t.textAlign&&"vertical"!==t.orientation&&n.textAlignLeft]}})((function(e){var n=e.theme,t=e.ownerState;return(0,a.Z)({margin:0,flexShrink:0,borderWidth:0,borderStyle:"solid",borderColor:(n.vars||n).palette.divider,borderBottomWidth:"thin"},t.absolute&&{position:"absolute",bottom:0,left:0,width:"100%"},t.light&&{borderColor:n.vars?"rgba(".concat(n.vars.palette.dividerChannel," / 0.08)"):(0,l.Fq)(n.palette.divider,.08)},"inset"===t.variant&&{marginLeft:72},"middle"===t.variant&&"horizontal"===t.orientation&&{marginLeft:n.spacing(2),marginRight:n.spacing(2)},"middle"===t.variant&&"vertical"===t.orientation&&{marginTop:n.spacing(1),marginBottom:n.spacing(1)},"vertical"===t.orientation&&{height:"100%",borderBottomWidth:0,borderRightWidth:"thin"},t.flexItem&&{alignSelf:"stretch",height:"auto"})}),(function(e){var n=e.ownerState;return(0,a.Z)({},n.children&&{display:"flex",whiteSpace:"nowrap",textAlign:"center",border:0,"&::before, &::after":{content:'""',alignSelf:"center"}})}),(function(e){var n=e.theme,t=e.ownerState;return(0,a.Z)({},t.children&&"vertical"!==t.orientation&&{"&::before, &::after":{width:"100%",borderTop:"thin solid ".concat((n.vars||n).palette.divider)}})}),(function(e){var n=e.theme,t=e.ownerState;return(0,a.Z)({},t.children&&"vertical"===t.orientation&&{flexDirection:"column","&::before, &::after":{height:"100%",borderLeft:"thin solid ".concat((n.vars||n).palette.divider)}})}),(function(e){var n=e.ownerState;return(0,a.Z)({},"right"===n.textAlign&&"vertical"!==n.orientation&&{"&::before":{width:"90%"},"&::after":{width:"10%"}},"left"===n.textAlign&&"vertical"!==n.orientation&&{"&::before":{width:"10%"},"&::after":{width:"90%"}})})),x=(0,c.ZP)("span",{name:"MuiDivider",slot:"Wrapper",overridesResolver:function(e,n){var t=e.ownerState;return[n.wrapper,"vertical"===t.orientation&&n.wrapperVertical]}})((function(e){var n=e.theme,t=e.ownerState;return(0,a.Z)({display:"inline-block",paddingLeft:"calc(".concat(n.spacing(1)," * 1.2)"),paddingRight:"calc(".concat(n.spacing(1)," * 1.2)")},"vertical"===t.orientation&&{paddingTop:"calc(".concat(n.spacing(1)," * 1.2)"),paddingBottom:"calc(".concat(n.spacing(1)," * 1.2)")})})),h=r.forwardRef((function(e,n){var t=(0,d.Z)({props:e,name:"MuiDivider"}),r=t.absolute,l=void 0!==r&&r,c=t.children,h=t.className,v=t.component,g=void 0===v?c?"div":"hr":v,y=t.flexItem,j=void 0!==y&&y,Z=t.light,b=void 0!==Z&&Z,C=t.orientation,N=void 0===C?"horizontal":C,S=t.role,_=void 0===S?"hr"!==g?"separator":void 0:S,T=t.textAlign,A=void 0===T?"center":T,k=t.variant,w=void 0===k?"fullWidth":k,P=(0,i.Z)(t,f),I=(0,a.Z)({},t,{absolute:l,component:g,flexItem:j,light:b,orientation:N,role:_,textAlign:A,variant:w}),R=function(e){var n=e.absolute,t=e.children,i=e.classes,a=e.flexItem,r=e.light,s=e.orientation,l=e.textAlign,c={root:["root",n&&"absolute",e.variant,r&&"light","vertical"===s&&"vertical",a&&"flexItem",t&&"withChildren",t&&"vertical"===s&&"withChildrenVertical","right"===l&&"vertical"!==s&&"textAlignRight","left"===l&&"vertical"!==s&&"textAlignLeft"],wrapper:["wrapper","vertical"===s&&"wrapperVertical"]};return(0,o.Z)(c,u.V,i)}(I);return(0,m.jsx)(p,(0,a.Z)({as:g,className:(0,s.Z)(R.root,h),role:_,ref:n,ownerState:I},P,{children:c?(0,m.jsx)(x,{className:R.wrapper,ownerState:I,children:c}):null}))}));n.Z=h},63466:function(e,n,t){t.d(n,{Z:function(){return C}});var i=t(4942),a=t(63366),r=t(87462),s=t(72791),o=t(28182),l=t(94419),c=t(14036),d=t(20890),u=t(93840),m=t(52930),f=t(66934),p=t(75878),x=t(21217);function h(e){return(0,x.Z)("MuiInputAdornment",e)}var v,g=(0,p.Z)("MuiInputAdornment",["root","filled","standard","outlined","positionStart","positionEnd","disablePointerEvents","hiddenLabel","sizeSmall"]),y=t(31402),j=t(80184),Z=["children","className","component","disablePointerEvents","disableTypography","position","variant"],b=(0,f.ZP)("div",{name:"MuiInputAdornment",slot:"Root",overridesResolver:function(e,n){var t=e.ownerState;return[n.root,n["position".concat((0,c.Z)(t.position))],!0===t.disablePointerEvents&&n.disablePointerEvents,n[t.variant]]}})((function(e){var n=e.theme,t=e.ownerState;return(0,r.Z)({display:"flex",height:"0.01em",maxHeight:"2em",alignItems:"center",whiteSpace:"nowrap",color:(n.vars||n).palette.action.active},"filled"===t.variant&&(0,i.Z)({},"&.".concat(g.positionStart,"&:not(.").concat(g.hiddenLabel,")"),{marginTop:16}),"start"===t.position&&{marginRight:8},"end"===t.position&&{marginLeft:8},!0===t.disablePointerEvents&&{pointerEvents:"none"})})),C=s.forwardRef((function(e,n){var t=(0,y.Z)({props:e,name:"MuiInputAdornment"}),i=t.children,f=t.className,p=t.component,x=void 0===p?"div":p,g=t.disablePointerEvents,C=void 0!==g&&g,N=t.disableTypography,S=void 0!==N&&N,_=t.position,T=t.variant,A=(0,a.Z)(t,Z),k=(0,m.Z)()||{},w=T;T&&k.variant,k&&!w&&(w=k.variant);var P=(0,r.Z)({},t,{hiddenLabel:k.hiddenLabel,size:k.size,disablePointerEvents:C,position:_,variant:w}),I=function(e){var n=e.classes,t=e.disablePointerEvents,i=e.hiddenLabel,a=e.position,r=e.size,s=e.variant,o={root:["root",t&&"disablePointerEvents",a&&"position".concat((0,c.Z)(a)),s,i&&"hiddenLabel",r&&"size".concat((0,c.Z)(r))]};return(0,l.Z)(o,h,n)}(P);return(0,j.jsx)(u.Z.Provider,{value:null,children:(0,j.jsx)(b,(0,r.Z)({as:x,ownerState:P,className:(0,o.Z)(I.root,f),ref:n},A,{children:"string"!==typeof i||S?(0,j.jsxs)(s.Fragment,{children:["start"===_?v||(v=(0,j.jsx)("span",{className:"notranslate",children:"\u200b"})):null,i]}):(0,j.jsx)(d.Z,{color:"text.secondary",children:i})}))})}))}}]); -//# sourceMappingURL=292.5b893eb9.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/292.5b893eb9.chunk.js.map b/web-app/build/static/js/292.5b893eb9.chunk.js.map deleted file mode 100644 index 6b7541e9703..00000000000 --- a/web-app/build/static/js/292.5b893eb9.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/292.5b893eb9.chunk.js","mappings":"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","sources":["screens/Console/Common/CredentialsPrompt/CredentialItem.tsx","screens/Console/Common/CredentialsPrompt/CredentialsPrompt.tsx","screens/Console/Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper.tsx","screens/Console/Common/FormComponents/FileSelector/FileSelector.tsx","screens/Console/Common/FormComponents/FileSelector/utils.ts","screens/Console/Common/FormHr.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx","screens/Console/Common/TooltipWrapper/TooltipWrapper.tsx","screens/Console/Tenants/AddTenant/Steps/Configure.tsx","screens/Console/Tenants/AddTenant/Steps/IdentityProvider/IDPActiveDirectory.tsx","screens/Console/Tenants/AddTenant/Steps/IdentityProvider/IDPOpenID.tsx","screens/Console/Tenants/AddTenant/Steps/IdentityProvider/IDPBuiltIn.tsx","screens/Console/Tenants/AddTenant/Steps/IdentityProvider.tsx","screens/Console/Tenants/AddTenant/Steps/Security.tsx","screens/Console/Common/SectionH1.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption/VaultKMSAdd.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption/AzureKMSAdd.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption/GCPKMSAdd.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption/GemaltoKMSAdd.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption/AWSKMSAdd.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption.tsx","screens/Console/Tenants/AddTenant/Steps/Affinity.tsx","screens/Console/Tenants/AddTenant/Steps/Images.tsx","screens/Console/Tenants/AddTenant/Steps/SizePreview.tsx","screens/Console/Tenants/AddTenant/Steps/helpers/AddNamespaceModal.tsx","screens/Console/Tenants/AddTenant/Steps/TenantResources/NamespaceSelector.tsx","screens/Console/Tenants/AddTenant/Steps/TenantResources/NameTenantMain.tsx","screens/Console/Tenants/AddTenant/Steps/TenantResources/TenantResources.tsx","screens/Console/Tenants/AddTenant/common.ts","screens/Console/Tenants/AddTenant/CreateTenantButton.tsx","screens/Console/Tenants/AddTenant/NewTenantCredentials.tsx","screens/Console/Tenants/AddTenant/AddTenant.tsx","screens/Console/Tenants/HelpBox/TLSHelpBox.tsx","screens/Console/Tenants/LogoComponents.tsx","screens/shared/ErrorBlock.tsx","../node_modules/@mui/icons-material/Add.js","../node_modules/@mui/icons-material/AttachFile.js","../node_modules/@mui/icons-material/Cancel.js","../node_modules/@mui/icons-material/Casino.js","../node_modules/@mui/icons-material/Delete.js","../node_modules/@mui/material/Divider/Divider.js","../node_modules/@mui/material/InputAdornment/inputAdornmentClasses.js","../node_modules/@mui/material/InputAdornment/InputAdornment.js"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { InputAdornment, OutlinedInput } from \"@mui/material\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button, CopyIcon } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { fieldBasic } from \"../FormComponents/common/styleLibrary\";\nimport TooltipWrapper from \"../TooltipWrapper/TooltipWrapper\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n container: {\n display: \"flex\",\n flexFlow: \"column\",\n padding: \"20px 0 8px 0\",\n },\n inputWithCopy: {\n \"& .MuiInputBase-root \": {\n width: \"100%\",\n background: \"#FBFAFA\",\n \"& .MuiInputBase-input\": {\n height: \".8rem\",\n },\n \"& .MuiInputAdornment-positionEnd\": {\n marginRight: \".5rem\",\n \"& .MuiButtonBase-root\": {\n height: \"2rem\",\n },\n },\n },\n \"& .MuiButtonBase-root .min-icon\": {\n width: \".8rem\",\n height: \".8rem\",\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontSize: \".8rem\",\n },\n });\n\nconst CredentialItem = ({\n label = \"\",\n value = \"\",\n classes = {},\n}: {\n label: string;\n value: string;\n classes: any;\n}) => {\n return (\n
\n
{label}:
\n
\n \n \n \n {}}\n onMouseDown={() => {}}\n style={{\n width: \"28px\",\n height: \"28px\",\n padding: \"0px\",\n }}\n icon={}\n />\n \n \n \n }\n />\n
\n
\n );\n};\n\nexport default withStyles(styles)(CredentialItem);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport {\n Button,\n DownloadIcon,\n ServiceAccountCredentialsIcon,\n WarnIcon,\n} from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { NewServiceAccount } from \"./types\";\nimport ModalWrapper from \"../ModalWrapper/ModalWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport CredentialItem from \"./CredentialItem\";\nimport TooltipWrapper from \"../TooltipWrapper/TooltipWrapper\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n warningBlock: {\n color: \"red\",\n fontSize: \".85rem\",\n margin: \".5rem 0 .5rem 0\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg \": {\n marginRight: \".3rem\",\n height: 16,\n width: 16,\n },\n },\n credentialTitle: {\n padding: \".8rem 0 0 0\",\n fontWeight: 600,\n fontSize: \".9rem\",\n },\n buttonContainer: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n marginTop: \"1rem\",\n },\n credentialsPanel: {\n overflowY: \"auto\",\n maxHeight: 350,\n },\n promptTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n buttonSpacer: {\n marginRight: \".9rem\",\n },\n });\n\ninterface ICredentialsPromptProps {\n classes: any;\n newServiceAccount: NewServiceAccount | null;\n open: boolean;\n entity: string;\n closeModal: () => void;\n}\n\nconst download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\"href\", \"data:text/plain;charset=utf-8,\" + text);\n element.setAttribute(\"download\", filename);\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n document.body.removeChild(element);\n};\n\nconst CredentialsPrompt = ({\n classes,\n newServiceAccount,\n open,\n closeModal,\n entity,\n}: ICredentialsPromptProps) => {\n if (!newServiceAccount) {\n return null;\n }\n const consoleCreds = get(newServiceAccount, \"console\", null);\n const idp = get(newServiceAccount, \"idp\", false);\n\n const downloadImport = () => {\n let consoleExtras = {};\n\n if (consoleCreds) {\n if (!Array.isArray(consoleCreds)) {\n consoleExtras = {\n url: consoleCreds.url,\n accessKey: consoleCreds.accessKey,\n secretKey: consoleCreds.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n };\n } else {\n const cCreds = consoleCreds.map((itemMap) => {\n return {\n url: itemMap.url,\n accessKey: itemMap.accessKey,\n secretKey: itemMap.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n };\n });\n consoleExtras = cCreds[0];\n }\n } else {\n consoleExtras = {\n url: newServiceAccount.url,\n accessKey: newServiceAccount.accessKey,\n secretKey: newServiceAccount.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n };\n }\n\n download(\n \"credentials.json\",\n JSON.stringify({\n ...consoleExtras,\n }),\n );\n };\n\n const downloaddAllCredentials = () => {\n let allCredentials = {};\n if (\n consoleCreds &&\n Array.isArray(consoleCreds) &&\n consoleCreds.length > 1\n ) {\n const cCreds = consoleCreds.map((itemMap) => {\n return {\n accessKey: itemMap.accessKey,\n secretKey: itemMap.secretKey,\n };\n });\n allCredentials = cCreds;\n }\n download(\n \"all_credentials.json\",\n JSON.stringify({\n ...allCredentials,\n }),\n );\n };\n\n return (\n {\n closeModal();\n }}\n title={\n
\n
New {entity} Created
\n
\n }\n titleIcon={}\n >\n \n \n A new {entity} has been created with the following details:\n {!idp && consoleCreds && (\n \n \n
\n Console Credentials\n
\n {Array.isArray(consoleCreds) &&\n consoleCreds.map((credentialsPair, index) => {\n return (\n <>\n \n \n \n );\n })}\n {!Array.isArray(consoleCreds) && (\n <>\n \n \n \n )}\n
\n
\n )}\n {(consoleCreds === null || consoleCreds === undefined) && (\n <>\n \n \n \n )}\n {idp ? (\n
\n Please Login via the configured external identity provider.\n
\n ) : (\n
\n \n \n Write these down, as this is the only time the secret will be\n displayed.\n \n
\n )}\n
\n \n {!idp && (\n <>\n \n }\n variant=\"callAction\"\n />\n \n\n {Array.isArray(consoleCreds) && consoleCreds.length > 1 && (\n \n }\n variant=\"callAction\"\n color=\"primary\"\n />\n \n )}\n \n )}\n \n
\n \n );\n};\n\nexport default withStyles(styles)(CredentialsPrompt);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Box, InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Button, CopyIcon, HelpIcon } from \"mds\";\nimport { fieldBasic } from \"../common/styleLibrary\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport CodeEditor from \"@uiw/react-textarea-code-editor\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n classes: any;\n onChange?: (editor: any, data: any, value: string) => any;\n onBeforeChange: (editor: any, data: any, value: string) => any;\n readOnly?: boolean;\n editorHeight?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n });\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n classes,\n onBeforeChange,\n readOnly = false,\n editorHeight = \"250px\",\n}: ICodeWrapper) => {\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n
\n\n \n {\n onBeforeChange(null, null, evn.target.value);\n }}\n id={\"code_wrapper\"}\n padding={15}\n style={{\n fontSize: 12,\n backgroundColor: \"#fefefe\",\n fontFamily:\n \"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace\",\n minHeight: editorHeight || \"initial\",\n color: \"#000000\",\n }}\n />\n \n \n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n \n
\n );\n};\n\nexport default withStyles(styles)(CodeMirrorWrapper);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport get from \"lodash/get\";\nimport { Grid, InputLabel, Tooltip } from \"@mui/material\";\nimport IconButton from \"@mui/material/IconButton\";\nimport AttachFileIcon from \"@mui/icons-material/AttachFile\";\nimport CancelIcon from \"@mui/icons-material/Cancel\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n fileInputStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { fileProcess } from \"./utils\";\nimport { HelpIcon } from \"mds\";\nimport ErrorBlock from \"../../../../shared/ErrorBlock\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: string, i: string) => void;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n required?: boolean;\n error?: string;\n accept?: string;\n value?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n valueString: {\n maxWidth: 350,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n marginTop: 2,\n },\n fileInputField: {\n margin: \"13px 0\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n ...fileInputStyles,\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n textBoxContainer: {\n ...fieldBasic.textBoxContainer,\n maxWidth: \"100%\",\n border: \"1px solid #eaeaea\",\n paddingLeft: \"15px\",\n },\n });\n\nconst FileSelector = ({\n label,\n classes,\n onChange,\n id,\n name,\n disabled = false,\n tooltip = \"\",\n required,\n error = \"\",\n accept = \"\",\n value = \"\",\n}: InputBoxProps) => {\n const [showFileSelector, setShowSelector] = useState(false);\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n {showFileSelector || value === \"\" ? (\n
\n {\n const fileName = get(e, \"target.files[0].name\", \"\");\n fileProcess(e, (data: any) => {\n onChange(data, fileName);\n });\n }}\n accept={accept}\n required={required}\n disabled={disabled}\n className={classes.fileInputField}\n />\n\n {value !== \"\" && (\n {\n setShowSelector(false);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n )}\n\n {error !== \"\" && }\n
\n ) : (\n
\n
{value}
\n {\n setShowSelector(true);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n
\n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(FileSelector);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const fileProcess = (evt: any, callback: any) => {\n const file = evt.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n // reader.readAsDataURL(file) output will be something like: data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSU\n // we care only about the actual base64 part (everything after \"data:application/x-x509-ca-cert;base64,\")\n const fileBase64 = reader.result;\n if (fileBase64) {\n const fileArray = fileBase64.toString().split(\"base64,\");\n\n if (fileArray.length === 2) {\n callback(fileArray[1]);\n }\n }\n };\n};\n","// This file is part of MinIO Operator\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport styled from \"@emotion/styled\";\n\nconst FormHr = styled(\"hr\")`\n border-top: 0;\n border-left: 0;\n border-right: 0;\n border-color: #999999;\n background-color: transparent;\n`;\n\nexport default FormHr;\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport MainError from \"../MainError/MainError\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n noContentPadding?: boolean;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n noContentPadding,\n titleIcon = null,\n}: IModalProps) => {\n const dispatch = useAppDispatch();\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n const modalSnackMessage = useSelector(\n (state: AppState) => state.system.modalSnackBar,\n );\n\n useEffect(() => {\n dispatch(setModalSnackMessage(\"\"));\n }, [dispatch]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n dispatch(setModalSnackMessage(\"\"));\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n
\n {titleIcon} {title}\n
\n
\n \n \n \n
\n
\n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nexport default withStyles(styles)(ModalWrapper);\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { cloneElement } from \"react\";\nimport { Tooltip } from \"@mui/material\";\n\ninterface ITooltipWrapperProps {\n tooltip: string;\n children: any;\n errorProps?: any;\n placement?:\n | \"bottom-end\"\n | \"bottom-start\"\n | \"bottom\"\n | \"left-end\"\n | \"left-start\"\n | \"left\"\n | \"right-end\"\n | \"right-start\"\n | \"right\"\n | \"top-end\"\n | \"top-start\"\n | \"top\";\n}\n\nconst TooltipWrapper = ({\n tooltip,\n children,\n errorProps = null,\n placement,\n}: ITooltipWrapperProps) => {\n return (\n \n \n {errorProps ? cloneElement(children, { ...errorProps }) : children}\n \n \n );\n};\n\nexport default TooltipWrapper;\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n Divider,\n Grid,\n IconButton,\n Paper,\n SelectChangeEvent,\n} from \"@mui/material\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\n\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport { RemoveIcon } from \"mds\";\nimport {\n addNewMinIODomain,\n isPageValid,\n removeMinIODomain,\n setEnvVars,\n updateAddField,\n} from \"../createTenantSlice\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport H3Section from \"../../../Common/H3Section\";\n\ninterface IConfigureProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n configSectionItem: {\n marginRight: 15,\n marginBottom: 15,\n\n \"& .multiContainer\": {\n border: \"1px solid red\",\n },\n },\n tenantCustomizationFields: {\n marginLeft: 30, // 2nd Level(15+15)\n width: \"88%\",\n margin: \"auto\",\n },\n containerItem: {\n marginRight: 15,\n },\n fieldGroup: {\n ...createTenantCommon.fieldGroup,\n paddingTop: 15,\n marginBottom: 25,\n },\n responsiveSectionItem: {\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n\n \"& div > div\": {\n marginBottom: 5,\n marginRight: 0,\n },\n },\n },\n wrapperContainer: {\n display: \"flex\",\n marginBottom: 15,\n },\n envVarRow: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n \"&:last-child\": {\n borderBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n flex: 1,\n\n \"& div label\": {\n minWidth: 50,\n },\n },\n },\n fileItem: {\n marginRight: 10,\n display: \"flex\",\n \"& div label\": {\n minWidth: 50,\n },\n\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n rowActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n \"@media (max-width: 900px)\": {\n flex: 1,\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n ...modalBasic,\n ...wizardCommon,\n ...formFieldStyles,\n });\n\nconst Configure = ({ classes }: IConfigureProps) => {\n const dispatch = useAppDispatch();\n\n const exposeMinIO = useSelector(\n (state: AppState) => state.createTenant.fields.configure.exposeMinIO,\n );\n const exposeConsole = useSelector(\n (state: AppState) => state.createTenant.fields.configure.exposeConsole,\n );\n const exposeSFTP = useSelector(\n (state: AppState) => state.createTenant.fields.configure.exposeSFTP,\n );\n const setDomains = useSelector(\n (state: AppState) => state.createTenant.fields.configure.setDomains,\n );\n const consoleDomain = useSelector(\n (state: AppState) => state.createTenant.fields.configure.consoleDomain,\n );\n const minioDomains = useSelector(\n (state: AppState) => state.createTenant.fields.configure.minioDomains,\n );\n const tenantCustom = useSelector(\n (state: AppState) => state.createTenant.fields.configure.tenantCustom,\n );\n const tenantEnvVars = useSelector(\n (state: AppState) => state.createTenant.fields.configure.envVars,\n );\n const tenantSecurityContext = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.tenantSecurityContext,\n );\n const customRuntime = useSelector(\n (state: AppState) => state.createTenant.fields.configure.customRuntime,\n );\n const runtimeClassName = useSelector(\n (state: AppState) => state.createTenant.fields.configure.runtimeClassName,\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"configure\", field: field, value: value }),\n );\n },\n [dispatch],\n );\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n if (tenantCustom) {\n customAccountValidation = [\n {\n fieldKey: \"tenant_securityContext_runAsUser\",\n required: true,\n value: tenantSecurityContext.runAsUser,\n customValidation:\n tenantSecurityContext.runAsUser === \"\" ||\n parseInt(tenantSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"tenant_securityContext_runAsGroup\",\n required: true,\n value: tenantSecurityContext.runAsGroup,\n customValidation:\n tenantSecurityContext.runAsGroup === \"\" ||\n parseInt(tenantSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"tenant_securityContext_fsGroup\",\n required: true,\n value: tenantSecurityContext.fsGroup!,\n customValidation:\n tenantSecurityContext.fsGroup === \"\" ||\n parseInt(tenantSecurityContext.fsGroup!) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n\n if (setDomains) {\n const minioExtraValidations = minioDomains.map((validation, index) => {\n return {\n fieldKey: `minio-domain-${index.toString()}`,\n required: false,\n value: validation,\n pattern: /^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?$/,\n customPatternMessage:\n \"MinIO domain is not in the form of http|https://subdomain.domain\",\n };\n });\n\n customAccountValidation = [\n ...customAccountValidation,\n ...minioExtraValidations,\n {\n fieldKey: \"console_domain\",\n required: false,\n value: consoleDomain,\n pattern:\n /^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-./]*)?$/,\n customPatternMessage:\n \"Console domain is not in the form of http|https://subdomain.domain:port/subpath1/subpath2\",\n },\n ];\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n dispatch(\n isPageValid({\n pageName: \"configure\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [\n dispatch,\n tenantCustom,\n tenantSecurityContext,\n setDomains,\n consoleDomain,\n minioDomains,\n ]);\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n const updateMinIODomain = (value: string, index: number) => {\n const copyDomains = [...minioDomains];\n copyDomains[index] = value;\n\n updateField(\"minioDomains\", copyDomains);\n };\n\n return (\n \n
\n Configure\n \n Basic configurations for tenant management\n \n
\n
\n

Services

\n \n Whether the tenant's services should request an external IP via\n LoadBalancer service type.\n \n
\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"exposeMinIO\", checked);\n }}\n label={\"Expose MinIO Service\"}\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"exposeConsole\", checked);\n }}\n label={\"Expose Console Service\"}\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"exposeSFTP\", checked);\n }}\n label={\"Expose SFTP Service\"}\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"setDomains\", checked);\n }}\n label={\"Set Custom Domains\"}\n />\n \n {setDomains && (\n \n
\n \n Custom Domains for MinIO\n \n \n
\n ) => {\n updateField(\"consoleDomain\", e.target.value);\n cleanValidation(\"tenant_securityContext_runAsUser\");\n }}\n label=\"Console Domain\"\n value={consoleDomain}\n placeholder={\n \"Eg. http://subdomain.domain:port/subpath1/subpath2\"\n }\n error={validationErrors[\"console_domain\"] || \"\"}\n />\n
\n
\n

MinIO Domains

\n
\n {minioDomains.map((domain, index) => {\n return (\n \n ,\n ) => {\n updateMinIODomain(e.target.value, index);\n }}\n label={`MinIO Domain ${index + 1}`}\n value={domain}\n placeholder={\"Eg. http://subdomain.domain\"}\n error={\n validationErrors[\n `minio-domain-${index.toString()}`\n ] || \"\"\n }\n />\n
\n dispatch(addNewMinIODomain())}\n disabled={index !== minioDomains.length - 1}\n >\n \n \n
\n\n
\n dispatch(removeMinIODomain(index))}\n disabled={minioDomains.length <= 1}\n >\n \n \n
\n
\n );\n })}\n
\n \n
\n
\n
\n )}\n\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"tenantCustom\", checked);\n }}\n label={\"Security Context\"}\n />\n \n {tenantCustom && (\n \n
\n \n SecurityContext for MinIO\n \n \n \n
\n ) => {\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n runAsUser: e.target.value,\n });\n cleanValidation(\"tenant_securityContext_runAsUser\");\n }}\n label=\"Run As User\"\n value={tenantSecurityContext.runAsUser}\n required\n error={\n validationErrors[\"tenant_securityContext_runAsUser\"] || \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n runAsGroup: e.target.value,\n });\n cleanValidation(\"tenant_securityContext_runAsGroup\");\n }}\n label=\"Run As Group\"\n value={tenantSecurityContext.runAsGroup}\n required\n error={\n validationErrors[\"tenant_securityContext_runAsGroup\"] ||\n \"\"\n }\n min=\"0\"\n />\n
\n \n
\n
\n \n \n
\n ) => {\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n fsGroup: e.target.value,\n });\n cleanValidation(\"tenant_securityContext_fsGroup\");\n }}\n label=\"FsGroup\"\n value={tenantSecurityContext.fsGroup!}\n required\n error={\n validationErrors[\"tenant_securityContext_fsGroup\"] || \"\"\n }\n min=\"0\"\n />\n
\n
\n
\n ) => {\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n fsGroupChangePolicy: e.target.value,\n });\n }}\n options={[\n {\n label: \"Always\",\n value: \"Always\",\n },\n {\n label: \"OnRootMismatch\",\n value: \"OnRootMismatch\",\n },\n ]}\n />\n
\n
\n \n
\n
\n \n
\n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n runAsNonRoot: checked,\n });\n }}\n label={\"Do not run as Root\"}\n />\n
\n
\n
\n
\n )}\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"customRuntime\", checked);\n }}\n label={\"Custom Runtime Configurations\"}\n />\n \n {customRuntime && (\n \n
\n \n Custom Runtime Configurations\n \n \n
\n ) => {\n updateField(\"runtimeClassName\", e.target.value);\n cleanValidation(\"tenant_runtime_runtimeClassName\");\n }}\n label=\"Runtime Class Name\"\n value={runtimeClassName}\n error={\n validationErrors[\"tenant_runtime_runtimeClassName\"] || \"\"\n }\n />\n
\n
\n
\n
\n )}\n \n\n
\n Additional Environment Variables\n \n Define additional environment variables to be used by your MinIO pods\n \n
\n \n {tenantEnvVars.map((envVar, index) => (\n \n \n ) => {\n const existingEnvVars = [...tenantEnvVars];\n dispatch(\n setEnvVars(\n existingEnvVars.map((keyPair, i) =>\n i === index\n ? { key: e.target.value, value: keyPair.value }\n : keyPair,\n ),\n ),\n );\n }}\n index={index}\n key={`env_var_key_${index.toString()}`}\n />\n \n \n ) => {\n const existingEnvVars = [...tenantEnvVars];\n dispatch(\n setEnvVars(\n existingEnvVars.map((keyPair, i) =>\n i === index\n ? { key: keyPair.key, value: e.target.value }\n : keyPair,\n ),\n ),\n );\n }}\n index={index}\n key={`env_var_value_${index.toString()}`}\n />\n \n \n
\n {\n const existingEnvVars = [...tenantEnvVars];\n existingEnvVars.push({ key: \"\", value: \"\" });\n\n dispatch(setEnvVars(existingEnvVars));\n }}\n disabled={index !== tenantEnvVars.length - 1}\n >\n \n \n
\n
\n {\n const existingEnvVars = tenantEnvVars.filter(\n (item, fIndex) => fIndex !== index,\n );\n dispatch(setEnvVars(existingEnvVars));\n }}\n disabled={tenantEnvVars.length <= 1}\n >\n \n \n
\n
\n
\n ))}\n \n
\n );\n};\n\nexport default withStyles(styles)(Configure);\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Grid, IconButton, Tooltip, Typography } from \"@mui/material\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport {\n addIDPADGroupAtIndex,\n addIDPADUsrAtIndex,\n isPageValid,\n removeIDPADGroupAtIndex,\n removeIDPADUsrAtIndex,\n setIDPADGroupAtIndex,\n setIDPADUsrAtIndex,\n updateAddField,\n} from \"../../createTenantSlice\";\nimport { useSelector } from \"react-redux\";\nimport { clearValidationError } from \"../../../utils\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n adUserDnRows: {\n display: \"flex\",\n marginBottom: 10,\n },\n buttonTray: {\n marginLeft: 10,\n display: \"flex\",\n height: 38,\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n }),\n);\n\nconst IDPActiveDirectory = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const idpSelection = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.idpSelection,\n );\n const ADURL = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.ADURL,\n );\n const ADSkipTLS = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.ADSkipTLS,\n );\n const ADServerInsecure = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADServerInsecure,\n );\n const ADGroupSearchBaseDN = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADGroupSearchBaseDN,\n );\n const ADGroupSearchFilter = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADGroupSearchFilter,\n );\n const ADUserDNs = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.ADUserDNs,\n );\n const ADGroupDNs = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.ADGroupDNs,\n );\n const ADLookupBindDN = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADLookupBindDN,\n );\n const ADLookupBindPassword = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADLookupBindPassword,\n );\n const ADUserDNSearchBaseDN = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADUserDNSearchBaseDN,\n );\n const ADUserDNSearchFilter = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADUserDNSearchFilter,\n );\n const ADServerStartTLS = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADServerStartTLS,\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({\n pageName: \"identityProvider\",\n field: field,\n value: value,\n }),\n );\n },\n [dispatch],\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n // Validation\n useEffect(() => {\n let customIDPValidation: IValidation[] = [];\n\n if (idpSelection === \"AD\") {\n customIDPValidation = [\n ...customIDPValidation,\n {\n fieldKey: \"AD_URL\",\n required: true,\n value: ADURL,\n },\n {\n fieldKey: \"ad_lookupBindDN\",\n required: true,\n value: ADLookupBindDN,\n },\n ];\n }\n\n const commonVal = commonFormValidation(customIDPValidation);\n\n dispatch(\n isPageValid({\n pageName: \"identityProvider\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [\n ADLookupBindDN,\n idpSelection,\n ADURL,\n ADGroupSearchBaseDN,\n ADGroupSearchFilter,\n ADUserDNs,\n ADGroupDNs,\n dispatch,\n ]);\n\n return (\n \n \n ) => {\n updateField(\"ADURL\", e.target.value);\n cleanValidation(\"AD_URL\");\n }}\n label=\"LDAP Server Address\"\n value={ADURL}\n placeholder=\"ldap-server:636\"\n error={validationErrors[\"AD_URL\"] || \"\"}\n required\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"ADSkipTLS\", checked);\n }}\n label={\"Skip TLS Verification\"}\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"ADServerInsecure\", checked);\n }}\n label={\"Server Insecure\"}\n />\n \n {ADServerInsecure ? (\n \n \n Warning: All traffic with Active Directory will be unencrypted\n \n
\n
\n ) : null}\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"ADServerStartTLS\", checked);\n }}\n label={\"Start TLS connection to AD/LDAP server\"}\n />\n \n \n ) => {\n updateField(\"ADLookupBindDN\", e.target.value);\n cleanValidation(\"ad_lookupBindDN\");\n }}\n label=\"Lookup Bind DN\"\n value={ADLookupBindDN}\n placeholder=\"cn=admin,dc=min,dc=io\"\n error={validationErrors[\"ad_lookupBindDN\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"ADLookupBindPassword\", e.target.value);\n }}\n label=\"Lookup Bind Password\"\n value={ADLookupBindPassword}\n placeholder=\"admin\"\n />\n \n \n ) => {\n updateField(\"ADUserDNSearchBaseDN\", e.target.value);\n }}\n label=\"User DN Search Base DN\"\n value={ADUserDNSearchBaseDN}\n placeholder=\"dc=min,dc=io\"\n />\n \n \n ) => {\n updateField(\"ADUserDNSearchFilter\", e.target.value);\n }}\n label=\"User DN Search Filter\"\n value={ADUserDNSearchFilter}\n placeholder=\"(sAMAcountName=%s)\"\n />\n \n \n ) => {\n updateField(\"ADGroupSearchBaseDN\", e.target.value);\n }}\n label=\"Group Search Base DN\"\n value={ADGroupSearchBaseDN}\n placeholder=\"ou=hwengg,dc=min,dc=io;ou=swengg,dc=min,dc=io\"\n />\n \n \n ) => {\n updateField(\"ADGroupSearchFilter\", e.target.value);\n }}\n label=\"Group Search Filter\"\n value={ADGroupSearchFilter}\n placeholder=\"(&(objectclass=groupOfNames)(member=%s))\"\n />\n \n
\n \n List of user DNs (Distinguished Names) to be Tenant Administrators\n \n \n {ADUserDNs.map((_, index) => {\n return (\n \n
\n ) => {\n dispatch(\n setIDPADUsrAtIndex({\n index: index,\n userDN: e.target.value,\n }),\n );\n cleanValidation(`ad-userdn-${index.toString()}`);\n }}\n index={index}\n key={`csv-ad-userdn-${index.toString()}`}\n error={\n validationErrors[`ad-userdn-${index.toString()}`] || \"\"\n }\n />\n
\n \n {\n dispatch(addIDPADUsrAtIndex());\n }}\n >\n \n \n \n \n {\n if (ADUserDNs.length > 1) {\n dispatch(removeIDPADUsrAtIndex(index));\n }\n }}\n >\n \n \n \n
\n
\n
\n );\n })}\n
\n
\n
\n \n List of group DNs (Distinguished Names) to be Tenant Administrators\n \n \n {ADGroupDNs.map((_, index) => {\n return (\n \n
\n ) => {\n dispatch(\n setIDPADGroupAtIndex({\n index: index,\n userDN: e.target.value,\n }),\n );\n cleanValidation(`ad-groupdn-${index.toString()}`);\n }}\n index={index}\n key={`csv-ad-groupdn-${index.toString()}`}\n error={\n validationErrors[`ad-groupdn-${index.toString()}`] || \"\"\n }\n />\n
\n \n {\n dispatch(addIDPADGroupAtIndex());\n }}\n >\n \n \n \n \n {\n if (ADGroupDNs.length > 1) {\n dispatch(removeIDPADGroupAtIndex(index));\n }\n }}\n >\n \n \n \n
\n
\n
\n );\n })}\n
\n
\n
\n );\n};\n\nexport default IDPActiveDirectory;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Grid } from \"@mui/material\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { isPageValid, updateAddField } from \"../../createTenantSlice\";\nimport { clearValidationError } from \"../../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n buttonTray: {\n marginLeft: 10,\n display: \"flex\",\n height: 38,\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n }),\n);\n\nconst IDPOpenID = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const idpSelection = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.idpSelection,\n );\n const openIDConfigurationURL = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.openIDConfigurationURL,\n );\n const openIDClientID = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.openIDClientID,\n );\n const openIDSecretID = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.openIDSecretID,\n );\n const openIDClaimName = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.openIDClaimName,\n );\n const openIDScopes = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.openIDScopes,\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({\n pageName: \"identityProvider\",\n field: field,\n value: value,\n }),\n );\n },\n [dispatch],\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n // Validation\n useEffect(() => {\n let customIDPValidation: IValidation[] = [];\n\n if (idpSelection === \"OpenID\") {\n customIDPValidation = [\n ...customIDPValidation,\n {\n fieldKey: \"openID_CONFIGURATION_URL\",\n required: true,\n value: openIDConfigurationURL,\n },\n {\n fieldKey: \"openID_clientID\",\n required: true,\n value: openIDClientID,\n },\n {\n fieldKey: \"openID_secretID\",\n required: true,\n value: openIDSecretID,\n },\n {\n fieldKey: \"openID_claimName\",\n required: false,\n value: openIDClaimName,\n },\n ];\n }\n\n const commonVal = commonFormValidation(customIDPValidation);\n\n dispatch(\n isPageValid({\n pageName: \"identityProvider\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [\n idpSelection,\n openIDClientID,\n openIDSecretID,\n openIDConfigurationURL,\n openIDClaimName,\n dispatch,\n ]);\n\n return (\n \n \n ) => {\n updateField(\"openIDConfigurationURL\", e.target.value);\n cleanValidation(\"openID_CONFIGURATION_URL\");\n }}\n label=\"Configuration URL\"\n value={openIDConfigurationURL}\n placeholder=\"https://your-identity-provider.com/.well-known/openid-configuration\"\n error={validationErrors[\"openID_CONFIGURATION_URL\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"openIDClientID\", e.target.value);\n cleanValidation(\"openID_clientID\");\n }}\n label=\"Client ID\"\n value={openIDClientID}\n error={validationErrors[\"openID_clientID\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"openIDSecretID\", e.target.value);\n cleanValidation(\"openID_secretID\");\n }}\n label=\"Secret ID\"\n value={openIDSecretID}\n error={validationErrors[\"openID_secretID\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"openIDClaimName\", e.target.value);\n cleanValidation(\"openID_claimName\");\n }}\n label=\"Claim Name\"\n value={openIDClaimName}\n placeholder=\"policy\"\n error={validationErrors[\"openID_claimName\"] || \"\"}\n />\n \n \n ) => {\n updateField(\"openIDScopes\", e.target.value);\n cleanValidation(\"openID_scopes\");\n }}\n label=\"Scopes\"\n value={openIDScopes}\n />\n \n \n );\n};\n\nexport default IDPOpenID;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport {\n addIDPNewKeyPair,\n isPageValid,\n removeIDPKeyPairAtIndex,\n setIDPPwdAtIndex,\n setIDPUsrAtIndex,\n} from \"../../createTenantSlice\";\nimport { IconButton, Tooltip } from \"@mui/material\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport { RemoveIcon } from \"mds\";\nimport { clearValidationError, getRandomString } from \"../../../utils\";\nimport CasinoIcon from \"@mui/icons-material/Casino\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n buttonTray: {\n marginLeft: 10,\n display: \"flex\",\n height: 38,\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n shortened: {\n gridTemplateColumns: \"auto auto 50px 50px\",\n display: \"grid\",\n gridGap: 15,\n marginBottom: 10,\n \"& input\": {\n fontWeight: 400,\n },\n },\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n }),\n);\n\nconst IDPBuiltIn = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const idpSelection = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.idpSelection,\n );\n const accessKeys = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.accessKeys,\n );\n const secretKeys = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.secretKeys,\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n // Validation\n useEffect(() => {\n let customIDPValidation: IValidation[] = [];\n\n if (idpSelection === \"Built-in\") {\n customIDPValidation = [...customIDPValidation];\n for (var i = 0; i < accessKeys.length; i++) {\n customIDPValidation.push({\n fieldKey: `accesskey-${i.toString()}`,\n required: true,\n value: accessKeys[i],\n pattern: /^[a-zA-Z0-9-]{8,63}$/,\n customPatternMessage: \"Keys must be at least length 8\",\n });\n customIDPValidation.push({\n fieldKey: `secretkey-${i.toString()}`,\n required: true,\n value: secretKeys[i],\n pattern: /^[a-zA-Z0-9-]{8,63}$/,\n customPatternMessage: \"Keys must be at least length 8\",\n });\n }\n }\n\n const commonVal = commonFormValidation(customIDPValidation);\n\n dispatch(\n isPageValid({\n pageName: \"identityProvider\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [idpSelection, accessKeys, secretKeys, dispatch]);\n\n return (\n \n Add additional users\n {accessKeys.map((_, index) => {\n return (\n \n
\n ) => {\n dispatch(\n setIDPUsrAtIndex({\n index,\n accessKey: e.target.value,\n }),\n );\n cleanValidation(`accesskey-${index.toString()}`);\n }}\n index={index}\n key={`csv-accesskey-${index.toString()}`}\n error={validationErrors[`accesskey-${index.toString()}`] || \"\"}\n />\n ) => {\n dispatch(\n setIDPPwdAtIndex({\n index,\n secretKey: e.target.value,\n }),\n );\n cleanValidation(`secretkey-${index.toString()}`);\n }}\n index={index}\n key={`csv-secretkey-${index.toString()}`}\n error={validationErrors[`secretkey-${index.toString()}`] || \"\"}\n />\n
\n
\n {\n dispatch(addIDPNewKeyPair());\n }}\n disabled={index !== accessKeys.length - 1}\n >\n \n \n
\n
\n {\n dispatch(removeIDPKeyPairAtIndex(index));\n }}\n disabled={accessKeys.length <= 1}\n >\n \n \n
\n \n
\n {\n dispatch(\n setIDPUsrAtIndex({\n index,\n accessKey: getRandomString(16),\n }),\n );\n dispatch(\n setIDPPwdAtIndex({\n index,\n secretKey: getRandomString(16),\n }),\n );\n }}\n size={\"small\"}\n >\n \n \n
\n
\n
\n
\n
\n );\n })}\n
\n );\n};\n\nexport default IDPBuiltIn;\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Grid, Paper } from \"@mui/material\";\nimport {\n createTenantCommon,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport RadioGroupSelector from \"../../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport { setIDP } from \"../createTenantSlice\";\nimport IDPActiveDirectory from \"./IdentityProvider/IDPActiveDirectory\";\nimport IDPOpenID from \"./IdentityProvider/IDPOpenID\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport IDPBuiltIn from \"./IdentityProvider/IDPBuiltIn\";\nimport {\n BuiltInLogoElement,\n LDAPLogoElement,\n OIDCLogoElement,\n} from \"../../LogoComponents\";\nimport H3Section from \"../../../Common/H3Section\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n protocolRadioOptions: {\n display: \"flex\",\n flexFlow: \"column\",\n marginBottom: 10,\n\n \"& label\": {\n fontSize: 16,\n fontWeight: 600,\n },\n \"& div\": {\n display: \"flex\",\n flexFlow: \"row\",\n alignItems: \"top\",\n },\n },\n ...createTenantCommon,\n ...modalBasic,\n ...wizardCommon,\n }),\n);\n\nconst IdentityProvider = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const idpSelection = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.idpSelection,\n );\n\n return (\n \n
\n Identity Provider\n \n Access to the tenant can be controlled via an external Identity\n Manager.\n \n
\n \n {\n dispatch(setIDP(e.target.value));\n }}\n selectorOptions={[\n { label: , value: \"Built-in\" },\n { label: , value: \"OpenID\" },\n { label: , value: \"AD\" },\n ]}\n />\n \n {idpSelection === \"Built-in\" && }\n {idpSelection === \"OpenID\" && }\n {idpSelection === \"AD\" && }\n
\n );\n};\n\nexport default IdentityProvider;\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, IconButton, Paper } from \"@mui/material\";\nimport {\n createTenantCommon,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\n\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { KeyPair } from \"../../ListTenants/utils\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport FileSelector from \"../../../Common/FormComponents/FileSelector/FileSelector\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport { RemoveIcon } from \"mds\";\nimport {\n addCaCertificate,\n addClientKeyPair,\n addFileToCaCertificates,\n addFileToClientKeyPair,\n addFileToKeyPair,\n addKeyPair,\n deleteCaCertificate,\n deleteClientKeyPair,\n deleteKeyPair,\n isPageValid,\n updateAddField,\n} from \"../createTenantSlice\";\nimport TLSHelpBox from \"../../HelpBox/TLSHelpBox\";\nimport H3Section from \"../../../Common/H3Section\";\n\ninterface ISecurityProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n minioCertificateRows: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n borderBottom: \"1px solid #EAEAEA\",\n \"&:last-child\": {\n borderBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n flex: 1,\n },\n },\n fileItem: {\n marginRight: 10,\n display: \"flex\",\n \"& div label\": {\n minWidth: 50,\n },\n\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n minioCertsContainer: {\n marginBottom: 15,\n },\n minioCACertsRow: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n\n borderBottom: \"1px solid #EAEAEA\",\n \"&:last-child\": {\n borderBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n flex: 1,\n\n \"& div label\": {\n minWidth: 50,\n },\n },\n },\n rowActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n \"@media (max-width: 900px)\": {\n flex: 1,\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n\n ...createTenantCommon,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst Security = ({ classes }: ISecurityProps) => {\n const dispatch = useAppDispatch();\n\n const enableTLS = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableTLS,\n );\n const enableAutoCert = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableAutoCert,\n );\n const enableCustomCerts = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableCustomCerts,\n );\n const minioCertificates = useSelector(\n (state: AppState) =>\n state.createTenant.certificates.minioServerCertificates,\n );\n const minioClientCertificates = useSelector(\n (state: AppState) =>\n state.createTenant.certificates.minioClientCertificates,\n );\n const caCertificates = useSelector(\n (state: AppState) => state.createTenant.certificates.minioCAsCertificates,\n );\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"security\", field: field, value: value }),\n );\n },\n [dispatch],\n );\n\n // Validation\n\n useEffect(() => {\n if (!enableTLS) {\n dispatch(isPageValid({ pageName: \"security\", valid: true }));\n return;\n }\n if (enableAutoCert) {\n dispatch(isPageValid({ pageName: \"security\", valid: true }));\n return;\n }\n if (enableCustomCerts) {\n dispatch(isPageValid({ pageName: \"security\", valid: true }));\n return;\n }\n dispatch(isPageValid({ pageName: \"security\", valid: false }));\n }, [enableTLS, enableAutoCert, enableCustomCerts, dispatch]);\n\n return (\n \n
\n Security\n
\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"enableTLS\", checked);\n }}\n label={\"TLS\"}\n description={\n \"Securing all the traffic using TLS. This is required for Encryption Configuration\"\n }\n />\n \n {enableTLS && (\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"enableAutoCert\", checked);\n }}\n label={\"AutoCert\"}\n description={\n \"The internode certificates will be generated and managed by MinIO Operator\"\n }\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"enableCustomCerts\", checked);\n }}\n label={\"Custom Certificates\"}\n description={\"Certificates used to terminated TLS at MinIO\"}\n />\n \n {enableCustomCerts && (\n \n {!enableAutoCert && (\n \n \n \n )}\n \n
MinIO Server Certificates
\n {minioCertificates.map((keyPair: KeyPair, index) => (\n \n \n {\n dispatch(\n addFileToKeyPair({\n id: keyPair.id,\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"tlsCert\"\n name=\"tlsCert\"\n label=\"Cert\"\n value={keyPair.cert}\n />\n {\n dispatch(\n addFileToKeyPair({\n id: keyPair.id,\n key: \"key\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n }}\n accept=\".key,.pem\"\n id=\"tlsKey\"\n name=\"tlsKey\"\n label=\"Key\"\n value={keyPair.key}\n />\n \n\n \n
\n {\n dispatch(addKeyPair());\n }}\n disabled={index !== minioCertificates.length - 1}\n >\n \n \n
\n
\n {\n dispatch(deleteKeyPair(keyPair.id));\n }}\n disabled={minioCertificates.length <= 1}\n >\n \n \n
\n
\n
\n ))}\n
\n \n
MinIO Client Certificates
\n {minioClientCertificates.map((keyPair: KeyPair, index) => (\n \n \n {\n dispatch(\n addFileToClientKeyPair({\n id: keyPair.id,\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"tlsCert\"\n name=\"tlsCert\"\n label=\"Cert\"\n value={keyPair.cert}\n />\n {\n dispatch(\n addFileToClientKeyPair({\n id: keyPair.id,\n key: \"key\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n }}\n accept=\".key,.pem\"\n id=\"tlsKey\"\n name=\"tlsKey\"\n label=\"Key\"\n value={keyPair.key}\n />\n \n\n \n
\n {\n dispatch(addClientKeyPair());\n }}\n disabled={\n index !== minioClientCertificates.length - 1\n }\n >\n \n \n
\n
\n {\n dispatch(deleteClientKeyPair(keyPair.id));\n }}\n disabled={minioClientCertificates.length <= 1}\n >\n \n \n
\n
\n
\n ))}\n \n \n
MinIO CA Certificates
\n {caCertificates.map((keyPair: KeyPair, index) => (\n \n \n {\n dispatch(\n addFileToCaCertificates({\n id: keyPair.id,\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"tlsCert\"\n name=\"tlsCert\"\n label=\"Cert\"\n value={keyPair.cert}\n />\n \n \n
\n
\n {\n dispatch(addCaCertificate());\n }}\n disabled={index !== caCertificates.length - 1}\n >\n \n \n
\n
\n {\n dispatch(deleteCaCertificate(keyPair.id));\n }}\n disabled={caCertificates.length <= 1}\n >\n \n \n
\n
\n
\n
\n ))}\n \n \n )}\n \n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(Security);\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\ntype Props = {\n children: string;\n};\n\nconst SectionH1: React.FC = ({ children }) => {\n return (\n

\n {children}\n

\n );\n};\n\nexport default SectionH1;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\n\nimport { isPageValid, updateAddField } from \"../../createTenantSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\nimport { clearValidationError } from \"../../../utils\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n }),\n);\n\nconst VaultKMSAdd = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const encryptionTab = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionTab,\n );\n const vaultEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultEndpoint,\n );\n const vaultEngine = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultEngine,\n );\n const vaultNamespace = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultNamespace,\n );\n const vaultPrefix = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultPrefix,\n );\n const vaultAppRoleEngine = useSelector(\n (state: AppState) =>\n state.createTenant.fields.encryption.vaultAppRoleEngine,\n );\n const vaultId = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultId,\n );\n const vaultSecret = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultSecret,\n );\n const vaultRetry = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultRetry,\n );\n const vaultPing = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultPing,\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (!encryptionTab) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"vault_endpoint\",\n required: true,\n value: vaultEndpoint,\n },\n {\n fieldKey: \"vault_id\",\n required: true,\n value: vaultId,\n },\n {\n fieldKey: \"vault_secret\",\n required: true,\n value: vaultSecret,\n },\n {\n fieldKey: \"vault_ping\",\n required: false,\n value: vaultPing,\n customValidation: parseInt(vaultPing) < 0,\n customValidationMessage: \"Value needs to be 0 or greater\",\n },\n {\n fieldKey: \"vault_retry\",\n required: false,\n value: vaultRetry,\n customValidation: parseInt(vaultRetry) < 0,\n customValidationMessage: \"Value needs to be 0 or greater\",\n },\n ];\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n\n dispatch(\n isPageValid({\n pageName: \"encryption\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [\n encryptionTab,\n vaultEndpoint,\n vaultEngine,\n vaultId,\n vaultSecret,\n vaultPing,\n vaultRetry,\n dispatch,\n ]);\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value }),\n );\n },\n [dispatch],\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n ) => {\n updateField(\"vaultEndpoint\", e.target.value);\n cleanValidation(\"vault_endpoint\");\n }}\n label=\"Endpoint\"\n tooltip=\"Endpoint is the Hashicorp Vault endpoint\"\n value={vaultEndpoint}\n error={validationErrors[\"vault_endpoint\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"vaultEngine\", e.target.value);\n cleanValidation(\"vault_engine\");\n }}\n label=\"Engine\"\n tooltip=\"Engine is the Hashicorp Vault K/V engine path. If empty, defaults to 'kv'\"\n value={vaultEngine}\n />\n \n \n ) => {\n updateField(\"vaultNamespace\", e.target.value);\n }}\n label=\"Namespace\"\n tooltip=\"Namespace is an optional Hashicorp Vault namespace. An empty namespace means no particular namespace is used.\"\n value={vaultNamespace}\n />\n \n \n ) => {\n updateField(\"vaultPrefix\", e.target.value);\n }}\n label=\"Prefix\"\n tooltip=\"Prefix is an optional prefix / directory within the K/V engine. If empty, keys will be stored at the K/V engine top level\"\n value={vaultPrefix}\n />\n \n\n \n
\n App Role\n \n ) => {\n updateField(\"vaultAppRoleEngine\", e.target.value);\n }}\n label=\"Engine\"\n tooltip=\"AppRoleEngine is the AppRole authentication engine path. If empty, defaults to 'approle'\"\n value={vaultAppRoleEngine}\n />\n \n \n ) => {\n updateField(\"vaultId\", e.target.value);\n cleanValidation(\"vault_id\");\n }}\n label=\"AppRole ID\"\n tooltip=\"AppRoleSecret is the AppRole access secret for authenticating to Hashicorp Vault via the AppRole method\"\n value={vaultId}\n error={validationErrors[\"vault_id\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"vaultSecret\", e.target.value);\n cleanValidation(\"vault_secret\");\n }}\n label=\"AppRole Secret\"\n tooltip=\"AppRoleSecret is the AppRole access secret for authenticating to Hashicorp Vault via the AppRole method\"\n value={vaultSecret}\n error={validationErrors[\"vault_secret\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"vaultRetry\", e.target.value);\n cleanValidation(\"vault_retry\");\n }}\n label=\"Retry (Seconds)\"\n value={vaultRetry}\n error={validationErrors[\"vault_retry\"] || \"\"}\n />\n \n
\n
\n \n
\n Status\n ) => {\n updateField(\"vaultPing\", e.target.value);\n cleanValidation(\"vault_ping\");\n }}\n label=\"Ping (Seconds)\"\n value={vaultPing}\n error={validationErrors[\"vault_ping\"] || \"\"}\n />\n
\n \n
\n );\n};\n\nexport default VaultKMSAdd;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\nimport { isPageValid, updateAddField } from \"../../createTenantSlice\";\nimport { clearValidationError } from \"../../../utils\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n }),\n);\n\nconst AzureKMSAdd = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const encryptionTab = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionTab,\n );\n const azureEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.azureEndpoint,\n );\n const azureTenantID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.azureTenantID,\n );\n const azureClientID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.azureClientID,\n );\n const azureClientSecret = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.azureClientSecret,\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (!encryptionTab) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"azure_endpoint\",\n required: true,\n value: azureEndpoint,\n },\n {\n fieldKey: \"azure_tenant_id\",\n required: true,\n value: azureTenantID,\n },\n {\n fieldKey: \"azure_client_id\",\n required: true,\n value: azureClientID,\n },\n {\n fieldKey: \"azure_client_secret\",\n required: true,\n value: azureClientSecret,\n },\n ];\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n\n dispatch(\n isPageValid({\n pageName: \"encryption\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [\n encryptionTab,\n azureEndpoint,\n azureTenantID,\n azureClientID,\n azureClientSecret,\n dispatch,\n ]);\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value }),\n );\n },\n [dispatch],\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n ) => {\n updateField(\"azureEndpoint\", e.target.value);\n cleanValidation(\"azure_endpoint\");\n }}\n label=\"Endpoint\"\n tooltip=\"Endpoint is the Azure KeyVault endpoint\"\n value={azureEndpoint}\n error={validationErrors[\"azure_endpoint\"] || \"\"}\n />\n \n \n
\n Credentials\n \n ) => {\n updateField(\"azureTenantID\", e.target.value);\n cleanValidation(\"azure_tenant_id\");\n }}\n label=\"Tenant ID\"\n tooltip=\"TenantID is the ID of the Azure KeyVault tenant\"\n value={azureTenantID}\n error={validationErrors[\"azure_tenant_id\"] || \"\"}\n />\n \n \n ) => {\n updateField(\"azureClientID\", e.target.value);\n cleanValidation(\"azure_client_id\");\n }}\n label=\"Client ID\"\n tooltip=\"ClientID is the ID of the client accessing Azure KeyVault\"\n value={azureClientID}\n error={validationErrors[\"azure_client_id\"] || \"\"}\n />\n \n \n ) => {\n updateField(\"azureClientSecret\", e.target.value);\n cleanValidation(\"azure_client_secret\");\n }}\n label=\"Client Secret\"\n tooltip=\"ClientSecret is the client secret accessing the Azure KeyVault\"\n value={azureClientSecret}\n error={validationErrors[\"azure_client_secret\"] || \"\"}\n />\n \n
\n
\n
\n );\n};\n\nexport default AzureKMSAdd;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { updateAddField } from \"../../createTenantSlice\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n }),\n);\n\nconst GCPKMSAdd = () => {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n\n const gcpProjectID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpProjectID,\n );\n const gcpEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpEndpoint,\n );\n const gcpClientEmail = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpClientEmail,\n );\n const gcpClientID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpClientID,\n );\n const gcpPrivateKeyID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpPrivateKeyID,\n );\n const gcpPrivateKey = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpPrivateKey,\n );\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value }),\n );\n },\n [dispatch],\n );\n\n return (\n \n \n ) => {\n updateField(\"gcpProjectID\", e.target.value);\n }}\n label=\"Project ID\"\n tooltip=\"ProjectID is the GCP project ID.\"\n value={gcpProjectID}\n />\n \n \n ) => {\n updateField(\"gcpEndpoint\", e.target.value);\n }}\n label=\"Endpoint\"\n tooltip=\"Endpoint is the GCP project ID. If empty defaults to: secretmanager.googleapis.com:443\"\n value={gcpEndpoint}\n />\n \n \n
\n Credentials\n \n ) => {\n updateField(\"gcpClientEmail\", e.target.value);\n }}\n label=\"Client Email\"\n tooltip=\"Is the Client email of the GCP service account used to access the SecretManager\"\n value={gcpClientEmail}\n />\n \n \n ) => {\n updateField(\"gcpClientID\", e.target.value);\n }}\n label=\"Client ID\"\n tooltip=\"Is the Client ID of the GCP service account used to access the SecretManager\"\n value={gcpClientID}\n />\n \n \n ) => {\n updateField(\"gcpPrivateKeyID\", e.target.value);\n }}\n label=\"Private Key ID\"\n tooltip=\"Is the private key ID of the GCP service account used to access the SecretManager\"\n value={gcpPrivateKeyID}\n />\n \n \n ) => {\n updateField(\"gcpPrivateKey\", e.target.value);\n }}\n label=\"Private Key\"\n tooltip=\"Is the private key of the GCP service account used to access the SecretManager\"\n value={gcpPrivateKey}\n />\n \n
\n
\n
\n );\n};\n\nexport default GCPKMSAdd;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { isPageValid, updateAddField } from \"../../createTenantSlice\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\nimport { clearValidationError } from \"../../../utils\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n }),\n);\n\nconst GemaltoKMSAdd = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const encryptionTab = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionTab,\n );\n const gemaltoEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gemaltoEndpoint,\n );\n const gemaltoToken = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gemaltoToken,\n );\n const gemaltoDomain = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gemaltoDomain,\n );\n const gemaltoRetry = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gemaltoRetry,\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (!encryptionTab) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"gemalto_endpoint\",\n required: true,\n value: gemaltoEndpoint,\n },\n {\n fieldKey: \"gemalto_token\",\n required: true,\n value: gemaltoToken,\n },\n {\n fieldKey: \"gemalto_domain\",\n required: true,\n value: gemaltoDomain,\n },\n {\n fieldKey: \"gemalto_retry\",\n required: false,\n value: gemaltoRetry,\n customValidation: parseInt(gemaltoRetry) < 0,\n customValidationMessage: \"Value needs to be 0 or greater\",\n },\n ];\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n\n dispatch(\n isPageValid({\n pageName: \"encryption\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [\n encryptionTab,\n gemaltoEndpoint,\n gemaltoToken,\n gemaltoDomain,\n gemaltoRetry,\n dispatch,\n ]);\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value }),\n );\n },\n [dispatch],\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n ) => {\n updateField(\"gemaltoEndpoint\", e.target.value);\n cleanValidation(\"gemalto_endpoint\");\n }}\n label=\"Endpoint\"\n tooltip=\"Endpoint is the endpoint to the KeySecure server\"\n value={gemaltoEndpoint}\n error={validationErrors[\"gemalto_endpoint\"] || \"\"}\n required\n />\n \n \n
\n Credentials\n \n ) => {\n updateField(\"gemaltoToken\", e.target.value);\n cleanValidation(\"gemalto_token\");\n }}\n label=\"Token\"\n tooltip=\"Token is the refresh authentication token to access the KeySecure server\"\n value={gemaltoToken}\n error={validationErrors[\"gemalto_token\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"gemaltoDomain\", e.target.value);\n cleanValidation(\"gemalto_domain\");\n }}\n label=\"Domain\"\n tooltip=\"Domain is the isolated namespace within the KeySecure server. If empty, defaults to the top-level / root domain\"\n value={gemaltoDomain}\n error={validationErrors[\"gemalto_domain\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"gemaltoRetry\", e.target.value);\n cleanValidation(\"gemalto_retry\");\n }}\n label=\"Retry (seconds)\"\n value={gemaltoRetry}\n error={validationErrors[\"gemalto_retry\"] || \"\"}\n />\n \n
\n \n
\n );\n};\n\nexport default GemaltoKMSAdd;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\nimport { isPageValid, updateAddField } from \"../../createTenantSlice\";\nimport { clearValidationError } from \"../../../utils\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n }),\n);\n\nconst AWSKMSAdd = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const encryptionTab = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionTab,\n );\n const awsEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsEndpoint,\n );\n const awsRegion = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsRegion,\n );\n const awsKMSKey = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsKMSKey,\n );\n const awsAccessKey = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsAccessKey,\n );\n const awsSecretKey = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsSecretKey,\n );\n const awsToken = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsToken,\n );\n const [validationErrors, setValidationErrors] = useState({});\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (!encryptionTab) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"aws_endpoint\",\n required: true,\n value: awsEndpoint,\n },\n {\n fieldKey: \"aws_region\",\n required: true,\n value: awsRegion,\n },\n {\n fieldKey: \"aws_accessKey\",\n required: true,\n value: awsAccessKey,\n },\n {\n fieldKey: \"aws_secretKey\",\n required: true,\n value: awsSecretKey,\n },\n ];\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n\n dispatch(\n isPageValid({\n pageName: \"encryption\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [\n encryptionTab,\n awsEndpoint,\n awsRegion,\n awsSecretKey,\n awsAccessKey,\n dispatch,\n ]);\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value }),\n );\n },\n [dispatch],\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n ) => {\n updateField(\"awsEndpoint\", e.target.value);\n cleanValidation(\"aws_endpoint\");\n }}\n label=\"Endpoint\"\n tooltip=\"Endpoint is the AWS SecretsManager endpoint. AWS SecretsManager endpoints have the following schema: secrestmanager[-fips]..amanzonaws.com\"\n value={awsEndpoint}\n error={validationErrors[\"aws_endpoint\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"awsRegion\", e.target.value);\n cleanValidation(\"aws_region\");\n }}\n label=\"Region\"\n tooltip=\"Region is the AWS region the SecretsManager is located\"\n value={awsRegion}\n error={validationErrors[\"aws_region\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"awsKMSKey\", e.target.value);\n }}\n label=\"KMS Key\"\n tooltip=\"KMSKey is the AWS-KMS key ID (CMK-ID) used to en/decrypt secrets managed by the SecretsManager. If empty, the default AWS KMS key is used\"\n value={awsKMSKey}\n />\n \n \n
\n Credentials\n \n ) => {\n updateField(\"awsAccessKey\", e.target.value);\n cleanValidation(\"aws_accessKey\");\n }}\n label=\"Access Key\"\n tooltip=\"AccessKey is the access key for authenticating to AWS\"\n value={awsAccessKey}\n error={validationErrors[\"aws_accessKey\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"awsSecretKey\", e.target.value);\n cleanValidation(\"aws_secretKey\");\n }}\n label=\"Secret Key\"\n tooltip=\"SecretKey is the secret key for authenticating to AWS\"\n value={awsSecretKey}\n error={validationErrors[\"aws_secretKey\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"awsToken\", e.target.value);\n }}\n label=\"Token\"\n value={awsToken}\n />\n \n
\n
\n
\n );\n};\n\nexport default AWSKMSAdd;\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Paper, SelectChangeEvent } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\n\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport FileSelector from \"../../../Common/FormComponents/FileSelector/FileSelector\";\nimport RadioGroupSelector from \"../../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport SectionH1 from \"../../../Common/SectionH1\";\nimport {\n addFileKESServerCert,\n addFileKMSCa,\n addFileKMSMTLSCert,\n addFileMinIOMTLSCert,\n isPageValid,\n updateAddField,\n} from \"../createTenantSlice\";\nimport VaultKMSAdd from \"./Encryption/VaultKMSAdd\";\nimport AzureKMSAdd from \"./Encryption/AzureKMSAdd\";\nimport GCPKMSAdd from \"./Encryption/GCPKMSAdd\";\nimport GemaltoKMSAdd from \"./Encryption/GemaltoKMSAdd\";\nimport AWSKMSAdd from \"./Encryption/AWSKMSAdd\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport Tabs from \"@mui/material/Tabs\";\nimport Tab from \"@mui/material/Tab\";\nimport CodeMirrorWrapper from \"../../../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport FormHr from \"../../../Common/FormHr\";\n\ninterface IEncryptionProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n encryptionTypeOptions: {\n marginBottom: 15,\n },\n mutualTlsConfig: {\n marginTop: 15,\n \"& fieldset\": {\n flex: 1,\n },\n },\n rightSpacer: {\n marginRight: 15,\n },\n responsiveContainer: {\n \"@media (max-width: 900px)\": {\n display: \"flex\",\n flexFlow: \"column\",\n },\n },\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst Encryption = ({ classes }: IEncryptionProps) => {\n const dispatch = useAppDispatch();\n\n const replicas = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.replicas,\n );\n const rawConfiguration = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.rawConfiguration,\n );\n const encryptionTab = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionTab,\n );\n const enableEncryption = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.enableEncryption,\n );\n const encryptionType = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionType,\n );\n\n const gcpProjectID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpProjectID,\n );\n const gcpEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpEndpoint,\n );\n const gcpClientEmail = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpClientEmail,\n );\n const gcpClientID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpClientID,\n );\n const gcpPrivateKeyID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpPrivateKeyID,\n );\n const gcpPrivateKey = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpPrivateKey,\n );\n const enableCustomCertsForKES = useSelector(\n (state: AppState) =>\n state.createTenant.fields.encryption.enableCustomCertsForKES,\n );\n const enableAutoCert = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableAutoCert,\n );\n const enableTLS = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableTLS,\n );\n const minioServerCertificates = useSelector(\n (state: AppState) =>\n state.createTenant.certificates.minioServerCertificates,\n );\n const kesServerCertificate = useSelector(\n (state: AppState) => state.createTenant.certificates.kesServerCertificate,\n );\n const minioMTLSCertificate = useSelector(\n (state: AppState) => state.createTenant.certificates.minioMTLSCertificate,\n );\n const kmsMTLSCertificate = useSelector(\n (state: AppState) => state.createTenant.certificates.kmsMTLSCertificate,\n );\n const kmsCA = useSelector(\n (state: AppState) => state.createTenant.certificates.kmsCA,\n );\n const enableCustomCerts = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableCustomCerts,\n );\n const kesSecurityContext = useSelector(\n (state: AppState) =>\n state.createTenant.fields.encryption.kesSecurityContext,\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n let encryptionAvailable = false;\n if (\n enableTLS &&\n (enableAutoCert ||\n (minioServerCertificates &&\n minioServerCertificates.filter(\n (item) => item.encoded_key && item.encoded_cert,\n ).length > 0))\n ) {\n encryptionAvailable = true;\n }\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value }),\n );\n },\n [dispatch],\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (enableEncryption) {\n encryptionValidation = [\n {\n fieldKey: \"rawConfiguration\",\n required: encryptionTab > 0,\n value: rawConfiguration,\n },\n {\n fieldKey: \"replicas\",\n required: true,\n value: replicas,\n customValidation: parseInt(replicas) < 1,\n customValidationMessage: \"Replicas needs to be 1 or greater\",\n },\n {\n fieldKey: \"kes_securityContext_runAsUser\",\n required: true,\n value: kesSecurityContext.runAsUser,\n customValidation:\n kesSecurityContext.runAsUser === \"\" ||\n parseInt(kesSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"kes_securityContext_runAsGroup\",\n required: true,\n value: kesSecurityContext.runAsGroup,\n customValidation:\n kesSecurityContext.runAsGroup === \"\" ||\n parseInt(kesSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"kes_securityContext_fsGroup\",\n required: true,\n value: kesSecurityContext.fsGroup!,\n customValidation:\n kesSecurityContext.fsGroup === \"\" ||\n parseInt(kesSecurityContext.fsGroup!) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n\n if (enableCustomCerts) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"serverKey\",\n required: !enableAutoCert,\n value: kesServerCertificate.encoded_key,\n },\n {\n fieldKey: \"serverCert\",\n required: !enableAutoCert,\n value: kesServerCertificate.encoded_cert,\n },\n {\n fieldKey: \"clientKey\",\n required: !enableAutoCert,\n value: minioMTLSCertificate.encoded_key,\n },\n {\n fieldKey: \"clientCert\",\n required: !enableAutoCert,\n value: minioMTLSCertificate.encoded_cert,\n },\n ];\n }\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n dispatch(\n isPageValid({\n pageName: \"encryption\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [\n rawConfiguration,\n encryptionTab,\n enableEncryption,\n encryptionType,\n gcpProjectID,\n gcpEndpoint,\n gcpClientEmail,\n gcpClientID,\n gcpPrivateKeyID,\n gcpPrivateKey,\n dispatch,\n enableAutoCert,\n enableCustomCerts,\n kesServerCertificate.encoded_key,\n kesServerCertificate.encoded_cert,\n minioMTLSCertificate.encoded_key,\n minioMTLSCertificate.encoded_cert,\n kesSecurityContext,\n replicas,\n ]);\n\n return (\n \n \n \n Encryption\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"enableEncryption\", checked);\n }}\n description=\"\"\n disabled={!encryptionAvailable}\n />\n \n \n \n \n \n MinIO Server-Side Encryption (SSE) protects objects as part of write\n operations, allowing clients to take advantage of server processing\n power to secure objects at the storage layer (encryption-at-rest).\n SSE also provides key functionality to regulatory and compliance\n requirements around secure locking and erasure.\n \n \n \n \n \n\n {enableEncryption && (\n \n \n , value: number) => {\n updateField(\"encryptionTab\", value);\n }}\n indicatorColor=\"primary\"\n textColor=\"primary\"\n aria-label=\"cluster-tabs\"\n variant=\"scrollable\"\n scrollButtons=\"auto\"\n >\n \n \n \n \n\n {encryptionTab ? (\n \n \n {\n updateField(\"rawConfiguration\", value);\n }}\n editorHeight={\"550px\"}\n />\n \n \n ) : (\n \n \n {\n updateField(\"encryptionType\", e.target.value);\n }}\n selectorOptions={[\n { label: \"Vault\", value: \"vault\" },\n { label: \"AWS\", value: \"aws\" },\n { label: \"Gemalto\", value: \"gemalto\" },\n { label: \"GCP\", value: \"gcp\" },\n { label: \"Azure\", value: \"azure\" },\n ]}\n />\n \n {encryptionType === \"vault\" && }\n {encryptionType === \"azure\" && }\n {encryptionType === \"gcp\" && }\n {encryptionType === \"aws\" && }\n {encryptionType === \"gemalto\" && }\n \n )}\n\n
\n

Additional Configurations

\n
\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"enableCustomCertsForKES\", checked);\n }}\n label={\"Custom Certificates\"}\n disabled={!enableAutoCert}\n />\n \n {(enableCustomCertsForKES || !enableAutoCert) && (\n \n \n \n
\n \n Encryption server certificates\n \n {\n dispatch(\n addFileKESServerCert({\n key: \"key\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n cleanValidation(\"serverKey\");\n }}\n accept=\".key,.pem\"\n id=\"serverKey\"\n name=\"serverKey\"\n label=\"Key\"\n error={validationErrors[\"serverKey\"] || \"\"}\n value={kesServerCertificate.key}\n required={!enableAutoCert}\n />\n {\n dispatch(\n addFileKESServerCert({\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n cleanValidation(\"serverCert\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"serverCert\"\n name=\"serverCert\"\n label=\"Cert\"\n error={validationErrors[\"serverCert\"] || \"\"}\n value={kesServerCertificate.cert}\n required={!enableAutoCert}\n />\n
\n
\n
\n \n \n
\n \n MinIO mTLS certificates (connection between MinIO and\n the Encryption server)\n \n {\n dispatch(\n addFileMinIOMTLSCert({\n key: \"key\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n cleanValidation(\"clientKey\");\n }}\n accept=\".key,.pem\"\n id=\"clientKey\"\n name=\"clientKey\"\n label=\"Key\"\n error={validationErrors[\"clientKey\"] || \"\"}\n value={minioMTLSCertificate.key}\n required={!enableAutoCert}\n />\n {\n dispatch(\n addFileMinIOMTLSCert({\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n cleanValidation(\"clientCert\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"clientCert\"\n name=\"clientCert\"\n label=\"Cert\"\n error={validationErrors[\"clientCert\"] || \"\"}\n value={minioMTLSCertificate.cert}\n required={!enableAutoCert}\n />\n
\n
\n
\n \n
\n \n KMS mTLS certificates (connection between the Encryption\n server and the KMS)\n \n {\n dispatch(\n addFileKMSMTLSCert({\n key: \"key\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n cleanValidation(\"vault_key\");\n }}\n accept=\".key,.pem\"\n id=\"vault_key\"\n name=\"vault_key\"\n label=\"Key\"\n value={kmsMTLSCertificate.key}\n />\n {\n dispatch(\n addFileKMSMTLSCert({\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n cleanValidation(\"vault_cert\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"vault_cert\"\n name=\"vault_cert\"\n label=\"Cert\"\n value={kmsMTLSCertificate.cert}\n />\n {\n dispatch(\n addFileKMSCa({\n fileName: fileName,\n value: encodedValue,\n }),\n );\n cleanValidation(\"vault_ca\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"vault_ca\"\n name=\"vault_ca\"\n label=\"CA\"\n value={kmsCA.cert}\n />\n
\n
\n
\n )}\n \n \n ) => {\n updateField(\"replicas\", e.target.value);\n cleanValidation(\"replicas\");\n }}\n label=\"Replicas\"\n value={replicas}\n required\n error={validationErrors[\"replicas\"] || \"\"}\n />\n \n\n \n \n SecurityContext for KES pods\n \n \n \n \n ) => {\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n runAsUser: e.target.value,\n });\n cleanValidation(\"kes_securityContext_runAsUser\");\n }}\n label=\"Run As User\"\n value={kesSecurityContext.runAsUser}\n required\n error={\n validationErrors[\"kes_securityContext_runAsUser\"] ||\n \"\"\n }\n min=\"0\"\n />\n \n \n ) => {\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n runAsGroup: e.target.value,\n });\n cleanValidation(\"kes_securityContext_runAsGroup\");\n }}\n label=\"Run As Group\"\n value={kesSecurityContext.runAsGroup}\n required\n error={\n validationErrors[\"kes_securityContext_runAsGroup\"] ||\n \"\"\n }\n min=\"0\"\n />\n \n \n \n
\n \n \n \n ) => {\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n fsGroup: e.target.value,\n });\n cleanValidation(\"kes_securityContext_fsGroup\");\n }}\n label=\"FsGroup\"\n value={kesSecurityContext.fsGroup!}\n required\n error={\n validationErrors[\"kes_securityContext_fsGroup\"] || \"\"\n }\n min=\"0\"\n />\n \n \n ) => {\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n fsGroupChangePolicy: e.target.value,\n });\n }}\n options={[\n {\n label: \"Always\",\n value: \"Always\",\n },\n {\n label: \"OnRootMismatch\",\n value: \"OnRootMismatch\",\n },\n ]}\n />\n \n \n \n
\n \n
\n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n runAsNonRoot: checked,\n });\n }}\n label={\"Do not run as Root\"}\n />\n
\n
\n \n
\n
\n )}\n
\n
\n );\n};\n\nexport default withStyles(styles)(Encryption);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, IconButton, Paper, SelectChangeEvent } from \"@mui/material\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\n\nimport {\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { LabelKeyPair } from \"../../types\";\nimport RadioGroupSelector from \"../../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport api from \"../../../../../common/api\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { AddIcon, RemoveIcon } from \"mds\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport TolerationSelector from \"../../../Common/TolerationSelector/TolerationSelector\";\nimport { setModalErrorSnackMessage } from \"../../../../../systemSlice\";\nimport {\n addNewToleration,\n isPageValid,\n removeToleration,\n setKeyValuePairs,\n setTolerationInfo,\n updateAddField,\n} from \"../createTenantSlice\";\nimport H3Section from \"../../../Common/H3Section\";\n\ninterface IAffinityProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n overlayAction: {\n marginLeft: 10,\n display: \"flex\",\n alignItems: \"center\",\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n affinityConfigField: {\n display: \"flex\",\n },\n affinityFieldLabel: {\n display: \"flex\",\n flexFlow: \"column\",\n flex: 1,\n },\n radioField: {\n display: \"flex\",\n alignItems: \"flex-start\",\n marginTop: 10,\n \"& div:first-child\": {\n display: \"flex\",\n flexFlow: \"column\",\n alignItems: \"baseline\",\n textAlign: \"left !important\",\n },\n },\n affinityLabelKey: {\n \"& div:first-child\": {\n marginBottom: 0,\n },\n },\n affinityLabelValue: {\n marginLeft: 10,\n \"& div:first-child\": {\n marginBottom: 0,\n },\n },\n rowActions: {\n display: \"flex\",\n alignItems: \"center\",\n },\n affinityRow: {\n marginBottom: 10,\n display: \"flex\",\n },\n ...modalBasic,\n ...wizardCommon,\n });\n\ninterface OptionPair {\n label: string;\n value: string;\n}\n\nconst Affinity = ({ classes }: IAffinityProps) => {\n const dispatch = useAppDispatch();\n\n const podAffinity = useSelector(\n (state: AppState) => state.createTenant.fields.affinity.podAffinity,\n );\n const nodeSelectorLabels = useSelector(\n (state: AppState) => state.createTenant.fields.affinity.nodeSelectorLabels,\n );\n const withPodAntiAffinity = useSelector(\n (state: AppState) => state.createTenant.fields.affinity.withPodAntiAffinity,\n );\n const keyValuePairs = useSelector(\n (state: AppState) => state.createTenant.nodeSelectorPairs,\n );\n const tolerations = useSelector(\n (state: AppState) => state.createTenant.tolerations,\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n const [loading, setLoading] = useState(true);\n const [keyValueMap, setKeyValueMap] = useState<{ [key: string]: string[] }>(\n {},\n );\n const [keyOptions, setKeyOptions] = useState([]);\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({\n pageName: \"affinity\",\n field: field,\n value: value,\n }),\n );\n },\n [dispatch],\n );\n\n useEffect(() => {\n if (loading) {\n api\n .invoke(\"GET\", `/api/v1/nodes/labels`)\n .then((res: { [key: string]: string[] }) => {\n setLoading(false);\n setKeyValueMap(res);\n let keys: OptionPair[] = [];\n for (let k in res) {\n keys.push({\n label: k,\n value: k,\n });\n }\n setKeyOptions(keys);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n setKeyValueMap({});\n });\n }\n }, [dispatch, loading]);\n\n useEffect(() => {\n if (keyValuePairs) {\n const vlr = keyValuePairs\n .filter((kvp) => kvp.key !== \"\")\n .map((kvp) => `${kvp.key}=${kvp.value}`)\n .filter((kvs, i, a) => a.indexOf(kvs) === i);\n const vl = vlr.join(\"&\");\n updateField(\"nodeSelectorLabels\", vl);\n }\n }, [keyValuePairs, updateField]);\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n\n if (podAffinity === \"nodeSelector\") {\n let valid = true;\n\n const splittedLabels = nodeSelectorLabels.split(\"&\");\n\n if (splittedLabels.length === 1 && splittedLabels[0] === \"\") {\n valid = false;\n }\n\n splittedLabels.forEach((item: string, index: number) => {\n const splitItem = item.split(\"=\");\n\n if (splitItem.length !== 2) {\n valid = false;\n }\n\n if (index + 1 !== splittedLabels.length) {\n if (splitItem[0] === \"\" || splitItem[1] === \"\") {\n valid = false;\n }\n }\n });\n\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"labels\",\n required: true,\n value: nodeSelectorLabels,\n customValidation: !valid,\n customValidationMessage:\n \"You need to add at least one label key-pair\",\n },\n ];\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n dispatch(\n isPageValid({\n pageName: \"affinity\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [dispatch, podAffinity, nodeSelectorLabels]);\n\n const updateToleration = (index: number, field: string, value: any) => {\n const alterToleration = { ...tolerations[index], [field]: value };\n\n dispatch(\n setTolerationInfo({\n index: index,\n tolerationValue: alterToleration,\n }),\n );\n };\n\n return (\n \n
\n Pod Placement\n \n Configure how pods will be assigned to nodes\n \n
\n \n \n
Type
\n \n MinIO supports multiple configurations for Pod Affinity\n \n \n {\n updateField(\"podAffinity\", e.target.value);\n }}\n selectorOptions={[\n { label: \"None\", value: \"none\" },\n { label: \"Default (Pod Anti-Affinity)\", value: \"default\" },\n { label: \"Node Selector\", value: \"nodeSelector\" },\n ]}\n />\n \n
\n
\n {podAffinity === \"nodeSelector\" && (\n \n
\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"withPodAntiAffinity\", checked);\n }}\n label={\"With Pod Anti-Affinity\"}\n />\n \n \n

Labels

\n {validationErrors[\"labels\"]}\n \n {keyValuePairs &&\n keyValuePairs.map((kvp, i) => {\n return (\n \n \n {keyOptions.length > 0 && (\n ) => {\n const newKey = e.target.value as string;\n const newLKP: LabelKeyPair = {\n key: newKey,\n value: keyValueMap[newKey][0],\n };\n const arrCp: LabelKeyPair[] = [...keyValuePairs];\n arrCp[i] = newLKP;\n dispatch(setKeyValuePairs(arrCp));\n }}\n id=\"select-access-policy\"\n name=\"select-access-policy\"\n label={\"\"}\n value={kvp.key}\n options={keyOptions}\n />\n )}\n {keyOptions.length === 0 && (\n {\n const arrCp: LabelKeyPair[] = [...keyValuePairs];\n arrCp[i] = {\n key: arrCp[i].key,\n value: e.target.value as string,\n };\n dispatch(setKeyValuePairs(arrCp));\n }}\n index={i}\n placeholder={\"Key\"}\n />\n )}\n \n \n {keyOptions.length > 0 && (\n ) => {\n const arrCp: LabelKeyPair[] = [...keyValuePairs];\n arrCp[i] = {\n key: arrCp[i].key,\n value: e.target.value as string,\n };\n dispatch(setKeyValuePairs(arrCp));\n }}\n id=\"select-access-policy\"\n name=\"select-access-policy\"\n label={\"\"}\n value={kvp.value}\n options={\n keyValueMap[kvp.key]\n ? keyValueMap[kvp.key].map((v) => {\n return { label: v, value: v };\n })\n : []\n }\n />\n )}\n {keyOptions.length === 0 && (\n {\n const arrCp: LabelKeyPair[] = [...keyValuePairs];\n arrCp[i] = {\n key: arrCp[i].key,\n value: e.target.value as string,\n };\n dispatch(setKeyValuePairs(arrCp));\n }}\n index={i}\n placeholder={\"value\"}\n />\n )}\n \n \n
\n {\n const arrCp = [...keyValuePairs];\n if (keyOptions.length > 0) {\n arrCp.push({\n key: keyOptions[0].value,\n value: keyValueMap[keyOptions[0].value][0],\n });\n } else {\n arrCp.push({ key: \"\", value: \"\" });\n }\n\n dispatch(setKeyValuePairs(arrCp));\n }}\n disabled={i !== keyValuePairs.length - 1}\n >\n \n \n
\n
\n {\n const arrCp = keyValuePairs.filter(\n (item, index) => index !== i,\n );\n dispatch(setKeyValuePairs(arrCp));\n }}\n disabled={keyValuePairs.length <= 1}\n >\n \n \n
\n
\n
\n );\n })}\n
\n \n
\n )}\n \n \n

Tolerations

\n \n {validationErrors[\"tolerations\"]}\n \n \n {tolerations &&\n tolerations.map((tol, i) => {\n return (\n \n {\n updateToleration(i, \"effect\", value);\n }}\n tolerationKey={tol.key}\n onTolerationKeyChange={(value) => {\n updateToleration(i, \"key\", value);\n }}\n operator={tol.operator}\n onOperatorChange={(value) => {\n updateToleration(i, \"operator\", value);\n }}\n value={tol.value}\n onValueChange={(value) => {\n updateToleration(i, \"value\", value);\n }}\n tolerationSeconds={tol.tolerationSeconds?.seconds || 0}\n onSecondsChange={(value) => {\n updateToleration(i, \"tolerationSeconds\", {\n seconds: value,\n });\n }}\n index={i}\n />\n
\n {\n dispatch(addNewToleration());\n }}\n disabled={i !== tolerations.length - 1}\n >\n \n \n
\n\n
\n dispatch(removeToleration(i))}\n disabled={tolerations.length <= 1}\n >\n \n \n
\n
\n );\n })}\n
\n
\n \n
\n );\n};\n\nexport default withStyles(styles)(Affinity);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, Paper } from \"@mui/material\";\nimport {\n formFieldStyles,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { isPageValid, updateAddField } from \"../createTenantSlice\";\nimport H3Section from \"../../../Common/H3Section\";\n\ninterface IImagesProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...wizardCommon,\n });\n\nconst Images = ({ classes }: IImagesProps) => {\n const dispatch = useAppDispatch();\n\n const customImage = useSelector(\n (state: AppState) => state.createTenant.fields.configure.customImage,\n );\n const imageName = useSelector(\n (state: AppState) => state.createTenant.fields.configure.imageName,\n );\n const customDockerhub = useSelector(\n (state: AppState) => state.createTenant.fields.configure.customDockerhub,\n );\n const imageRegistry = useSelector(\n (state: AppState) => state.createTenant.fields.configure.imageRegistry,\n );\n const imageRegistryUsername = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.imageRegistryUsername,\n );\n const imageRegistryPassword = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.imageRegistryPassword,\n );\n\n const tenantCustom = useSelector(\n (state: AppState) => state.createTenant.fields.configure.tenantCustom,\n );\n\n const kesImage = useSelector(\n (state: AppState) => state.createTenant.fields.configure.kesImage,\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"configure\", field: field, value: value }),\n );\n },\n [dispatch],\n );\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n\n if (customImage) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"image\",\n required: false,\n value: imageName,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage: \"Format must be of form: 'minio/minio:VERSION'\",\n },\n {\n fieldKey: \"kesImage\",\n required: false,\n value: kesImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage: \"Format must be of form: 'minio/kes:VERSION'\",\n },\n ];\n if (customDockerhub) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"registry\",\n required: true,\n value: imageRegistry,\n },\n {\n fieldKey: \"registryUsername\",\n required: true,\n value: imageRegistryUsername,\n },\n {\n fieldKey: \"registryPassword\",\n required: true,\n value: imageRegistryPassword,\n },\n ];\n }\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n dispatch(\n isPageValid({\n pageName: \"configure\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [\n customImage,\n imageName,\n kesImage,\n customDockerhub,\n imageRegistry,\n imageRegistryUsername,\n imageRegistryPassword,\n dispatch,\n tenantCustom,\n ]);\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n
\n Container Images\n \n Specify the container images used by the Tenant and its features.\n \n
\n\n \n \n ) => {\n updateField(\"imageName\", e.target.value);\n cleanValidation(\"image\");\n }}\n label=\"MinIO\"\n value={imageName}\n error={validationErrors[\"image\"] || \"\"}\n placeholder=\"minio/minio:RELEASE.2023-09-07T02-05-02Z\"\n />\n \n\n \n ) => {\n updateField(\"kesImage\", e.target.value);\n cleanValidation(\"kesImage\");\n }}\n label=\"KES\"\n value={kesImage}\n error={validationErrors[\"kesImage\"] || \"\"}\n placeholder=\"minio/kes:2023-08-19T17-27-47Z\"\n />\n \n \n\n {customImage && (\n \n \n

Custom Container Registry

\n
\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"customDockerhub\", checked);\n }}\n label={\"Use a private container registry\"}\n />\n \n
\n )}\n {customDockerhub && (\n \n \n ) => {\n updateField(\"imageRegistry\", e.target.value);\n }}\n label=\"Endpoint\"\n value={imageRegistry}\n error={validationErrors[\"registry\"] || \"\"}\n placeholder=\"https://index.docker.io/v1/\"\n required\n />\n \n \n ) => {\n updateField(\"imageRegistryUsername\", e.target.value);\n }}\n label=\"Username\"\n value={imageRegistryUsername}\n error={validationErrors[\"registryUsername\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"imageRegistryPassword\", e.target.value);\n }}\n label=\"Password\"\n value={imageRegistryPassword}\n error={validationErrors[\"registryPassword\"] || \"\"}\n required\n />\n \n \n )}\n
\n );\n};\n\nexport default withStyles(styles)(Images);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableRow from \"@mui/material/TableRow\";\nimport { niceBytes } from \"../../../../../common/utils\";\n\nimport { Divider } from \"@mui/material\";\n\ninterface ISizePreviewProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n margin: 4,\n },\n table: {\n \"& .MuiTableCell-root\": {\n fontSize: 13,\n },\n },\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst SizePreview = ({ classes }: ISizePreviewProps) => {\n const nodes = useSelector(\n (state: AppState) => state.createTenant.fields.tenantSize.nodes,\n );\n const memoryNode = useSelector(\n (state: AppState) =>\n state.createTenant.fields.tenantSize.resourcesMemoryRequest,\n );\n const ecParity = useSelector(\n (state: AppState) => state.createTenant.fields.tenantSize.ecParity,\n );\n\n const distribution = useSelector(\n (state: AppState) => state.createTenant.fields.tenantSize.distribution,\n );\n const ecParityCalc = useSelector(\n (state: AppState) => state.createTenant.fields.tenantSize.ecParityCalc,\n );\n\n const cpuToUse = useSelector(\n (state: AppState) =>\n state.createTenant.fields.tenantSize.resourcesCPURequest,\n );\n const integrationSelection = useSelector(\n (state: AppState) =>\n state.createTenant.fields.tenantSize.integrationSelection,\n );\n\n const usableInformation = ecParityCalc.storageFactors.find(\n (element) => element.erasureCode === ecParity,\n );\n\n return (\n
\n

Resource Allocation

\n \n \n \n \n Number of Servers\n \n {parseInt(nodes) > 0 ? nodes : \"-\"}\n \n \n {integrationSelection.typeSelection === \"\" &&\n integrationSelection.storageClass === \"\" && (\n \n \n Drives per Server\n \n {distribution ? distribution.disks : \"-\"}\n \n \n \n Drive Capacity\n \n {distribution ? niceBytes(distribution.pvSize) : \"-\"}\n \n \n \n )}\n\n \n Total Volumes\n \n {distribution ? distribution.persistentVolumes : \"-\"}\n \n \n {integrationSelection.typeSelection === \"\" &&\n integrationSelection.storageClass === \"\" && (\n \n \n Memory per Node\n {memoryNode} Gi\n \n \n \n CPU Selection\n \n \n {cpuToUse}\n \n \n \n )}\n \n
\n {ecParityCalc.error === 0 && usableInformation && (\n \n

Erasure Code Configuration

\n \n \n \n \n EC Parity\n \n {ecParity !== \"\" ? ecParity : \"-\"}\n \n \n \n Raw Capacity\n \n {niceBytes(ecParityCalc.rawCapacity)}\n \n \n \n Usable Capacity\n \n {niceBytes(usableInformation.maxCapacity)}\n \n \n \n \n Server Failures Tolerated\n \n \n {distribution\n ? Math.floor(\n usableInformation.maxFailureTolerations /\n distribution.disks,\n )\n : \"-\"}\n \n \n \n \n
\n )}\n {integrationSelection.typeSelection !== \"\" &&\n integrationSelection.storageClass !== \"\" && (\n \n

Single Instance Configuration

\n \n \n \n \n CPU\n \n {integrationSelection.CPU !== 0\n ? integrationSelection.CPU\n : \"-\"}\n \n \n \n Memory\n \n {integrationSelection.memory !== 0\n ? `${integrationSelection.memory} Gi`\n : \"-\"}\n \n \n \n Drives per Server\n \n {integrationSelection.drivesPerServer !== 0\n ? `${integrationSelection.drivesPerServer}`\n : \"-\"}\n \n \n \n \n Drive Size\n \n \n {integrationSelection.driveSize.driveSize}\n {integrationSelection.driveSize.sizeUnit}\n \n \n \n \n
\n )}\n
\n );\n};\n\nexport default withStyles(styles)(SizePreview);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { DialogContentText, LinearProgress } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n deleteDialogStyles,\n modalBasic,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmModalIcon } from \"mds\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { closeAddNSModal } from \"../../createTenantSlice\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { createNamespaceAsync } from \"../../thunks/namespaceThunks\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n wrapText: {\n maxWidth: \"200px\",\n whiteSpace: \"normal\",\n wordWrap: \"break-word\",\n },\n ...modalBasic,\n ...deleteDialogStyles,\n }),\n);\n\nconst AddNamespaceModal = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const namespace = useSelector(\n (state: AppState) => state.createTenant.fields.nameTenant.namespace,\n );\n const addNamespaceLoading = useSelector(\n (state: AppState) => state.createTenant.addNSLoading,\n );\n const addNamespaceOpen = useSelector(\n (state: AppState) => state.createTenant.addNSOpen,\n );\n\n return (\n }\n isLoading={addNamespaceLoading}\n onConfirm={() => {\n dispatch(createNamespaceAsync());\n }}\n onClose={() => {\n dispatch(closeAddNSModal());\n }}\n confirmationContent={\n \n {addNamespaceLoading && }\n \n Are you sure you want to add a namespace called\n
\n {namespace}?\n
\n
\n }\n />\n );\n};\n\nexport default AddNamespaceModal;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useMemo } from \"react\";\nimport { AddIcon } from \"mds\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { openAddNSModal, setNamespace } from \"../../createTenantSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport AddNamespaceModal from \"../helpers/AddNamespaceModal\";\nimport debounce from \"lodash/debounce\";\nimport { IMkEnvs } from \"./utils\";\nimport { validateNamespaceAsync } from \"../../thunks/namespaceThunks\";\n\nconst NamespaceSelector = ({ formToRender }: { formToRender?: IMkEnvs }) => {\n const dispatch = useAppDispatch();\n\n const namespace = useSelector(\n (state: AppState) => state.createTenant.fields.nameTenant.namespace,\n );\n\n const showNSCreateButton = useSelector(\n (state: AppState) => state.createTenant.showNSCreateButton,\n );\n\n const namespaceError = useSelector(\n (state: AppState) => state.createTenant.validationErrors[\"namespace\"],\n );\n const openAddNSConfirm = useSelector(\n (state: AppState) => state.createTenant.addNSOpen,\n );\n\n const debounceNamespace = useMemo(\n () =>\n debounce(() => {\n dispatch(validateNamespaceAsync());\n }, 500),\n [dispatch],\n );\n\n useEffect(() => {\n if (namespace !== \"\") {\n debounceNamespace();\n // Cancel previous debounce calls during useEffect cleanup.\n return debounceNamespace.cancel;\n }\n }, [debounceNamespace, namespace]);\n\n const addNamespace = () => {\n dispatch(openAddNSModal());\n };\n\n return (\n \n {openAddNSConfirm && }\n ) => {\n dispatch(setNamespace(e.target.value));\n }}\n label=\"Namespace\"\n value={namespace}\n error={namespaceError || \"\"}\n overlayId={\"add-namespace\"}\n overlayIcon={showNSCreateButton ? : null}\n overlayAction={addNamespace}\n required\n />\n \n );\n};\nexport default NamespaceSelector;\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport get from \"lodash/get\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport SelectWrapper from \"../../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport SizePreview from \"../SizePreview\";\nimport TenantSize from \"./TenantSize\";\nimport { Paper, SelectChangeEvent } from \"@mui/material\";\nimport { IMkEnvs, mkPanelConfigurations } from \"./utils\";\nimport {\n isPageValid,\n setStorageType,\n setTenantName,\n updateAddField,\n} from \"../../createTenantSlice\";\nimport { selFeatures } from \"../../../../consoleSlice\";\nimport NamespaceSelector from \"./NamespaceSelector\";\nimport H3Section from \"../../../../Common/H3Section\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n sizePreview: {\n marginLeft: 10,\n background: \"#FFFFFF\",\n border: \"1px solid #EAEAEA\",\n padding: 2,\n marginTop: 20,\n },\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst NameTenantField = () => {\n const dispatch = useAppDispatch();\n const tenantName = useSelector(\n (state: AppState) => state.createTenant.fields.nameTenant.tenantName,\n );\n\n const tenantNameError = useSelector(\n (state: AppState) => state.createTenant.validationErrors[\"tenant-name\"],\n );\n\n return (\n ) => {\n dispatch(setTenantName(e.target.value));\n }}\n label=\"Name\"\n value={tenantName}\n required\n error={tenantNameError || \"\"}\n />\n );\n};\n\ninterface INameTenantMainScreen {\n classes: any;\n formToRender?: IMkEnvs;\n}\n\nconst NameTenantMain = ({ classes, formToRender }: INameTenantMainScreen) => {\n const dispatch = useAppDispatch();\n\n const selectedStorageClass = useSelector(\n (state: AppState) =>\n state.createTenant.fields.nameTenant.selectedStorageClass,\n );\n const selectedStorageType = useSelector(\n (state: AppState) =>\n state.createTenant.fields.nameTenant.selectedStorageType,\n );\n const storageClasses = useSelector(\n (state: AppState) => state.createTenant.storageClasses,\n );\n const features = useSelector(selFeatures);\n\n // Common\n const updateField = useCallback(\n (field: string, value: string) => {\n dispatch(\n updateAddField({ pageName: \"nameTenant\", field: field, value: value }),\n );\n },\n [dispatch],\n );\n\n // Validation\n useEffect(() => {\n const isValid =\n (formToRender === IMkEnvs.default && storageClasses.length > 0) ||\n (formToRender !== IMkEnvs.default && selectedStorageType !== \"\");\n\n dispatch(isPageValid({ pageName: \"nameTenant\", valid: isValid }));\n }, [storageClasses, dispatch, selectedStorageType, formToRender]);\n\n return (\n \n \n \n \n \n \n
\n Name\n \n How would you like to name this new tenant?\n \n
\n
\n \n
\n
\n \n \n \n {formToRender === IMkEnvs.default ? (\n \n ) => {\n updateField(\n \"selectedStorageClass\",\n e.target.value as string,\n );\n }}\n label=\"Storage Class\"\n value={selectedStorageClass}\n options={storageClasses}\n disabled={storageClasses.length < 1}\n />\n \n ) : (\n \n ) => {\n dispatch(\n setStorageType({\n storageType: e.target.value as string,\n features: features,\n }),\n );\n }}\n label={get(\n mkPanelConfigurations,\n `${formToRender}.variantSelectorLabel`,\n \"Storage Type\",\n )}\n value={selectedStorageType}\n options={get(\n mkPanelConfigurations,\n `${formToRender}.variantSelectorValues`,\n [],\n )}\n />\n \n )}\n {formToRender === IMkEnvs.default ? (\n \n ) : (\n get(\n mkPanelConfigurations,\n `${formToRender}.sizingComponent`,\n null,\n )\n )}\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n );\n};\n\nexport default withStyles(styles)(NameTenantMain);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport get from \"lodash/get\";\nimport NameTenantMain from \"./NameTenantMain\";\nimport { IMkEnvs, resourcesConfigurations } from \"./utils\";\nimport { selFeatures } from \"../../../../consoleSlice\";\n\nconst TenantResources = () => {\n const features = useSelector(selFeatures);\n const [formRender, setFormRender] = useState(null);\n\n useEffect(() => {\n let setConfiguration = IMkEnvs.default;\n\n if (features && features.length !== 0) {\n const possibleVariables = Object.keys(resourcesConfigurations);\n\n possibleVariables.forEach((element) => {\n if (features.includes(element)) {\n setConfiguration = get(\n resourcesConfigurations,\n element,\n IMkEnvs.default,\n );\n }\n });\n }\n\n setFormRender(setConfiguration);\n }, [features]);\n\n if (formRender === null) {\n return null;\n }\n\n return ;\n};\n\nexport default TenantResources;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nexport const requiredPages = [\n \"nameTenant\",\n \"tenantSize\",\n \"configure\",\n \"affinity\",\n \"identityProvider\",\n \"security\",\n \"encryption\",\n];\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Button } from \"mds\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { requiredPages } from \"./common\";\nimport { createTenantAsync } from \"./thunks/createTenantThunk\";\n\nconst CreateTenantButton = () => {\n const dispatch = useAppDispatch();\n\n const addSending = useSelector(\n (state: AppState) => state.createTenant.addingTenant,\n );\n\n const validPages = useSelector(\n (state: AppState) => state.createTenant.validPages,\n );\n\n const selectedStorageClass = useSelector(\n (state: AppState) =>\n state.createTenant.fields.nameTenant.selectedStorageClass,\n );\n\n const enabled =\n !addSending &&\n selectedStorageClass !== \"\" &&\n requiredPages.every((v) => validPages.includes(v));\n\n return (\n {\n dispatch(createTenantAsync());\n }}\n disabled={!enabled}\n key={`button-AddTenant-Create`}\n label={\"Create\"}\n />\n );\n};\n\nexport default CreateTenantButton;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport CredentialsPrompt from \"../../Common/CredentialsPrompt/CredentialsPrompt\";\nimport { resetAddTenantForm } from \"./createTenantSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { useNavigate } from \"react-router-dom\";\n\nconst NewTenantCredentials = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const showNewCredentials = useSelector(\n (state: AppState) => state.createTenant.showNewCredentials,\n );\n const createdAccount = useSelector(\n (state: AppState) => state.createTenant.createdAccount,\n );\n\n return (\n \n {showNewCredentials && (\n {\n dispatch(resetAddTenantForm());\n navigate(\"/tenants\");\n }}\n entity=\"Tenant\"\n />\n )}\n \n );\n};\n\nexport default NewTenantCredentials;\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport Grid from \"@mui/material/Grid\";\nimport { LinearProgress } from \"@mui/material\";\n\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n modalBasic,\n settingsCommon,\n wizardCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport GenericWizard from \"../../Common/GenericWizard/GenericWizard\";\nimport {\n IWizardButton,\n IWizardElement,\n} from \"../../Common/GenericWizard/types\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport Configure from \"./Steps/Configure\";\nimport IdentityProvider from \"./Steps/IdentityProvider\";\nimport Security from \"./Steps/Security\";\nimport Encryption from \"./Steps/Encryption\";\nimport Affinity from \"./Steps/Affinity\";\nimport Images from \"./Steps/Images\";\nimport PageLayout from \"../../Common/Layout/PageLayout\";\n\nimport TenantResources from \"./Steps/TenantResources/TenantResources\";\nimport {\n IMkEnvs,\n resourcesConfigurations,\n} from \"./Steps/TenantResources/utils\";\nimport { BackLink, HelpBox, StorageIcon } from \"mds\";\nimport { selFeatures } from \"../../consoleSlice\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { resetAddTenantForm } from \"./createTenantSlice\";\nimport CreateTenantButton from \"./CreateTenantButton\";\nimport NewTenantCredentials from \"./NewTenantCredentials\";\nimport { useNavigate } from \"react-router-dom\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n pageBox: {\n border: \"1px solid #EAEAEA\",\n },\n ...modalBasic,\n ...wizardCommon,\n ...settingsCommon,\n }),\n);\n\nconst AddTenant = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const classes = useStyles();\n\n const features = useSelector(selFeatures);\n\n // Fields\n const addSending = useSelector(\n (state: AppState) => state.createTenant.addingTenant,\n );\n const [formRender, setFormRender] = useState(null);\n\n useEffect(() => {\n let setConfiguration = IMkEnvs.default;\n\n if (features && features.length !== 0) {\n const possibleVariables = Object.keys(resourcesConfigurations);\n\n possibleVariables.forEach((element) => {\n if (features.includes(element)) {\n setConfiguration = get(\n resourcesConfigurations,\n element,\n IMkEnvs.default,\n );\n }\n });\n }\n\n setFormRender(setConfiguration);\n }, [features]);\n\n const cancelButton = {\n label: \"Cancel\",\n type: \"other\",\n enabled: true,\n action: () => {\n dispatch(resetAddTenantForm());\n navigate(\"/tenants\");\n },\n };\n\n const createButton: IWizardButton = {\n componentRender: ,\n };\n\n const wizardSteps: IWizardElement[] = [\n {\n label: \"Setup\",\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Configure\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Images\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Pod Placement\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Identity Provider\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Security\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Encryption\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n ];\n\n let filteredWizardSteps = wizardSteps;\n\n return (\n \n \n {\n dispatch(resetAddTenantForm());\n navigate(\"/tenants\");\n }}\n label={\"Tenants\"}\n />\n }\n />\n\n \n {addSending && (\n \n \n \n )}\n \n \n \n {formRender === IMkEnvs.aws && (\n \n }\n help={\n \n Performance Optimized: Uses the gp3 EBS storage\n class class configured at 1,000Mi/s throughput and 16,000\n IOPS, however the minimum volume size for this type of EBS\n volume is 32Gi.\n
\n
\n Storage Optimized: Uses the sc1 EBS storage\n class, however the minimum volume size for this type of EBS\n volume is  \n 16Ti to unlock their maximum throughput speed of\n 250Mi/s.\n
\n }\n />\n
\n )}\n
\n
\n );\n};\n\nexport default AddTenant;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Box } from \"@mui/material\";\nimport { CertificateIcon } from \"mds\";\nimport { useParams } from \"react-router-dom\";\nimport { AppState } from \"../../../../store\";\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string;\n}) => {\n return (\n \n {icon}{\" \"}\n
\n {description}\n
\n \n );\n};\nconst TLSHelpBox = () => {\n const params = useParams();\n const tenantNameParam = params.tenantName || \"\";\n const tenantNamespaceParam = params.tenantNamespace || \"\";\n const namespace = useSelector((state: AppState) => {\n var defaultNamespace = \"\";\n if (tenantNamespaceParam !== \"\") {\n return tenantNamespaceParam;\n }\n if (state.createTenant.fields.nameTenant.namespace !== \"\") {\n return state.createTenant.fields.nameTenant.namespace;\n }\n return defaultNamespace;\n });\n\n const tenantName = useSelector((state: AppState) => {\n var defaultTenantName = \"\";\n if (tenantNameParam !== \"\") {\n return tenantNameParam;\n }\n\n if (state.createTenant.fields.nameTenant.tenantName !== \"\") {\n return state.createTenant.fields.nameTenant.tenantName;\n }\n return defaultTenantName;\n });\n\n return (\n \n \n }\n description={`TLS Certificates Warning`}\n />\n \n Automatic certificate generation is not enabled.\n
\n
\n If you wish to continue only with custom certificates make sure\n they are valid for the following internode hostnames, i.e.:\n
\n
\n \n minio.{namespace}\n
\n minio.{namespace}.svc\n
\n minio.{namespace}.svc.<cluster domain>\n
\n *.{tenantName}-hl.{namespace}.svc.<cluster domain>\n
\n *.{namespace}.svc.<cluster domain>\n \n
\n Replace <tenant-name>,{\" \"}\n <namespace> and\n <cluster domain> with the actual values for your\n MinIO tenant.\n
\n
\n You can learn more at our{\" \"}\n \n documentation\n \n .\n
\n \n \n );\n};\n\nexport default TLSHelpBox;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Grid } from \"@mui/material\";\nimport { LDAPIcon, OIDCIcon, UsersIcon } from \"mds\";\n\nexport const OIDCLogoElement = () => {\n return (\n \n \n \n \n Open ID\n \n );\n};\n\nexport const LDAPLogoElement = () => {\n return (\n \n \n \n \n LDAP / Active Directory\n \n );\n};\n\nexport const BuiltInLogoElement = () => {\n return (\n \n \n \n \n Built-in\n \n );\n};\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorBlock: {\n color: theme.palette?.error.main || \"#C83B51\",\n },\n });\n\ninterface IErrorBlockProps {\n classes: any;\n errorMessage: string;\n withBreak?: boolean;\n}\n\nconst ErrorBlock = ({\n classes,\n errorMessage,\n withBreak = true,\n}: IErrorBlockProps) => {\n return (\n \n {withBreak &&
}\n \n {errorMessage}\n \n
\n );\n};\n\nexport default withStyles(styles)(ErrorBlock);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"\n}), 'Add');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z\"\n}), 'AttachFile');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"\n}), 'Cancel');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM7.5 18c-.83 0-1.5-.67-1.5-1.5S6.67 15 7.5 15s1.5.67 1.5 1.5S8.33 18 7.5 18zm0-9C6.67 9 6 8.33 6 7.5S6.67 6 7.5 6 9 6.67 9 7.5 8.33 9 7.5 9zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm0-9c-.83 0-1.5-.67-1.5-1.5S15.67 6 16.5 6s1.5.67 1.5 1.5S17.33 9 16.5 9z\"\n}), 'Casino');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\"\n}), 'Delete');\nexports.default = _default;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"absolute\", \"children\", \"className\", \"component\", \"flexItem\", \"light\", \"orientation\", \"role\", \"textAlign\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getDividerUtilityClass } from './dividerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n absolute,\n children,\n classes,\n flexItem,\n light,\n orientation,\n textAlign,\n variant\n } = ownerState;\n const slots = {\n root: ['root', absolute && 'absolute', variant, light && 'light', orientation === 'vertical' && 'vertical', flexItem && 'flexItem', children && 'withChildren', children && orientation === 'vertical' && 'withChildrenVertical', textAlign === 'right' && orientation !== 'vertical' && 'textAlignRight', textAlign === 'left' && orientation !== 'vertical' && 'textAlignLeft'],\n wrapper: ['wrapper', orientation === 'vertical' && 'wrapperVertical']\n };\n return composeClasses(slots, getDividerUtilityClass, classes);\n};\nconst DividerRoot = styled('div', {\n name: 'MuiDivider',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.absolute && styles.absolute, styles[ownerState.variant], ownerState.light && styles.light, ownerState.orientation === 'vertical' && styles.vertical, ownerState.flexItem && styles.flexItem, ownerState.children && styles.withChildren, ownerState.children && ownerState.orientation === 'vertical' && styles.withChildrenVertical, ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical' && styles.textAlignRight, ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical' && styles.textAlignLeft];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n margin: 0,\n // Reset browser default style.\n flexShrink: 0,\n borderWidth: 0,\n borderStyle: 'solid',\n borderColor: (theme.vars || theme).palette.divider,\n borderBottomWidth: 'thin'\n}, ownerState.absolute && {\n position: 'absolute',\n bottom: 0,\n left: 0,\n width: '100%'\n}, ownerState.light && {\n borderColor: theme.vars ? `rgba(${theme.vars.palette.dividerChannel} / 0.08)` : alpha(theme.palette.divider, 0.08)\n}, ownerState.variant === 'inset' && {\n marginLeft: 72\n}, ownerState.variant === 'middle' && ownerState.orientation === 'horizontal' && {\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2)\n}, ownerState.variant === 'middle' && ownerState.orientation === 'vertical' && {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1)\n}, ownerState.orientation === 'vertical' && {\n height: '100%',\n borderBottomWidth: 0,\n borderRightWidth: 'thin'\n}, ownerState.flexItem && {\n alignSelf: 'stretch',\n height: 'auto'\n}), ({\n ownerState\n}) => _extends({}, ownerState.children && {\n display: 'flex',\n whiteSpace: 'nowrap',\n textAlign: 'center',\n border: 0,\n '&::before, &::after': {\n content: '\"\"',\n alignSelf: 'center'\n }\n}), ({\n theme,\n ownerState\n}) => _extends({}, ownerState.children && ownerState.orientation !== 'vertical' && {\n '&::before, &::after': {\n width: '100%',\n borderTop: `thin solid ${(theme.vars || theme).palette.divider}`\n }\n}), ({\n theme,\n ownerState\n}) => _extends({}, ownerState.children && ownerState.orientation === 'vertical' && {\n flexDirection: 'column',\n '&::before, &::after': {\n height: '100%',\n borderLeft: `thin solid ${(theme.vars || theme).palette.divider}`\n }\n}), ({\n ownerState\n}) => _extends({}, ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical' && {\n '&::before': {\n width: '90%'\n },\n '&::after': {\n width: '10%'\n }\n}, ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical' && {\n '&::before': {\n width: '10%'\n },\n '&::after': {\n width: '90%'\n }\n}));\nconst DividerWrapper = styled('span', {\n name: 'MuiDivider',\n slot: 'Wrapper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.wrapper, ownerState.orientation === 'vertical' && styles.wrapperVertical];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'inline-block',\n paddingLeft: `calc(${theme.spacing(1)} * 1.2)`,\n paddingRight: `calc(${theme.spacing(1)} * 1.2)`\n}, ownerState.orientation === 'vertical' && {\n paddingTop: `calc(${theme.spacing(1)} * 1.2)`,\n paddingBottom: `calc(${theme.spacing(1)} * 1.2)`\n}));\nconst Divider = /*#__PURE__*/React.forwardRef(function Divider(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDivider'\n });\n const {\n absolute = false,\n children,\n className,\n component = children ? 'div' : 'hr',\n flexItem = false,\n light = false,\n orientation = 'horizontal',\n role = component !== 'hr' ? 'separator' : undefined,\n textAlign = 'center',\n variant = 'fullWidth'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n absolute,\n component,\n flexItem,\n light,\n orientation,\n role,\n textAlign,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DividerRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n role: role,\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: children ? /*#__PURE__*/_jsx(DividerWrapper, {\n className: classes.wrapper,\n ownerState: ownerState,\n children: children\n }) : null\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Divider.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Absolutely position the element.\n * @default false\n */\n absolute: PropTypes.bool,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, a vertical divider will have the correct height when used in flex container.\n * (By default, a vertical divider will have a calculated height of `0px` if it is the child of a flex container.)\n * @default false\n */\n flexItem: PropTypes.bool,\n /**\n * If `true`, the divider will have a lighter color.\n * @default false\n */\n light: PropTypes.bool,\n /**\n * The component orientation.\n * @default 'horizontal'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n /**\n * @ignore\n */\n role: PropTypes /* @typescript-to-proptypes-ignore */.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The text alignment.\n * @default 'center'\n */\n textAlign: PropTypes.oneOf(['center', 'left', 'right']),\n /**\n * The variant to use.\n * @default 'fullWidth'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['fullWidth', 'inset', 'middle']), PropTypes.string])\n} : void 0;\nexport default Divider;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getInputAdornmentUtilityClass(slot) {\n return generateUtilityClass('MuiInputAdornment', slot);\n}\nconst inputAdornmentClasses = generateUtilityClasses('MuiInputAdornment', ['root', 'filled', 'standard', 'outlined', 'positionStart', 'positionEnd', 'disablePointerEvents', 'hiddenLabel', 'sizeSmall']);\nexport default inputAdornmentClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _span;\nconst _excluded = [\"children\", \"className\", \"component\", \"disablePointerEvents\", \"disableTypography\", \"position\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport capitalize from '../utils/capitalize';\nimport Typography from '../Typography';\nimport FormControlContext from '../FormControl/FormControlContext';\nimport useFormControl from '../FormControl/useFormControl';\nimport styled from '../styles/styled';\nimport inputAdornmentClasses, { getInputAdornmentUtilityClass } from './inputAdornmentClasses';\nimport useThemeProps from '../styles/useThemeProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`position${capitalize(ownerState.position)}`], ownerState.disablePointerEvents === true && styles.disablePointerEvents, styles[ownerState.variant]];\n};\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePointerEvents,\n hiddenLabel,\n position,\n size,\n variant\n } = ownerState;\n const slots = {\n root: ['root', disablePointerEvents && 'disablePointerEvents', position && `position${capitalize(position)}`, variant, hiddenLabel && 'hiddenLabel', size && `size${capitalize(size)}`]\n };\n return composeClasses(slots, getInputAdornmentUtilityClass, classes);\n};\nconst InputAdornmentRoot = styled('div', {\n name: 'MuiInputAdornment',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n height: '0.01em',\n // Fix IE11 flexbox alignment. To remove at some point.\n maxHeight: '2em',\n alignItems: 'center',\n whiteSpace: 'nowrap',\n color: (theme.vars || theme).palette.action.active\n}, ownerState.variant === 'filled' && {\n // Styles applied to the root element if `variant=\"filled\"`.\n [`&.${inputAdornmentClasses.positionStart}&:not(.${inputAdornmentClasses.hiddenLabel})`]: {\n marginTop: 16\n }\n}, ownerState.position === 'start' && {\n // Styles applied to the root element if `position=\"start\"`.\n marginRight: 8\n}, ownerState.position === 'end' && {\n // Styles applied to the root element if `position=\"end\"`.\n marginLeft: 8\n}, ownerState.disablePointerEvents === true && {\n // Styles applied to the root element if `disablePointerEvents={true}`.\n pointerEvents: 'none'\n}));\nconst InputAdornment = /*#__PURE__*/React.forwardRef(function InputAdornment(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiInputAdornment'\n });\n const {\n children,\n className,\n component = 'div',\n disablePointerEvents = false,\n disableTypography = false,\n position,\n variant: variantProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl() || {};\n let variant = variantProp;\n if (variantProp && muiFormControl.variant) {\n if (process.env.NODE_ENV !== 'production') {\n if (variantProp === muiFormControl.variant) {\n console.error('MUI: The `InputAdornment` variant infers the variant prop ' + 'you do not have to provide one.');\n }\n }\n }\n if (muiFormControl && !variant) {\n variant = muiFormControl.variant;\n }\n const ownerState = _extends({}, props, {\n hiddenLabel: muiFormControl.hiddenLabel,\n size: muiFormControl.size,\n disablePointerEvents,\n position,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(FormControlContext.Provider, {\n value: null,\n children: /*#__PURE__*/_jsx(InputAdornmentRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: typeof children === 'string' && !disableTypography ? /*#__PURE__*/_jsx(Typography, {\n color: \"text.secondary\",\n children: children\n }) : /*#__PURE__*/_jsxs(React.Fragment, {\n children: [position === 'start' ? /* notranslate needed while Google Translate will not fix zero-width space issue */_span || (_span = /*#__PURE__*/_jsx(\"span\", {\n className: \"notranslate\",\n children: \"\\u200B\"\n })) : null, children]\n })\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? InputAdornment.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component, normally an `IconButton` or string.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Disable pointer events on the root.\n * This allows for the content of the adornment to focus the `input` on click.\n * @default false\n */\n disablePointerEvents: PropTypes.bool,\n /**\n * If children is a string then disable wrapping in a Typography component.\n * @default false\n */\n disableTypography: PropTypes.bool,\n /**\n * The position this adornment should appear relative to the `Input`.\n */\n position: PropTypes.oneOf(['end', 'start']).isRequired,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n * Note: If you are using the `TextField` component or the `FormControl` component\n * you do not have to set this manually.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputAdornment;"],"names":["withStyles","theme","createStyles","container","display","flexFlow","padding","inputWithCopy","width","background","height","marginRight","inputLabel","_objectSpread","fieldBasic","fontSize","_ref","_ref$label","label","_ref$value","value","_ref$classes","classes","_jsxs","className","children","_jsx","OutlinedInput","readOnly","endAdornment","InputAdornment","position","TooltipWrapper","tooltip","CopyToClipboard","text","Button","id","onClick","onMouseDown","style","icon","CopyIcon","download","filename","element","document","createElement","setAttribute","body","appendChild","click","removeChild","warningBlock","color","margin","alignItems","credentialTitle","fontWeight","buttonContainer","justifyContent","marginTop","credentialsPanel","overflowY","maxHeight","promptTitle","buttonSpacer","newServiceAccount","open","closeModal","entity","consoleCreds","get","idp","ModalWrapper","modalOpen","onClose","title","titleIcon","ServiceAccountCredentialsIcon","Grid","item","xs","formScrollable","React","Array","isArray","map","credentialsPair","index","_Fragment","CredentialItem","accessKey","secretKey","undefined","WarnIcon","consoleExtras","itemMap","url","api","path","JSON","stringify","DownloadIcon","variant","length","allCredentials","_ref$tooltip","_ref$mode","mode","onBeforeChange","_ref$editorHeight","editorHeight","sx","marginBottom","InputLabel","tooltipContainer","Tooltip","placement","HelpIcon","overflow","border","CodeEditor","language","onChange","evn","target","backgroundColor","fontFamily","minHeight","borderTop","Box","paddingRight","marginLeft","type","tooltipHelper","valueString","maxWidth","whiteSpace","textOverflow","fileInputField","fileInputStyles","textBoxContainer","paddingLeft","name","_ref$disabled","disabled","required","_ref$error","error","_ref$accept","accept","_useState","useState","_useState2","_slicedToArray","showFileSelector","setShowSelector","concat","fieldBottom","fieldContainer","errorInField","htmlFor","fieldLabelError","e","fileName","evt","callback","file","files","reader","FileReader","readAsDataURL","onload","fileBase64","result","fileArray","toString","split","fileProcess","data","IconButton","component","disableRipple","disableFocusRipple","size","CancelIcon","ErrorBlock","errorMessage","fileReselect","AttachFileIcon","FormHr","styled","_templateObject","_taggedTemplateLiteral","deleteDialogStyles","content","paddingBottom","customDialogSize","snackBarCommon","_ref$wideLimit","wideLimit","noContentPadding","_ref$titleIcon","dispatch","useAppDispatch","openSnackbar","setOpenSnackbar","modalSnackMessage","useSelector","state","system","modalSnackBar","useEffect","setModalSnackMessage","message","customSize","paper","fullWidth","detailedErrorMsg","Dialog","scroll","event","reason","root","DialogTitle","titleText","closeContainer","closeButton","CloseIcon","MainError","isModal","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent","_ref$errorProps","errorProps","cloneElement","configSectionItem","tenantCustomizationFields","containerItem","fieldGroup","createTenantCommon","paddingTop","responsiveSectionItem","wrapperContainer","envVarRow","borderBottom","flex","minWidth","fileItem","rowActions","overlayAction","modalBasic","wizardCommon","formFieldStyles","exposeMinIO","createTenant","fields","configure","exposeConsole","exposeSFTP","setDomains","consoleDomain","minioDomains","tenantCustom","tenantEnvVars","envVars","tenantSecurityContext","customRuntime","runtimeClassName","validationErrors","setValidationErrors","updateField","useCallback","field","updateAddField","pageName","customAccountValidation","fieldKey","runAsUser","customValidation","parseInt","customValidationMessage","runAsGroup","fsGroup","minioExtraValidations","validation","pattern","customPatternMessage","_toConsumableArray","commonVal","commonFormValidation","isPageValid","valid","Object","keys","cleanValidation","fieldName","clearValidationError","Paper","paperWrapper","headerElement","H3Section","descriptionText","h3Section","FormSwitchWrapper","checked","InputBoxWrapper","placeholder","domain","copyDomains","updateMinIODomain","addNewMinIODomain","AddIcon","removeMinIODomain","RemoveIcon","multiContainer","min","SelectWrapper","fsGroupChangePolicy","options","runAsNonRoot","Divider","envVar","formFieldRow","key","existingEnvVars","setEnvVars","keyPair","i","push","filter","fIndex","useStyles","makeStyles","adUserDnRows","buttonTray","idpSelection","identityProvider","ADURL","ADSkipTLS","ADServerInsecure","ADGroupSearchBaseDN","ADGroupSearchFilter","ADUserDNs","ADGroupDNs","ADLookupBindDN","ADLookupBindPassword","ADUserDNSearchBaseDN","ADUserDNSearchFilter","ADServerStartTLS","customIDPValidation","Fragment","Typography","gutterBottom","_","setIDPADUsrAtIndex","userDN","addIDPADUsrAtIndex","removeIDPADUsrAtIndex","DeleteIcon","setIDPADGroupAtIndex","addIDPADGroupAtIndex","removeIDPADGroupAtIndex","openIDConfigurationURL","openIDClientID","openIDSecretID","openIDClaimName","openIDScopes","shortened","gridTemplateColumns","gridGap","accessKeys","secretKeys","setIDPUsrAtIndex","setIDPPwdAtIndex","addIDPNewKeyPair","removeIDPKeyPairAtIndex","getRandomString","CasinoIcon","protocolRadioOptions","RadioGroupSelector","currentSelection","setIDP","selectorOptions","BuiltInLogoElement","OIDCLogoElement","LDAPLogoElement","IDPBuiltIn","IDPOpenID","IDPActiveDirectory","minioCertificateRows","minioCertsContainer","minioCACertsRow","enableTLS","security","enableAutoCert","enableCustomCerts","minioCertificates","certificates","minioServerCertificates","minioClientCertificates","caCertificates","minioCAsCertificates","spacing","description","TLSHelpBox","FileSelector","encodedValue","addFileToKeyPair","cert","addKeyPair","deleteKeyPair","addFileToClientKeyPair","addClientKeyPair","deleteClientKeyPair","addFileToCaCertificates","addCaCertificate","deleteCaCertificate","encryptionTab","encryption","vaultEndpoint","vaultEngine","vaultNamespace","vaultPrefix","vaultAppRoleEngine","vaultId","vaultSecret","vaultRetry","vaultPing","encryptionValidation","azureEndpoint","azureTenantID","azureClientID","azureClientSecret","gcpProjectID","gcpEndpoint","gcpClientEmail","gcpClientID","gcpPrivateKeyID","gcpPrivateKey","gemaltoEndpoint","gemaltoToken","gemaltoDomain","gemaltoRetry","awsEndpoint","awsRegion","awsKMSKey","awsAccessKey","awsSecretKey","awsToken","encryptionTypeOptions","mutualTlsConfig","rightSpacer","responsiveContainer","replicas","rawConfiguration","enableEncryption","encryptionType","enableCustomCertsForKES","kesServerCertificate","minioMTLSCertificate","kmsMTLSCertificate","kmsCA","kesSecurityContext","encryptionAvailable","encoded_key","encoded_cert","SectionH1","textAlign","indicatorLabels","Tabs","indicatorColor","textColor","scrollButtons","Tab","CodeMirrorWrapper","editor","VaultKMSAdd","AzureKMSAdd","GCPKMSAdd","AWSKMSAdd","GemaltoKMSAdd","addFileKESServerCert","addFileMinIOMTLSCert","addFileKMSMTLSCert","addFileKMSCa","affinityConfigField","affinityFieldLabel","radioField","affinityLabelKey","affinityLabelValue","affinityRow","podAffinity","affinity","nodeSelectorLabels","withPodAntiAffinity","keyValuePairs","nodeSelectorPairs","tolerations","_useState3","_useState4","loading","setLoading","_useState5","_useState6","keyValueMap","setKeyValueMap","_useState7","_useState8","keyOptions","setKeyOptions","invoke","then","res","k","catch","err","setModalErrorSnackMessage","vl","kvp","kvs","a","indexOf","join","splittedLabels","forEach","splitItem","updateToleration","alterToleration","_defineProperty","setTolerationInfo","tolerationValue","affinityHelpText","newKey","newLKP","arrCp","setKeyValuePairs","v","tol","_tol$tolerationSecond","TolerationSelector","effect","onEffectChange","tolerationKey","onTolerationKeyChange","operator","onOperatorChange","onValueChange","tolerationSeconds","seconds","onSecondsChange","addNewToleration","removeToleration","customImage","imageName","customDockerhub","imageRegistry","imageRegistryUsername","imageRegistryPassword","kesImage","table","nodes","tenantSize","memoryNode","resourcesMemoryRequest","ecParity","distribution","ecParityCalc","cpuToUse","resourcesCPURequest","integrationSelection","usableInformation","storageFactors","find","erasureCode","Table","TableBody","TableRow","TableCell","scope","align","typeSelection","storageClass","disks","niceBytes","pvSize","persistentVolumes","rawCapacity","maxCapacity","Math","floor","maxFailureTolerations","CPU","memory","drivesPerServer","driveSize","sizeUnit","wrapText","wordWrap","namespace","nameTenant","addNamespaceLoading","addNSLoading","addNamespaceOpen","addNSOpen","ConfirmDialog","confirmText","confirmButtonProps","isOpen","ConfirmModalIcon","isLoading","onConfirm","createNamespaceAsync","closeAddNSModal","confirmationContent","LinearProgress","DialogContentText","formToRender","showNSCreateButton","namespaceError","openAddNSConfirm","debounceNamespace","useMemo","debounce","validateNamespaceAsync","cancel","AddNamespaceModal","setNamespace","overlayId","overlayIcon","openAddNSModal","NameTenantField","tenantName","tenantNameError","setTenantName","sizePreview","selectedStorageClass","selectedStorageType","storageClasses","features","selFeatures","isValid","IMkEnvs","default","NamespaceSelector","setStorageType","storageType","mkPanelConfigurations","TenantSize","SizePreview","formRender","setFormRender","setConfiguration","resourcesConfigurations","includes","NameTenantMain","requiredPages","addSending","addingTenant","validPages","enabled","every","createTenantAsync","navigate","useNavigate","showNewCredentials","createdAccount","CredentialsPrompt","resetAddTenantForm","pageBox","settingsCommon","cancelButton","action","createButton","componentRender","CreateTenantButton","filteredWizardSteps","TenantResources","buttons","advancedOnly","Configure","Images","Affinity","IdentityProvider","Security","Encryption","NewTenantCredentials","PageHeaderWrapper","BackLink","PageLayout","GenericWizard","wizardSteps","aws","HelpBox","iconComponent","StorageIcon","help","FeatureItem","fontStyle","params","useParams","tenantNameParam","tenantNamespaceParam","tenantNamespace","borderRadius","CertificateIcon","href","rel","columnGap","OIDCIcon","LDAPIcon","UsersIcon","_theme$palette","errorBlock","palette","main","_ref$withBreak","withBreak","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","jsx","d","_excluded","DividerRoot","slot","overridesResolver","props","styles","ownerState","absolute","light","orientation","vertical","flexItem","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","_extends","flexShrink","borderWidth","borderStyle","borderColor","vars","divider","borderBottomWidth","bottom","left","dividerChannel","alpha","borderRightWidth","alignSelf","_ref2","_ref3","_ref4","flexDirection","borderLeft","_ref5","DividerWrapper","wrapper","wrapperVertical","_ref6","inProps","ref","useThemeProps","_props$absolute","_props$component","_props$flexItem","_props$light","_props$orientation","_props$role","role","_props$textAlign","_props$variant","other","_objectWithoutPropertiesLoose","slots","composeClasses","getDividerUtilityClass","useUtilityClasses","as","clsx","getInputAdornmentUtilityClass","generateUtilityClass","_span","generateUtilityClasses","InputAdornmentRoot","capitalize","disablePointerEvents","active","inputAdornmentClasses","positionStart","hiddenLabel","pointerEvents","_props$disablePointer","_props$disableTypogra","disableTypography","variantProp","muiFormControl","useFormControl","FormControlContext","Provider"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/292.c4ff2caa.chunk.js b/web-app/build/static/js/292.c4ff2caa.chunk.js new file mode 100644 index 00000000000..11368dcecec --- /dev/null +++ b/web-app/build/static/js/292.c4ff2caa.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[292],{37798:(e,t,n)=>{n.r(t),n.d(t,{default:()=>j});var a=n(72791),i=n(26181),s=n.n(i),r=n(75952),l=n(11135),o=n(25787),c=n(56028),d=n(61889),m=n(28029),u=n(63466),p=n(78029),x=n.n(p),h=n(23814),g=n(27454),v=n(80184);const f=(0,o.Z)((e=>(0,l.Z)({container:{display:"flex",flexFlow:"column",padding:"20px 0 8px 0"},inputWithCopy:{"& .MuiInputBase-root ":{width:"100%",background:"#FBFAFA","& .MuiInputBase-input":{height:".8rem"},"& .MuiInputAdornment-positionEnd":{marginRight:".5rem","& .MuiButtonBase-root":{height:"2rem"}}},"& .MuiButtonBase-root .min-icon":{width:".8rem",height:".8rem"}},inputLabel:{...h.YI.inputLabel,fontSize:".8rem"}})))((e=>{let{label:t="",value:n="",classes:a={}}=e;return(0,v.jsxs)("div",{className:a.container,children:[(0,v.jsxs)("div",{className:a.inputLabel,children:[t,":"]}),(0,v.jsx)("div",{className:a.inputWithCopy,children:(0,v.jsx)(m.Z,{value:n,readOnly:!0,endAdornment:(0,v.jsx)(u.Z,{position:"end",children:(0,v.jsx)(g.Z,{tooltip:"Copy",children:(0,v.jsx)(x(),{text:n,children:(0,v.jsx)(r.zxk,{id:"copy-clipboard","aria-label":"copy",onClick:()=>{},onMouseDown:()=>{},style:{width:"28px",height:"28px",padding:"0px"},icon:(0,v.jsx)(r.TIy,{})})})})})})})]})})),y=(e,t)=>{let n=document.createElement("a");n.setAttribute("href","data:text/plain;charset=utf-8,"+t),n.setAttribute("download",e),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)},j=(0,o.Z)((e=>(0,l.Z)({warningBlock:{color:"red",fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}},credentialTitle:{padding:".8rem 0 0 0",fontWeight:600,fontSize:".9rem"},buttonContainer:{display:"flex",justifyContent:"flex-end",marginTop:"1rem"},credentialsPanel:{overflowY:"auto",maxHeight:350},promptTitle:{display:"flex",alignItems:"center"},buttonSpacer:{marginRight:".9rem"}})))((e=>{let{classes:t,newServiceAccount:n,open:i,closeModal:l,entity:o}=e;if(!n)return null;const m=s()(n,"console",null),u=s()(n,"idp",!1);return(0,v.jsx)(c.Z,{modalOpen:i,onClose:()=>{l()},title:(0,v.jsx)("div",{className:t.promptTitle,children:(0,v.jsxs)("div",{children:["New ",o," Created"]})}),titleIcon:(0,v.jsx)(r.tVY,{}),children:(0,v.jsxs)(d.ZP,{container:!0,children:[(0,v.jsxs)(d.ZP,{item:!0,xs:12,className:t.formScrollable,children:["A new ",o," has been created with the following details:",!u&&m&&(0,v.jsx)(a.Fragment,{children:(0,v.jsxs)(d.ZP,{item:!0,xs:12,className:t.credentialsPanel,children:[(0,v.jsx)("div",{className:t.credentialTitle,children:"Console Credentials"}),Array.isArray(m)&&m.map(((e,t)=>(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(f,{label:"Access Key",value:e.accessKey}),(0,v.jsx)(f,{label:"Secret Key",value:e.secretKey})]}))),!Array.isArray(m)&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(f,{label:"Access Key",value:m.accessKey}),(0,v.jsx)(f,{label:"Secret Key",value:m.secretKey})]})]})}),(null===m||void 0===m)&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(f,{label:"Access Key",value:n.accessKey||""}),(0,v.jsx)(f,{label:"Secret Key",value:n.secretKey||""})]}),u?(0,v.jsx)("div",{className:t.warningBlock,children:"Please Login via the configured external identity provider."}):(0,v.jsxs)("div",{className:t.warningBlock,children:[(0,v.jsx)(r.e6P,{}),(0,v.jsx)("span",{children:"Write these down, as this is the only time the secret will be displayed."})]})]}),(0,v.jsx)(d.ZP,{item:!0,xs:12,className:t.buttonContainer,children:!u&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(g.Z,{tooltip:"Download credentials in a JSON file formatted for import using mc alias import. This will only include the default login credentials.",children:(0,v.jsx)(r.zxk,{id:"download-button",label:"Download for import",className:t.buttonSpacer,onClick:()=>{let e={};if(m)if(Array.isArray(m)){e=m.map((e=>({url:e.url,accessKey:e.accessKey,secretKey:e.secretKey,api:"s3v4",path:"auto"})))[0]}else e={url:m.url,accessKey:m.accessKey,secretKey:m.secretKey,api:"s3v4",path:"auto"};else e={url:n.url,accessKey:n.accessKey,secretKey:n.secretKey,api:"s3v4",path:"auto"};y("credentials.json",JSON.stringify({...e}))},icon:(0,v.jsx)(r._8t,{}),variant:"callAction"})}),Array.isArray(m)&&m.length>1&&(0,v.jsx)(g.Z,{tooltip:"Download all access credentials to a JSON file. NOTE: This file is not formatted for import using mc alias import. If you plan to import this alias from the file, please use the Download for Import button. ",children:(0,v.jsx)(r.zxk,{id:"download-all-button",label:"Download all access credentials",className:t.buttonSpacer,onClick:()=>{let e={};if(m&&Array.isArray(m)&&m.length>1){e=m.map((e=>({accessKey:e.accessKey,secretKey:e.secretKey})))}y("all_credentials.json",JSON.stringify({...e}))},icon:(0,v.jsx)(r._8t,{}),variant:"callAction",color:"primary"})})]})})]})})}))},92217:(e,t,n)=>{n.d(t,{Z:()=>v});var a=n(72791),i=n(61889),s=n(30829),r=n(96040),l=n(64554),o=n(11135),c=n(25787),d=n(75952),m=n(23814),u=n(78029),p=n.n(u),x=n(14910),h=n(27454),g=n(80184);const v=(0,c.Z)((e=>(0,o.Z)({...m.YI})))((e=>{let{value:t,label:n="",tooltip:o="",mode:c="json",classes:m,onBeforeChange:u,readOnly:v=!1,editorHeight:f="250px"}=e;return(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)(i.ZP,{item:!0,xs:12,sx:{marginBottom:"10px"},children:(0,g.jsxs)(s.Z,{className:m.inputLabel,children:[(0,g.jsx)("span",{children:n}),""!==o&&(0,g.jsx)("div",{className:m.tooltipContainer,children:(0,g.jsx)(r.Z,{title:o,placement:"top-start",children:(0,g.jsx)("div",{className:m.tooltip,children:(0,g.jsx)(d.byK,{})})})})]})}),(0,g.jsx)(i.ZP,{item:!0,xs:12,style:{maxHeight:f,overflow:"auto",border:"1px solid #eaeaea"},children:(0,g.jsx)(x.Z,{value:t,language:c,onChange:e=>{u(null,null,e.target.value)},id:"code_wrapper",padding:15,style:{fontSize:12,backgroundColor:"#fefefe",fontFamily:"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace",minHeight:f||"initial",color:"#000000"}})}),(0,g.jsx)(i.ZP,{item:!0,xs:12,sx:{background:"#f7f7f7",border:"1px solid #eaeaea",borderTop:0},children:(0,g.jsx)(l.Z,{sx:{display:"flex",alignItems:"center",padding:"2px",paddingRight:"5px",justifyContent:"flex-end","& button":{height:"26px",width:"26px",padding:"2px"," .min-icon":{marginLeft:"0"}}},children:(0,g.jsx)(h.Z,{tooltip:"Copy to Clipboard",children:(0,g.jsx)(p(),{text:t,children:(0,g.jsx)(d.zxk,{type:"button",id:"copy-code-mirror",icon:(0,g.jsx)(d.TIy,{}),color:"primary",variant:"regular"})})})})})]})}))},54639:(e,t,n)=>{n.d(t,{Z:()=>f});var a=n(72791),i=n(26181),s=n.n(i),r=n(61889),l=n(30829),o=n(96040),c=n(13400),d=n(99663),m=n(86711),u=n(11135),p=n(25787),x=n(23814);var h=n(75952),g=n(22512),v=n(80184);const f=(0,p.Z)((e=>(0,u.Z)({...x.YI,...x.Hr,valueString:{maxWidth:350,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:2},fileInputField:{margin:"13px 0","@media (max-width: 900px)":{flexFlow:"column"}},...x.bV,inputLabel:{...x.YI.inputLabel,fontWeight:"normal"},textBoxContainer:{...x.YI.textBoxContainer,maxWidth:"100%",border:"1px solid #eaeaea",paddingLeft:"15px"}})))((e=>{let{label:t,classes:n,onChange:i,id:u,name:p,disabled:x=!1,tooltip:f="",required:y,error:j="",accept:b="",value:Z=""}=e;const[C,N]=(0,a.useState)(!1);return(0,v.jsx)(a.Fragment,{children:(0,v.jsxs)(r.ZP,{item:!0,xs:12,className:"".concat(n.fileInputField," ").concat(n.fieldBottom," ").concat(n.fieldContainer," ").concat(""!==j?n.errorInField:""),children:[""!==t&&(0,v.jsxs)(l.Z,{htmlFor:u,className:"".concat(""!==j?n.fieldLabelError:""," ").concat(n.inputLabel),children:[(0,v.jsxs)("span",{children:[t,y?"*":""]}),""!==f&&(0,v.jsx)("div",{className:n.tooltipContainer,children:(0,v.jsx)(o.Z,{title:f,placement:"top-start",children:(0,v.jsx)("div",{className:n.tooltip,children:(0,v.jsx)(h.byK,{})})})})]}),C||""===Z?(0,v.jsxs)("div",{className:n.textBoxContainer,children:[(0,v.jsx)("input",{type:"file",name:p,onChange:e=>{const t=s()(e,"target.files[0].name","");((e,t)=>{const n=e.target.files[0],a=new FileReader;a.readAsDataURL(n),a.onload=()=>{const e=a.result;if(e){const n=e.toString().split("base64,");2===n.length&&t(n[1])}}})(e,(e=>{i(e,t)}))},accept:b,required:y,disabled:x,className:n.fileInputField}),""!==Z&&(0,v.jsx)(c.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:()=>{N(!1)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,v.jsx)(m.Z,{})}),""!==j&&(0,v.jsx)(g.Z,{errorMessage:j})]}):(0,v.jsxs)("div",{className:n.fileReselect,children:[(0,v.jsx)("div",{className:n.valueString,children:Z}),(0,v.jsx)(c.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:()=>{N(!0)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,v.jsx)(d.Z,{})})]})]})})}))},13871:(e,t,n)=>{n.d(t,{Z:()=>s});var a,i=n(30168);const s=(0,n(26088).Z)("hr")(a||(a=(0,i.Z)(["\n border-top: 0;\n border-left: 0;\n border-right: 0;\n border-color: #999999;\n background-color: transparent;\n"])))},56028:(e,t,n)=>{n.d(t,{Z:()=>f});var a=n(72791),i=n(78687),s=n(13400),r=n(48888),l=n(5289),o=n(65661),c=n(39157),d=n(11135),m=n(25787),u=n(23814),p=n(41320),x=n(29823),h=n(86352),g=n(87995),v=n(80184);const f=(0,m.Z)((e=>(0,d.Z)({...u.Qw,content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765},...u.sN})))((e=>{let{onClose:t,modalOpen:n,title:d,children:m,classes:u,wideLimit:f=!0,noContentPadding:y,titleIcon:j=null}=e;const b=(0,p.TL)(),[Z,C]=(0,a.useState)(!1),N=(0,i.v9)((e=>e.system.modalSnackBar));(0,a.useEffect)((()=>{b((0,g.MK)(""))}),[b]),(0,a.useEffect)((()=>{if(N){if(""===N.message)return void C(!1);"error"!==N.type&&C(!0)}}),[N]);const S=f?{classes:{paper:u.customDialogSize}}:{maxWidth:"lg",fullWidth:!0};let _="";return N&&(_=N.detailedErrorMsg,(""===N.detailedErrorMsg||N.detailedErrorMsg.length<5)&&(_=N.message)),(0,v.jsxs)(l.Z,{open:n,classes:u,...S,scroll:"paper",onClose:(e,n)=>{"backdropClick"!==n&&t()},className:u.root,children:[(0,v.jsxs)(o.Z,{className:u.title,children:[(0,v.jsxs)("div",{className:u.titleText,children:[j," ",d]}),(0,v.jsx)("div",{className:u.closeContainer,children:(0,v.jsx)(s.Z,{"aria-label":"close",id:"close",className:u.closeButton,onClick:t,disableRipple:!0,size:"small",children:(0,v.jsx)(x.Z,{})})})]}),(0,v.jsx)(h.Z,{isModal:!0}),(0,v.jsx)(r.Z,{open:Z,className:u.snackBarModal,onClose:()=>{C(!1),b((0,g.MK)(""))},message:_,ContentProps:{className:"".concat(u.snackBar," ").concat(N&&"error"===N.type?u.errorSnackBar:"")},autoHideDuration:N&&"error"===N.type?1e4:5e3}),(0,v.jsx)(c.Z,{className:y?"":u.content,children:m})]})}))},27454:(e,t,n)=>{n.d(t,{Z:()=>r});var a=n(72791),i=n(96040),s=n(80184);const r=e=>{let{tooltip:t,children:n,errorProps:r=null,placement:l}=e;return(0,s.jsx)(i.Z,{title:t,placement:l,children:(0,s.jsx)("span",{children:r?(0,a.cloneElement)(n,{...r}):n})})}},80505:(e,t,n)=>{n.r(t),n.d(t,{default:()=>Ge});var a=n(72791),i=n(26181),s=n.n(i),r=n(78687),l=n(61889),o=n(57482),c=n(11135),d=n(23814),m=n(28371),u=n(41320),p=n(25787),x=n(35527),h=n(13400),g=n(94721),v=n(84741),f=n(40968),y=n(37516),j=n(21435),b=n(42419),Z=n(75952),C=n(76773),N=n(90673),S=n(80007),_=n(80184);const T=(0,p.Z)((e=>(0,c.Z)({configSectionItem:{marginRight:15,marginBottom:15,"& .multiContainer":{border:"1px solid red"}},tenantCustomizationFields:{marginLeft:30,width:"88%",margin:"auto"},containerItem:{marginRight:15},fieldGroup:{...d.QV.fieldGroup,paddingTop:15,marginBottom:25},responsiveSectionItem:{"@media (max-width: 900px)":{flexFlow:"column",alignItems:"flex-start","& div > div":{marginBottom:5,marginRight:0}}},wrapperContainer:{display:"flex",marginBottom:15},envVarRow:{display:"flex",alignItems:"center",justifyContent:"flex-start","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1,"& div label":{minWidth:50}}},fileItem:{marginRight:10,display:"flex","& div label":{minWidth:50},"@media (max-width: 900px)":{flexFlow:"column"}},rowActions:{display:"flex",justifyContent:"flex-end","@media (max-width: 900px)":{flex:1}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},...d.oO,...d.AK,...d.DF})))((e=>{let{classes:t}=e;const n=(0,u.TL)(),i=(0,r.v9)((e=>e.createTenant.fields.configure.exposeMinIO)),s=(0,r.v9)((e=>e.createTenant.fields.configure.exposeConsole)),o=(0,r.v9)((e=>e.createTenant.fields.configure.exposeSFTP)),c=(0,r.v9)((e=>e.createTenant.fields.configure.setDomains)),d=(0,r.v9)((e=>e.createTenant.fields.configure.consoleDomain)),m=(0,r.v9)((e=>e.createTenant.fields.configure.minioDomains)),p=(0,r.v9)((e=>e.createTenant.fields.configure.tenantCustom)),T=(0,r.v9)((e=>e.createTenant.fields.configure.envVars)),A=(0,r.v9)((e=>e.createTenant.fields.configure.tenantSecurityContext)),k=(0,r.v9)((e=>e.createTenant.fields.configure.customRuntime)),w=(0,r.v9)((e=>e.createTenant.fields.configure.runtimeClassName)),[P,I]=(0,a.useState)({}),R=(0,a.useCallback)(((e,t)=>{n((0,C.HM)({pageName:"configure",field:e,value:t}))}),[n]);(0,a.useEffect)((()=>{let e=[];if(p&&(e=[{fieldKey:"tenant_securityContext_runAsUser",required:!0,value:A.runAsUser,customValidation:""===A.runAsUser||parseInt(A.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"tenant_securityContext_runAsGroup",required:!0,value:A.runAsGroup,customValidation:""===A.runAsGroup||parseInt(A.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"tenant_securityContext_fsGroup",required:!0,value:A.fsGroup,customValidation:""===A.fsGroup||parseInt(A.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}]),c){const t=m.map(((e,t)=>({fieldKey:"minio-domain-".concat(t.toString()),required:!1,value:e,pattern:/^(https?):\/\/([a-zA-Z0-9\-.]+)(:[0-9]+)?$/,customPatternMessage:"MinIO domain is not in the form of http|https://subdomain.domain"})));e=[...e,...t,{fieldKey:"console_domain",required:!1,value:d,pattern:/^(https?):\/\/([a-zA-Z0-9\-.]+)(:[0-9]+)?(\/[a-zA-Z0-9\-./]*)?$/,customPatternMessage:"Console domain is not in the form of http|https://subdomain.domain:port/subpath1/subpath2"}]}const t=(0,f.R)(e);n((0,C.NO)({pageName:"configure",valid:0===Object.keys(t).length})),I(t)}),[n,p,A,c,d,m]);const D=e=>{I((0,v.h)(P,e))};return(0,_.jsxs)(x.Z,{className:t.paperWrapper,children:[(0,_.jsxs)("div",{className:t.headerElement,children:[(0,_.jsx)(S.Z,{children:"Configure"}),(0,_.jsx)("span",{className:t.descriptionText,children:"Basic configurations for tenant management"})]}),(0,_.jsxs)("div",{className:t.headerElement,children:[(0,_.jsx)("h4",{className:t.h3Section,children:"Services"}),(0,_.jsx)("span",{className:t.descriptionText,children:"Whether the tenant's services should request an external IP via LoadBalancer service type."})]}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,_.jsx)(y.Z,{value:"expose_minio",id:"expose_minio",name:"expose_minio",checked:i,onChange:e=>{const t=e.target.checked;R("exposeMinIO",t)},label:"Expose MinIO Service"})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,_.jsx)(y.Z,{value:"expose_console",id:"expose_console",name:"expose_console",checked:s,onChange:e=>{const t=e.target.checked;R("exposeConsole",t)},label:"Expose Console Service"})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,_.jsx)(y.Z,{value:"expose_sftp",id:"expose_sftp",name:"expose_sftp",checked:o,onChange:e=>{const t=e.target.checked;R("exposeSFTP",t)},label:"Expose SFTP Service"})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,_.jsx)(y.Z,{value:"custom_domains",id:"custom_domains",name:"custom_domains",checked:c,onChange:e=>{const t=e.target.checked;R("setDomains",t)},label:"Set Custom Domains"})}),c&&(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.tenantCustomizationFields,children:(0,_.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,_.jsx)("legend",{className:t.descriptionText,children:"Custom Domains for MinIO"}),(0,_.jsxs)(l.ZP,{item:!0,xs:12,className:"".concat(t.configSectionItem),children:[(0,_.jsx)("div",{className:t.containerItem,children:(0,_.jsx)(j.Z,{id:"console_domain",name:"console_domain",onChange:e=>{R("consoleDomain",e.target.value),D("tenant_securityContext_runAsUser")},label:"Console Domain",value:d,placeholder:"Eg. http://subdomain.domain:port/subpath1/subpath2",error:P.console_domain||""})}),(0,_.jsxs)("div",{children:[(0,_.jsx)("h4",{children:"MinIO Domains"}),(0,_.jsx)("div",{className:"".concat(t.responsiveSectionItem),children:m.map(((e,a)=>(0,_.jsxs)("div",{className:"".concat(t.containerItem," ").concat(t.wrapperContainer),children:[(0,_.jsx)(j.Z,{id:"minio-domain-".concat(a.toString()),name:"minio-domain-".concat(a.toString()),onChange:e=>{((e,t)=>{const n=[...m];n[t]=e,R("minioDomains",n)})(e.target.value,a)},label:"MinIO Domain ".concat(a+1),value:e,placeholder:"Eg. http://subdomain.domain",error:P["minio-domain-".concat(a.toString())]||""}),(0,_.jsx)("div",{className:t.overlayAction,children:(0,_.jsx)(h.Z,{size:"small",onClick:()=>n((0,C.x_)()),disabled:a!==m.length-1,children:(0,_.jsx)(b.Z,{})})}),(0,_.jsx)("div",{className:t.overlayAction,children:(0,_.jsx)(h.Z,{size:"small",onClick:()=>n((0,C.JL)(a)),disabled:m.length<=1,children:(0,_.jsx)(Z.HFL,{})})})]},"minio-domain-key-".concat(a.toString()))))})]})]})]})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,_.jsx)(y.Z,{value:"tenantConfig",id:"tenant_configuration",name:"tenant_configuration",checked:p,onChange:e=>{const t=e.target.checked;R("tenantCustom",t)},label:"Security Context"})}),p&&(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.tenantCustomizationFields,children:(0,_.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,_.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for MinIO"}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:"".concat(t.configSectionItem),children:(0,_.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,_.jsx)("div",{className:t.containerItem,children:(0,_.jsx)(j.Z,{type:"number",id:"tenant_securityContext_runAsUser",name:"tenant_securityContext_runAsUser",onChange:e=>{R("tenantSecurityContext",{...A,runAsUser:e.target.value}),D("tenant_securityContext_runAsUser")},label:"Run As User",value:A.runAsUser,required:!0,error:P.tenant_securityContext_runAsUser||"",min:"0"})}),(0,_.jsx)("div",{className:t.containerItem,children:(0,_.jsx)(j.Z,{type:"number",id:"tenant_securityContext_runAsGroup",name:"tenant_securityContext_runAsGroup",onChange:e=>{R("tenantSecurityContext",{...A,runAsGroup:e.target.value}),D("tenant_securityContext_runAsGroup")},label:"Run As Group",value:A.runAsGroup,required:!0,error:P.tenant_securityContext_runAsGroup||"",min:"0"})})]})}),(0,_.jsx)("br",{}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:"".concat(t.configSectionItem),children:(0,_.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,_.jsx)("div",{className:t.containerItem,children:(0,_.jsx)(j.Z,{type:"number",id:"tenant_securityContext_fsGroup",name:"tenant_securityContext_fsGroup",onChange:e=>{R("tenantSecurityContext",{...A,fsGroup:e.target.value}),D("tenant_securityContext_fsGroup")},label:"FsGroup",value:A.fsGroup,required:!0,error:P.tenant_securityContext_fsGroup||"",min:"0"})}),(0,_.jsx)("div",{className:t.containerItem,children:(0,_.jsx)("div",{className:t.configSectionItem,children:(0,_.jsx)(N.Z,{label:"FsGroupChangePolicy",id:"securityContext_fsGroupChangePolicy",name:"securityContext_fsGroupChangePolicy",value:A.fsGroupChangePolicy,onChange:e=>{R("tenantSecurityContext",{...A,fsGroupChangePolicy:e.target.value})},options:[{label:"Always",value:"Always"},{label:"OnRootMismatch",value:"OnRootMismatch"}]})})})]})}),(0,_.jsx)("br",{}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,_.jsx)("div",{className:t.multiContainer,children:(0,_.jsx)(y.Z,{value:"tenantSecurityContextRunAsNonRoot",id:"tenant_securityContext_runAsNonRoot",name:"tenant_securityContext_runAsNonRoot",checked:A.runAsNonRoot,onChange:e=>{const t=e.target.checked;R("tenantSecurityContext",{...A,runAsNonRoot:t})},label:"Do not run as Root"})})})]})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,_.jsx)(y.Z,{value:"customRuntime",id:"tenant_custom_runtime",name:"tenant_custom_runtime",checked:k,onChange:e=>{const t=e.target.checked;R("customRuntime",t)},label:"Custom Runtime Configurations"})}),k&&(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.tenantCustomizationFields,children:(0,_.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,_.jsx)("legend",{className:t.descriptionText,children:"Custom Runtime Configurations"}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:"".concat(t.configSectionItem),children:(0,_.jsx)("div",{className:t.containerItem,children:(0,_.jsx)(j.Z,{id:"tenant_runtime_runtimeClassName",name:"tenant_runtime_runtimeClassName",onChange:e=>{R("runtimeClassName",e.target.value),D("tenant_runtime_runtimeClassName")},label:"Runtime Class Name",value:w,error:P.tenant_runtime_runtimeClassName||""})})})]})}),(0,_.jsx)(g.Z,{}),(0,_.jsxs)("div",{className:t.headerElement,children:[(0,_.jsx)(S.Z,{children:"Additional Environment Variables"}),(0,_.jsx)("span",{className:t.descriptionText,children:"Define additional environment variables to be used by your MinIO pods"})]}),(0,_.jsx)(l.ZP,{container:!0,children:T.map(((e,a)=>(0,_.jsxs)(l.ZP,{item:!0,xs:12,className:"".concat(t.formFieldRow," ").concat(t.envVarRow),children:[(0,_.jsx)(l.ZP,{item:!0,xs:5,className:t.fileItem,children:(0,_.jsx)(j.Z,{id:"env_var_key",name:"env_var_key",label:"Key",value:e.key,onChange:e=>{const t=[...T];n((0,C.Ct)(t.map(((t,n)=>n===a?{key:e.target.value,value:t.value}:t))))},index:a},"env_var_key_".concat(a.toString()))}),(0,_.jsx)(l.ZP,{item:!0,xs:5,className:t.fileItem,children:(0,_.jsx)(j.Z,{id:"env_var_value",name:"env_var_value",label:"Value",value:e.value,onChange:e=>{const t=[...T];n((0,C.Ct)(t.map(((t,n)=>n===a?{key:t.key,value:e.target.value}:t))))},index:a},"env_var_value_".concat(a.toString()))}),(0,_.jsxs)(l.ZP,{item:!0,xs:2,className:t.rowActions,children:[(0,_.jsx)("div",{className:t.overlayAction,children:(0,_.jsx)(h.Z,{size:"small",onClick:()=>{const e=[...T];e.push({key:"",value:""}),n((0,C.Ct)(e))},disabled:a!==T.length-1,children:(0,_.jsx)(b.Z,{})})}),(0,_.jsx)("div",{className:t.overlayAction,children:(0,_.jsx)(h.Z,{size:"small",onClick:()=>{const e=T.filter(((e,t)=>t!==a));n((0,C.Ct)(e))},disabled:T.length<=1,children:(0,_.jsx)(Z.HFL,{})})})]})]},"tenant-envVar-".concat(a.toString()))))})]})}));var A=n(83679),k=n(20890),w=n(96040),P=n(72455),I=n(27247);const R=(0,P.Z)((e=>(0,c.Z)({adUserDnRows:{display:"flex",marginBottom:10},buttonTray:{marginLeft:10,display:"flex",height:38,"& button":{background:"#EAEAEA"}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},...d.QV,...d.DF,...d.oO,...d.AK}))),D=()=>{const e=(0,u.TL)(),t=R(),n=(0,r.v9)((e=>e.createTenant.fields.identityProvider.idpSelection)),i=(0,r.v9)((e=>e.createTenant.fields.identityProvider.ADURL)),s=(0,r.v9)((e=>e.createTenant.fields.identityProvider.ADSkipTLS)),o=(0,r.v9)((e=>e.createTenant.fields.identityProvider.ADServerInsecure)),c=(0,r.v9)((e=>e.createTenant.fields.identityProvider.ADGroupSearchBaseDN)),d=(0,r.v9)((e=>e.createTenant.fields.identityProvider.ADGroupSearchFilter)),m=(0,r.v9)((e=>e.createTenant.fields.identityProvider.ADUserDNs)),p=(0,r.v9)((e=>e.createTenant.fields.identityProvider.ADGroupDNs)),x=(0,r.v9)((e=>e.createTenant.fields.identityProvider.ADLookupBindDN)),g=(0,r.v9)((e=>e.createTenant.fields.identityProvider.ADLookupBindPassword)),Z=(0,r.v9)((e=>e.createTenant.fields.identityProvider.ADUserDNSearchBaseDN)),N=(0,r.v9)((e=>e.createTenant.fields.identityProvider.ADUserDNSearchFilter)),S=(0,r.v9)((e=>e.createTenant.fields.identityProvider.ADServerStartTLS)),[T,A]=(0,a.useState)({}),P=(0,a.useCallback)(((t,n)=>{e((0,C.HM)({pageName:"identityProvider",field:t,value:n}))}),[e]),D=e=>{A((0,v.h)(T,e))};return(0,a.useEffect)((()=>{let t=[];"AD"===n&&(t=[...t,{fieldKey:"AD_URL",required:!0,value:i},{fieldKey:"ad_lookupBindDN",required:!0,value:x}]);const a=(0,f.R)(t);e((0,C.NO)({pageName:"identityProvider",valid:0===Object.keys(a).length})),A(a)}),[x,n,i,c,d,m,p,e]),(0,_.jsxs)(a.Fragment,{children:[(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"AD_URL",name:"AD_URL",onChange:e=>{P("ADURL",e.target.value),D("AD_URL")},label:"LDAP Server Address",value:i,placeholder:"ldap-server:636",error:T.AD_URL||"",required:!0})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(y.Z,{value:"ad_skipTLS",id:"ad_skipTLS",name:"ad_skipTLS",checked:s,onChange:e=>{const t=e.target.checked;P("ADSkipTLS",t)},label:"Skip TLS Verification"})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(y.Z,{value:"ad_serverInsecure",id:"ad_serverInsecure",name:"ad_serverInsecure",checked:o,onChange:e=>{const t=e.target.checked;P("ADServerInsecure",t)},label:"Server Insecure"})}),o?(0,_.jsxs)(l.ZP,{item:!0,xs:12,children:[(0,_.jsx)(k.Z,{className:t.error,variant:"caption",display:"block",gutterBottom:!0,children:"Warning: All traffic with Active Directory will be unencrypted"}),(0,_.jsx)("br",{})]}):null,(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(y.Z,{value:"ad_serverStartTLS",id:"ad_serverStartTLS",name:"ad_serverStartTLS",checked:S,onChange:e=>{const t=e.target.checked;P("ADServerStartTLS",t)},label:"Start TLS connection to AD/LDAP server"})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"ad_lookupBindDN",name:"ad_lookupBindDN",onChange:e=>{P("ADLookupBindDN",e.target.value),D("ad_lookupBindDN")},label:"Lookup Bind DN",value:x,placeholder:"cn=admin,dc=min,dc=io",error:T.ad_lookupBindDN||"",required:!0})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"ad_lookupBindPassword",name:"ad_lookupBindPassword",onChange:e=>{P("ADLookupBindPassword",e.target.value)},label:"Lookup Bind Password",value:g,placeholder:"admin"})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"ad_userDNSearchBaseDN",name:"ad_userDNSearchBaseDN",onChange:e=>{P("ADUserDNSearchBaseDN",e.target.value)},label:"User DN Search Base DN",value:Z,placeholder:"dc=min,dc=io"})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"ad_userDNSearchFilter",name:"ad_userDNSearchFilter",onChange:e=>{P("ADUserDNSearchFilter",e.target.value)},label:"User DN Search Filter",value:N,placeholder:"(sAMAcountName=%s)"})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"ad_groupSearchBaseDN",name:"ad_groupSearchBaseDN",onChange:e=>{P("ADGroupSearchBaseDN",e.target.value)},label:"Group Search Base DN",value:c,placeholder:"ou=hwengg,dc=min,dc=io;ou=swengg,dc=min,dc=io"})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"ad_groupSearchFilter",name:"ad_groupSearchFilter",onChange:e=>{P("ADGroupSearchFilter",e.target.value)},label:"Group Search Filter",value:d,placeholder:"(&(objectclass=groupOfNames)(member=%s))"})}),(0,_.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,_.jsx)("legend",{className:t.descriptionText,children:"List of user DNs (Distinguished Names) to be Tenant Administrators"}),(0,_.jsx)(l.ZP,{item:!0,xs:12,children:m.map(((n,i)=>(0,_.jsx)(a.Fragment,{children:(0,_.jsxs)("div",{className:t.adUserDnRows,children:[(0,_.jsx)(j.Z,{id:"ad-userdn-".concat(i.toString()),label:"",placeholder:"",name:"ad-userdn-".concat(i.toString()),value:m[i],onChange:t=>{e((0,C.hK)({index:i,userDN:t.target.value})),D("ad-userdn-".concat(i.toString()))},index:i,error:T["ad-userdn-".concat(i.toString())]||""},"csv-ad-userdn-".concat(i.toString())),(0,_.jsxs)("div",{className:t.buttonTray,children:[(0,_.jsx)(w.Z,{title:"Add User","aria-label":"add",children:(0,_.jsx)(h.Z,{size:"small",onClick:()=>{e((0,C.Y$)())},children:(0,_.jsx)(b.Z,{})})}),(0,_.jsx)(w.Z,{title:"Remove","aria-label":"add",children:(0,_.jsx)(h.Z,{size:"small",style:{marginLeft:16},onClick:()=>{m.length>1&&e((0,C.GU)(i))},children:(0,_.jsx)(I.Z,{})})})]})]})},"identityField-".concat(i.toString()))))})]}),(0,_.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,_.jsx)("legend",{className:t.descriptionText,children:"List of group DNs (Distinguished Names) to be Tenant Administrators"}),(0,_.jsx)(l.ZP,{item:!0,xs:12,children:p.map(((n,i)=>(0,_.jsx)(a.Fragment,{children:(0,_.jsxs)("div",{className:t.adUserDnRows,children:[(0,_.jsx)(j.Z,{id:"ad-groupdn-".concat(i.toString()),label:"",placeholder:"",name:"ad-groupdn-".concat(i.toString()),value:p[i],onChange:t=>{e((0,C.in)({index:i,userDN:t.target.value})),D("ad-groupdn-".concat(i.toString()))},index:i,error:T["ad-groupdn-".concat(i.toString())]||""},"csv-ad-groupdn-".concat(i.toString())),(0,_.jsxs)("div",{className:t.buttonTray,children:[(0,_.jsx)(w.Z,{title:"Add Group","aria-label":"add",children:(0,_.jsx)(h.Z,{size:"small",onClick:()=>{e((0,C.Fe)())},children:(0,_.jsx)(b.Z,{})})}),(0,_.jsx)(w.Z,{title:"Remove","aria-label":"add",children:(0,_.jsx)(h.Z,{size:"small",style:{marginLeft:16},onClick:()=>{p.length>1&&e((0,C.Hu)(i))},children:(0,_.jsx)(I.Z,{})})})]})]})},"identityField-".concat(i.toString()))))})]})]})},F=(0,P.Z)((e=>(0,c.Z)({buttonTray:{marginLeft:10,display:"flex",height:38,"& button":{background:"#EAEAEA"}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},...d.QV,...d.DF,...d.oO,...d.AK}))),K=()=>{const e=(0,u.TL)(),t=F(),n=(0,r.v9)((e=>e.createTenant.fields.identityProvider.idpSelection)),i=(0,r.v9)((e=>e.createTenant.fields.identityProvider.openIDConfigurationURL)),s=(0,r.v9)((e=>e.createTenant.fields.identityProvider.openIDClientID)),o=(0,r.v9)((e=>e.createTenant.fields.identityProvider.openIDSecretID)),c=(0,r.v9)((e=>e.createTenant.fields.identityProvider.openIDClaimName)),d=(0,r.v9)((e=>e.createTenant.fields.identityProvider.openIDScopes)),[m,p]=(0,a.useState)({}),x=(0,a.useCallback)(((t,n)=>{e((0,C.HM)({pageName:"identityProvider",field:t,value:n}))}),[e]),h=e=>{p((0,v.h)(m,e))};return(0,a.useEffect)((()=>{let t=[];"OpenID"===n&&(t=[...t,{fieldKey:"openID_CONFIGURATION_URL",required:!0,value:i},{fieldKey:"openID_clientID",required:!0,value:s},{fieldKey:"openID_secretID",required:!0,value:o},{fieldKey:"openID_claimName",required:!1,value:c}]);const a=(0,f.R)(t);e((0,C.NO)({pageName:"identityProvider",valid:0===Object.keys(a).length})),p(a)}),[n,s,o,i,c,e]),(0,_.jsxs)(a.Fragment,{children:[(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"openID_CONFIGURATION_URL",name:"openID_CONFIGURATION_URL",onChange:e=>{x("openIDConfigurationURL",e.target.value),h("openID_CONFIGURATION_URL")},label:"Configuration URL",value:i,placeholder:"https://your-identity-provider.com/.well-known/openid-configuration",error:m.openID_CONFIGURATION_URL||"",required:!0})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"openID_clientID",name:"openID_clientID",onChange:e=>{x("openIDClientID",e.target.value),h("openID_clientID")},label:"Client ID",value:s,error:m.openID_clientID||"",required:!0})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"openID_secretID",name:"openID_secretID",onChange:e=>{x("openIDSecretID",e.target.value),h("openID_secretID")},label:"Secret ID",value:o,error:m.openID_secretID||"",required:!0})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"openID_claimName",name:"openID_claimName",onChange:e=>{x("openIDClaimName",e.target.value),h("openID_claimName")},label:"Claim Name",value:c,placeholder:"policy",error:m.openID_claimName||""})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"openID_scopes",name:"openID_scopes",onChange:e=>{x("openIDScopes",e.target.value),h("openID_scopes")},label:"Scopes",value:d})})]})};var E=n(22918);const L=(0,P.Z)((e=>(0,c.Z)({buttonTray:{marginLeft:10,display:"flex",height:38,"& button":{background:"#EAEAEA"}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},shortened:{gridTemplateColumns:"auto auto 50px 50px",display:"grid",gridGap:15,marginBottom:10,"& input":{fontWeight:400}},...d.QV,...d.DF,...d.oO,...d.AK}))),z=()=>{const e=(0,u.TL)(),t=L(),n=(0,r.v9)((e=>e.createTenant.fields.identityProvider.idpSelection)),i=(0,r.v9)((e=>e.createTenant.fields.identityProvider.accessKeys)),s=(0,r.v9)((e=>e.createTenant.fields.identityProvider.secretKeys)),[l,o]=(0,a.useState)({}),c=e=>{o((0,v.h)(l,e))};return(0,a.useEffect)((()=>{let t=[];if("Built-in"===n){t=[...t];for(var a=0;a(0,_.jsx)(a.Fragment,{children:(0,_.jsxs)("div",{className:t.shortened,children:[(0,_.jsx)(j.Z,{id:"accesskey-".concat(r.toString()),label:"",placeholder:"Access Key",name:"accesskey-".concat(r.toString()),value:i[r],onChange:t=>{e((0,C.ys)({index:r,accessKey:t.target.value})),c("accesskey-".concat(r.toString()))},index:r,error:l["accesskey-".concat(r.toString())]||""},"csv-accesskey-".concat(r.toString())),(0,_.jsx)(j.Z,{id:"secretkey-".concat(r.toString()),label:"",placeholder:"Secret Key",name:"secretkey-".concat(r.toString()),value:s[r],onChange:t=>{e((0,C.OL)({index:r,secretKey:t.target.value})),c("secretkey-".concat(r.toString()))},index:r,error:l["secretkey-".concat(r.toString())]||""},"csv-secretkey-".concat(r.toString())),(0,_.jsxs)("div",{className:t.buttonTray,children:[(0,_.jsx)("div",{className:t.overlayAction,children:(0,_.jsx)(h.Z,{size:"small",onClick:()=>{e((0,C.x$)())},disabled:r!==i.length-1,children:(0,_.jsx)(b.Z,{})})}),(0,_.jsx)("div",{className:t.overlayAction,children:(0,_.jsx)(h.Z,{size:"small",onClick:()=>{e((0,C.iA)(r))},disabled:i.length<=1,children:(0,_.jsx)(Z.HFL,{})})}),(0,_.jsx)(w.Z,{title:"Randomize Credentials","aria-label":"add",children:(0,_.jsx)("div",{className:t.overlayAction,children:(0,_.jsx)(h.Z,{onClick:()=>{e((0,C.ys)({index:r,accessKey:(0,v.z)(16)})),e((0,C.OL)({index:r,secretKey:(0,v.z)(16)}))},size:"small",children:(0,_.jsx)(E.Z,{})})})})]})]})},"identityField-".concat(r.toString()))))]})};var O=n(68456);const M=(0,P.Z)((e=>(0,c.Z)({protocolRadioOptions:{display:"flex",flexFlow:"column",marginBottom:10,"& label":{fontSize:16,fontWeight:600},"& div":{display:"flex",flexFlow:"row",alignItems:"top"}},...d.QV,...d.oO,...d.AK}))),G=()=>{const e=(0,u.TL)(),t=M(),n=(0,r.v9)((e=>e.createTenant.fields.identityProvider.idpSelection));return(0,_.jsxs)(x.Z,{className:t.paperWrapper,children:[(0,_.jsxs)("div",{className:t.headerElement,children:[(0,_.jsx)(S.Z,{children:"Identity Provider"}),(0,_.jsx)("span",{className:t.descriptionText,children:"Access to the tenant can be controlled via an external Identity Manager."})]}),(0,_.jsx)(l.ZP,{item:!0,xs:12,padding:"10px",children:(0,_.jsx)(A.Z,{currentSelection:n,id:"idp-options",name:"idp-options",label:"Protocol",onChange:t=>{e((0,C.BH)(t.target.value))},selectorOptions:[{label:(0,_.jsx)(O.YH,{}),value:"Built-in"},{label:(0,_.jsx)(O.mo,{}),value:"OpenID"},{label:(0,_.jsx)(O.QT,{}),value:"AD"}]})}),"Built-in"===n&&(0,_.jsx)(z,{}),"OpenID"===n&&(0,_.jsx)(K,{}),"AD"===n&&(0,_.jsx)(D,{})]})};var B=n(54639),V=n(88070);const q=(0,p.Z)((e=>(0,c.Z)({minioCertificateRows:{display:"flex",alignItems:"center",justifyContent:"flex-start",borderBottom:"1px solid #EAEAEA","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1}},fileItem:{marginRight:10,display:"flex","& div label":{minWidth:50},"@media (max-width: 900px)":{flexFlow:"column"}},minioCertsContainer:{marginBottom:15},minioCACertsRow:{display:"flex",alignItems:"center",justifyContent:"flex-start",borderBottom:"1px solid #EAEAEA","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1,"& div label":{minWidth:50}}},rowActions:{display:"flex",justifyContent:"flex-end","@media (max-width: 900px)":{flex:1}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},...d.QV,...d.oO,...d.AK})))((e=>{let{classes:t}=e;const n=(0,u.TL)(),i=(0,r.v9)((e=>e.createTenant.fields.security.enableTLS)),s=(0,r.v9)((e=>e.createTenant.fields.security.enableAutoCert)),o=(0,r.v9)((e=>e.createTenant.fields.security.enableCustomCerts)),c=(0,r.v9)((e=>e.createTenant.certificates.minioServerCertificates)),d=(0,r.v9)((e=>e.createTenant.certificates.minioClientCertificates)),m=(0,r.v9)((e=>e.createTenant.certificates.minioCAsCertificates)),p=(0,a.useCallback)(((e,t)=>{n((0,C.HM)({pageName:"security",field:e,value:t}))}),[n]);return(0,a.useEffect)((()=>{n(i?s||o?(0,C.NO)({pageName:"security",valid:!0}):(0,C.NO)({pageName:"security",valid:!1}):(0,C.NO)({pageName:"security",valid:!0}))}),[i,s,o,n]),(0,_.jsxs)(x.Z,{className:t.paperWrapper,children:[(0,_.jsx)("div",{className:t.headerElement,children:(0,_.jsx)(S.Z,{children:"Security"})}),(0,_.jsxs)(l.ZP,{container:!0,spacing:1,children:[(0,_.jsx)(l.ZP,{item:!0,xs:12,children:(0,_.jsx)(y.Z,{value:"enableTLS",id:"enableTLS",name:"enableTLS",checked:i,onChange:e=>{const t=e.target.checked;p("enableTLS",t)},label:"TLS",description:"Securing all the traffic using TLS. This is required for Encryption Configuration"})}),i&&(0,_.jsxs)(a.Fragment,{children:[(0,_.jsx)(l.ZP,{item:!0,xs:12,children:(0,_.jsx)(y.Z,{value:"enableAutoCert",id:"enableAutoCert",name:"enableAutoCert",checked:s,onChange:e=>{const t=e.target.checked;p("enableAutoCert",t)},label:"AutoCert",description:"The internode certificates will be generated and managed by MinIO Operator"})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,children:(0,_.jsx)(y.Z,{value:"enableCustomCerts",id:"enableCustomCerts",name:"enableCustomCerts",checked:o,onChange:e=>{const t=e.target.checked;p("enableCustomCerts",t)},label:"Custom Certificates",description:"Certificates used to terminated TLS at MinIO"})}),o&&(0,_.jsxs)(a.Fragment,{children:[!s&&(0,_.jsx)(l.ZP,{item:!0,xs:12,children:(0,_.jsx)(V.Z,{})}),(0,_.jsxs)(l.ZP,{item:!0,xs:12,className:t.minioCertsContainer,children:[(0,_.jsx)("h5",{children:"MinIO Server Certificates"}),c.map(((e,a)=>(0,_.jsxs)(l.ZP,{item:!0,xs:12,className:t.minioCertificateRows,children:[(0,_.jsxs)(l.ZP,{item:!0,xs:10,className:t.fileItem,children:[(0,_.jsx)(B.Z,{onChange:(t,a)=>{n((0,C.aN)({id:e.id,key:"cert",fileName:a,value:t}))},accept:".cer,.crt,.cert,.pem",id:"tlsCert",name:"tlsCert",label:"Cert",value:e.cert}),(0,_.jsx)(B.Z,{onChange:(t,a)=>{n((0,C.aN)({id:e.id,key:"key",fileName:a,value:t}))},accept:".key,.pem",id:"tlsKey",name:"tlsKey",label:"Key",value:e.key})]}),(0,_.jsxs)(l.ZP,{item:!0,xs:2,className:t.rowActions,children:[(0,_.jsx)("div",{className:t.overlayAction,children:(0,_.jsx)(h.Z,{size:"small",onClick:()=>{n((0,C.Mg)())},disabled:a!==c.length-1,children:(0,_.jsx)(b.Z,{})})}),(0,_.jsx)("div",{className:t.overlayAction,children:(0,_.jsx)(h.Z,{size:"small",onClick:()=>{n((0,C.XX)(e.id))},disabled:c.length<=1,children:(0,_.jsx)(Z.HFL,{})})})]})]},"minio-certs-".concat(e.id))))]}),(0,_.jsxs)(l.ZP,{item:!0,xs:12,className:t.minioCertsContainer,children:[(0,_.jsx)("h5",{children:"MinIO Client Certificates"}),d.map(((e,a)=>(0,_.jsxs)(l.ZP,{item:!0,xs:12,className:t.minioCertificateRows,children:[(0,_.jsxs)(l.ZP,{item:!0,xs:10,className:t.fileItem,children:[(0,_.jsx)(B.Z,{onChange:(t,a)=>{n((0,C.fE)({id:e.id,key:"cert",fileName:a,value:t}))},accept:".cer,.crt,.cert,.pem",id:"tlsCert",name:"tlsCert",label:"Cert",value:e.cert}),(0,_.jsx)(B.Z,{onChange:(t,a)=>{n((0,C.fE)({id:e.id,key:"key",fileName:a,value:t}))},accept:".key,.pem",id:"tlsKey",name:"tlsKey",label:"Key",value:e.key})]}),(0,_.jsxs)(l.ZP,{item:!0,xs:2,className:t.rowActions,children:[(0,_.jsx)("div",{className:t.overlayAction,children:(0,_.jsx)(h.Z,{size:"small",onClick:()=>{n((0,C.ee)())},disabled:a!==d.length-1,children:(0,_.jsx)(b.Z,{})})}),(0,_.jsx)("div",{className:t.overlayAction,children:(0,_.jsx)(h.Z,{size:"small",onClick:()=>{n((0,C.o_)(e.id))},disabled:d.length<=1,children:(0,_.jsx)(Z.HFL,{})})})]})]},"minio-certs-".concat(e.id))))]}),(0,_.jsxs)(l.ZP,{item:!0,xs:12,className:t.minioCertsContainer,children:[(0,_.jsx)("h5",{children:"MinIO CA Certificates"}),m.map(((e,a)=>(0,_.jsxs)(l.ZP,{item:!0,xs:12,className:t.minioCACertsRow,children:[(0,_.jsx)(l.ZP,{item:!0,xs:6,children:(0,_.jsx)(B.Z,{onChange:(t,a)=>{n((0,C.Eq)({id:e.id,key:"cert",fileName:a,value:t}))},accept:".cer,.crt,.cert,.pem",id:"tlsCert",name:"tlsCert",label:"Cert",value:e.cert})}),(0,_.jsx)(l.ZP,{item:!0,xs:6,children:(0,_.jsxs)("div",{className:t.rowActions,children:[(0,_.jsx)("div",{className:t.overlayAction,children:(0,_.jsx)(h.Z,{size:"small",onClick:()=>{n((0,C.fK)())},disabled:a!==m.length-1,children:(0,_.jsx)(b.Z,{})})}),(0,_.jsx)("div",{className:t.overlayAction,children:(0,_.jsx)(h.Z,{size:"small",onClick:()=>{n((0,C.IG)(e.id))},disabled:m.length<=1,children:(0,_.jsx)(Z.HFL,{})})})]})})]},"minio-CA-certs-".concat(e.id))))]})]})]})]})]})})),U=e=>{let{children:t}=e;return(0,_.jsx)("h1",{style:{margin:0,marginBottom:".8rem",fontSize:"1.3rem"},children:t})},H=(0,P.Z)((e=>(0,c.Z)({...d.QV,...d.DF,...d.oO,...d.AK}))),W=()=>{const e=(0,u.TL)(),t=H(),n=(0,r.v9)((e=>e.createTenant.fields.encryption.encryptionTab)),i=(0,r.v9)((e=>e.createTenant.fields.encryption.vaultEndpoint)),s=(0,r.v9)((e=>e.createTenant.fields.encryption.vaultEngine)),o=(0,r.v9)((e=>e.createTenant.fields.encryption.vaultNamespace)),c=(0,r.v9)((e=>e.createTenant.fields.encryption.vaultPrefix)),d=(0,r.v9)((e=>e.createTenant.fields.encryption.vaultAppRoleEngine)),m=(0,r.v9)((e=>e.createTenant.fields.encryption.vaultId)),p=(0,r.v9)((e=>e.createTenant.fields.encryption.vaultSecret)),x=(0,r.v9)((e=>e.createTenant.fields.encryption.vaultRetry)),h=(0,r.v9)((e=>e.createTenant.fields.encryption.vaultPing)),[g,y]=(0,a.useState)({});(0,a.useEffect)((()=>{let t=[];n||(t=[...t,{fieldKey:"vault_endpoint",required:!0,value:i},{fieldKey:"vault_id",required:!0,value:m},{fieldKey:"vault_secret",required:!0,value:p},{fieldKey:"vault_ping",required:!1,value:h,customValidation:parseInt(h)<0,customValidationMessage:"Value needs to be 0 or greater"},{fieldKey:"vault_retry",required:!1,value:x,customValidation:parseInt(x)<0,customValidationMessage:"Value needs to be 0 or greater"}]);const a=(0,f.R)(t);e((0,C.NO)({pageName:"encryption",valid:0===Object.keys(a).length})),y(a)}),[n,i,s,m,p,h,x,e]);const b=(0,a.useCallback)(((t,n)=>{e((0,C.HM)({pageName:"encryption",field:t,value:n}))}),[e]),Z=e=>{y((0,v.h)(g,e))};return(0,_.jsxs)(a.Fragment,{children:[(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"vault_endpoint",name:"vault_endpoint",onChange:e=>{b("vaultEndpoint",e.target.value),Z("vault_endpoint")},label:"Endpoint",tooltip:"Endpoint is the Hashicorp Vault endpoint",value:i,error:g.vault_endpoint||"",required:!0})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"vault_engine",name:"vault_engine",onChange:e=>{b("vaultEngine",e.target.value),Z("vault_engine")},label:"Engine",tooltip:"Engine is the Hashicorp Vault K/V engine path. If empty, defaults to 'kv'",value:s})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"vault_namespace",name:"vault_namespace",onChange:e=>{b("vaultNamespace",e.target.value)},label:"Namespace",tooltip:"Namespace is an optional Hashicorp Vault namespace. An empty namespace means no particular namespace is used.",value:o})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"vault_prefix",name:"vault_prefix",onChange:e=>{b("vaultPrefix",e.target.value)},label:"Prefix",tooltip:"Prefix is an optional prefix / directory within the K/V engine. If empty, keys will be stored at the K/V engine top level",value:c})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,children:(0,_.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,_.jsx)("legend",{className:t.descriptionText,children:"App Role"}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"vault_approle_engine",name:"vault_approle_engine",onChange:e=>{b("vaultAppRoleEngine",e.target.value)},label:"Engine",tooltip:"AppRoleEngine is the AppRole authentication engine path. If empty, defaults to 'approle'",value:d})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"vault_id",name:"vault_id",onChange:e=>{b("vaultId",e.target.value),Z("vault_id")},label:"AppRole ID",tooltip:"AppRoleSecret is the AppRole access secret for authenticating to Hashicorp Vault via the AppRole method",value:m,error:g.vault_id||"",required:!0})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"vault_secret",name:"vault_secret",onChange:e=>{b("vaultSecret",e.target.value),Z("vault_secret")},label:"AppRole Secret",tooltip:"AppRoleSecret is the AppRole access secret for authenticating to Hashicorp Vault via the AppRole method",value:p,error:g.vault_secret||"",required:!0})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{type:"number",min:"0",id:"vault_retry",name:"vault_retry",onChange:e=>{b("vaultRetry",e.target.value),Z("vault_retry")},label:"Retry (Seconds)",value:x,error:g.vault_retry||""})})]})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,style:{marginTop:15},children:(0,_.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,_.jsx)("legend",{className:t.descriptionText,children:"Status"}),(0,_.jsx)(j.Z,{type:"number",min:"0",id:"vault_ping",name:"vault_ping",onChange:e=>{b("vaultPing",e.target.value),Z("vault_ping")},label:"Ping (Seconds)",value:h,error:g.vault_ping||""})]})})]})},Q=(0,P.Z)((e=>(0,c.Z)({...d.QV,...d.DF,...d.oO,...d.AK}))),$=()=>{const e=(0,u.TL)(),t=Q(),n=(0,r.v9)((e=>e.createTenant.fields.encryption.encryptionTab)),i=(0,r.v9)((e=>e.createTenant.fields.encryption.azureEndpoint)),s=(0,r.v9)((e=>e.createTenant.fields.encryption.azureTenantID)),o=(0,r.v9)((e=>e.createTenant.fields.encryption.azureClientID)),c=(0,r.v9)((e=>e.createTenant.fields.encryption.azureClientSecret)),[d,m]=(0,a.useState)({});(0,a.useEffect)((()=>{let t=[];n||(t=[...t,{fieldKey:"azure_endpoint",required:!0,value:i},{fieldKey:"azure_tenant_id",required:!0,value:s},{fieldKey:"azure_client_id",required:!0,value:o},{fieldKey:"azure_client_secret",required:!0,value:c}]);const a=(0,f.R)(t);e((0,C.NO)({pageName:"encryption",valid:0===Object.keys(a).length})),m(a)}),[n,i,s,o,c,e]);const p=(0,a.useCallback)(((t,n)=>{e((0,C.HM)({pageName:"encryption",field:t,value:n}))}),[e]),x=e=>{m((0,v.h)(d,e))};return(0,_.jsxs)(a.Fragment,{children:[(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"azure_endpoint",name:"azure_endpoint",onChange:e=>{p("azureEndpoint",e.target.value),x("azure_endpoint")},label:"Endpoint",tooltip:"Endpoint is the Azure KeyVault endpoint",value:i,error:d.azure_endpoint||""})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,children:(0,_.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,_.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"azure_tenant_id",name:"azure_tenant_id",onChange:e=>{p("azureTenantID",e.target.value),x("azure_tenant_id")},label:"Tenant ID",tooltip:"TenantID is the ID of the Azure KeyVault tenant",value:s,error:d.azure_tenant_id||""})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"azure_client_id",name:"azure_client_id",onChange:e=>{p("azureClientID",e.target.value),x("azure_client_id")},label:"Client ID",tooltip:"ClientID is the ID of the client accessing Azure KeyVault",value:o,error:d.azure_client_id||""})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"azure_client_secret",name:"azure_client_secret",onChange:e=>{p("azureClientSecret",e.target.value),x("azure_client_secret")},label:"Client Secret",tooltip:"ClientSecret is the client secret accessing the Azure KeyVault",value:c,error:d.azure_client_secret||""})})]})})]})},Y=(0,P.Z)((e=>(0,c.Z)({...d.QV,...d.DF,...d.oO,...d.AK}))),J=()=>{const e=Y(),t=(0,u.TL)(),n=(0,r.v9)((e=>e.createTenant.fields.encryption.gcpProjectID)),i=(0,r.v9)((e=>e.createTenant.fields.encryption.gcpEndpoint)),s=(0,r.v9)((e=>e.createTenant.fields.encryption.gcpClientEmail)),o=(0,r.v9)((e=>e.createTenant.fields.encryption.gcpClientID)),c=(0,r.v9)((e=>e.createTenant.fields.encryption.gcpPrivateKeyID)),d=(0,r.v9)((e=>e.createTenant.fields.encryption.gcpPrivateKey)),m=(0,a.useCallback)(((e,n)=>{t((0,C.HM)({pageName:"encryption",field:e,value:n}))}),[t]);return(0,_.jsxs)(a.Fragment,{children:[(0,_.jsx)(l.ZP,{item:!0,xs:12,className:e.formFieldRow,children:(0,_.jsx)(j.Z,{id:"gcp_project_id",name:"gcp_project_id",onChange:e=>{m("gcpProjectID",e.target.value)},label:"Project ID",tooltip:"ProjectID is the GCP project ID.",value:n})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:e.formFieldRow,children:(0,_.jsx)(j.Z,{id:"gcp_endpoint",name:"gcp_endpoint",onChange:e=>{m("gcpEndpoint",e.target.value)},label:"Endpoint",tooltip:"Endpoint is the GCP project ID. If empty defaults to: secretmanager.googleapis.com:443",value:i})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,children:(0,_.jsxs)("fieldset",{className:e.fieldGroup,children:[(0,_.jsx)("legend",{className:e.descriptionText,children:"Credentials"}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:e.formFieldRow,children:(0,_.jsx)(j.Z,{id:"gcp_client_email",name:"gcp_client_email",onChange:e=>{m("gcpClientEmail",e.target.value)},label:"Client Email",tooltip:"Is the Client email of the GCP service account used to access the SecretManager",value:s})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:e.formFieldRow,children:(0,_.jsx)(j.Z,{id:"gcp_client_id",name:"gcp_client_id",onChange:e=>{m("gcpClientID",e.target.value)},label:"Client ID",tooltip:"Is the Client ID of the GCP service account used to access the SecretManager",value:o})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:e.formFieldRow,children:(0,_.jsx)(j.Z,{id:"gcp_private_key_id",name:"gcp_private_key_id",onChange:e=>{m("gcpPrivateKeyID",e.target.value)},label:"Private Key ID",tooltip:"Is the private key ID of the GCP service account used to access the SecretManager",value:c})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:e.formFieldRow,children:(0,_.jsx)(j.Z,{id:"gcp_private_key",name:"gcp_private_key",onChange:e=>{m("gcpPrivateKey",e.target.value)},label:"Private Key",tooltip:"Is the private key of the GCP service account used to access the SecretManager",value:d})})]})})]})},X=(0,P.Z)((e=>(0,c.Z)({...d.QV,...d.DF,...d.oO,...d.AK}))),ee=()=>{const e=(0,u.TL)(),t=X(),n=(0,r.v9)((e=>e.createTenant.fields.encryption.encryptionTab)),i=(0,r.v9)((e=>e.createTenant.fields.encryption.gemaltoEndpoint)),s=(0,r.v9)((e=>e.createTenant.fields.encryption.gemaltoToken)),o=(0,r.v9)((e=>e.createTenant.fields.encryption.gemaltoDomain)),c=(0,r.v9)((e=>e.createTenant.fields.encryption.gemaltoRetry)),[d,m]=(0,a.useState)({});(0,a.useEffect)((()=>{let t=[];n||(t=[...t,{fieldKey:"gemalto_endpoint",required:!0,value:i},{fieldKey:"gemalto_token",required:!0,value:s},{fieldKey:"gemalto_domain",required:!0,value:o},{fieldKey:"gemalto_retry",required:!1,value:c,customValidation:parseInt(c)<0,customValidationMessage:"Value needs to be 0 or greater"}]);const a=(0,f.R)(t);e((0,C.NO)({pageName:"encryption",valid:0===Object.keys(a).length})),m(a)}),[n,i,s,o,c,e]);const p=(0,a.useCallback)(((t,n)=>{e((0,C.HM)({pageName:"encryption",field:t,value:n}))}),[e]),x=e=>{m((0,v.h)(d,e))};return(0,_.jsxs)(a.Fragment,{children:[(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"gemalto_endpoint",name:"gemalto_endpoint",onChange:e=>{p("gemaltoEndpoint",e.target.value),x("gemalto_endpoint")},label:"Endpoint",tooltip:"Endpoint is the endpoint to the KeySecure server",value:i,error:d.gemalto_endpoint||"",required:!0})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,_.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,_.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"gemalto_token",name:"gemalto_token",onChange:e=>{p("gemaltoToken",e.target.value),x("gemalto_token")},label:"Token",tooltip:"Token is the refresh authentication token to access the KeySecure server",value:s,error:d.gemalto_token||"",required:!0})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"gemalto_domain",name:"gemalto_domain",onChange:e=>{p("gemaltoDomain",e.target.value),x("gemalto_domain")},label:"Domain",tooltip:"Domain is the isolated namespace within the KeySecure server. If empty, defaults to the top-level / root domain",value:o,error:d.gemalto_domain||"",required:!0})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{type:"number",min:"0",id:"gemalto_retry",name:"gemalto_retry",onChange:e=>{p("gemaltoRetry",e.target.value),x("gemalto_retry")},label:"Retry (seconds)",value:c,error:d.gemalto_retry||""})})]})})]})},te=(0,P.Z)((e=>(0,c.Z)({...d.QV,...d.DF,...d.oO,...d.AK}))),ne=()=>{const e=(0,u.TL)(),t=te(),n=(0,r.v9)((e=>e.createTenant.fields.encryption.encryptionTab)),i=(0,r.v9)((e=>e.createTenant.fields.encryption.awsEndpoint)),s=(0,r.v9)((e=>e.createTenant.fields.encryption.awsRegion)),o=(0,r.v9)((e=>e.createTenant.fields.encryption.awsKMSKey)),c=(0,r.v9)((e=>e.createTenant.fields.encryption.awsAccessKey)),d=(0,r.v9)((e=>e.createTenant.fields.encryption.awsSecretKey)),m=(0,r.v9)((e=>e.createTenant.fields.encryption.awsToken)),[p,x]=(0,a.useState)({});(0,a.useEffect)((()=>{let t=[];n||(t=[...t,{fieldKey:"aws_endpoint",required:!0,value:i},{fieldKey:"aws_region",required:!0,value:s},{fieldKey:"aws_accessKey",required:!0,value:c},{fieldKey:"aws_secretKey",required:!0,value:d}]);const a=(0,f.R)(t);e((0,C.NO)({pageName:"encryption",valid:0===Object.keys(a).length})),x(a)}),[n,i,s,d,c,e]);const h=(0,a.useCallback)(((t,n)=>{e((0,C.HM)({pageName:"encryption",field:t,value:n}))}),[e]),g=e=>{x((0,v.h)(p,e))};return(0,_.jsxs)(a.Fragment,{children:[(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"aws_endpoint",name:"aws_endpoint",onChange:e=>{h("awsEndpoint",e.target.value),g("aws_endpoint")},label:"Endpoint",tooltip:"Endpoint is the AWS SecretsManager endpoint. AWS SecretsManager endpoints have the following schema: secrestmanager[-fips]..amanzonaws.com",value:i,error:p.aws_endpoint||"",required:!0})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"aws_region",name:"aws_region",onChange:e=>{h("awsRegion",e.target.value),g("aws_region")},label:"Region",tooltip:"Region is the AWS region the SecretsManager is located",value:s,error:p.aws_region||"",required:!0})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"aws_kmsKey",name:"aws_kmsKey",onChange:e=>{h("awsKMSKey",e.target.value)},label:"KMS Key",tooltip:"KMSKey is the AWS-KMS key ID (CMK-ID) used to en/decrypt secrets managed by the SecretsManager. If empty, the default AWS KMS key is used",value:o})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,children:(0,_.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,_.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"aws_accessKey",name:"aws_accessKey",onChange:e=>{h("awsAccessKey",e.target.value),g("aws_accessKey")},label:"Access Key",tooltip:"AccessKey is the access key for authenticating to AWS",value:c,error:p.aws_accessKey||"",required:!0})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"aws_secretKey",name:"aws_secretKey",onChange:e=>{h("awsSecretKey",e.target.value),g("aws_secretKey")},label:"Secret Key",tooltip:"SecretKey is the secret key for authenticating to AWS",value:d,error:p.aws_secretKey||"",required:!0})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"aws_token",name:"aws_token",tooltip:"SessionToken is an optional session token for authenticating to AWS when using STS",onChange:e=>{h("awsToken",e.target.value)},label:"Token",value:m})})]})})]})};var ae=n(25228),ie=n(43896),se=n(92217),re=n(13871);const le=(0,p.Z)((e=>(0,c.Z)({encryptionTypeOptions:{marginBottom:15},mutualTlsConfig:{marginTop:15,"& fieldset":{flex:1}},rightSpacer:{marginRight:15},responsiveContainer:{"@media (max-width: 900px)":{display:"flex",flexFlow:"column"}},...d.QV,...d.DF,...d.oO,...d.AK})))((e=>{let{classes:t}=e;const n=(0,u.TL)(),i=(0,r.v9)((e=>e.createTenant.fields.encryption.replicas)),s=(0,r.v9)((e=>e.createTenant.fields.encryption.rawConfiguration)),o=(0,r.v9)((e=>e.createTenant.fields.encryption.encryptionTab)),c=(0,r.v9)((e=>e.createTenant.fields.encryption.enableEncryption)),d=(0,r.v9)((e=>e.createTenant.fields.encryption.encryptionType)),m=(0,r.v9)((e=>e.createTenant.fields.encryption.gcpProjectID)),p=(0,r.v9)((e=>e.createTenant.fields.encryption.gcpEndpoint)),h=(0,r.v9)((e=>e.createTenant.fields.encryption.gcpClientEmail)),g=(0,r.v9)((e=>e.createTenant.fields.encryption.gcpClientID)),b=(0,r.v9)((e=>e.createTenant.fields.encryption.gcpPrivateKeyID)),Z=(0,r.v9)((e=>e.createTenant.fields.encryption.gcpPrivateKey)),S=(0,r.v9)((e=>e.createTenant.fields.encryption.enableCustomCertsForKES)),T=(0,r.v9)((e=>e.createTenant.fields.security.enableAutoCert)),k=(0,r.v9)((e=>e.createTenant.fields.security.enableTLS)),w=(0,r.v9)((e=>e.createTenant.certificates.minioServerCertificates)),P=(0,r.v9)((e=>e.createTenant.certificates.kesServerCertificate)),I=(0,r.v9)((e=>e.createTenant.certificates.minioMTLSCertificate)),R=(0,r.v9)((e=>e.createTenant.certificates.kmsMTLSCertificate)),D=(0,r.v9)((e=>e.createTenant.certificates.kmsCA)),F=(0,r.v9)((e=>e.createTenant.fields.security.enableCustomCerts)),K=(0,r.v9)((e=>e.createTenant.fields.encryption.kesSecurityContext)),[E,L]=(0,a.useState)({});let z=!1;k&&(T||w&&w.filter((e=>e.encoded_key&&e.encoded_cert)).length>0)&&(z=!0);const O=(0,a.useCallback)(((e,t)=>{n((0,C.HM)({pageName:"encryption",field:e,value:t}))}),[n]),M=e=>{L((0,v.h)(E,e))};return(0,a.useEffect)((()=>{let e=[];c&&(e=[{fieldKey:"rawConfiguration",required:o>0,value:s},{fieldKey:"replicas",required:!0,value:i,customValidation:parseInt(i)<1,customValidationMessage:"Replicas needs to be 1 or greater"},{fieldKey:"kes_securityContext_runAsUser",required:!0,value:K.runAsUser,customValidation:""===K.runAsUser||parseInt(K.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"kes_securityContext_runAsGroup",required:!0,value:K.runAsGroup,customValidation:""===K.runAsGroup||parseInt(K.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"kes_securityContext_fsGroup",required:!0,value:K.fsGroup,customValidation:""===K.fsGroup||parseInt(K.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}],F&&(e=[...e,{fieldKey:"serverKey",required:!T,value:P.encoded_key},{fieldKey:"serverCert",required:!T,value:P.encoded_cert},{fieldKey:"clientKey",required:!T,value:I.encoded_key},{fieldKey:"clientCert",required:!T,value:I.encoded_cert}]));const t=(0,f.R)(e);n((0,C.NO)({pageName:"encryption",valid:0===Object.keys(t).length})),L(t)}),[s,o,c,d,m,p,h,g,b,Z,n,T,F,P.encoded_key,P.encoded_cert,I.encoded_key,I.encoded_cert,K,i]),(0,_.jsxs)(x.Z,{className:t.paperWrapper,children:[(0,_.jsxs)(l.ZP,{container:!0,alignItems:"center",children:[(0,_.jsx)(l.ZP,{item:!0,xs:!0,children:(0,_.jsx)(U,{children:"Encryption"})}),(0,_.jsx)(l.ZP,{item:!0,xs:4,justifyContent:"end",textAlign:"right",children:(0,_.jsx)(y.Z,{label:"",indicatorLabels:["Enabled","Disabled"],checked:c,value:"tenant_encryption",id:"tenant-encryption",name:"tenant-encryption",onChange:e=>{const t=e.target.checked;O("enableEncryption",t)},description:"",disabled:!z})})]}),(0,_.jsxs)(l.ZP,{container:!0,spacing:1,children:[(0,_.jsx)(l.ZP,{item:!0,xs:12,children:(0,_.jsx)("span",{className:t.descriptionText,children:"MinIO Server-Side Encryption (SSE) protects objects as part of write operations, allowing clients to take advantage of server processing power to secure objects at the storage layer (encryption-at-rest). SSE also provides key functionality to regulatory and compliance requirements around secure locking and erasure."})}),(0,_.jsx)(l.ZP,{xs:12,children:(0,_.jsx)(re.Z,{})}),c&&(0,_.jsxs)(a.Fragment,{children:[(0,_.jsx)(l.ZP,{item:!0,xs:12,children:(0,_.jsxs)(ae.Z,{value:o,onChange:(e,t)=>{O("encryptionTab",t)},indicatorColor:"primary",textColor:"primary","aria-label":"cluster-tabs",variant:"scrollable",scrollButtons:"auto",children:[(0,_.jsx)(ie.Z,{id:"kms-options",label:"Options"}),(0,_.jsx)(ie.Z,{id:"kms-raw-configuration",label:"Raw Edit"})]})}),o?(0,_.jsx)(a.Fragment,{children:(0,_.jsx)(l.ZP,{item:!0,xs:12,children:(0,_.jsx)(se.Z,{value:s,mode:"yaml",onBeforeChange:(e,t,n)=>{O("rawConfiguration",n)},editorHeight:"550px"})})}):(0,_.jsxs)(a.Fragment,{children:[(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.encryptionTypeOptions,children:(0,_.jsx)(A.Z,{currentSelection:d,id:"encryptionType",name:"encryptionType",label:"KMS",onChange:e=>{O("encryptionType",e.target.value)},selectorOptions:[{label:"Vault",value:"vault"},{label:"AWS",value:"aws"},{label:"Gemalto",value:"gemalto"},{label:"GCP",value:"gcp"},{label:"Azure",value:"azure"}]})}),"vault"===d&&(0,_.jsx)(W,{}),"azure"===d&&(0,_.jsx)($,{}),"gcp"===d&&(0,_.jsx)(J,{}),"aws"===d&&(0,_.jsx)(ne,{}),"gemalto"===d&&(0,_.jsx)(ee,{})]}),(0,_.jsx)("div",{className:t.headerElement,children:(0,_.jsx)("h4",{className:t.h3Section,children:"Additional Configurations"})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,children:(0,_.jsx)(y.Z,{value:"enableCustomCertsForKES",id:"enableCustomCertsForKES",name:"enableCustomCertsForKES",checked:S||!T,onChange:e=>{const t=e.target.checked;O("enableCustomCertsForKES",t)},label:"Custom Certificates",disabled:!T})}),(S||!T)&&(0,_.jsxs)(a.Fragment,{children:[(0,_.jsx)(l.ZP,{container:!0,children:(0,_.jsx)(l.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,_.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,_.jsx)("legend",{className:t.descriptionText,children:"Encryption server certificates"}),(0,_.jsx)(B.Z,{onChange:(e,t)=>{n((0,C.uN)({key:"key",fileName:t,value:e})),M("serverKey")},accept:".key,.pem",id:"serverKey",name:"serverKey",label:"Key",error:E.serverKey||"",value:P.key,required:!T}),(0,_.jsx)(B.Z,{onChange:(e,t)=>{n((0,C.uN)({key:"cert",fileName:t,value:e})),M("serverCert")},accept:".cer,.crt,.cert,.pem",id:"serverCert",name:"serverCert",label:"Cert",error:E.serverCert||"",value:P.cert,required:!T})]})})}),(0,_.jsx)(l.ZP,{container:!0,style:{marginBottom:15},children:(0,_.jsx)(l.ZP,{item:!0,xs:12,children:(0,_.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,_.jsx)("legend",{className:t.descriptionText,children:"MinIO mTLS certificates (connection between MinIO and the Encryption server)"}),(0,_.jsx)(B.Z,{onChange:(e,t)=>{n((0,C.Ud)({key:"key",fileName:t,value:e})),M("clientKey")},accept:".key,.pem",id:"clientKey",name:"clientKey",label:"Key",error:E.clientKey||"",value:I.key,required:!T}),(0,_.jsx)(B.Z,{onChange:(e,t)=>{n((0,C.Ud)({key:"cert",fileName:t,value:e})),M("clientCert")},accept:".cer,.crt,.cert,.pem",id:"clientCert",name:"clientCert",label:"Cert",error:E.clientCert||"",value:I.cert,required:!T})]})})}),(0,_.jsx)(l.ZP,{container:!0,className:t.mutualTlsConfig,children:(0,_.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,_.jsx)("legend",{className:t.descriptionText,children:"KMS mTLS certificates (connection between the Encryption server and the KMS)"}),(0,_.jsx)(B.Z,{onChange:(e,t)=>{n((0,C.Tr)({key:"key",fileName:t,value:e})),M("vault_key")},accept:".key,.pem",id:"vault_key",name:"vault_key",label:"Key",value:R.key}),(0,_.jsx)(B.Z,{onChange:(e,t)=>{n((0,C.Tr)({key:"cert",fileName:t,value:e})),M("vault_cert")},accept:".cer,.crt,.cert,.pem",id:"vault_cert",name:"vault_cert",label:"Cert",value:R.cert}),(0,_.jsx)(B.Z,{onChange:(e,t)=>{n((0,C.b9)({fileName:t,value:e})),M("vault_ca")},accept:".cer,.crt,.cert,.pem",id:"vault_ca",name:"vault_ca",label:"CA",value:D.cert})]})})]}),(0,_.jsxs)(l.ZP,{item:!0,xs:12,children:[(0,_.jsx)(l.ZP,{item:!0,xs:12,classes:t.formFieldRow,children:(0,_.jsx)(j.Z,{type:"number",min:"1",id:"replicas",name:"replicas",onChange:e=>{O("replicas",e.target.value),M("replicas")},label:"Replicas",value:i,required:!0,error:E.replicas||""})}),(0,_.jsxs)("fieldset",{className:t.fieldGroup,style:{marginTop:15},children:[(0,_.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for KES pods"}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.kesSecurityContext,children:(0,_.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveContainer),children:[(0,_.jsx)("div",{className:"".concat(t.formFieldRow," ").concat(t.rightSpacer),children:(0,_.jsx)(j.Z,{type:"number",id:"kes_securityContext_runAsUser",name:"kes_securityContext_runAsUser",onChange:e=>{O("kesSecurityContext",{...K,runAsUser:e.target.value}),M("kes_securityContext_runAsUser")},label:"Run As User",value:K.runAsUser,required:!0,error:E.kes_securityContext_runAsUser||"",min:"0"})}),(0,_.jsx)("div",{className:"".concat(t.formFieldRow," ").concat(t.rightSpacer),children:(0,_.jsx)(j.Z,{type:"number",id:"kes_securityContext_runAsGroup",name:"kes_securityContext_runAsGroup",onChange:e=>{O("kesSecurityContext",{...K,runAsGroup:e.target.value}),M("kes_securityContext_runAsGroup")},label:"Run As Group",value:K.runAsGroup,required:!0,error:E.kes_securityContext_runAsGroup||"",min:"0"})})]})}),(0,_.jsx)("br",{}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.kesSecurityContext,children:(0,_.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveContainer),children:[(0,_.jsx)("div",{className:"".concat(t.formFieldRow," ").concat(t.rightSpacer),children:(0,_.jsx)(j.Z,{type:"number",id:"kes_securityContext_fsGroup",name:"kes_securityContext_fsGroup",onChange:e=>{O("kesSecurityContext",{...K,fsGroup:e.target.value}),M("kes_securityContext_fsGroup")},label:"FsGroup",value:K.fsGroup,required:!0,error:E.kes_securityContext_fsGroup||"",min:"0"})}),(0,_.jsx)("div",{className:"".concat(t.formFieldRow," ").concat(t.rightSpacer),children:(0,_.jsx)(N.Z,{label:"FsGroupChangePolicy",id:"securityContext_fsGroupChangePolicy",name:"securityContext_fsGroupChangePolicy",value:K.fsGroupChangePolicy,onChange:e=>{O("kesSecurityContext",{...K,fsGroupChangePolicy:e.target.value})},options:[{label:"Always",value:"Always"},{label:"OnRootMismatch",value:"OnRootMismatch"}]})})]})}),(0,_.jsx)("br",{}),(0,_.jsx)(l.ZP,{item:!0,xs:12,children:(0,_.jsx)("div",{className:t.multiContainer,children:(0,_.jsx)(y.Z,{value:"kesSecurityContextRunAsNonRoot",id:"kes_securityContext_runAsNonRoot",name:"kes_securityContext_runAsNonRoot",checked:K.runAsNonRoot,onChange:e=>{const t=e.target.checked;O("kesSecurityContext",{...K,runAsNonRoot:t})},label:"Do not run as Root"})})})]})]})]})]})]})}));var oe=n(81207),ce=n(45660),de=n(87995);const me=(0,p.Z)((e=>(0,c.Z)({overlayAction:{marginLeft:10,display:"flex",alignItems:"center","& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},affinityConfigField:{display:"flex"},affinityFieldLabel:{display:"flex",flexFlow:"column",flex:1},radioField:{display:"flex",alignItems:"flex-start",marginTop:10,"& div:first-child":{display:"flex",flexFlow:"column",alignItems:"baseline",textAlign:"left !important"}},affinityLabelKey:{"& div:first-child":{marginBottom:0}},affinityLabelValue:{marginLeft:10,"& div:first-child":{marginBottom:0}},rowActions:{display:"flex",alignItems:"center"},affinityRow:{marginBottom:10,display:"flex"},...d.oO,...d.AK})))((e=>{let{classes:t}=e;const n=(0,u.TL)(),i=(0,r.v9)((e=>e.createTenant.fields.affinity.podAffinity)),s=(0,r.v9)((e=>e.createTenant.fields.affinity.nodeSelectorLabels)),o=(0,r.v9)((e=>e.createTenant.fields.affinity.withPodAntiAffinity)),c=(0,r.v9)((e=>e.createTenant.nodeSelectorPairs)),d=(0,r.v9)((e=>e.createTenant.tolerations)),[m,p]=(0,a.useState)({}),[g,v]=(0,a.useState)(!0),[b,T]=(0,a.useState)({}),[k,w]=(0,a.useState)([]),P=(0,a.useCallback)(((e,t)=>{n((0,C.HM)({pageName:"affinity",field:e,value:t}))}),[n]);(0,a.useEffect)((()=>{g&&oe.Z.invoke("GET","/api/v1/nodes/labels").then((e=>{v(!1),T(e);let t=[];for(let n in e)t.push({label:n,value:n});w(t)})).catch((e=>{v(!1),n((0,de.zb)(e)),T({})}))}),[n,g]),(0,a.useEffect)((()=>{if(c){const e=c.filter((e=>""!==e.key)).map((e=>"".concat(e.key,"=").concat(e.value))).filter(((e,t,n)=>n.indexOf(e)===t)).join("&");P("nodeSelectorLabels",e)}}),[c,P]),(0,a.useEffect)((()=>{let e=[];if("nodeSelector"===i){let t=!0;const n=s.split("&");1===n.length&&""===n[0]&&(t=!1),n.forEach(((e,a)=>{const i=e.split("=");2!==i.length&&(t=!1),a+1!==n.length&&(""!==i[0]&&""!==i[1]||(t=!1))})),e=[...e,{fieldKey:"labels",required:!0,value:s,customValidation:!t,customValidationMessage:"You need to add at least one label key-pair"}]}const t=(0,f.R)(e);n((0,C.NO)({pageName:"affinity",valid:0===Object.keys(t).length})),p(t)}),[n,i,s]);const I=(e,t,a)=>{const i={...d[e],[t]:a};n((0,C.iU)({index:e,tolerationValue:i}))};return(0,_.jsxs)(x.Z,{className:t.paperWrapper,children:[(0,_.jsxs)("div",{className:t.headerElement,children:[(0,_.jsx)(S.Z,{children:"Pod Placement"}),(0,_.jsx)("span",{className:t.descriptionText,children:"Configure how pods will be assigned to nodes"})]}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.affinityConfigField,children:(0,_.jsxs)(l.ZP,{item:!0,className:t.affinityFieldLabel,children:[(0,_.jsx)("div",{className:t.label,children:"Type"}),(0,_.jsx)("div",{className:"".concat(t.descriptionText," ").concat(t.affinityHelpText),children:"MinIO supports multiple configurations for Pod Affinity"}),(0,_.jsx)(l.ZP,{item:!0,className:t.radioField,children:(0,_.jsx)(A.Z,{currentSelection:i,id:"affinity-options",name:"affinity-options",label:" ",onChange:e=>{P("podAffinity",e.target.value)},selectorOptions:[{label:"None",value:"none"},{label:"Default (Pod Anti-Affinity)",value:"default"},{label:"Node Selector",value:"nodeSelector"}]})})]})}),"nodeSelector"===i&&(0,_.jsxs)(a.Fragment,{children:[(0,_.jsx)("br",{}),(0,_.jsx)(l.ZP,{item:!0,xs:12,children:(0,_.jsx)(y.Z,{value:"with_pod_anti_affinity",id:"with_pod_anti_affinity",name:"with_pod_anti_affinity",checked:o,onChange:e=>{const t=e.target.checked;P("withPodAntiAffinity",t)},label:"With Pod Anti-Affinity"})}),(0,_.jsxs)(l.ZP,{item:!0,xs:12,children:[(0,_.jsx)("h3",{children:"Labels"}),(0,_.jsx)("span",{className:t.error,children:m.labels}),(0,_.jsx)(l.ZP,{container:!0,children:c&&c.map(((e,a)=>(0,_.jsxs)(l.ZP,{item:!0,xs:12,className:t.affinityRow,children:[(0,_.jsxs)(l.ZP,{item:!0,xs:5,className:t.affinityLabelKey,children:[k.length>0&&(0,_.jsx)(N.Z,{onChange:e=>{const t=e.target.value,i={key:t,value:b[t][0]},s=[...c];s[a]=i,n((0,C.i$)(s))},id:"select-access-policy",name:"select-access-policy",label:"",value:e.key,options:k}),0===k.length&&(0,_.jsx)(j.Z,{id:"nodeselector-key-".concat(a.toString()),label:"",name:"nodeselector-".concat(a.toString()),value:e.key,onChange:e=>{const t=[...c];t[a]={key:t[a].key,value:e.target.value},n((0,C.i$)(t))},index:a,placeholder:"Key"})]}),(0,_.jsxs)(l.ZP,{item:!0,xs:5,className:t.affinityLabelValue,children:[k.length>0&&(0,_.jsx)(N.Z,{onChange:e=>{const t=[...c];t[a]={key:t[a].key,value:e.target.value},n((0,C.i$)(t))},id:"select-access-policy",name:"select-access-policy",label:"",value:e.value,options:b[e.key]?b[e.key].map((e=>({label:e,value:e}))):[]}),0===k.length&&(0,_.jsx)(j.Z,{id:"nodeselector-value-".concat(a.toString()),label:"",name:"nodeselector-".concat(a.toString()),value:e.value,onChange:e=>{const t=[...c];t[a]={key:t[a].key,value:e.target.value},n((0,C.i$)(t))},index:a,placeholder:"value"})]}),(0,_.jsxs)(l.ZP,{item:!0,xs:2,className:t.rowActions,children:[(0,_.jsx)("div",{className:t.overlayAction,children:(0,_.jsx)(h.Z,{size:"small",onClick:()=>{const e=[...c];k.length>0?e.push({key:k[0].value,value:b[k[0].value][0]}):e.push({key:"",value:""}),n((0,C.i$)(e))},disabled:a!==c.length-1,children:(0,_.jsx)(Z.dtP,{})})}),(0,_.jsx)("div",{className:t.overlayAction,children:(0,_.jsx)(h.Z,{size:"small",onClick:()=>{const e=c.filter(((e,t)=>t!==a));n((0,C.i$)(e))},disabled:c.length<=1,children:(0,_.jsx)(Z.HFL,{})})})]})]},"affinity-keyVal-".concat(a.toString()))))})]})]}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.affinityConfigField,children:(0,_.jsxs)(l.ZP,{item:!0,className:t.affinityFieldLabel,children:[(0,_.jsx)("h3",{children:"Tolerations"}),(0,_.jsx)("span",{className:t.error,children:m.tolerations}),(0,_.jsx)(l.ZP,{container:!0,children:d&&d.map(((e,a)=>{var i;return(0,_.jsxs)(l.ZP,{item:!0,xs:12,className:t.affinityRow,children:[(0,_.jsx)(ce.Z,{effect:e.effect,onEffectChange:e=>{I(a,"effect",e)},tolerationKey:e.key,onTolerationKeyChange:e=>{I(a,"key",e)},operator:e.operator,onOperatorChange:e=>{I(a,"operator",e)},value:e.value,onValueChange:e=>{I(a,"value",e)},tolerationSeconds:(null===(i=e.tolerationSeconds)||void 0===i?void 0:i.seconds)||0,onSecondsChange:e=>{I(a,"tolerationSeconds",{seconds:e})},index:a}),(0,_.jsx)("div",{className:t.overlayAction,children:(0,_.jsx)(h.Z,{size:"small",onClick:()=>{n((0,C.ly)())},disabled:a!==d.length-1,children:(0,_.jsx)(Z.dtP,{})})}),(0,_.jsx)("div",{className:t.overlayAction,children:(0,_.jsx)(h.Z,{size:"small",onClick:()=>n((0,C.JX)(a)),disabled:d.length<=1,children:(0,_.jsx)(Z.HFL,{})})})]},"affinity-keyVal-".concat(a.toString()))}))})]})})]})})),ue=(0,p.Z)((e=>(0,c.Z)({...d.DF,...d.AK})))((e=>{let{classes:t}=e;const n=(0,u.TL)(),i=(0,r.v9)((e=>e.createTenant.fields.configure.customImage)),s=(0,r.v9)((e=>e.createTenant.fields.configure.imageName)),o=(0,r.v9)((e=>e.createTenant.fields.configure.customDockerhub)),c=(0,r.v9)((e=>e.createTenant.fields.configure.imageRegistry)),d=(0,r.v9)((e=>e.createTenant.fields.configure.imageRegistryUsername)),m=(0,r.v9)((e=>e.createTenant.fields.configure.imageRegistryPassword)),p=(0,r.v9)((e=>e.createTenant.fields.configure.tenantCustom)),h=(0,r.v9)((e=>e.createTenant.fields.configure.kesImage)),[g,b]=(0,a.useState)({}),Z=(0,a.useCallback)(((e,t)=>{n((0,C.HM)({pageName:"configure",field:e,value:t}))}),[n]);(0,a.useEffect)((()=>{let e=[];i&&(e=[...e,{fieldKey:"image",required:!1,value:s,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/minio:VERSION'"},{fieldKey:"kesImage",required:!1,value:h,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/kes:VERSION'"}],o&&(e=[...e,{fieldKey:"registry",required:!0,value:c},{fieldKey:"registryUsername",required:!0,value:d},{fieldKey:"registryPassword",required:!0,value:m}]));const t=(0,f.R)(e);n((0,C.NO)({pageName:"configure",valid:0===Object.keys(t).length})),b(t)}),[i,s,h,o,c,d,m,n,p]);const N=e=>{b((0,v.h)(g,e))};return(0,_.jsxs)(x.Z,{className:t.paperWrapper,children:[(0,_.jsxs)("div",{className:t.headerElement,children:[(0,_.jsx)(S.Z,{children:"Container Images"}),(0,_.jsx)("span",{className:t.descriptionText,children:"Specify the container images used by the Tenant and its features."})]}),(0,_.jsxs)(a.Fragment,{children:[(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"image",name:"image",onChange:e=>{Z("imageName",e.target.value),N("image")},label:"MinIO",value:s,error:g.image||"",placeholder:"minio/minio:RELEASE.2023-10-07T15-07-38Z"})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"kesImage",name:"kesImage",onChange:e=>{Z("kesImage",e.target.value),N("kesImage")},label:"KES",value:h,error:g.kesImage||"",placeholder:"minio/kes:2023-10-03T00-48-37Z"})})]}),i&&(0,_.jsxs)(a.Fragment,{children:[(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)("h4",{children:"Custom Container Registry"})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(y.Z,{value:"custom_docker_hub",id:"custom_docker_hub",name:"custom_docker_hub",checked:o,onChange:e=>{const t=e.target.checked;Z("customDockerhub",t)},label:"Use a private container registry"})})]}),o&&(0,_.jsxs)(a.Fragment,{children:[(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"registry",name:"registry",onChange:e=>{Z("imageRegistry",e.target.value)},label:"Endpoint",value:c,error:g.registry||"",placeholder:"https://index.docker.io/v1/",required:!0})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"registryUsername",name:"registryUsername",onChange:e=>{Z("imageRegistryUsername",e.target.value)},label:"Username",value:d,error:g.registryUsername||"",required:!0})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(j.Z,{id:"registryPassword",name:"registryPassword",onChange:e=>{Z("imageRegistryPassword",e.target.value)},label:"Password",value:m,error:g.registryPassword||"",required:!0})})]})]})}));var pe=n(74794),xe=n(79836),he=n(53382),ge=n(53994),ve=n(35855),fe=n(45248);const ye=(0,p.Z)((e=>(0,c.Z)({root:{margin:4},table:{"& .MuiTableCell-root":{fontSize:13}},...d.oO,...d.AK})))((e=>{let{classes:t}=e;const n=(0,r.v9)((e=>e.createTenant.fields.tenantSize.nodes)),i=(0,r.v9)((e=>e.createTenant.fields.tenantSize.resourcesMemoryRequest)),s=(0,r.v9)((e=>e.createTenant.fields.tenantSize.ecParity)),l=(0,r.v9)((e=>e.createTenant.fields.tenantSize.distribution)),o=(0,r.v9)((e=>e.createTenant.fields.tenantSize.ecParityCalc)),c=(0,r.v9)((e=>e.createTenant.fields.tenantSize.resourcesCPURequest)),d=(0,r.v9)((e=>e.createTenant.fields.tenantSize.integrationSelection)),m=o.storageFactors.find((e=>e.erasureCode===s));return(0,_.jsxs)("div",{className:t.root,children:[(0,_.jsx)("h4",{children:"Resource Allocation"}),(0,_.jsx)(g.Z,{}),(0,_.jsx)(xe.Z,{className:t.table,"aria-label":"simple table",size:"small",children:(0,_.jsxs)(he.Z,{children:[(0,_.jsxs)(ve.Z,{children:[(0,_.jsx)(ge.Z,{scope:"row",children:"Number of Servers"}),(0,_.jsx)(ge.Z,{align:"right",children:parseInt(n)>0?n:"-"})]}),""===d.typeSelection&&""===d.storageClass&&(0,_.jsxs)(a.Fragment,{children:[(0,_.jsxs)(ve.Z,{children:[(0,_.jsx)(ge.Z,{scope:"row",children:"Drives per Server"}),(0,_.jsx)(ge.Z,{align:"right",children:l?l.disks:"-"})]}),(0,_.jsxs)(ve.Z,{children:[(0,_.jsx)(ge.Z,{scope:"row",children:"Drive Capacity"}),(0,_.jsx)(ge.Z,{align:"right",children:l?(0,fe.ae)(l.pvSize):"-"})]})]}),(0,_.jsxs)(ve.Z,{children:[(0,_.jsx)(ge.Z,{scope:"row",children:"Total Volumes"}),(0,_.jsx)(ge.Z,{align:"right",children:l?l.persistentVolumes:"-"})]}),""===d.typeSelection&&""===d.storageClass&&(0,_.jsxs)(a.Fragment,{children:[(0,_.jsxs)(ve.Z,{children:[(0,_.jsx)(ge.Z,{scope:"row",children:"Memory per Node"}),(0,_.jsxs)(ge.Z,{align:"right",children:[i," Gi"]})]}),(0,_.jsxs)(ve.Z,{children:[(0,_.jsx)(ge.Z,{style:{borderBottom:0},scope:"row",children:"CPU Selection"}),(0,_.jsx)(ge.Z,{style:{borderBottom:0},align:"right",children:c})]})]})]})}),0===o.error&&m&&(0,_.jsxs)(a.Fragment,{children:[(0,_.jsx)("h4",{children:"Erasure Code Configuration"}),(0,_.jsx)(g.Z,{}),(0,_.jsx)(xe.Z,{className:t.table,"aria-label":"simple table",size:"small",children:(0,_.jsxs)(he.Z,{children:[(0,_.jsxs)(ve.Z,{children:[(0,_.jsx)(ge.Z,{scope:"row",children:"EC Parity"}),(0,_.jsx)(ge.Z,{align:"right",children:""!==s?s:"-"})]}),(0,_.jsxs)(ve.Z,{children:[(0,_.jsx)(ge.Z,{scope:"row",children:"Raw Capacity"}),(0,_.jsx)(ge.Z,{align:"right",children:(0,fe.ae)(o.rawCapacity)})]}),(0,_.jsxs)(ve.Z,{children:[(0,_.jsx)(ge.Z,{scope:"row",children:"Usable Capacity"}),(0,_.jsx)(ge.Z,{align:"right",children:(0,fe.ae)(m.maxCapacity)})]}),(0,_.jsxs)(ve.Z,{children:[(0,_.jsx)(ge.Z,{style:{borderBottom:0},scope:"row",children:"Server Failures Tolerated"}),(0,_.jsx)(ge.Z,{style:{borderBottom:0},align:"right",children:l?Math.floor(m.maxFailureTolerations/l.disks):"-"})]})]})})]}),""!==d.typeSelection&&""!==d.storageClass&&(0,_.jsxs)(a.Fragment,{children:[(0,_.jsx)("h4",{children:"Single Instance Configuration"}),(0,_.jsx)(g.Z,{}),(0,_.jsx)(xe.Z,{className:t.table,"aria-label":"simple table",size:"small",children:(0,_.jsxs)(he.Z,{children:[(0,_.jsxs)(ve.Z,{children:[(0,_.jsx)(ge.Z,{scope:"row",children:"CPU"}),(0,_.jsx)(ge.Z,{align:"right",children:0!==d.CPU?d.CPU:"-"})]}),(0,_.jsxs)(ve.Z,{children:[(0,_.jsx)(ge.Z,{scope:"row",children:"Memory"}),(0,_.jsx)(ge.Z,{align:"right",children:0!==d.memory?"".concat(d.memory," Gi"):"-"})]}),(0,_.jsxs)(ve.Z,{children:[(0,_.jsx)(ge.Z,{scope:"row",children:"Drives per Server"}),(0,_.jsx)(ge.Z,{align:"right",children:0!==d.drivesPerServer?"".concat(d.drivesPerServer):"-"})]}),(0,_.jsxs)(ve.Z,{children:[(0,_.jsx)(ge.Z,{style:{borderBottom:0},scope:"row",children:"Drive Size"}),(0,_.jsxs)(ge.Z,{style:{borderBottom:0},align:"right",children:[d.driveSize.driveSize,d.driveSize.sizeUnit]})]})]})})]})]})}));var je=n(19720),be=n(45884),Ze=n(46078),Ce=n(51691),Ne=n(40306),Se=n(98222);const _e=(0,P.Z)((e=>(0,c.Z)({wrapText:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"},...d.oO,...d.Qw}))),Te=()=>{const e=(0,u.TL)(),t=_e(),n=(0,r.v9)((e=>e.createTenant.fields.nameTenant.namespace)),i=(0,r.v9)((e=>e.createTenant.addNSLoading)),s=(0,r.v9)((e=>e.createTenant.addNSOpen));return(0,_.jsx)(Ne.Z,{title:"New namespace",confirmText:"Create",confirmButtonProps:{variant:"callAction"},isOpen:s,titleIcon:(0,_.jsx)(Z.EjK,{}),isLoading:i,onConfirm:()=>{e((0,Se.QD)())},onClose:()=>{e((0,C.pb)())},confirmationContent:(0,_.jsxs)(a.Fragment,{children:[i&&(0,_.jsx)(o.Z,{}),(0,_.jsxs)(Ce.Z,{children:["Are you sure you want to add a namespace called",(0,_.jsx)("br",{}),(0,_.jsx)("b",{className:t.wrapText,children:n}),"?"]})]})})};var Ae=n(48573),ke=n.n(Ae);const we=e=>{let{formToRender:t}=e;const n=(0,u.TL)(),i=(0,r.v9)((e=>e.createTenant.fields.nameTenant.namespace)),s=(0,r.v9)((e=>e.createTenant.showNSCreateButton)),l=(0,r.v9)((e=>e.createTenant.validationErrors.namespace)),o=(0,r.v9)((e=>e.createTenant.addNSOpen)),c=(0,a.useMemo)((()=>ke()((()=>{n((0,Se.IO)())}),500)),[n]);(0,a.useEffect)((()=>{if(""!==i)return c(),c.cancel}),[c,i]);return(0,_.jsxs)(a.Fragment,{children:[o&&(0,_.jsx)(Te,{}),(0,_.jsx)(j.Z,{id:"namespace",name:"namespace",onChange:e=>{n((0,C.Zx)(e.target.value))},label:"Namespace",value:i,error:l||"",overlayId:"add-namespace",overlayIcon:s?(0,_.jsx)(Z.dtP,{}):null,overlayAction:()=>{n((0,C.Oj)())},required:!0})]})},Pe=()=>{const e=(0,u.TL)(),t=(0,r.v9)((e=>e.createTenant.fields.nameTenant.tenantName)),n=(0,r.v9)((e=>e.createTenant.validationErrors["tenant-name"]));return(0,_.jsx)(j.Z,{id:"tenant-name",name:"tenant-name",onChange:t=>{e((0,C.V7)(t.target.value))},label:"Name",value:t,required:!0,error:n||""})},Ie=(0,p.Z)((e=>(0,c.Z)({sizePreview:{marginLeft:10,background:"#FFFFFF",border:"1px solid #EAEAEA",padding:2,marginTop:20},...d.DF,...d.oO,...d.AK})))((e=>{let{classes:t,formToRender:n}=e;const i=(0,u.TL)(),o=(0,r.v9)((e=>e.createTenant.fields.nameTenant.selectedStorageClass)),c=(0,r.v9)((e=>e.createTenant.fields.nameTenant.selectedStorageType)),d=(0,r.v9)((e=>e.createTenant.storageClasses)),m=(0,r.v9)(Ze.$4),p=(0,a.useCallback)(((e,t)=>{i((0,C.HM)({pageName:"nameTenant",field:e,value:t}))}),[i]);return(0,a.useEffect)((()=>{const e=n===be.cy.default&&d.length>0||n!==be.cy.default&&""!==c;i((0,C.NO)({pageName:"nameTenant",valid:e}))}),[d,i,c,n]),(0,_.jsx)(a.Fragment,{children:(0,_.jsxs)(l.ZP,{container:!0,children:[(0,_.jsx)(l.ZP,{item:!0,sx:{width:"calc(100% - 320px)"},children:(0,_.jsx)(x.Z,{className:t.paperWrapper,sx:{minHeight:550},children:(0,_.jsxs)(l.ZP,{container:!0,children:[(0,_.jsxs)(l.ZP,{item:!0,xs:12,children:[(0,_.jsxs)("div",{className:t.headerElement,children:[(0,_.jsx)(S.Z,{children:"Name"}),(0,_.jsx)("span",{className:t.descriptionText,children:"How would you like to name this new tenant?"})]}),(0,_.jsx)("div",{className:t.formFieldRow,children:(0,_.jsx)(Pe,{})})]}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(we,{formToRender:n})}),n===be.cy.default?(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(N.Z,{id:"storage_class",name:"storage_class",onChange:e=>{p("selectedStorageClass",e.target.value)},label:"Storage Class",value:o,options:d,disabled:d.length<1})}):(0,_.jsx)(l.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,_.jsx)(N.Z,{id:"storage_type",name:"storage_type",onChange:e=>{i((0,C.Qy)({storageType:e.target.value,features:m}))},label:s()(be.Hd,"".concat(n,".variantSelectorLabel"),"Storage Type"),value:c,options:s()(be.Hd,"".concat(n,".variantSelectorValues"),[])})}),n===be.cy.default?(0,_.jsx)(je.Z,{}):s()(be.Hd,"".concat(n,".sizingComponent"),null)]})})}),(0,_.jsx)(l.ZP,{item:!0,children:(0,_.jsx)("div",{className:t.sizePreview,children:(0,_.jsx)(ye,{})})})]})})})),Re=()=>{const e=(0,r.v9)(Ze.$4),[t,n]=(0,a.useState)(null);return(0,a.useEffect)((()=>{let t=be.cy.default;if(e&&0!==e.length){Object.keys(be.I8).forEach((n=>{e.includes(n)&&(t=s()(be.I8,n,be.cy.default))}))}n(t)}),[e]),null===t?null:(0,_.jsx)(Ie,{formToRender:t})},De=["nameTenant","tenantSize","configure","affinity","identityProvider","security","encryption"];var Fe=n(84218);const Ke=()=>{const e=(0,u.TL)(),t=(0,r.v9)((e=>e.createTenant.addingTenant)),n=(0,r.v9)((e=>e.createTenant.validPages)),a=(0,r.v9)((e=>e.createTenant.fields.nameTenant.selectedStorageClass)),i=!t&&""!==a&&De.every((e=>n.includes(e)));return(0,_.jsx)(Z.zxk,{id:"wizard-button-Create",variant:"callAction",color:"primary",onClick:()=>{e((0,Fe.e)())},disabled:!i,label:"Create"},"button-AddTenant-Create")};var Ee=n(37798),Le=n(57689);const ze=()=>{const e=(0,u.TL)(),t=(0,Le.s0)(),n=(0,r.v9)((e=>e.createTenant.showNewCredentials)),i=(0,r.v9)((e=>e.createTenant.createdAccount));return(0,_.jsx)(a.Fragment,{children:n&&(0,_.jsx)(Ee.default,{newServiceAccount:i,open:n,closeModal:()=>{e((0,C.dS)()),t("/tenants")},entity:"Tenant"})})};var Oe=n(47974);const Me=(0,P.Z)((e=>(0,c.Z)({pageBox:{border:"1px solid #EAEAEA"},...d.oO,...d.AK,...d.Je}))),Ge=()=>{const e=(0,u.TL)(),t=(0,Le.s0)(),n=Me(),i=(0,r.v9)(Ze.$4),c=(0,r.v9)((e=>e.createTenant.addingTenant)),[d,p]=(0,a.useState)(null);(0,a.useEffect)((()=>{let e=be.cy.default;if(i&&0!==i.length){Object.keys(be.I8).forEach((t=>{i.includes(t)&&(e=s()(be.I8,t,be.cy.default))}))}p(e)}),[i]);const x={label:"Cancel",type:"other",enabled:!0,action:()=>{e((0,C.dS)()),t("/tenants")}},h={componentRender:(0,_.jsx)(Ke,{},"create-tenant")};let g=[{label:"Setup",componentRender:(0,_.jsx)(Re,{}),buttons:[x,h]},{label:"Configure",advancedOnly:!0,componentRender:(0,_.jsx)(T,{}),buttons:[x,h]},{label:"Images",advancedOnly:!0,componentRender:(0,_.jsx)(ue,{}),buttons:[x,h]},{label:"Pod Placement",advancedOnly:!0,componentRender:(0,_.jsx)(me,{}),buttons:[x,h]},{label:"Identity Provider",advancedOnly:!0,componentRender:(0,_.jsx)(G,{}),buttons:[x,h]},{label:"Security",advancedOnly:!0,componentRender:(0,_.jsx)(q,{}),buttons:[x,h]},{label:"Encryption",advancedOnly:!0,componentRender:(0,_.jsx)(le,{}),buttons:[x,h]}];return(0,_.jsxs)(a.Fragment,{children:[(0,_.jsx)(ze,{}),(0,_.jsx)(Oe.Z,{label:(0,_.jsx)(Z.hbI,{onClick:()=>{e((0,C.dS)()),t("/tenants")},label:"Tenants"})}),(0,_.jsxs)(pe.Z,{children:[c&&(0,_.jsx)(l.ZP,{item:!0,xs:12,children:(0,_.jsx)(o.Z,{})}),(0,_.jsx)(l.ZP,{item:!0,xs:12,className:n.pageBox,children:(0,_.jsx)(m.Z,{wizardSteps:g})}),d===be.cy.aws&&(0,_.jsx)(l.ZP,{item:!0,xs:12,style:{marginTop:16},children:(0,_.jsx)(Z.KfX,{title:"EBS Volume Configuration.",iconComponent:(0,_.jsx)(Z.idV,{}),help:(0,_.jsxs)(a.Fragment,{children:[(0,_.jsx)("b",{children:"Performance Optimized"}),": Uses the ",(0,_.jsx)("i",{children:"gp3"})," EBS storage class class configured at 1,000Mi/s throughput and 16,000 IOPS, however the minimum volume size for this type of EBS volume is ",(0,_.jsx)("b",{children:"32Gi"}),".",(0,_.jsx)("br",{}),(0,_.jsx)("br",{}),(0,_.jsx)("b",{children:"Storage Optimized"}),": Uses the ",(0,_.jsx)("i",{children:"sc1"})," EBS storage class, however the minimum volume size for this type of EBS volume is \xa0",(0,_.jsx)("b",{children:"16Ti"})," to unlock their maximum throughput speed of 250Mi/s."]})})})]})]})}},88070:(e,t,n)=>{n.d(t,{Z:()=>c});n(72791);var a=n(78687),i=n(64554),s=n(75952),r=n(57689),l=n(80184);const o=e=>{let{icon:t,description:n}=e;return(0,l.jsxs)(i.Z,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[t," ",(0,l.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:n})]})},c=()=>{const e=(0,r.UO)(),t=e.tenantName||"",n=e.tenantNamespace||"",c=(0,a.v9)((e=>""!==n?n:""!==e.createTenant.fields.nameTenant.namespace?e.createTenant.fields.nameTenant.namespace:"")),d=(0,a.v9)((e=>""!==t?t:""!==e.createTenant.fields.nameTenant.tenantName?e.createTenant.fields.nameTenant.tenantName:""));return(0,l.jsx)(i.Z,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px",marginTop:{xs:"0px"}},children:(0,l.jsxs)(i.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,l.jsx)(o,{icon:(0,l.jsx)(s.Baz,{}),description:"TLS Certificates Warning"}),(0,l.jsxs)(i.Z,{sx:{fontSize:"14px",marginBottom:"15px"},children:["Automatic certificate generation is not enabled.",(0,l.jsx)("br",{}),(0,l.jsx)("br",{}),"If you wish to continue only with ",(0,l.jsx)("b",{children:"custom certificates"})," make sure they are valid for the following internode hostnames, i.e.:",(0,l.jsx)("br",{}),(0,l.jsx)("br",{}),(0,l.jsxs)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:["minio.",c,(0,l.jsx)("br",{}),"minio.",c,".svc",(0,l.jsx)("br",{}),"minio.",c,".svc.",(0,l.jsx)("br",{}),"*.",d,"-hl.",c,".svc.",(0,l.jsx)("br",{}),"*.",c,".svc."]}),(0,l.jsx)("br",{}),"Replace ",(0,l.jsx)("em",{children:""}),","," ",(0,l.jsx)("em",{children:""})," and",(0,l.jsx)("em",{children:""})," with the actual values for your MinIO tenant.",(0,l.jsx)("br",{}),(0,l.jsx)("br",{}),"You can learn more at our"," ",(0,l.jsx)("a",{href:"https://min.io/docs/minio/kubernetes/upstream/operations/network-encryption.html?ref=op#id5",target:"_blank",rel:"noopener",children:"documentation"}),"."]})]})})}},68456:(e,t,n)=>{n.d(t,{QT:()=>l,YH:()=>o,mo:()=>r});var a=n(61889),i=n(75952),s=n(80184);const r=()=>(0,s.jsxs)(a.ZP,{container:!0,columnGap:1,children:[(0,s.jsx)(a.ZP,{children:(0,s.jsx)(i.gyG,{width:"16px",height:"16px"})}),(0,s.jsx)(a.ZP,{item:!0,children:"Open ID"})]}),l=()=>(0,s.jsxs)(a.ZP,{container:!0,columnGap:1,children:[(0,s.jsx)(a.ZP,{children:(0,s.jsx)(i.vcZ,{width:"16px",height:"16px"})}),(0,s.jsx)(a.ZP,{item:!0,children:"LDAP / Active Directory"})]}),o=()=>(0,s.jsxs)(a.ZP,{container:!0,columnGap:1,children:[(0,s.jsx)(a.ZP,{children:(0,s.jsx)(i.oyc,{width:"16px",height:"16px"})}),(0,s.jsx)(a.ZP,{item:!0,children:"Built-in"})]})},22512:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(72791),i=n(20890),s=n(11135),r=n(25787),l=n(80184);const o=(0,r.Z)((e=>{var t;return(0,s.Z)({errorBlock:{color:(null===(t=e.palette)||void 0===t?void 0:t.error.main)||"#C83B51"}})}))((e=>{let{classes:t,errorMessage:n,withBreak:s=!0}=e;return(0,l.jsxs)(a.Fragment,{children:[s&&(0,l.jsx)("br",{}),(0,l.jsx)(i.Z,{component:"p",variant:"body1",className:t.errorBlock,children:n})]})}))},42419:(e,t,n)=>{var a=n(64836);t.Z=void 0;var i=a(n(45649)),s=n(80184),r=(0,i.default)((0,s.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add");t.Z=r},99663:(e,t,n)=>{var a=n(64836);t.Z=void 0;var i=a(n(45649)),s=n(80184),r=(0,i.default)((0,s.jsx)("path",{d:"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z"}),"AttachFile");t.Z=r},86711:(e,t,n)=>{var a=n(64836);t.Z=void 0;var i=a(n(45649)),s=n(80184),r=(0,i.default)((0,s.jsx)("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"}),"Cancel");t.Z=r},22918:(e,t,n)=>{var a=n(64836);t.Z=void 0;var i=a(n(45649)),s=n(80184),r=(0,i.default)((0,s.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM7.5 18c-.83 0-1.5-.67-1.5-1.5S6.67 15 7.5 15s1.5.67 1.5 1.5S8.33 18 7.5 18zm0-9C6.67 9 6 8.33 6 7.5S6.67 6 7.5 6 9 6.67 9 7.5 8.33 9 7.5 9zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm0-9c-.83 0-1.5-.67-1.5-1.5S15.67 6 16.5 6s1.5.67 1.5 1.5S17.33 9 16.5 9z"}),"Casino");t.Z=r},27247:(e,t,n)=>{var a=n(64836);t.Z=void 0;var i=a(n(45649)),s=n(80184),r=(0,i.default)((0,s.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"}),"Delete");t.Z=r},94721:(e,t,n)=>{n.d(t,{Z:()=>g});var a=n(63366),i=n(87462),s=n(72791),r=n(28182),l=n(94419),o=n(12065),c=n(66934),d=n(31402),m=n(90133),u=n(80184);const p=["absolute","children","className","component","flexItem","light","orientation","role","textAlign","variant"],x=(0,c.ZP)("div",{name:"MuiDivider",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.absolute&&t.absolute,t[n.variant],n.light&&t.light,"vertical"===n.orientation&&t.vertical,n.flexItem&&t.flexItem,n.children&&t.withChildren,n.children&&"vertical"===n.orientation&&t.withChildrenVertical,"right"===n.textAlign&&"vertical"!==n.orientation&&t.textAlignRight,"left"===n.textAlign&&"vertical"!==n.orientation&&t.textAlignLeft]}})((e=>{let{theme:t,ownerState:n}=e;return(0,i.Z)({margin:0,flexShrink:0,borderWidth:0,borderStyle:"solid",borderColor:(t.vars||t).palette.divider,borderBottomWidth:"thin"},n.absolute&&{position:"absolute",bottom:0,left:0,width:"100%"},n.light&&{borderColor:t.vars?"rgba(".concat(t.vars.palette.dividerChannel," / 0.08)"):(0,o.Fq)(t.palette.divider,.08)},"inset"===n.variant&&{marginLeft:72},"middle"===n.variant&&"horizontal"===n.orientation&&{marginLeft:t.spacing(2),marginRight:t.spacing(2)},"middle"===n.variant&&"vertical"===n.orientation&&{marginTop:t.spacing(1),marginBottom:t.spacing(1)},"vertical"===n.orientation&&{height:"100%",borderBottomWidth:0,borderRightWidth:"thin"},n.flexItem&&{alignSelf:"stretch",height:"auto"})}),(e=>{let{ownerState:t}=e;return(0,i.Z)({},t.children&&{display:"flex",whiteSpace:"nowrap",textAlign:"center",border:0,"&::before, &::after":{content:'""',alignSelf:"center"}})}),(e=>{let{theme:t,ownerState:n}=e;return(0,i.Z)({},n.children&&"vertical"!==n.orientation&&{"&::before, &::after":{width:"100%",borderTop:"thin solid ".concat((t.vars||t).palette.divider)}})}),(e=>{let{theme:t,ownerState:n}=e;return(0,i.Z)({},n.children&&"vertical"===n.orientation&&{flexDirection:"column","&::before, &::after":{height:"100%",borderLeft:"thin solid ".concat((t.vars||t).palette.divider)}})}),(e=>{let{ownerState:t}=e;return(0,i.Z)({},"right"===t.textAlign&&"vertical"!==t.orientation&&{"&::before":{width:"90%"},"&::after":{width:"10%"}},"left"===t.textAlign&&"vertical"!==t.orientation&&{"&::before":{width:"10%"},"&::after":{width:"90%"}})})),h=(0,c.ZP)("span",{name:"MuiDivider",slot:"Wrapper",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.wrapper,"vertical"===n.orientation&&t.wrapperVertical]}})((e=>{let{theme:t,ownerState:n}=e;return(0,i.Z)({display:"inline-block",paddingLeft:"calc(".concat(t.spacing(1)," * 1.2)"),paddingRight:"calc(".concat(t.spacing(1)," * 1.2)")},"vertical"===n.orientation&&{paddingTop:"calc(".concat(t.spacing(1)," * 1.2)"),paddingBottom:"calc(".concat(t.spacing(1)," * 1.2)")})})),g=s.forwardRef((function(e,t){const n=(0,d.Z)({props:e,name:"MuiDivider"}),{absolute:s=!1,children:o,className:c,component:g=(o?"div":"hr"),flexItem:v=!1,light:f=!1,orientation:y="horizontal",role:j=("hr"!==g?"separator":void 0),textAlign:b="center",variant:Z="fullWidth"}=n,C=(0,a.Z)(n,p),N=(0,i.Z)({},n,{absolute:s,component:g,flexItem:v,light:f,orientation:y,role:j,textAlign:b,variant:Z}),S=(e=>{const{absolute:t,children:n,classes:a,flexItem:i,light:s,orientation:r,textAlign:o,variant:c}=e,d={root:["root",t&&"absolute",c,s&&"light","vertical"===r&&"vertical",i&&"flexItem",n&&"withChildren",n&&"vertical"===r&&"withChildrenVertical","right"===o&&"vertical"!==r&&"textAlignRight","left"===o&&"vertical"!==r&&"textAlignLeft"],wrapper:["wrapper","vertical"===r&&"wrapperVertical"]};return(0,l.Z)(d,m.V,a)})(N);return(0,u.jsx)(x,(0,i.Z)({as:g,className:(0,r.Z)(S.root,c),role:j,ref:t,ownerState:N},C,{children:o?(0,u.jsx)(h,{className:S.wrapper,ownerState:N,children:o}):null}))}))},63466:(e,t,n)=>{n.d(t,{Z:()=>Z});var a=n(63366),i=n(87462),s=n(72791),r=n(28182),l=n(94419),o=n(14036),c=n(20890),d=n(93840),m=n(52930),u=n(66934),p=n(75878),x=n(21217);function h(e){return(0,x.Z)("MuiInputAdornment",e)}const g=(0,p.Z)("MuiInputAdornment",["root","filled","standard","outlined","positionStart","positionEnd","disablePointerEvents","hiddenLabel","sizeSmall"]);var v,f=n(31402),y=n(80184);const j=["children","className","component","disablePointerEvents","disableTypography","position","variant"],b=(0,u.ZP)("div",{name:"MuiInputAdornment",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t["position".concat((0,o.Z)(n.position))],!0===n.disablePointerEvents&&t.disablePointerEvents,t[n.variant]]}})((e=>{let{theme:t,ownerState:n}=e;return(0,i.Z)({display:"flex",height:"0.01em",maxHeight:"2em",alignItems:"center",whiteSpace:"nowrap",color:(t.vars||t).palette.action.active},"filled"===n.variant&&{["&.".concat(g.positionStart,"&:not(.").concat(g.hiddenLabel,")")]:{marginTop:16}},"start"===n.position&&{marginRight:8},"end"===n.position&&{marginLeft:8},!0===n.disablePointerEvents&&{pointerEvents:"none"})})),Z=s.forwardRef((function(e,t){const n=(0,f.Z)({props:e,name:"MuiInputAdornment"}),{children:u,className:p,component:x="div",disablePointerEvents:g=!1,disableTypography:Z=!1,position:C,variant:N}=n,S=(0,a.Z)(n,j),_=(0,m.Z)()||{};let T=N;N&&_.variant,_&&!T&&(T=_.variant);const A=(0,i.Z)({},n,{hiddenLabel:_.hiddenLabel,size:_.size,disablePointerEvents:g,position:C,variant:T}),k=(e=>{const{classes:t,disablePointerEvents:n,hiddenLabel:a,position:i,size:s,variant:r}=e,c={root:["root",n&&"disablePointerEvents",i&&"position".concat((0,o.Z)(i)),r,a&&"hiddenLabel",s&&"size".concat((0,o.Z)(s))]};return(0,l.Z)(c,h,t)})(A);return(0,y.jsx)(d.Z.Provider,{value:null,children:(0,y.jsx)(b,(0,i.Z)({as:x,ownerState:A,className:(0,r.Z)(k.root,p),ref:t},S,{children:"string"!==typeof u||Z?(0,y.jsxs)(s.Fragment,{children:["start"===C?v||(v=(0,y.jsx)("span",{className:"notranslate",children:"\u200b"})):null,u]}):(0,y.jsx)(c.Z,{color:"text.secondary",children:u})}))})}))}}]); +//# sourceMappingURL=292.c4ff2caa.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/292.c4ff2caa.chunk.js.map b/web-app/build/static/js/292.c4ff2caa.chunk.js.map new file mode 100644 index 00000000000..531478c430d --- /dev/null +++ b/web-app/build/static/js/292.c4ff2caa.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/292.c4ff2caa.chunk.js","mappings":"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","sources":["screens/Console/Common/CredentialsPrompt/CredentialItem.tsx","screens/Console/Common/CredentialsPrompt/CredentialsPrompt.tsx","screens/Console/Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper.tsx","screens/Console/Common/FormComponents/FileSelector/FileSelector.tsx","screens/Console/Common/FormComponents/FileSelector/utils.ts","screens/Console/Common/FormHr.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx","screens/Console/Common/TooltipWrapper/TooltipWrapper.tsx","screens/Console/Tenants/AddTenant/Steps/Configure.tsx","screens/Console/Tenants/AddTenant/Steps/IdentityProvider/IDPActiveDirectory.tsx","screens/Console/Tenants/AddTenant/Steps/IdentityProvider/IDPOpenID.tsx","screens/Console/Tenants/AddTenant/Steps/IdentityProvider/IDPBuiltIn.tsx","screens/Console/Tenants/AddTenant/Steps/IdentityProvider.tsx","screens/Console/Tenants/AddTenant/Steps/Security.tsx","screens/Console/Common/SectionH1.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption/VaultKMSAdd.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption/AzureKMSAdd.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption/GCPKMSAdd.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption/GemaltoKMSAdd.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption/AWSKMSAdd.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption.tsx","screens/Console/Tenants/AddTenant/Steps/Affinity.tsx","screens/Console/Tenants/AddTenant/Steps/Images.tsx","screens/Console/Tenants/AddTenant/Steps/SizePreview.tsx","screens/Console/Tenants/AddTenant/Steps/helpers/AddNamespaceModal.tsx","screens/Console/Tenants/AddTenant/Steps/TenantResources/NamespaceSelector.tsx","screens/Console/Tenants/AddTenant/Steps/TenantResources/NameTenantMain.tsx","screens/Console/Tenants/AddTenant/Steps/TenantResources/TenantResources.tsx","screens/Console/Tenants/AddTenant/common.ts","screens/Console/Tenants/AddTenant/CreateTenantButton.tsx","screens/Console/Tenants/AddTenant/NewTenantCredentials.tsx","screens/Console/Tenants/AddTenant/AddTenant.tsx","screens/Console/Tenants/HelpBox/TLSHelpBox.tsx","screens/Console/Tenants/LogoComponents.tsx","screens/shared/ErrorBlock.tsx","../node_modules/@mui/icons-material/Add.js","../node_modules/@mui/icons-material/AttachFile.js","../node_modules/@mui/icons-material/Cancel.js","../node_modules/@mui/icons-material/Casino.js","../node_modules/@mui/icons-material/Delete.js","../node_modules/@mui/material/Divider/Divider.js","../node_modules/@mui/material/InputAdornment/inputAdornmentClasses.js","../node_modules/@mui/material/InputAdornment/InputAdornment.js"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { InputAdornment, OutlinedInput } from \"@mui/material\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button, CopyIcon } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { fieldBasic } from \"../FormComponents/common/styleLibrary\";\nimport TooltipWrapper from \"../TooltipWrapper/TooltipWrapper\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n container: {\n display: \"flex\",\n flexFlow: \"column\",\n padding: \"20px 0 8px 0\",\n },\n inputWithCopy: {\n \"& .MuiInputBase-root \": {\n width: \"100%\",\n background: \"#FBFAFA\",\n \"& .MuiInputBase-input\": {\n height: \".8rem\",\n },\n \"& .MuiInputAdornment-positionEnd\": {\n marginRight: \".5rem\",\n \"& .MuiButtonBase-root\": {\n height: \"2rem\",\n },\n },\n },\n \"& .MuiButtonBase-root .min-icon\": {\n width: \".8rem\",\n height: \".8rem\",\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontSize: \".8rem\",\n },\n });\n\nconst CredentialItem = ({\n label = \"\",\n value = \"\",\n classes = {},\n}: {\n label: string;\n value: string;\n classes: any;\n}) => {\n return (\n
\n
{label}:
\n
\n \n \n \n {}}\n onMouseDown={() => {}}\n style={{\n width: \"28px\",\n height: \"28px\",\n padding: \"0px\",\n }}\n icon={}\n />\n \n \n \n }\n />\n
\n
\n );\n};\n\nexport default withStyles(styles)(CredentialItem);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport {\n Button,\n DownloadIcon,\n ServiceAccountCredentialsIcon,\n WarnIcon,\n} from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { NewServiceAccount } from \"./types\";\nimport ModalWrapper from \"../ModalWrapper/ModalWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport CredentialItem from \"./CredentialItem\";\nimport TooltipWrapper from \"../TooltipWrapper/TooltipWrapper\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n warningBlock: {\n color: \"red\",\n fontSize: \".85rem\",\n margin: \".5rem 0 .5rem 0\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg \": {\n marginRight: \".3rem\",\n height: 16,\n width: 16,\n },\n },\n credentialTitle: {\n padding: \".8rem 0 0 0\",\n fontWeight: 600,\n fontSize: \".9rem\",\n },\n buttonContainer: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n marginTop: \"1rem\",\n },\n credentialsPanel: {\n overflowY: \"auto\",\n maxHeight: 350,\n },\n promptTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n buttonSpacer: {\n marginRight: \".9rem\",\n },\n });\n\ninterface ICredentialsPromptProps {\n classes: any;\n newServiceAccount: NewServiceAccount | null;\n open: boolean;\n entity: string;\n closeModal: () => void;\n}\n\nconst download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\"href\", \"data:text/plain;charset=utf-8,\" + text);\n element.setAttribute(\"download\", filename);\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n document.body.removeChild(element);\n};\n\nconst CredentialsPrompt = ({\n classes,\n newServiceAccount,\n open,\n closeModal,\n entity,\n}: ICredentialsPromptProps) => {\n if (!newServiceAccount) {\n return null;\n }\n const consoleCreds = get(newServiceAccount, \"console\", null);\n const idp = get(newServiceAccount, \"idp\", false);\n\n const downloadImport = () => {\n let consoleExtras = {};\n\n if (consoleCreds) {\n if (!Array.isArray(consoleCreds)) {\n consoleExtras = {\n url: consoleCreds.url,\n accessKey: consoleCreds.accessKey,\n secretKey: consoleCreds.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n };\n } else {\n const cCreds = consoleCreds.map((itemMap) => {\n return {\n url: itemMap.url,\n accessKey: itemMap.accessKey,\n secretKey: itemMap.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n };\n });\n consoleExtras = cCreds[0];\n }\n } else {\n consoleExtras = {\n url: newServiceAccount.url,\n accessKey: newServiceAccount.accessKey,\n secretKey: newServiceAccount.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n };\n }\n\n download(\n \"credentials.json\",\n JSON.stringify({\n ...consoleExtras,\n }),\n );\n };\n\n const downloaddAllCredentials = () => {\n let allCredentials = {};\n if (\n consoleCreds &&\n Array.isArray(consoleCreds) &&\n consoleCreds.length > 1\n ) {\n const cCreds = consoleCreds.map((itemMap) => {\n return {\n accessKey: itemMap.accessKey,\n secretKey: itemMap.secretKey,\n };\n });\n allCredentials = cCreds;\n }\n download(\n \"all_credentials.json\",\n JSON.stringify({\n ...allCredentials,\n }),\n );\n };\n\n return (\n {\n closeModal();\n }}\n title={\n
\n
New {entity} Created
\n
\n }\n titleIcon={}\n >\n \n \n A new {entity} has been created with the following details:\n {!idp && consoleCreds && (\n \n \n
\n Console Credentials\n
\n {Array.isArray(consoleCreds) &&\n consoleCreds.map((credentialsPair, index) => {\n return (\n <>\n \n \n \n );\n })}\n {!Array.isArray(consoleCreds) && (\n <>\n \n \n \n )}\n
\n
\n )}\n {(consoleCreds === null || consoleCreds === undefined) && (\n <>\n \n \n \n )}\n {idp ? (\n
\n Please Login via the configured external identity provider.\n
\n ) : (\n
\n \n \n Write these down, as this is the only time the secret will be\n displayed.\n \n
\n )}\n
\n \n {!idp && (\n <>\n \n }\n variant=\"callAction\"\n />\n \n\n {Array.isArray(consoleCreds) && consoleCreds.length > 1 && (\n \n }\n variant=\"callAction\"\n color=\"primary\"\n />\n \n )}\n \n )}\n \n
\n \n );\n};\n\nexport default withStyles(styles)(CredentialsPrompt);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Box, InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Button, CopyIcon, HelpIcon } from \"mds\";\nimport { fieldBasic } from \"../common/styleLibrary\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport CodeEditor from \"@uiw/react-textarea-code-editor\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n classes: any;\n onChange?: (editor: any, data: any, value: string) => any;\n onBeforeChange: (editor: any, data: any, value: string) => any;\n readOnly?: boolean;\n editorHeight?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n });\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n classes,\n onBeforeChange,\n readOnly = false,\n editorHeight = \"250px\",\n}: ICodeWrapper) => {\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n
\n\n \n {\n onBeforeChange(null, null, evn.target.value);\n }}\n id={\"code_wrapper\"}\n padding={15}\n style={{\n fontSize: 12,\n backgroundColor: \"#fefefe\",\n fontFamily:\n \"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace\",\n minHeight: editorHeight || \"initial\",\n color: \"#000000\",\n }}\n />\n \n \n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n \n
\n );\n};\n\nexport default withStyles(styles)(CodeMirrorWrapper);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport get from \"lodash/get\";\nimport { Grid, InputLabel, Tooltip } from \"@mui/material\";\nimport IconButton from \"@mui/material/IconButton\";\nimport AttachFileIcon from \"@mui/icons-material/AttachFile\";\nimport CancelIcon from \"@mui/icons-material/Cancel\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n fileInputStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { fileProcess } from \"./utils\";\nimport { HelpIcon } from \"mds\";\nimport ErrorBlock from \"../../../../shared/ErrorBlock\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: string, i: string) => void;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n required?: boolean;\n error?: string;\n accept?: string;\n value?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n valueString: {\n maxWidth: 350,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n marginTop: 2,\n },\n fileInputField: {\n margin: \"13px 0\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n ...fileInputStyles,\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n textBoxContainer: {\n ...fieldBasic.textBoxContainer,\n maxWidth: \"100%\",\n border: \"1px solid #eaeaea\",\n paddingLeft: \"15px\",\n },\n });\n\nconst FileSelector = ({\n label,\n classes,\n onChange,\n id,\n name,\n disabled = false,\n tooltip = \"\",\n required,\n error = \"\",\n accept = \"\",\n value = \"\",\n}: InputBoxProps) => {\n const [showFileSelector, setShowSelector] = useState(false);\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n {showFileSelector || value === \"\" ? (\n
\n {\n const fileName = get(e, \"target.files[0].name\", \"\");\n fileProcess(e, (data: any) => {\n onChange(data, fileName);\n });\n }}\n accept={accept}\n required={required}\n disabled={disabled}\n className={classes.fileInputField}\n />\n\n {value !== \"\" && (\n {\n setShowSelector(false);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n )}\n\n {error !== \"\" && }\n
\n ) : (\n
\n
{value}
\n {\n setShowSelector(true);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n
\n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(FileSelector);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const fileProcess = (evt: any, callback: any) => {\n const file = evt.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n // reader.readAsDataURL(file) output will be something like: data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSU\n // we care only about the actual base64 part (everything after \"data:application/x-x509-ca-cert;base64,\")\n const fileBase64 = reader.result;\n if (fileBase64) {\n const fileArray = fileBase64.toString().split(\"base64,\");\n\n if (fileArray.length === 2) {\n callback(fileArray[1]);\n }\n }\n };\n};\n","// This file is part of MinIO Operator\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport styled from \"@emotion/styled\";\n\nconst FormHr = styled(\"hr\")`\n border-top: 0;\n border-left: 0;\n border-right: 0;\n border-color: #999999;\n background-color: transparent;\n`;\n\nexport default FormHr;\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport MainError from \"../MainError/MainError\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n noContentPadding?: boolean;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n noContentPadding,\n titleIcon = null,\n}: IModalProps) => {\n const dispatch = useAppDispatch();\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n const modalSnackMessage = useSelector(\n (state: AppState) => state.system.modalSnackBar,\n );\n\n useEffect(() => {\n dispatch(setModalSnackMessage(\"\"));\n }, [dispatch]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n dispatch(setModalSnackMessage(\"\"));\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n
\n {titleIcon} {title}\n
\n
\n \n \n \n
\n
\n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nexport default withStyles(styles)(ModalWrapper);\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { cloneElement } from \"react\";\nimport { Tooltip } from \"@mui/material\";\n\ninterface ITooltipWrapperProps {\n tooltip: string;\n children: any;\n errorProps?: any;\n placement?:\n | \"bottom-end\"\n | \"bottom-start\"\n | \"bottom\"\n | \"left-end\"\n | \"left-start\"\n | \"left\"\n | \"right-end\"\n | \"right-start\"\n | \"right\"\n | \"top-end\"\n | \"top-start\"\n | \"top\";\n}\n\nconst TooltipWrapper = ({\n tooltip,\n children,\n errorProps = null,\n placement,\n}: ITooltipWrapperProps) => {\n return (\n \n \n {errorProps ? cloneElement(children, { ...errorProps }) : children}\n \n \n );\n};\n\nexport default TooltipWrapper;\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n Divider,\n Grid,\n IconButton,\n Paper,\n SelectChangeEvent,\n} from \"@mui/material\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\n\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport { RemoveIcon } from \"mds\";\nimport {\n addNewMinIODomain,\n isPageValid,\n removeMinIODomain,\n setEnvVars,\n updateAddField,\n} from \"../createTenantSlice\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport H3Section from \"../../../Common/H3Section\";\n\ninterface IConfigureProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n configSectionItem: {\n marginRight: 15,\n marginBottom: 15,\n\n \"& .multiContainer\": {\n border: \"1px solid red\",\n },\n },\n tenantCustomizationFields: {\n marginLeft: 30, // 2nd Level(15+15)\n width: \"88%\",\n margin: \"auto\",\n },\n containerItem: {\n marginRight: 15,\n },\n fieldGroup: {\n ...createTenantCommon.fieldGroup,\n paddingTop: 15,\n marginBottom: 25,\n },\n responsiveSectionItem: {\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n\n \"& div > div\": {\n marginBottom: 5,\n marginRight: 0,\n },\n },\n },\n wrapperContainer: {\n display: \"flex\",\n marginBottom: 15,\n },\n envVarRow: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n \"&:last-child\": {\n borderBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n flex: 1,\n\n \"& div label\": {\n minWidth: 50,\n },\n },\n },\n fileItem: {\n marginRight: 10,\n display: \"flex\",\n \"& div label\": {\n minWidth: 50,\n },\n\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n rowActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n \"@media (max-width: 900px)\": {\n flex: 1,\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n ...modalBasic,\n ...wizardCommon,\n ...formFieldStyles,\n });\n\nconst Configure = ({ classes }: IConfigureProps) => {\n const dispatch = useAppDispatch();\n\n const exposeMinIO = useSelector(\n (state: AppState) => state.createTenant.fields.configure.exposeMinIO,\n );\n const exposeConsole = useSelector(\n (state: AppState) => state.createTenant.fields.configure.exposeConsole,\n );\n const exposeSFTP = useSelector(\n (state: AppState) => state.createTenant.fields.configure.exposeSFTP,\n );\n const setDomains = useSelector(\n (state: AppState) => state.createTenant.fields.configure.setDomains,\n );\n const consoleDomain = useSelector(\n (state: AppState) => state.createTenant.fields.configure.consoleDomain,\n );\n const minioDomains = useSelector(\n (state: AppState) => state.createTenant.fields.configure.minioDomains,\n );\n const tenantCustom = useSelector(\n (state: AppState) => state.createTenant.fields.configure.tenantCustom,\n );\n const tenantEnvVars = useSelector(\n (state: AppState) => state.createTenant.fields.configure.envVars,\n );\n const tenantSecurityContext = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.tenantSecurityContext,\n );\n const customRuntime = useSelector(\n (state: AppState) => state.createTenant.fields.configure.customRuntime,\n );\n const runtimeClassName = useSelector(\n (state: AppState) => state.createTenant.fields.configure.runtimeClassName,\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"configure\", field: field, value: value }),\n );\n },\n [dispatch],\n );\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n if (tenantCustom) {\n customAccountValidation = [\n {\n fieldKey: \"tenant_securityContext_runAsUser\",\n required: true,\n value: tenantSecurityContext.runAsUser,\n customValidation:\n tenantSecurityContext.runAsUser === \"\" ||\n parseInt(tenantSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"tenant_securityContext_runAsGroup\",\n required: true,\n value: tenantSecurityContext.runAsGroup,\n customValidation:\n tenantSecurityContext.runAsGroup === \"\" ||\n parseInt(tenantSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"tenant_securityContext_fsGroup\",\n required: true,\n value: tenantSecurityContext.fsGroup!,\n customValidation:\n tenantSecurityContext.fsGroup === \"\" ||\n parseInt(tenantSecurityContext.fsGroup!) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n\n if (setDomains) {\n const minioExtraValidations = minioDomains.map((validation, index) => {\n return {\n fieldKey: `minio-domain-${index.toString()}`,\n required: false,\n value: validation,\n pattern: /^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?$/,\n customPatternMessage:\n \"MinIO domain is not in the form of http|https://subdomain.domain\",\n };\n });\n\n customAccountValidation = [\n ...customAccountValidation,\n ...minioExtraValidations,\n {\n fieldKey: \"console_domain\",\n required: false,\n value: consoleDomain,\n pattern:\n /^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-./]*)?$/,\n customPatternMessage:\n \"Console domain is not in the form of http|https://subdomain.domain:port/subpath1/subpath2\",\n },\n ];\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n dispatch(\n isPageValid({\n pageName: \"configure\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [\n dispatch,\n tenantCustom,\n tenantSecurityContext,\n setDomains,\n consoleDomain,\n minioDomains,\n ]);\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n const updateMinIODomain = (value: string, index: number) => {\n const copyDomains = [...minioDomains];\n copyDomains[index] = value;\n\n updateField(\"minioDomains\", copyDomains);\n };\n\n return (\n \n
\n Configure\n \n Basic configurations for tenant management\n \n
\n
\n

Services

\n \n Whether the tenant's services should request an external IP via\n LoadBalancer service type.\n \n
\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"exposeMinIO\", checked);\n }}\n label={\"Expose MinIO Service\"}\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"exposeConsole\", checked);\n }}\n label={\"Expose Console Service\"}\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"exposeSFTP\", checked);\n }}\n label={\"Expose SFTP Service\"}\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"setDomains\", checked);\n }}\n label={\"Set Custom Domains\"}\n />\n \n {setDomains && (\n \n
\n \n Custom Domains for MinIO\n \n \n
\n ) => {\n updateField(\"consoleDomain\", e.target.value);\n cleanValidation(\"tenant_securityContext_runAsUser\");\n }}\n label=\"Console Domain\"\n value={consoleDomain}\n placeholder={\n \"Eg. http://subdomain.domain:port/subpath1/subpath2\"\n }\n error={validationErrors[\"console_domain\"] || \"\"}\n />\n
\n
\n

MinIO Domains

\n
\n {minioDomains.map((domain, index) => {\n return (\n \n ,\n ) => {\n updateMinIODomain(e.target.value, index);\n }}\n label={`MinIO Domain ${index + 1}`}\n value={domain}\n placeholder={\"Eg. http://subdomain.domain\"}\n error={\n validationErrors[\n `minio-domain-${index.toString()}`\n ] || \"\"\n }\n />\n
\n dispatch(addNewMinIODomain())}\n disabled={index !== minioDomains.length - 1}\n >\n \n \n
\n\n
\n dispatch(removeMinIODomain(index))}\n disabled={minioDomains.length <= 1}\n >\n \n \n
\n
\n );\n })}\n
\n \n
\n
\n
\n )}\n\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"tenantCustom\", checked);\n }}\n label={\"Security Context\"}\n />\n \n {tenantCustom && (\n \n
\n \n SecurityContext for MinIO\n \n \n \n
\n ) => {\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n runAsUser: e.target.value,\n });\n cleanValidation(\"tenant_securityContext_runAsUser\");\n }}\n label=\"Run As User\"\n value={tenantSecurityContext.runAsUser}\n required\n error={\n validationErrors[\"tenant_securityContext_runAsUser\"] || \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n runAsGroup: e.target.value,\n });\n cleanValidation(\"tenant_securityContext_runAsGroup\");\n }}\n label=\"Run As Group\"\n value={tenantSecurityContext.runAsGroup}\n required\n error={\n validationErrors[\"tenant_securityContext_runAsGroup\"] ||\n \"\"\n }\n min=\"0\"\n />\n
\n \n
\n
\n \n \n
\n ) => {\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n fsGroup: e.target.value,\n });\n cleanValidation(\"tenant_securityContext_fsGroup\");\n }}\n label=\"FsGroup\"\n value={tenantSecurityContext.fsGroup!}\n required\n error={\n validationErrors[\"tenant_securityContext_fsGroup\"] || \"\"\n }\n min=\"0\"\n />\n
\n
\n
\n ) => {\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n fsGroupChangePolicy: e.target.value,\n });\n }}\n options={[\n {\n label: \"Always\",\n value: \"Always\",\n },\n {\n label: \"OnRootMismatch\",\n value: \"OnRootMismatch\",\n },\n ]}\n />\n
\n
\n \n
\n
\n \n
\n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n runAsNonRoot: checked,\n });\n }}\n label={\"Do not run as Root\"}\n />\n
\n
\n
\n
\n )}\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"customRuntime\", checked);\n }}\n label={\"Custom Runtime Configurations\"}\n />\n \n {customRuntime && (\n \n
\n \n Custom Runtime Configurations\n \n \n
\n ) => {\n updateField(\"runtimeClassName\", e.target.value);\n cleanValidation(\"tenant_runtime_runtimeClassName\");\n }}\n label=\"Runtime Class Name\"\n value={runtimeClassName}\n error={\n validationErrors[\"tenant_runtime_runtimeClassName\"] || \"\"\n }\n />\n
\n
\n
\n
\n )}\n \n\n
\n Additional Environment Variables\n \n Define additional environment variables to be used by your MinIO pods\n \n
\n \n {tenantEnvVars.map((envVar, index) => (\n \n \n ) => {\n const existingEnvVars = [...tenantEnvVars];\n dispatch(\n setEnvVars(\n existingEnvVars.map((keyPair, i) =>\n i === index\n ? { key: e.target.value, value: keyPair.value }\n : keyPair,\n ),\n ),\n );\n }}\n index={index}\n key={`env_var_key_${index.toString()}`}\n />\n \n \n ) => {\n const existingEnvVars = [...tenantEnvVars];\n dispatch(\n setEnvVars(\n existingEnvVars.map((keyPair, i) =>\n i === index\n ? { key: keyPair.key, value: e.target.value }\n : keyPair,\n ),\n ),\n );\n }}\n index={index}\n key={`env_var_value_${index.toString()}`}\n />\n \n \n
\n {\n const existingEnvVars = [...tenantEnvVars];\n existingEnvVars.push({ key: \"\", value: \"\" });\n\n dispatch(setEnvVars(existingEnvVars));\n }}\n disabled={index !== tenantEnvVars.length - 1}\n >\n \n \n
\n
\n {\n const existingEnvVars = tenantEnvVars.filter(\n (item, fIndex) => fIndex !== index,\n );\n dispatch(setEnvVars(existingEnvVars));\n }}\n disabled={tenantEnvVars.length <= 1}\n >\n \n \n
\n
\n
\n ))}\n \n
\n );\n};\n\nexport default withStyles(styles)(Configure);\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Grid, IconButton, Tooltip, Typography } from \"@mui/material\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport {\n addIDPADGroupAtIndex,\n addIDPADUsrAtIndex,\n isPageValid,\n removeIDPADGroupAtIndex,\n removeIDPADUsrAtIndex,\n setIDPADGroupAtIndex,\n setIDPADUsrAtIndex,\n updateAddField,\n} from \"../../createTenantSlice\";\nimport { useSelector } from \"react-redux\";\nimport { clearValidationError } from \"../../../utils\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n adUserDnRows: {\n display: \"flex\",\n marginBottom: 10,\n },\n buttonTray: {\n marginLeft: 10,\n display: \"flex\",\n height: 38,\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n }),\n);\n\nconst IDPActiveDirectory = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const idpSelection = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.idpSelection,\n );\n const ADURL = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.ADURL,\n );\n const ADSkipTLS = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.ADSkipTLS,\n );\n const ADServerInsecure = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADServerInsecure,\n );\n const ADGroupSearchBaseDN = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADGroupSearchBaseDN,\n );\n const ADGroupSearchFilter = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADGroupSearchFilter,\n );\n const ADUserDNs = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.ADUserDNs,\n );\n const ADGroupDNs = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.ADGroupDNs,\n );\n const ADLookupBindDN = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADLookupBindDN,\n );\n const ADLookupBindPassword = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADLookupBindPassword,\n );\n const ADUserDNSearchBaseDN = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADUserDNSearchBaseDN,\n );\n const ADUserDNSearchFilter = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADUserDNSearchFilter,\n );\n const ADServerStartTLS = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADServerStartTLS,\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({\n pageName: \"identityProvider\",\n field: field,\n value: value,\n }),\n );\n },\n [dispatch],\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n // Validation\n useEffect(() => {\n let customIDPValidation: IValidation[] = [];\n\n if (idpSelection === \"AD\") {\n customIDPValidation = [\n ...customIDPValidation,\n {\n fieldKey: \"AD_URL\",\n required: true,\n value: ADURL,\n },\n {\n fieldKey: \"ad_lookupBindDN\",\n required: true,\n value: ADLookupBindDN,\n },\n ];\n }\n\n const commonVal = commonFormValidation(customIDPValidation);\n\n dispatch(\n isPageValid({\n pageName: \"identityProvider\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [\n ADLookupBindDN,\n idpSelection,\n ADURL,\n ADGroupSearchBaseDN,\n ADGroupSearchFilter,\n ADUserDNs,\n ADGroupDNs,\n dispatch,\n ]);\n\n return (\n \n \n ) => {\n updateField(\"ADURL\", e.target.value);\n cleanValidation(\"AD_URL\");\n }}\n label=\"LDAP Server Address\"\n value={ADURL}\n placeholder=\"ldap-server:636\"\n error={validationErrors[\"AD_URL\"] || \"\"}\n required\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"ADSkipTLS\", checked);\n }}\n label={\"Skip TLS Verification\"}\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"ADServerInsecure\", checked);\n }}\n label={\"Server Insecure\"}\n />\n \n {ADServerInsecure ? (\n \n \n Warning: All traffic with Active Directory will be unencrypted\n \n
\n
\n ) : null}\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"ADServerStartTLS\", checked);\n }}\n label={\"Start TLS connection to AD/LDAP server\"}\n />\n \n \n ) => {\n updateField(\"ADLookupBindDN\", e.target.value);\n cleanValidation(\"ad_lookupBindDN\");\n }}\n label=\"Lookup Bind DN\"\n value={ADLookupBindDN}\n placeholder=\"cn=admin,dc=min,dc=io\"\n error={validationErrors[\"ad_lookupBindDN\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"ADLookupBindPassword\", e.target.value);\n }}\n label=\"Lookup Bind Password\"\n value={ADLookupBindPassword}\n placeholder=\"admin\"\n />\n \n \n ) => {\n updateField(\"ADUserDNSearchBaseDN\", e.target.value);\n }}\n label=\"User DN Search Base DN\"\n value={ADUserDNSearchBaseDN}\n placeholder=\"dc=min,dc=io\"\n />\n \n \n ) => {\n updateField(\"ADUserDNSearchFilter\", e.target.value);\n }}\n label=\"User DN Search Filter\"\n value={ADUserDNSearchFilter}\n placeholder=\"(sAMAcountName=%s)\"\n />\n \n \n ) => {\n updateField(\"ADGroupSearchBaseDN\", e.target.value);\n }}\n label=\"Group Search Base DN\"\n value={ADGroupSearchBaseDN}\n placeholder=\"ou=hwengg,dc=min,dc=io;ou=swengg,dc=min,dc=io\"\n />\n \n \n ) => {\n updateField(\"ADGroupSearchFilter\", e.target.value);\n }}\n label=\"Group Search Filter\"\n value={ADGroupSearchFilter}\n placeholder=\"(&(objectclass=groupOfNames)(member=%s))\"\n />\n \n
\n \n List of user DNs (Distinguished Names) to be Tenant Administrators\n \n \n {ADUserDNs.map((_, index) => {\n return (\n \n
\n ) => {\n dispatch(\n setIDPADUsrAtIndex({\n index: index,\n userDN: e.target.value,\n }),\n );\n cleanValidation(`ad-userdn-${index.toString()}`);\n }}\n index={index}\n key={`csv-ad-userdn-${index.toString()}`}\n error={\n validationErrors[`ad-userdn-${index.toString()}`] || \"\"\n }\n />\n
\n \n {\n dispatch(addIDPADUsrAtIndex());\n }}\n >\n \n \n \n \n {\n if (ADUserDNs.length > 1) {\n dispatch(removeIDPADUsrAtIndex(index));\n }\n }}\n >\n \n \n \n
\n
\n
\n );\n })}\n
\n
\n
\n \n List of group DNs (Distinguished Names) to be Tenant Administrators\n \n \n {ADGroupDNs.map((_, index) => {\n return (\n \n
\n ) => {\n dispatch(\n setIDPADGroupAtIndex({\n index: index,\n userDN: e.target.value,\n }),\n );\n cleanValidation(`ad-groupdn-${index.toString()}`);\n }}\n index={index}\n key={`csv-ad-groupdn-${index.toString()}`}\n error={\n validationErrors[`ad-groupdn-${index.toString()}`] || \"\"\n }\n />\n
\n \n {\n dispatch(addIDPADGroupAtIndex());\n }}\n >\n \n \n \n \n {\n if (ADGroupDNs.length > 1) {\n dispatch(removeIDPADGroupAtIndex(index));\n }\n }}\n >\n \n \n \n
\n
\n
\n );\n })}\n
\n
\n
\n );\n};\n\nexport default IDPActiveDirectory;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Grid } from \"@mui/material\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { isPageValid, updateAddField } from \"../../createTenantSlice\";\nimport { clearValidationError } from \"../../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n buttonTray: {\n marginLeft: 10,\n display: \"flex\",\n height: 38,\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n }),\n);\n\nconst IDPOpenID = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const idpSelection = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.idpSelection,\n );\n const openIDConfigurationURL = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.openIDConfigurationURL,\n );\n const openIDClientID = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.openIDClientID,\n );\n const openIDSecretID = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.openIDSecretID,\n );\n const openIDClaimName = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.openIDClaimName,\n );\n const openIDScopes = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.openIDScopes,\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({\n pageName: \"identityProvider\",\n field: field,\n value: value,\n }),\n );\n },\n [dispatch],\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n // Validation\n useEffect(() => {\n let customIDPValidation: IValidation[] = [];\n\n if (idpSelection === \"OpenID\") {\n customIDPValidation = [\n ...customIDPValidation,\n {\n fieldKey: \"openID_CONFIGURATION_URL\",\n required: true,\n value: openIDConfigurationURL,\n },\n {\n fieldKey: \"openID_clientID\",\n required: true,\n value: openIDClientID,\n },\n {\n fieldKey: \"openID_secretID\",\n required: true,\n value: openIDSecretID,\n },\n {\n fieldKey: \"openID_claimName\",\n required: false,\n value: openIDClaimName,\n },\n ];\n }\n\n const commonVal = commonFormValidation(customIDPValidation);\n\n dispatch(\n isPageValid({\n pageName: \"identityProvider\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [\n idpSelection,\n openIDClientID,\n openIDSecretID,\n openIDConfigurationURL,\n openIDClaimName,\n dispatch,\n ]);\n\n return (\n \n \n ) => {\n updateField(\"openIDConfigurationURL\", e.target.value);\n cleanValidation(\"openID_CONFIGURATION_URL\");\n }}\n label=\"Configuration URL\"\n value={openIDConfigurationURL}\n placeholder=\"https://your-identity-provider.com/.well-known/openid-configuration\"\n error={validationErrors[\"openID_CONFIGURATION_URL\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"openIDClientID\", e.target.value);\n cleanValidation(\"openID_clientID\");\n }}\n label=\"Client ID\"\n value={openIDClientID}\n error={validationErrors[\"openID_clientID\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"openIDSecretID\", e.target.value);\n cleanValidation(\"openID_secretID\");\n }}\n label=\"Secret ID\"\n value={openIDSecretID}\n error={validationErrors[\"openID_secretID\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"openIDClaimName\", e.target.value);\n cleanValidation(\"openID_claimName\");\n }}\n label=\"Claim Name\"\n value={openIDClaimName}\n placeholder=\"policy\"\n error={validationErrors[\"openID_claimName\"] || \"\"}\n />\n \n \n ) => {\n updateField(\"openIDScopes\", e.target.value);\n cleanValidation(\"openID_scopes\");\n }}\n label=\"Scopes\"\n value={openIDScopes}\n />\n \n \n );\n};\n\nexport default IDPOpenID;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport {\n addIDPNewKeyPair,\n isPageValid,\n removeIDPKeyPairAtIndex,\n setIDPPwdAtIndex,\n setIDPUsrAtIndex,\n} from \"../../createTenantSlice\";\nimport { IconButton, Tooltip } from \"@mui/material\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport { RemoveIcon } from \"mds\";\nimport { clearValidationError, getRandomString } from \"../../../utils\";\nimport CasinoIcon from \"@mui/icons-material/Casino\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n buttonTray: {\n marginLeft: 10,\n display: \"flex\",\n height: 38,\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n shortened: {\n gridTemplateColumns: \"auto auto 50px 50px\",\n display: \"grid\",\n gridGap: 15,\n marginBottom: 10,\n \"& input\": {\n fontWeight: 400,\n },\n },\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n }),\n);\n\nconst IDPBuiltIn = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const idpSelection = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.idpSelection,\n );\n const accessKeys = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.accessKeys,\n );\n const secretKeys = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.secretKeys,\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n // Validation\n useEffect(() => {\n let customIDPValidation: IValidation[] = [];\n\n if (idpSelection === \"Built-in\") {\n customIDPValidation = [...customIDPValidation];\n for (var i = 0; i < accessKeys.length; i++) {\n customIDPValidation.push({\n fieldKey: `accesskey-${i.toString()}`,\n required: true,\n value: accessKeys[i],\n pattern: /^[a-zA-Z0-9-]{8,63}$/,\n customPatternMessage: \"Keys must be at least length 8\",\n });\n customIDPValidation.push({\n fieldKey: `secretkey-${i.toString()}`,\n required: true,\n value: secretKeys[i],\n pattern: /^[a-zA-Z0-9-]{8,63}$/,\n customPatternMessage: \"Keys must be at least length 8\",\n });\n }\n }\n\n const commonVal = commonFormValidation(customIDPValidation);\n\n dispatch(\n isPageValid({\n pageName: \"identityProvider\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [idpSelection, accessKeys, secretKeys, dispatch]);\n\n return (\n \n Add additional users\n {accessKeys.map((_, index) => {\n return (\n \n
\n ) => {\n dispatch(\n setIDPUsrAtIndex({\n index,\n accessKey: e.target.value,\n }),\n );\n cleanValidation(`accesskey-${index.toString()}`);\n }}\n index={index}\n key={`csv-accesskey-${index.toString()}`}\n error={validationErrors[`accesskey-${index.toString()}`] || \"\"}\n />\n ) => {\n dispatch(\n setIDPPwdAtIndex({\n index,\n secretKey: e.target.value,\n }),\n );\n cleanValidation(`secretkey-${index.toString()}`);\n }}\n index={index}\n key={`csv-secretkey-${index.toString()}`}\n error={validationErrors[`secretkey-${index.toString()}`] || \"\"}\n />\n
\n
\n {\n dispatch(addIDPNewKeyPair());\n }}\n disabled={index !== accessKeys.length - 1}\n >\n \n \n
\n
\n {\n dispatch(removeIDPKeyPairAtIndex(index));\n }}\n disabled={accessKeys.length <= 1}\n >\n \n \n
\n \n
\n {\n dispatch(\n setIDPUsrAtIndex({\n index,\n accessKey: getRandomString(16),\n }),\n );\n dispatch(\n setIDPPwdAtIndex({\n index,\n secretKey: getRandomString(16),\n }),\n );\n }}\n size={\"small\"}\n >\n \n \n
\n
\n
\n
\n
\n );\n })}\n
\n );\n};\n\nexport default IDPBuiltIn;\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Grid, Paper } from \"@mui/material\";\nimport {\n createTenantCommon,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport RadioGroupSelector from \"../../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport { setIDP } from \"../createTenantSlice\";\nimport IDPActiveDirectory from \"./IdentityProvider/IDPActiveDirectory\";\nimport IDPOpenID from \"./IdentityProvider/IDPOpenID\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport IDPBuiltIn from \"./IdentityProvider/IDPBuiltIn\";\nimport {\n BuiltInLogoElement,\n LDAPLogoElement,\n OIDCLogoElement,\n} from \"../../LogoComponents\";\nimport H3Section from \"../../../Common/H3Section\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n protocolRadioOptions: {\n display: \"flex\",\n flexFlow: \"column\",\n marginBottom: 10,\n\n \"& label\": {\n fontSize: 16,\n fontWeight: 600,\n },\n \"& div\": {\n display: \"flex\",\n flexFlow: \"row\",\n alignItems: \"top\",\n },\n },\n ...createTenantCommon,\n ...modalBasic,\n ...wizardCommon,\n }),\n);\n\nconst IdentityProvider = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const idpSelection = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.idpSelection,\n );\n\n return (\n \n
\n Identity Provider\n \n Access to the tenant can be controlled via an external Identity\n Manager.\n \n
\n \n {\n dispatch(setIDP(e.target.value));\n }}\n selectorOptions={[\n { label: , value: \"Built-in\" },\n { label: , value: \"OpenID\" },\n { label: , value: \"AD\" },\n ]}\n />\n \n {idpSelection === \"Built-in\" && }\n {idpSelection === \"OpenID\" && }\n {idpSelection === \"AD\" && }\n
\n );\n};\n\nexport default IdentityProvider;\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, IconButton, Paper } from \"@mui/material\";\nimport {\n createTenantCommon,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\n\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { KeyPair } from \"../../ListTenants/utils\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport FileSelector from \"../../../Common/FormComponents/FileSelector/FileSelector\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport { RemoveIcon } from \"mds\";\nimport {\n addCaCertificate,\n addClientKeyPair,\n addFileToCaCertificates,\n addFileToClientKeyPair,\n addFileToKeyPair,\n addKeyPair,\n deleteCaCertificate,\n deleteClientKeyPair,\n deleteKeyPair,\n isPageValid,\n updateAddField,\n} from \"../createTenantSlice\";\nimport TLSHelpBox from \"../../HelpBox/TLSHelpBox\";\nimport H3Section from \"../../../Common/H3Section\";\n\ninterface ISecurityProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n minioCertificateRows: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n borderBottom: \"1px solid #EAEAEA\",\n \"&:last-child\": {\n borderBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n flex: 1,\n },\n },\n fileItem: {\n marginRight: 10,\n display: \"flex\",\n \"& div label\": {\n minWidth: 50,\n },\n\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n minioCertsContainer: {\n marginBottom: 15,\n },\n minioCACertsRow: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n\n borderBottom: \"1px solid #EAEAEA\",\n \"&:last-child\": {\n borderBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n flex: 1,\n\n \"& div label\": {\n minWidth: 50,\n },\n },\n },\n rowActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n \"@media (max-width: 900px)\": {\n flex: 1,\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n\n ...createTenantCommon,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst Security = ({ classes }: ISecurityProps) => {\n const dispatch = useAppDispatch();\n\n const enableTLS = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableTLS,\n );\n const enableAutoCert = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableAutoCert,\n );\n const enableCustomCerts = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableCustomCerts,\n );\n const minioCertificates = useSelector(\n (state: AppState) =>\n state.createTenant.certificates.minioServerCertificates,\n );\n const minioClientCertificates = useSelector(\n (state: AppState) =>\n state.createTenant.certificates.minioClientCertificates,\n );\n const caCertificates = useSelector(\n (state: AppState) => state.createTenant.certificates.minioCAsCertificates,\n );\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"security\", field: field, value: value }),\n );\n },\n [dispatch],\n );\n\n // Validation\n\n useEffect(() => {\n if (!enableTLS) {\n dispatch(isPageValid({ pageName: \"security\", valid: true }));\n return;\n }\n if (enableAutoCert) {\n dispatch(isPageValid({ pageName: \"security\", valid: true }));\n return;\n }\n if (enableCustomCerts) {\n dispatch(isPageValid({ pageName: \"security\", valid: true }));\n return;\n }\n dispatch(isPageValid({ pageName: \"security\", valid: false }));\n }, [enableTLS, enableAutoCert, enableCustomCerts, dispatch]);\n\n return (\n \n
\n Security\n
\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"enableTLS\", checked);\n }}\n label={\"TLS\"}\n description={\n \"Securing all the traffic using TLS. This is required for Encryption Configuration\"\n }\n />\n \n {enableTLS && (\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"enableAutoCert\", checked);\n }}\n label={\"AutoCert\"}\n description={\n \"The internode certificates will be generated and managed by MinIO Operator\"\n }\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"enableCustomCerts\", checked);\n }}\n label={\"Custom Certificates\"}\n description={\"Certificates used to terminated TLS at MinIO\"}\n />\n \n {enableCustomCerts && (\n \n {!enableAutoCert && (\n \n \n \n )}\n \n
MinIO Server Certificates
\n {minioCertificates.map((keyPair: KeyPair, index) => (\n \n \n {\n dispatch(\n addFileToKeyPair({\n id: keyPair.id,\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"tlsCert\"\n name=\"tlsCert\"\n label=\"Cert\"\n value={keyPair.cert}\n />\n {\n dispatch(\n addFileToKeyPair({\n id: keyPair.id,\n key: \"key\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n }}\n accept=\".key,.pem\"\n id=\"tlsKey\"\n name=\"tlsKey\"\n label=\"Key\"\n value={keyPair.key}\n />\n \n\n \n
\n {\n dispatch(addKeyPair());\n }}\n disabled={index !== minioCertificates.length - 1}\n >\n \n \n
\n
\n {\n dispatch(deleteKeyPair(keyPair.id));\n }}\n disabled={minioCertificates.length <= 1}\n >\n \n \n
\n
\n
\n ))}\n
\n \n
MinIO Client Certificates
\n {minioClientCertificates.map((keyPair: KeyPair, index) => (\n \n \n {\n dispatch(\n addFileToClientKeyPair({\n id: keyPair.id,\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"tlsCert\"\n name=\"tlsCert\"\n label=\"Cert\"\n value={keyPair.cert}\n />\n {\n dispatch(\n addFileToClientKeyPair({\n id: keyPair.id,\n key: \"key\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n }}\n accept=\".key,.pem\"\n id=\"tlsKey\"\n name=\"tlsKey\"\n label=\"Key\"\n value={keyPair.key}\n />\n \n\n \n
\n {\n dispatch(addClientKeyPair());\n }}\n disabled={\n index !== minioClientCertificates.length - 1\n }\n >\n \n \n
\n
\n {\n dispatch(deleteClientKeyPair(keyPair.id));\n }}\n disabled={minioClientCertificates.length <= 1}\n >\n \n \n
\n
\n
\n ))}\n \n \n
MinIO CA Certificates
\n {caCertificates.map((keyPair: KeyPair, index) => (\n \n \n {\n dispatch(\n addFileToCaCertificates({\n id: keyPair.id,\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"tlsCert\"\n name=\"tlsCert\"\n label=\"Cert\"\n value={keyPair.cert}\n />\n \n \n
\n
\n {\n dispatch(addCaCertificate());\n }}\n disabled={index !== caCertificates.length - 1}\n >\n \n \n
\n
\n {\n dispatch(deleteCaCertificate(keyPair.id));\n }}\n disabled={caCertificates.length <= 1}\n >\n \n \n
\n
\n
\n
\n ))}\n \n \n )}\n \n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(Security);\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\ntype Props = {\n children: string;\n};\n\nconst SectionH1: React.FC = ({ children }) => {\n return (\n

\n {children}\n

\n );\n};\n\nexport default SectionH1;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\n\nimport { isPageValid, updateAddField } from \"../../createTenantSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\nimport { clearValidationError } from \"../../../utils\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n }),\n);\n\nconst VaultKMSAdd = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const encryptionTab = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionTab,\n );\n const vaultEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultEndpoint,\n );\n const vaultEngine = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultEngine,\n );\n const vaultNamespace = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultNamespace,\n );\n const vaultPrefix = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultPrefix,\n );\n const vaultAppRoleEngine = useSelector(\n (state: AppState) =>\n state.createTenant.fields.encryption.vaultAppRoleEngine,\n );\n const vaultId = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultId,\n );\n const vaultSecret = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultSecret,\n );\n const vaultRetry = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultRetry,\n );\n const vaultPing = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultPing,\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (!encryptionTab) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"vault_endpoint\",\n required: true,\n value: vaultEndpoint,\n },\n {\n fieldKey: \"vault_id\",\n required: true,\n value: vaultId,\n },\n {\n fieldKey: \"vault_secret\",\n required: true,\n value: vaultSecret,\n },\n {\n fieldKey: \"vault_ping\",\n required: false,\n value: vaultPing,\n customValidation: parseInt(vaultPing) < 0,\n customValidationMessage: \"Value needs to be 0 or greater\",\n },\n {\n fieldKey: \"vault_retry\",\n required: false,\n value: vaultRetry,\n customValidation: parseInt(vaultRetry) < 0,\n customValidationMessage: \"Value needs to be 0 or greater\",\n },\n ];\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n\n dispatch(\n isPageValid({\n pageName: \"encryption\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [\n encryptionTab,\n vaultEndpoint,\n vaultEngine,\n vaultId,\n vaultSecret,\n vaultPing,\n vaultRetry,\n dispatch,\n ]);\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value }),\n );\n },\n [dispatch],\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n ) => {\n updateField(\"vaultEndpoint\", e.target.value);\n cleanValidation(\"vault_endpoint\");\n }}\n label=\"Endpoint\"\n tooltip=\"Endpoint is the Hashicorp Vault endpoint\"\n value={vaultEndpoint}\n error={validationErrors[\"vault_endpoint\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"vaultEngine\", e.target.value);\n cleanValidation(\"vault_engine\");\n }}\n label=\"Engine\"\n tooltip=\"Engine is the Hashicorp Vault K/V engine path. If empty, defaults to 'kv'\"\n value={vaultEngine}\n />\n \n \n ) => {\n updateField(\"vaultNamespace\", e.target.value);\n }}\n label=\"Namespace\"\n tooltip=\"Namespace is an optional Hashicorp Vault namespace. An empty namespace means no particular namespace is used.\"\n value={vaultNamespace}\n />\n \n \n ) => {\n updateField(\"vaultPrefix\", e.target.value);\n }}\n label=\"Prefix\"\n tooltip=\"Prefix is an optional prefix / directory within the K/V engine. If empty, keys will be stored at the K/V engine top level\"\n value={vaultPrefix}\n />\n \n\n \n
\n App Role\n \n ) => {\n updateField(\"vaultAppRoleEngine\", e.target.value);\n }}\n label=\"Engine\"\n tooltip=\"AppRoleEngine is the AppRole authentication engine path. If empty, defaults to 'approle'\"\n value={vaultAppRoleEngine}\n />\n \n \n ) => {\n updateField(\"vaultId\", e.target.value);\n cleanValidation(\"vault_id\");\n }}\n label=\"AppRole ID\"\n tooltip=\"AppRoleSecret is the AppRole access secret for authenticating to Hashicorp Vault via the AppRole method\"\n value={vaultId}\n error={validationErrors[\"vault_id\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"vaultSecret\", e.target.value);\n cleanValidation(\"vault_secret\");\n }}\n label=\"AppRole Secret\"\n tooltip=\"AppRoleSecret is the AppRole access secret for authenticating to Hashicorp Vault via the AppRole method\"\n value={vaultSecret}\n error={validationErrors[\"vault_secret\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"vaultRetry\", e.target.value);\n cleanValidation(\"vault_retry\");\n }}\n label=\"Retry (Seconds)\"\n value={vaultRetry}\n error={validationErrors[\"vault_retry\"] || \"\"}\n />\n \n
\n
\n \n
\n Status\n ) => {\n updateField(\"vaultPing\", e.target.value);\n cleanValidation(\"vault_ping\");\n }}\n label=\"Ping (Seconds)\"\n value={vaultPing}\n error={validationErrors[\"vault_ping\"] || \"\"}\n />\n
\n \n
\n );\n};\n\nexport default VaultKMSAdd;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\nimport { isPageValid, updateAddField } from \"../../createTenantSlice\";\nimport { clearValidationError } from \"../../../utils\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n }),\n);\n\nconst AzureKMSAdd = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const encryptionTab = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionTab,\n );\n const azureEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.azureEndpoint,\n );\n const azureTenantID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.azureTenantID,\n );\n const azureClientID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.azureClientID,\n );\n const azureClientSecret = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.azureClientSecret,\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (!encryptionTab) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"azure_endpoint\",\n required: true,\n value: azureEndpoint,\n },\n {\n fieldKey: \"azure_tenant_id\",\n required: true,\n value: azureTenantID,\n },\n {\n fieldKey: \"azure_client_id\",\n required: true,\n value: azureClientID,\n },\n {\n fieldKey: \"azure_client_secret\",\n required: true,\n value: azureClientSecret,\n },\n ];\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n\n dispatch(\n isPageValid({\n pageName: \"encryption\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [\n encryptionTab,\n azureEndpoint,\n azureTenantID,\n azureClientID,\n azureClientSecret,\n dispatch,\n ]);\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value }),\n );\n },\n [dispatch],\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n ) => {\n updateField(\"azureEndpoint\", e.target.value);\n cleanValidation(\"azure_endpoint\");\n }}\n label=\"Endpoint\"\n tooltip=\"Endpoint is the Azure KeyVault endpoint\"\n value={azureEndpoint}\n error={validationErrors[\"azure_endpoint\"] || \"\"}\n />\n \n \n
\n Credentials\n \n ) => {\n updateField(\"azureTenantID\", e.target.value);\n cleanValidation(\"azure_tenant_id\");\n }}\n label=\"Tenant ID\"\n tooltip=\"TenantID is the ID of the Azure KeyVault tenant\"\n value={azureTenantID}\n error={validationErrors[\"azure_tenant_id\"] || \"\"}\n />\n \n \n ) => {\n updateField(\"azureClientID\", e.target.value);\n cleanValidation(\"azure_client_id\");\n }}\n label=\"Client ID\"\n tooltip=\"ClientID is the ID of the client accessing Azure KeyVault\"\n value={azureClientID}\n error={validationErrors[\"azure_client_id\"] || \"\"}\n />\n \n \n ) => {\n updateField(\"azureClientSecret\", e.target.value);\n cleanValidation(\"azure_client_secret\");\n }}\n label=\"Client Secret\"\n tooltip=\"ClientSecret is the client secret accessing the Azure KeyVault\"\n value={azureClientSecret}\n error={validationErrors[\"azure_client_secret\"] || \"\"}\n />\n \n
\n
\n
\n );\n};\n\nexport default AzureKMSAdd;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { updateAddField } from \"../../createTenantSlice\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n }),\n);\n\nconst GCPKMSAdd = () => {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n\n const gcpProjectID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpProjectID,\n );\n const gcpEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpEndpoint,\n );\n const gcpClientEmail = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpClientEmail,\n );\n const gcpClientID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpClientID,\n );\n const gcpPrivateKeyID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpPrivateKeyID,\n );\n const gcpPrivateKey = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpPrivateKey,\n );\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value }),\n );\n },\n [dispatch],\n );\n\n return (\n \n \n ) => {\n updateField(\"gcpProjectID\", e.target.value);\n }}\n label=\"Project ID\"\n tooltip=\"ProjectID is the GCP project ID.\"\n value={gcpProjectID}\n />\n \n \n ) => {\n updateField(\"gcpEndpoint\", e.target.value);\n }}\n label=\"Endpoint\"\n tooltip=\"Endpoint is the GCP project ID. If empty defaults to: secretmanager.googleapis.com:443\"\n value={gcpEndpoint}\n />\n \n \n
\n Credentials\n \n ) => {\n updateField(\"gcpClientEmail\", e.target.value);\n }}\n label=\"Client Email\"\n tooltip=\"Is the Client email of the GCP service account used to access the SecretManager\"\n value={gcpClientEmail}\n />\n \n \n ) => {\n updateField(\"gcpClientID\", e.target.value);\n }}\n label=\"Client ID\"\n tooltip=\"Is the Client ID of the GCP service account used to access the SecretManager\"\n value={gcpClientID}\n />\n \n \n ) => {\n updateField(\"gcpPrivateKeyID\", e.target.value);\n }}\n label=\"Private Key ID\"\n tooltip=\"Is the private key ID of the GCP service account used to access the SecretManager\"\n value={gcpPrivateKeyID}\n />\n \n \n ) => {\n updateField(\"gcpPrivateKey\", e.target.value);\n }}\n label=\"Private Key\"\n tooltip=\"Is the private key of the GCP service account used to access the SecretManager\"\n value={gcpPrivateKey}\n />\n \n
\n
\n
\n );\n};\n\nexport default GCPKMSAdd;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { isPageValid, updateAddField } from \"../../createTenantSlice\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\nimport { clearValidationError } from \"../../../utils\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n }),\n);\n\nconst GemaltoKMSAdd = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const encryptionTab = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionTab,\n );\n const gemaltoEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gemaltoEndpoint,\n );\n const gemaltoToken = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gemaltoToken,\n );\n const gemaltoDomain = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gemaltoDomain,\n );\n const gemaltoRetry = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gemaltoRetry,\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (!encryptionTab) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"gemalto_endpoint\",\n required: true,\n value: gemaltoEndpoint,\n },\n {\n fieldKey: \"gemalto_token\",\n required: true,\n value: gemaltoToken,\n },\n {\n fieldKey: \"gemalto_domain\",\n required: true,\n value: gemaltoDomain,\n },\n {\n fieldKey: \"gemalto_retry\",\n required: false,\n value: gemaltoRetry,\n customValidation: parseInt(gemaltoRetry) < 0,\n customValidationMessage: \"Value needs to be 0 or greater\",\n },\n ];\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n\n dispatch(\n isPageValid({\n pageName: \"encryption\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [\n encryptionTab,\n gemaltoEndpoint,\n gemaltoToken,\n gemaltoDomain,\n gemaltoRetry,\n dispatch,\n ]);\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value }),\n );\n },\n [dispatch],\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n ) => {\n updateField(\"gemaltoEndpoint\", e.target.value);\n cleanValidation(\"gemalto_endpoint\");\n }}\n label=\"Endpoint\"\n tooltip=\"Endpoint is the endpoint to the KeySecure server\"\n value={gemaltoEndpoint}\n error={validationErrors[\"gemalto_endpoint\"] || \"\"}\n required\n />\n \n \n
\n Credentials\n \n ) => {\n updateField(\"gemaltoToken\", e.target.value);\n cleanValidation(\"gemalto_token\");\n }}\n label=\"Token\"\n tooltip=\"Token is the refresh authentication token to access the KeySecure server\"\n value={gemaltoToken}\n error={validationErrors[\"gemalto_token\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"gemaltoDomain\", e.target.value);\n cleanValidation(\"gemalto_domain\");\n }}\n label=\"Domain\"\n tooltip=\"Domain is the isolated namespace within the KeySecure server. If empty, defaults to the top-level / root domain\"\n value={gemaltoDomain}\n error={validationErrors[\"gemalto_domain\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"gemaltoRetry\", e.target.value);\n cleanValidation(\"gemalto_retry\");\n }}\n label=\"Retry (seconds)\"\n value={gemaltoRetry}\n error={validationErrors[\"gemalto_retry\"] || \"\"}\n />\n \n
\n \n
\n );\n};\n\nexport default GemaltoKMSAdd;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\nimport { isPageValid, updateAddField } from \"../../createTenantSlice\";\nimport { clearValidationError } from \"../../../utils\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n }),\n);\n\nconst AWSKMSAdd = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const encryptionTab = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionTab,\n );\n const awsEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsEndpoint,\n );\n const awsRegion = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsRegion,\n );\n const awsKMSKey = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsKMSKey,\n );\n const awsAccessKey = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsAccessKey,\n );\n const awsSecretKey = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsSecretKey,\n );\n const awsToken = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsToken,\n );\n const [validationErrors, setValidationErrors] = useState({});\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (!encryptionTab) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"aws_endpoint\",\n required: true,\n value: awsEndpoint,\n },\n {\n fieldKey: \"aws_region\",\n required: true,\n value: awsRegion,\n },\n {\n fieldKey: \"aws_accessKey\",\n required: true,\n value: awsAccessKey,\n },\n {\n fieldKey: \"aws_secretKey\",\n required: true,\n value: awsSecretKey,\n },\n ];\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n\n dispatch(\n isPageValid({\n pageName: \"encryption\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [\n encryptionTab,\n awsEndpoint,\n awsRegion,\n awsSecretKey,\n awsAccessKey,\n dispatch,\n ]);\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value }),\n );\n },\n [dispatch],\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n ) => {\n updateField(\"awsEndpoint\", e.target.value);\n cleanValidation(\"aws_endpoint\");\n }}\n label=\"Endpoint\"\n tooltip=\"Endpoint is the AWS SecretsManager endpoint. AWS SecretsManager endpoints have the following schema: secrestmanager[-fips]..amanzonaws.com\"\n value={awsEndpoint}\n error={validationErrors[\"aws_endpoint\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"awsRegion\", e.target.value);\n cleanValidation(\"aws_region\");\n }}\n label=\"Region\"\n tooltip=\"Region is the AWS region the SecretsManager is located\"\n value={awsRegion}\n error={validationErrors[\"aws_region\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"awsKMSKey\", e.target.value);\n }}\n label=\"KMS Key\"\n tooltip=\"KMSKey is the AWS-KMS key ID (CMK-ID) used to en/decrypt secrets managed by the SecretsManager. If empty, the default AWS KMS key is used\"\n value={awsKMSKey}\n />\n \n \n
\n Credentials\n \n ) => {\n updateField(\"awsAccessKey\", e.target.value);\n cleanValidation(\"aws_accessKey\");\n }}\n label=\"Access Key\"\n tooltip=\"AccessKey is the access key for authenticating to AWS\"\n value={awsAccessKey}\n error={validationErrors[\"aws_accessKey\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"awsSecretKey\", e.target.value);\n cleanValidation(\"aws_secretKey\");\n }}\n label=\"Secret Key\"\n tooltip=\"SecretKey is the secret key for authenticating to AWS\"\n value={awsSecretKey}\n error={validationErrors[\"aws_secretKey\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"awsToken\", e.target.value);\n }}\n label=\"Token\"\n value={awsToken}\n />\n \n
\n
\n
\n );\n};\n\nexport default AWSKMSAdd;\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Paper, SelectChangeEvent } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\n\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport FileSelector from \"../../../Common/FormComponents/FileSelector/FileSelector\";\nimport RadioGroupSelector from \"../../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport SectionH1 from \"../../../Common/SectionH1\";\nimport {\n addFileKESServerCert,\n addFileKMSCa,\n addFileKMSMTLSCert,\n addFileMinIOMTLSCert,\n isPageValid,\n updateAddField,\n} from \"../createTenantSlice\";\nimport VaultKMSAdd from \"./Encryption/VaultKMSAdd\";\nimport AzureKMSAdd from \"./Encryption/AzureKMSAdd\";\nimport GCPKMSAdd from \"./Encryption/GCPKMSAdd\";\nimport GemaltoKMSAdd from \"./Encryption/GemaltoKMSAdd\";\nimport AWSKMSAdd from \"./Encryption/AWSKMSAdd\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport Tabs from \"@mui/material/Tabs\";\nimport Tab from \"@mui/material/Tab\";\nimport CodeMirrorWrapper from \"../../../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport FormHr from \"../../../Common/FormHr\";\n\ninterface IEncryptionProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n encryptionTypeOptions: {\n marginBottom: 15,\n },\n mutualTlsConfig: {\n marginTop: 15,\n \"& fieldset\": {\n flex: 1,\n },\n },\n rightSpacer: {\n marginRight: 15,\n },\n responsiveContainer: {\n \"@media (max-width: 900px)\": {\n display: \"flex\",\n flexFlow: \"column\",\n },\n },\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst Encryption = ({ classes }: IEncryptionProps) => {\n const dispatch = useAppDispatch();\n\n const replicas = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.replicas,\n );\n const rawConfiguration = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.rawConfiguration,\n );\n const encryptionTab = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionTab,\n );\n const enableEncryption = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.enableEncryption,\n );\n const encryptionType = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionType,\n );\n\n const gcpProjectID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpProjectID,\n );\n const gcpEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpEndpoint,\n );\n const gcpClientEmail = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpClientEmail,\n );\n const gcpClientID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpClientID,\n );\n const gcpPrivateKeyID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpPrivateKeyID,\n );\n const gcpPrivateKey = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpPrivateKey,\n );\n const enableCustomCertsForKES = useSelector(\n (state: AppState) =>\n state.createTenant.fields.encryption.enableCustomCertsForKES,\n );\n const enableAutoCert = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableAutoCert,\n );\n const enableTLS = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableTLS,\n );\n const minioServerCertificates = useSelector(\n (state: AppState) =>\n state.createTenant.certificates.minioServerCertificates,\n );\n const kesServerCertificate = useSelector(\n (state: AppState) => state.createTenant.certificates.kesServerCertificate,\n );\n const minioMTLSCertificate = useSelector(\n (state: AppState) => state.createTenant.certificates.minioMTLSCertificate,\n );\n const kmsMTLSCertificate = useSelector(\n (state: AppState) => state.createTenant.certificates.kmsMTLSCertificate,\n );\n const kmsCA = useSelector(\n (state: AppState) => state.createTenant.certificates.kmsCA,\n );\n const enableCustomCerts = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableCustomCerts,\n );\n const kesSecurityContext = useSelector(\n (state: AppState) =>\n state.createTenant.fields.encryption.kesSecurityContext,\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n let encryptionAvailable = false;\n if (\n enableTLS &&\n (enableAutoCert ||\n (minioServerCertificates &&\n minioServerCertificates.filter(\n (item) => item.encoded_key && item.encoded_cert,\n ).length > 0))\n ) {\n encryptionAvailable = true;\n }\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value }),\n );\n },\n [dispatch],\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (enableEncryption) {\n encryptionValidation = [\n {\n fieldKey: \"rawConfiguration\",\n required: encryptionTab > 0,\n value: rawConfiguration,\n },\n {\n fieldKey: \"replicas\",\n required: true,\n value: replicas,\n customValidation: parseInt(replicas) < 1,\n customValidationMessage: \"Replicas needs to be 1 or greater\",\n },\n {\n fieldKey: \"kes_securityContext_runAsUser\",\n required: true,\n value: kesSecurityContext.runAsUser,\n customValidation:\n kesSecurityContext.runAsUser === \"\" ||\n parseInt(kesSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"kes_securityContext_runAsGroup\",\n required: true,\n value: kesSecurityContext.runAsGroup,\n customValidation:\n kesSecurityContext.runAsGroup === \"\" ||\n parseInt(kesSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"kes_securityContext_fsGroup\",\n required: true,\n value: kesSecurityContext.fsGroup!,\n customValidation:\n kesSecurityContext.fsGroup === \"\" ||\n parseInt(kesSecurityContext.fsGroup!) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n\n if (enableCustomCerts) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"serverKey\",\n required: !enableAutoCert,\n value: kesServerCertificate.encoded_key,\n },\n {\n fieldKey: \"serverCert\",\n required: !enableAutoCert,\n value: kesServerCertificate.encoded_cert,\n },\n {\n fieldKey: \"clientKey\",\n required: !enableAutoCert,\n value: minioMTLSCertificate.encoded_key,\n },\n {\n fieldKey: \"clientCert\",\n required: !enableAutoCert,\n value: minioMTLSCertificate.encoded_cert,\n },\n ];\n }\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n dispatch(\n isPageValid({\n pageName: \"encryption\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [\n rawConfiguration,\n encryptionTab,\n enableEncryption,\n encryptionType,\n gcpProjectID,\n gcpEndpoint,\n gcpClientEmail,\n gcpClientID,\n gcpPrivateKeyID,\n gcpPrivateKey,\n dispatch,\n enableAutoCert,\n enableCustomCerts,\n kesServerCertificate.encoded_key,\n kesServerCertificate.encoded_cert,\n minioMTLSCertificate.encoded_key,\n minioMTLSCertificate.encoded_cert,\n kesSecurityContext,\n replicas,\n ]);\n\n return (\n \n \n \n Encryption\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"enableEncryption\", checked);\n }}\n description=\"\"\n disabled={!encryptionAvailable}\n />\n \n \n \n \n \n MinIO Server-Side Encryption (SSE) protects objects as part of write\n operations, allowing clients to take advantage of server processing\n power to secure objects at the storage layer (encryption-at-rest).\n SSE also provides key functionality to regulatory and compliance\n requirements around secure locking and erasure.\n \n \n \n \n \n\n {enableEncryption && (\n \n \n , value: number) => {\n updateField(\"encryptionTab\", value);\n }}\n indicatorColor=\"primary\"\n textColor=\"primary\"\n aria-label=\"cluster-tabs\"\n variant=\"scrollable\"\n scrollButtons=\"auto\"\n >\n \n \n \n \n\n {encryptionTab ? (\n \n \n {\n updateField(\"rawConfiguration\", value);\n }}\n editorHeight={\"550px\"}\n />\n \n \n ) : (\n \n \n {\n updateField(\"encryptionType\", e.target.value);\n }}\n selectorOptions={[\n { label: \"Vault\", value: \"vault\" },\n { label: \"AWS\", value: \"aws\" },\n { label: \"Gemalto\", value: \"gemalto\" },\n { label: \"GCP\", value: \"gcp\" },\n { label: \"Azure\", value: \"azure\" },\n ]}\n />\n \n {encryptionType === \"vault\" && }\n {encryptionType === \"azure\" && }\n {encryptionType === \"gcp\" && }\n {encryptionType === \"aws\" && }\n {encryptionType === \"gemalto\" && }\n \n )}\n\n
\n

Additional Configurations

\n
\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"enableCustomCertsForKES\", checked);\n }}\n label={\"Custom Certificates\"}\n disabled={!enableAutoCert}\n />\n \n {(enableCustomCertsForKES || !enableAutoCert) && (\n \n \n \n
\n \n Encryption server certificates\n \n {\n dispatch(\n addFileKESServerCert({\n key: \"key\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n cleanValidation(\"serverKey\");\n }}\n accept=\".key,.pem\"\n id=\"serverKey\"\n name=\"serverKey\"\n label=\"Key\"\n error={validationErrors[\"serverKey\"] || \"\"}\n value={kesServerCertificate.key}\n required={!enableAutoCert}\n />\n {\n dispatch(\n addFileKESServerCert({\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n cleanValidation(\"serverCert\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"serverCert\"\n name=\"serverCert\"\n label=\"Cert\"\n error={validationErrors[\"serverCert\"] || \"\"}\n value={kesServerCertificate.cert}\n required={!enableAutoCert}\n />\n
\n
\n
\n \n \n
\n \n MinIO mTLS certificates (connection between MinIO and\n the Encryption server)\n \n {\n dispatch(\n addFileMinIOMTLSCert({\n key: \"key\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n cleanValidation(\"clientKey\");\n }}\n accept=\".key,.pem\"\n id=\"clientKey\"\n name=\"clientKey\"\n label=\"Key\"\n error={validationErrors[\"clientKey\"] || \"\"}\n value={minioMTLSCertificate.key}\n required={!enableAutoCert}\n />\n {\n dispatch(\n addFileMinIOMTLSCert({\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n cleanValidation(\"clientCert\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"clientCert\"\n name=\"clientCert\"\n label=\"Cert\"\n error={validationErrors[\"clientCert\"] || \"\"}\n value={minioMTLSCertificate.cert}\n required={!enableAutoCert}\n />\n
\n
\n
\n \n
\n \n KMS mTLS certificates (connection between the Encryption\n server and the KMS)\n \n {\n dispatch(\n addFileKMSMTLSCert({\n key: \"key\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n cleanValidation(\"vault_key\");\n }}\n accept=\".key,.pem\"\n id=\"vault_key\"\n name=\"vault_key\"\n label=\"Key\"\n value={kmsMTLSCertificate.key}\n />\n {\n dispatch(\n addFileKMSMTLSCert({\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n }),\n );\n cleanValidation(\"vault_cert\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"vault_cert\"\n name=\"vault_cert\"\n label=\"Cert\"\n value={kmsMTLSCertificate.cert}\n />\n {\n dispatch(\n addFileKMSCa({\n fileName: fileName,\n value: encodedValue,\n }),\n );\n cleanValidation(\"vault_ca\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"vault_ca\"\n name=\"vault_ca\"\n label=\"CA\"\n value={kmsCA.cert}\n />\n
\n
\n
\n )}\n \n \n ) => {\n updateField(\"replicas\", e.target.value);\n cleanValidation(\"replicas\");\n }}\n label=\"Replicas\"\n value={replicas}\n required\n error={validationErrors[\"replicas\"] || \"\"}\n />\n \n\n \n \n SecurityContext for KES pods\n \n \n \n \n ) => {\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n runAsUser: e.target.value,\n });\n cleanValidation(\"kes_securityContext_runAsUser\");\n }}\n label=\"Run As User\"\n value={kesSecurityContext.runAsUser}\n required\n error={\n validationErrors[\"kes_securityContext_runAsUser\"] ||\n \"\"\n }\n min=\"0\"\n />\n \n \n ) => {\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n runAsGroup: e.target.value,\n });\n cleanValidation(\"kes_securityContext_runAsGroup\");\n }}\n label=\"Run As Group\"\n value={kesSecurityContext.runAsGroup}\n required\n error={\n validationErrors[\"kes_securityContext_runAsGroup\"] ||\n \"\"\n }\n min=\"0\"\n />\n \n \n \n
\n \n \n \n ) => {\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n fsGroup: e.target.value,\n });\n cleanValidation(\"kes_securityContext_fsGroup\");\n }}\n label=\"FsGroup\"\n value={kesSecurityContext.fsGroup!}\n required\n error={\n validationErrors[\"kes_securityContext_fsGroup\"] || \"\"\n }\n min=\"0\"\n />\n \n \n ) => {\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n fsGroupChangePolicy: e.target.value,\n });\n }}\n options={[\n {\n label: \"Always\",\n value: \"Always\",\n },\n {\n label: \"OnRootMismatch\",\n value: \"OnRootMismatch\",\n },\n ]}\n />\n \n \n \n
\n \n
\n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n runAsNonRoot: checked,\n });\n }}\n label={\"Do not run as Root\"}\n />\n
\n
\n \n
\n
\n )}\n
\n
\n );\n};\n\nexport default withStyles(styles)(Encryption);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, IconButton, Paper, SelectChangeEvent } from \"@mui/material\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\n\nimport {\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { LabelKeyPair } from \"../../types\";\nimport RadioGroupSelector from \"../../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport api from \"../../../../../common/api\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { AddIcon, RemoveIcon } from \"mds\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport TolerationSelector from \"../../../Common/TolerationSelector/TolerationSelector\";\nimport { setModalErrorSnackMessage } from \"../../../../../systemSlice\";\nimport {\n addNewToleration,\n isPageValid,\n removeToleration,\n setKeyValuePairs,\n setTolerationInfo,\n updateAddField,\n} from \"../createTenantSlice\";\nimport H3Section from \"../../../Common/H3Section\";\n\ninterface IAffinityProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n overlayAction: {\n marginLeft: 10,\n display: \"flex\",\n alignItems: \"center\",\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n affinityConfigField: {\n display: \"flex\",\n },\n affinityFieldLabel: {\n display: \"flex\",\n flexFlow: \"column\",\n flex: 1,\n },\n radioField: {\n display: \"flex\",\n alignItems: \"flex-start\",\n marginTop: 10,\n \"& div:first-child\": {\n display: \"flex\",\n flexFlow: \"column\",\n alignItems: \"baseline\",\n textAlign: \"left !important\",\n },\n },\n affinityLabelKey: {\n \"& div:first-child\": {\n marginBottom: 0,\n },\n },\n affinityLabelValue: {\n marginLeft: 10,\n \"& div:first-child\": {\n marginBottom: 0,\n },\n },\n rowActions: {\n display: \"flex\",\n alignItems: \"center\",\n },\n affinityRow: {\n marginBottom: 10,\n display: \"flex\",\n },\n ...modalBasic,\n ...wizardCommon,\n });\n\ninterface OptionPair {\n label: string;\n value: string;\n}\n\nconst Affinity = ({ classes }: IAffinityProps) => {\n const dispatch = useAppDispatch();\n\n const podAffinity = useSelector(\n (state: AppState) => state.createTenant.fields.affinity.podAffinity,\n );\n const nodeSelectorLabels = useSelector(\n (state: AppState) => state.createTenant.fields.affinity.nodeSelectorLabels,\n );\n const withPodAntiAffinity = useSelector(\n (state: AppState) => state.createTenant.fields.affinity.withPodAntiAffinity,\n );\n const keyValuePairs = useSelector(\n (state: AppState) => state.createTenant.nodeSelectorPairs,\n );\n const tolerations = useSelector(\n (state: AppState) => state.createTenant.tolerations,\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n const [loading, setLoading] = useState(true);\n const [keyValueMap, setKeyValueMap] = useState<{ [key: string]: string[] }>(\n {},\n );\n const [keyOptions, setKeyOptions] = useState([]);\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({\n pageName: \"affinity\",\n field: field,\n value: value,\n }),\n );\n },\n [dispatch],\n );\n\n useEffect(() => {\n if (loading) {\n api\n .invoke(\"GET\", `/api/v1/nodes/labels`)\n .then((res: { [key: string]: string[] }) => {\n setLoading(false);\n setKeyValueMap(res);\n let keys: OptionPair[] = [];\n for (let k in res) {\n keys.push({\n label: k,\n value: k,\n });\n }\n setKeyOptions(keys);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n setKeyValueMap({});\n });\n }\n }, [dispatch, loading]);\n\n useEffect(() => {\n if (keyValuePairs) {\n const vlr = keyValuePairs\n .filter((kvp) => kvp.key !== \"\")\n .map((kvp) => `${kvp.key}=${kvp.value}`)\n .filter((kvs, i, a) => a.indexOf(kvs) === i);\n const vl = vlr.join(\"&\");\n updateField(\"nodeSelectorLabels\", vl);\n }\n }, [keyValuePairs, updateField]);\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n\n if (podAffinity === \"nodeSelector\") {\n let valid = true;\n\n const splittedLabels = nodeSelectorLabels.split(\"&\");\n\n if (splittedLabels.length === 1 && splittedLabels[0] === \"\") {\n valid = false;\n }\n\n splittedLabels.forEach((item: string, index: number) => {\n const splitItem = item.split(\"=\");\n\n if (splitItem.length !== 2) {\n valid = false;\n }\n\n if (index + 1 !== splittedLabels.length) {\n if (splitItem[0] === \"\" || splitItem[1] === \"\") {\n valid = false;\n }\n }\n });\n\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"labels\",\n required: true,\n value: nodeSelectorLabels,\n customValidation: !valid,\n customValidationMessage:\n \"You need to add at least one label key-pair\",\n },\n ];\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n dispatch(\n isPageValid({\n pageName: \"affinity\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [dispatch, podAffinity, nodeSelectorLabels]);\n\n const updateToleration = (index: number, field: string, value: any) => {\n const alterToleration = { ...tolerations[index], [field]: value };\n\n dispatch(\n setTolerationInfo({\n index: index,\n tolerationValue: alterToleration,\n }),\n );\n };\n\n return (\n \n
\n Pod Placement\n \n Configure how pods will be assigned to nodes\n \n
\n \n \n
Type
\n \n MinIO supports multiple configurations for Pod Affinity\n \n \n {\n updateField(\"podAffinity\", e.target.value);\n }}\n selectorOptions={[\n { label: \"None\", value: \"none\" },\n { label: \"Default (Pod Anti-Affinity)\", value: \"default\" },\n { label: \"Node Selector\", value: \"nodeSelector\" },\n ]}\n />\n \n
\n
\n {podAffinity === \"nodeSelector\" && (\n \n
\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"withPodAntiAffinity\", checked);\n }}\n label={\"With Pod Anti-Affinity\"}\n />\n \n \n

Labels

\n {validationErrors[\"labels\"]}\n \n {keyValuePairs &&\n keyValuePairs.map((kvp, i) => {\n return (\n \n \n {keyOptions.length > 0 && (\n ) => {\n const newKey = e.target.value as string;\n const newLKP: LabelKeyPair = {\n key: newKey,\n value: keyValueMap[newKey][0],\n };\n const arrCp: LabelKeyPair[] = [...keyValuePairs];\n arrCp[i] = newLKP;\n dispatch(setKeyValuePairs(arrCp));\n }}\n id=\"select-access-policy\"\n name=\"select-access-policy\"\n label={\"\"}\n value={kvp.key}\n options={keyOptions}\n />\n )}\n {keyOptions.length === 0 && (\n {\n const arrCp: LabelKeyPair[] = [...keyValuePairs];\n arrCp[i] = {\n key: arrCp[i].key,\n value: e.target.value as string,\n };\n dispatch(setKeyValuePairs(arrCp));\n }}\n index={i}\n placeholder={\"Key\"}\n />\n )}\n \n \n {keyOptions.length > 0 && (\n ) => {\n const arrCp: LabelKeyPair[] = [...keyValuePairs];\n arrCp[i] = {\n key: arrCp[i].key,\n value: e.target.value as string,\n };\n dispatch(setKeyValuePairs(arrCp));\n }}\n id=\"select-access-policy\"\n name=\"select-access-policy\"\n label={\"\"}\n value={kvp.value}\n options={\n keyValueMap[kvp.key]\n ? keyValueMap[kvp.key].map((v) => {\n return { label: v, value: v };\n })\n : []\n }\n />\n )}\n {keyOptions.length === 0 && (\n {\n const arrCp: LabelKeyPair[] = [...keyValuePairs];\n arrCp[i] = {\n key: arrCp[i].key,\n value: e.target.value as string,\n };\n dispatch(setKeyValuePairs(arrCp));\n }}\n index={i}\n placeholder={\"value\"}\n />\n )}\n \n \n
\n {\n const arrCp = [...keyValuePairs];\n if (keyOptions.length > 0) {\n arrCp.push({\n key: keyOptions[0].value,\n value: keyValueMap[keyOptions[0].value][0],\n });\n } else {\n arrCp.push({ key: \"\", value: \"\" });\n }\n\n dispatch(setKeyValuePairs(arrCp));\n }}\n disabled={i !== keyValuePairs.length - 1}\n >\n \n \n
\n
\n {\n const arrCp = keyValuePairs.filter(\n (item, index) => index !== i,\n );\n dispatch(setKeyValuePairs(arrCp));\n }}\n disabled={keyValuePairs.length <= 1}\n >\n \n \n
\n
\n
\n );\n })}\n
\n \n
\n )}\n \n \n

Tolerations

\n \n {validationErrors[\"tolerations\"]}\n \n \n {tolerations &&\n tolerations.map((tol, i) => {\n return (\n \n {\n updateToleration(i, \"effect\", value);\n }}\n tolerationKey={tol.key}\n onTolerationKeyChange={(value) => {\n updateToleration(i, \"key\", value);\n }}\n operator={tol.operator}\n onOperatorChange={(value) => {\n updateToleration(i, \"operator\", value);\n }}\n value={tol.value}\n onValueChange={(value) => {\n updateToleration(i, \"value\", value);\n }}\n tolerationSeconds={tol.tolerationSeconds?.seconds || 0}\n onSecondsChange={(value) => {\n updateToleration(i, \"tolerationSeconds\", {\n seconds: value,\n });\n }}\n index={i}\n />\n
\n {\n dispatch(addNewToleration());\n }}\n disabled={i !== tolerations.length - 1}\n >\n \n \n
\n\n
\n dispatch(removeToleration(i))}\n disabled={tolerations.length <= 1}\n >\n \n \n
\n
\n );\n })}\n
\n
\n \n
\n );\n};\n\nexport default withStyles(styles)(Affinity);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, Paper } from \"@mui/material\";\nimport {\n formFieldStyles,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { isPageValid, updateAddField } from \"../createTenantSlice\";\nimport H3Section from \"../../../Common/H3Section\";\n\ninterface IImagesProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...wizardCommon,\n });\n\nconst Images = ({ classes }: IImagesProps) => {\n const dispatch = useAppDispatch();\n\n const customImage = useSelector(\n (state: AppState) => state.createTenant.fields.configure.customImage,\n );\n const imageName = useSelector(\n (state: AppState) => state.createTenant.fields.configure.imageName,\n );\n const customDockerhub = useSelector(\n (state: AppState) => state.createTenant.fields.configure.customDockerhub,\n );\n const imageRegistry = useSelector(\n (state: AppState) => state.createTenant.fields.configure.imageRegistry,\n );\n const imageRegistryUsername = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.imageRegistryUsername,\n );\n const imageRegistryPassword = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.imageRegistryPassword,\n );\n\n const tenantCustom = useSelector(\n (state: AppState) => state.createTenant.fields.configure.tenantCustom,\n );\n\n const kesImage = useSelector(\n (state: AppState) => state.createTenant.fields.configure.kesImage,\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"configure\", field: field, value: value }),\n );\n },\n [dispatch],\n );\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n\n if (customImage) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"image\",\n required: false,\n value: imageName,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage: \"Format must be of form: 'minio/minio:VERSION'\",\n },\n {\n fieldKey: \"kesImage\",\n required: false,\n value: kesImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage: \"Format must be of form: 'minio/kes:VERSION'\",\n },\n ];\n if (customDockerhub) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"registry\",\n required: true,\n value: imageRegistry,\n },\n {\n fieldKey: \"registryUsername\",\n required: true,\n value: imageRegistryUsername,\n },\n {\n fieldKey: \"registryPassword\",\n required: true,\n value: imageRegistryPassword,\n },\n ];\n }\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n dispatch(\n isPageValid({\n pageName: \"configure\",\n valid: Object.keys(commonVal).length === 0,\n }),\n );\n\n setValidationErrors(commonVal);\n }, [\n customImage,\n imageName,\n kesImage,\n customDockerhub,\n imageRegistry,\n imageRegistryUsername,\n imageRegistryPassword,\n dispatch,\n tenantCustom,\n ]);\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n
\n Container Images\n \n Specify the container images used by the Tenant and its features.\n \n
\n\n \n \n ) => {\n updateField(\"imageName\", e.target.value);\n cleanValidation(\"image\");\n }}\n label=\"MinIO\"\n value={imageName}\n error={validationErrors[\"image\"] || \"\"}\n placeholder=\"minio/minio:RELEASE.2023-10-07T15-07-38Z\"\n />\n \n\n \n ) => {\n updateField(\"kesImage\", e.target.value);\n cleanValidation(\"kesImage\");\n }}\n label=\"KES\"\n value={kesImage}\n error={validationErrors[\"kesImage\"] || \"\"}\n placeholder=\"minio/kes:2023-10-03T00-48-37Z\"\n />\n \n \n\n {customImage && (\n \n \n

Custom Container Registry

\n
\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"customDockerhub\", checked);\n }}\n label={\"Use a private container registry\"}\n />\n \n
\n )}\n {customDockerhub && (\n \n \n ) => {\n updateField(\"imageRegistry\", e.target.value);\n }}\n label=\"Endpoint\"\n value={imageRegistry}\n error={validationErrors[\"registry\"] || \"\"}\n placeholder=\"https://index.docker.io/v1/\"\n required\n />\n \n \n ) => {\n updateField(\"imageRegistryUsername\", e.target.value);\n }}\n label=\"Username\"\n value={imageRegistryUsername}\n error={validationErrors[\"registryUsername\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"imageRegistryPassword\", e.target.value);\n }}\n label=\"Password\"\n value={imageRegistryPassword}\n error={validationErrors[\"registryPassword\"] || \"\"}\n required\n />\n \n \n )}\n
\n );\n};\n\nexport default withStyles(styles)(Images);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableRow from \"@mui/material/TableRow\";\nimport { niceBytes } from \"../../../../../common/utils\";\n\nimport { Divider } from \"@mui/material\";\n\ninterface ISizePreviewProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n margin: 4,\n },\n table: {\n \"& .MuiTableCell-root\": {\n fontSize: 13,\n },\n },\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst SizePreview = ({ classes }: ISizePreviewProps) => {\n const nodes = useSelector(\n (state: AppState) => state.createTenant.fields.tenantSize.nodes,\n );\n const memoryNode = useSelector(\n (state: AppState) =>\n state.createTenant.fields.tenantSize.resourcesMemoryRequest,\n );\n const ecParity = useSelector(\n (state: AppState) => state.createTenant.fields.tenantSize.ecParity,\n );\n\n const distribution = useSelector(\n (state: AppState) => state.createTenant.fields.tenantSize.distribution,\n );\n const ecParityCalc = useSelector(\n (state: AppState) => state.createTenant.fields.tenantSize.ecParityCalc,\n );\n\n const cpuToUse = useSelector(\n (state: AppState) =>\n state.createTenant.fields.tenantSize.resourcesCPURequest,\n );\n const integrationSelection = useSelector(\n (state: AppState) =>\n state.createTenant.fields.tenantSize.integrationSelection,\n );\n\n const usableInformation = ecParityCalc.storageFactors.find(\n (element) => element.erasureCode === ecParity,\n );\n\n return (\n
\n

Resource Allocation

\n \n \n \n \n Number of Servers\n \n {parseInt(nodes) > 0 ? nodes : \"-\"}\n \n \n {integrationSelection.typeSelection === \"\" &&\n integrationSelection.storageClass === \"\" && (\n \n \n Drives per Server\n \n {distribution ? distribution.disks : \"-\"}\n \n \n \n Drive Capacity\n \n {distribution ? niceBytes(distribution.pvSize) : \"-\"}\n \n \n \n )}\n\n \n Total Volumes\n \n {distribution ? distribution.persistentVolumes : \"-\"}\n \n \n {integrationSelection.typeSelection === \"\" &&\n integrationSelection.storageClass === \"\" && (\n \n \n Memory per Node\n {memoryNode} Gi\n \n \n \n CPU Selection\n \n \n {cpuToUse}\n \n \n \n )}\n \n
\n {ecParityCalc.error === 0 && usableInformation && (\n \n

Erasure Code Configuration

\n \n \n \n \n EC Parity\n \n {ecParity !== \"\" ? ecParity : \"-\"}\n \n \n \n Raw Capacity\n \n {niceBytes(ecParityCalc.rawCapacity)}\n \n \n \n Usable Capacity\n \n {niceBytes(usableInformation.maxCapacity)}\n \n \n \n \n Server Failures Tolerated\n \n \n {distribution\n ? Math.floor(\n usableInformation.maxFailureTolerations /\n distribution.disks,\n )\n : \"-\"}\n \n \n \n \n
\n )}\n {integrationSelection.typeSelection !== \"\" &&\n integrationSelection.storageClass !== \"\" && (\n \n

Single Instance Configuration

\n \n \n \n \n CPU\n \n {integrationSelection.CPU !== 0\n ? integrationSelection.CPU\n : \"-\"}\n \n \n \n Memory\n \n {integrationSelection.memory !== 0\n ? `${integrationSelection.memory} Gi`\n : \"-\"}\n \n \n \n Drives per Server\n \n {integrationSelection.drivesPerServer !== 0\n ? `${integrationSelection.drivesPerServer}`\n : \"-\"}\n \n \n \n \n Drive Size\n \n \n {integrationSelection.driveSize.driveSize}\n {integrationSelection.driveSize.sizeUnit}\n \n \n \n \n
\n )}\n
\n );\n};\n\nexport default withStyles(styles)(SizePreview);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { DialogContentText, LinearProgress } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n deleteDialogStyles,\n modalBasic,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmModalIcon } from \"mds\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { closeAddNSModal } from \"../../createTenantSlice\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { createNamespaceAsync } from \"../../thunks/namespaceThunks\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n wrapText: {\n maxWidth: \"200px\",\n whiteSpace: \"normal\",\n wordWrap: \"break-word\",\n },\n ...modalBasic,\n ...deleteDialogStyles,\n }),\n);\n\nconst AddNamespaceModal = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const namespace = useSelector(\n (state: AppState) => state.createTenant.fields.nameTenant.namespace,\n );\n const addNamespaceLoading = useSelector(\n (state: AppState) => state.createTenant.addNSLoading,\n );\n const addNamespaceOpen = useSelector(\n (state: AppState) => state.createTenant.addNSOpen,\n );\n\n return (\n }\n isLoading={addNamespaceLoading}\n onConfirm={() => {\n dispatch(createNamespaceAsync());\n }}\n onClose={() => {\n dispatch(closeAddNSModal());\n }}\n confirmationContent={\n \n {addNamespaceLoading && }\n \n Are you sure you want to add a namespace called\n
\n {namespace}?\n
\n
\n }\n />\n );\n};\n\nexport default AddNamespaceModal;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useMemo } from \"react\";\nimport { AddIcon } from \"mds\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { openAddNSModal, setNamespace } from \"../../createTenantSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport AddNamespaceModal from \"../helpers/AddNamespaceModal\";\nimport debounce from \"lodash/debounce\";\nimport { IMkEnvs } from \"./utils\";\nimport { validateNamespaceAsync } from \"../../thunks/namespaceThunks\";\n\nconst NamespaceSelector = ({ formToRender }: { formToRender?: IMkEnvs }) => {\n const dispatch = useAppDispatch();\n\n const namespace = useSelector(\n (state: AppState) => state.createTenant.fields.nameTenant.namespace,\n );\n\n const showNSCreateButton = useSelector(\n (state: AppState) => state.createTenant.showNSCreateButton,\n );\n\n const namespaceError = useSelector(\n (state: AppState) => state.createTenant.validationErrors[\"namespace\"],\n );\n const openAddNSConfirm = useSelector(\n (state: AppState) => state.createTenant.addNSOpen,\n );\n\n const debounceNamespace = useMemo(\n () =>\n debounce(() => {\n dispatch(validateNamespaceAsync());\n }, 500),\n [dispatch],\n );\n\n useEffect(() => {\n if (namespace !== \"\") {\n debounceNamespace();\n // Cancel previous debounce calls during useEffect cleanup.\n return debounceNamespace.cancel;\n }\n }, [debounceNamespace, namespace]);\n\n const addNamespace = () => {\n dispatch(openAddNSModal());\n };\n\n return (\n \n {openAddNSConfirm && }\n ) => {\n dispatch(setNamespace(e.target.value));\n }}\n label=\"Namespace\"\n value={namespace}\n error={namespaceError || \"\"}\n overlayId={\"add-namespace\"}\n overlayIcon={showNSCreateButton ? : null}\n overlayAction={addNamespace}\n required\n />\n \n );\n};\nexport default NamespaceSelector;\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport get from \"lodash/get\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport SelectWrapper from \"../../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport SizePreview from \"../SizePreview\";\nimport TenantSize from \"./TenantSize\";\nimport { Paper, SelectChangeEvent } from \"@mui/material\";\nimport { IMkEnvs, mkPanelConfigurations } from \"./utils\";\nimport {\n isPageValid,\n setStorageType,\n setTenantName,\n updateAddField,\n} from \"../../createTenantSlice\";\nimport { selFeatures } from \"../../../../consoleSlice\";\nimport NamespaceSelector from \"./NamespaceSelector\";\nimport H3Section from \"../../../../Common/H3Section\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n sizePreview: {\n marginLeft: 10,\n background: \"#FFFFFF\",\n border: \"1px solid #EAEAEA\",\n padding: 2,\n marginTop: 20,\n },\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst NameTenantField = () => {\n const dispatch = useAppDispatch();\n const tenantName = useSelector(\n (state: AppState) => state.createTenant.fields.nameTenant.tenantName,\n );\n\n const tenantNameError = useSelector(\n (state: AppState) => state.createTenant.validationErrors[\"tenant-name\"],\n );\n\n return (\n ) => {\n dispatch(setTenantName(e.target.value));\n }}\n label=\"Name\"\n value={tenantName}\n required\n error={tenantNameError || \"\"}\n />\n );\n};\n\ninterface INameTenantMainScreen {\n classes: any;\n formToRender?: IMkEnvs;\n}\n\nconst NameTenantMain = ({ classes, formToRender }: INameTenantMainScreen) => {\n const dispatch = useAppDispatch();\n\n const selectedStorageClass = useSelector(\n (state: AppState) =>\n state.createTenant.fields.nameTenant.selectedStorageClass,\n );\n const selectedStorageType = useSelector(\n (state: AppState) =>\n state.createTenant.fields.nameTenant.selectedStorageType,\n );\n const storageClasses = useSelector(\n (state: AppState) => state.createTenant.storageClasses,\n );\n const features = useSelector(selFeatures);\n\n // Common\n const updateField = useCallback(\n (field: string, value: string) => {\n dispatch(\n updateAddField({ pageName: \"nameTenant\", field: field, value: value }),\n );\n },\n [dispatch],\n );\n\n // Validation\n useEffect(() => {\n const isValid =\n (formToRender === IMkEnvs.default && storageClasses.length > 0) ||\n (formToRender !== IMkEnvs.default && selectedStorageType !== \"\");\n\n dispatch(isPageValid({ pageName: \"nameTenant\", valid: isValid }));\n }, [storageClasses, dispatch, selectedStorageType, formToRender]);\n\n return (\n \n \n \n \n \n \n
\n Name\n \n How would you like to name this new tenant?\n \n
\n
\n \n
\n
\n \n \n \n {formToRender === IMkEnvs.default ? (\n \n ) => {\n updateField(\n \"selectedStorageClass\",\n e.target.value as string,\n );\n }}\n label=\"Storage Class\"\n value={selectedStorageClass}\n options={storageClasses}\n disabled={storageClasses.length < 1}\n />\n \n ) : (\n \n ) => {\n dispatch(\n setStorageType({\n storageType: e.target.value as string,\n features: features,\n }),\n );\n }}\n label={get(\n mkPanelConfigurations,\n `${formToRender}.variantSelectorLabel`,\n \"Storage Type\",\n )}\n value={selectedStorageType}\n options={get(\n mkPanelConfigurations,\n `${formToRender}.variantSelectorValues`,\n [],\n )}\n />\n \n )}\n {formToRender === IMkEnvs.default ? (\n \n ) : (\n get(\n mkPanelConfigurations,\n `${formToRender}.sizingComponent`,\n null,\n )\n )}\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n );\n};\n\nexport default withStyles(styles)(NameTenantMain);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport get from \"lodash/get\";\nimport NameTenantMain from \"./NameTenantMain\";\nimport { IMkEnvs, resourcesConfigurations } from \"./utils\";\nimport { selFeatures } from \"../../../../consoleSlice\";\n\nconst TenantResources = () => {\n const features = useSelector(selFeatures);\n const [formRender, setFormRender] = useState(null);\n\n useEffect(() => {\n let setConfiguration = IMkEnvs.default;\n\n if (features && features.length !== 0) {\n const possibleVariables = Object.keys(resourcesConfigurations);\n\n possibleVariables.forEach((element) => {\n if (features.includes(element)) {\n setConfiguration = get(\n resourcesConfigurations,\n element,\n IMkEnvs.default,\n );\n }\n });\n }\n\n setFormRender(setConfiguration);\n }, [features]);\n\n if (formRender === null) {\n return null;\n }\n\n return ;\n};\n\nexport default TenantResources;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nexport const requiredPages = [\n \"nameTenant\",\n \"tenantSize\",\n \"configure\",\n \"affinity\",\n \"identityProvider\",\n \"security\",\n \"encryption\",\n];\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Button } from \"mds\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { requiredPages } from \"./common\";\nimport { createTenantAsync } from \"./thunks/createTenantThunk\";\n\nconst CreateTenantButton = () => {\n const dispatch = useAppDispatch();\n\n const addSending = useSelector(\n (state: AppState) => state.createTenant.addingTenant,\n );\n\n const validPages = useSelector(\n (state: AppState) => state.createTenant.validPages,\n );\n\n const selectedStorageClass = useSelector(\n (state: AppState) =>\n state.createTenant.fields.nameTenant.selectedStorageClass,\n );\n\n const enabled =\n !addSending &&\n selectedStorageClass !== \"\" &&\n requiredPages.every((v) => validPages.includes(v));\n\n return (\n {\n dispatch(createTenantAsync());\n }}\n disabled={!enabled}\n key={`button-AddTenant-Create`}\n label={\"Create\"}\n />\n );\n};\n\nexport default CreateTenantButton;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport CredentialsPrompt from \"../../Common/CredentialsPrompt/CredentialsPrompt\";\nimport { resetAddTenantForm } from \"./createTenantSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { useNavigate } from \"react-router-dom\";\n\nconst NewTenantCredentials = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const showNewCredentials = useSelector(\n (state: AppState) => state.createTenant.showNewCredentials,\n );\n const createdAccount = useSelector(\n (state: AppState) => state.createTenant.createdAccount,\n );\n\n return (\n \n {showNewCredentials && (\n {\n dispatch(resetAddTenantForm());\n navigate(\"/tenants\");\n }}\n entity=\"Tenant\"\n />\n )}\n \n );\n};\n\nexport default NewTenantCredentials;\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport Grid from \"@mui/material/Grid\";\nimport { LinearProgress } from \"@mui/material\";\n\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n modalBasic,\n settingsCommon,\n wizardCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport GenericWizard from \"../../Common/GenericWizard/GenericWizard\";\nimport {\n IWizardButton,\n IWizardElement,\n} from \"../../Common/GenericWizard/types\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport Configure from \"./Steps/Configure\";\nimport IdentityProvider from \"./Steps/IdentityProvider\";\nimport Security from \"./Steps/Security\";\nimport Encryption from \"./Steps/Encryption\";\nimport Affinity from \"./Steps/Affinity\";\nimport Images from \"./Steps/Images\";\nimport PageLayout from \"../../Common/Layout/PageLayout\";\n\nimport TenantResources from \"./Steps/TenantResources/TenantResources\";\nimport {\n IMkEnvs,\n resourcesConfigurations,\n} from \"./Steps/TenantResources/utils\";\nimport { BackLink, HelpBox, StorageIcon } from \"mds\";\nimport { selFeatures } from \"../../consoleSlice\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { resetAddTenantForm } from \"./createTenantSlice\";\nimport CreateTenantButton from \"./CreateTenantButton\";\nimport NewTenantCredentials from \"./NewTenantCredentials\";\nimport { useNavigate } from \"react-router-dom\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n pageBox: {\n border: \"1px solid #EAEAEA\",\n },\n ...modalBasic,\n ...wizardCommon,\n ...settingsCommon,\n }),\n);\n\nconst AddTenant = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const classes = useStyles();\n\n const features = useSelector(selFeatures);\n\n // Fields\n const addSending = useSelector(\n (state: AppState) => state.createTenant.addingTenant,\n );\n const [formRender, setFormRender] = useState(null);\n\n useEffect(() => {\n let setConfiguration = IMkEnvs.default;\n\n if (features && features.length !== 0) {\n const possibleVariables = Object.keys(resourcesConfigurations);\n\n possibleVariables.forEach((element) => {\n if (features.includes(element)) {\n setConfiguration = get(\n resourcesConfigurations,\n element,\n IMkEnvs.default,\n );\n }\n });\n }\n\n setFormRender(setConfiguration);\n }, [features]);\n\n const cancelButton = {\n label: \"Cancel\",\n type: \"other\",\n enabled: true,\n action: () => {\n dispatch(resetAddTenantForm());\n navigate(\"/tenants\");\n },\n };\n\n const createButton: IWizardButton = {\n componentRender: ,\n };\n\n const wizardSteps: IWizardElement[] = [\n {\n label: \"Setup\",\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Configure\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Images\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Pod Placement\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Identity Provider\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Security\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Encryption\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n ];\n\n let filteredWizardSteps = wizardSteps;\n\n return (\n \n \n {\n dispatch(resetAddTenantForm());\n navigate(\"/tenants\");\n }}\n label={\"Tenants\"}\n />\n }\n />\n\n \n {addSending && (\n \n \n \n )}\n \n \n \n {formRender === IMkEnvs.aws && (\n \n }\n help={\n \n Performance Optimized: Uses the gp3 EBS storage\n class class configured at 1,000Mi/s throughput and 16,000\n IOPS, however the minimum volume size for this type of EBS\n volume is 32Gi.\n
\n
\n Storage Optimized: Uses the sc1 EBS storage\n class, however the minimum volume size for this type of EBS\n volume is  \n 16Ti to unlock their maximum throughput speed of\n 250Mi/s.\n
\n }\n />\n
\n )}\n
\n
\n );\n};\n\nexport default AddTenant;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Box } from \"@mui/material\";\nimport { CertificateIcon } from \"mds\";\nimport { useParams } from \"react-router-dom\";\nimport { AppState } from \"../../../../store\";\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string;\n}) => {\n return (\n \n {icon}{\" \"}\n
\n {description}\n
\n \n );\n};\nconst TLSHelpBox = () => {\n const params = useParams();\n const tenantNameParam = params.tenantName || \"\";\n const tenantNamespaceParam = params.tenantNamespace || \"\";\n const namespace = useSelector((state: AppState) => {\n var defaultNamespace = \"\";\n if (tenantNamespaceParam !== \"\") {\n return tenantNamespaceParam;\n }\n if (state.createTenant.fields.nameTenant.namespace !== \"\") {\n return state.createTenant.fields.nameTenant.namespace;\n }\n return defaultNamespace;\n });\n\n const tenantName = useSelector((state: AppState) => {\n var defaultTenantName = \"\";\n if (tenantNameParam !== \"\") {\n return tenantNameParam;\n }\n\n if (state.createTenant.fields.nameTenant.tenantName !== \"\") {\n return state.createTenant.fields.nameTenant.tenantName;\n }\n return defaultTenantName;\n });\n\n return (\n \n \n }\n description={`TLS Certificates Warning`}\n />\n \n Automatic certificate generation is not enabled.\n
\n
\n If you wish to continue only with custom certificates make sure\n they are valid for the following internode hostnames, i.e.:\n
\n
\n \n minio.{namespace}\n
\n minio.{namespace}.svc\n
\n minio.{namespace}.svc.<cluster domain>\n
\n *.{tenantName}-hl.{namespace}.svc.<cluster domain>\n
\n *.{namespace}.svc.<cluster domain>\n \n
\n Replace <tenant-name>,{\" \"}\n <namespace> and\n <cluster domain> with the actual values for your\n MinIO tenant.\n
\n
\n You can learn more at our{\" \"}\n \n documentation\n \n .\n
\n \n \n );\n};\n\nexport default TLSHelpBox;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Grid } from \"@mui/material\";\nimport { LDAPIcon, OIDCIcon, UsersIcon } from \"mds\";\n\nexport const OIDCLogoElement = () => {\n return (\n \n \n \n \n Open ID\n \n );\n};\n\nexport const LDAPLogoElement = () => {\n return (\n \n \n \n \n LDAP / Active Directory\n \n );\n};\n\nexport const BuiltInLogoElement = () => {\n return (\n \n \n \n \n Built-in\n \n );\n};\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorBlock: {\n color: theme.palette?.error.main || \"#C83B51\",\n },\n });\n\ninterface IErrorBlockProps {\n classes: any;\n errorMessage: string;\n withBreak?: boolean;\n}\n\nconst ErrorBlock = ({\n classes,\n errorMessage,\n withBreak = true,\n}: IErrorBlockProps) => {\n return (\n \n {withBreak &&
}\n \n {errorMessage}\n \n
\n );\n};\n\nexport default withStyles(styles)(ErrorBlock);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"\n}), 'Add');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z\"\n}), 'AttachFile');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"\n}), 'Cancel');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM7.5 18c-.83 0-1.5-.67-1.5-1.5S6.67 15 7.5 15s1.5.67 1.5 1.5S8.33 18 7.5 18zm0-9C6.67 9 6 8.33 6 7.5S6.67 6 7.5 6 9 6.67 9 7.5 8.33 9 7.5 9zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm0-9c-.83 0-1.5-.67-1.5-1.5S15.67 6 16.5 6s1.5.67 1.5 1.5S17.33 9 16.5 9z\"\n}), 'Casino');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\"\n}), 'Delete');\nexports.default = _default;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"absolute\", \"children\", \"className\", \"component\", \"flexItem\", \"light\", \"orientation\", \"role\", \"textAlign\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getDividerUtilityClass } from './dividerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n absolute,\n children,\n classes,\n flexItem,\n light,\n orientation,\n textAlign,\n variant\n } = ownerState;\n const slots = {\n root: ['root', absolute && 'absolute', variant, light && 'light', orientation === 'vertical' && 'vertical', flexItem && 'flexItem', children && 'withChildren', children && orientation === 'vertical' && 'withChildrenVertical', textAlign === 'right' && orientation !== 'vertical' && 'textAlignRight', textAlign === 'left' && orientation !== 'vertical' && 'textAlignLeft'],\n wrapper: ['wrapper', orientation === 'vertical' && 'wrapperVertical']\n };\n return composeClasses(slots, getDividerUtilityClass, classes);\n};\nconst DividerRoot = styled('div', {\n name: 'MuiDivider',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.absolute && styles.absolute, styles[ownerState.variant], ownerState.light && styles.light, ownerState.orientation === 'vertical' && styles.vertical, ownerState.flexItem && styles.flexItem, ownerState.children && styles.withChildren, ownerState.children && ownerState.orientation === 'vertical' && styles.withChildrenVertical, ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical' && styles.textAlignRight, ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical' && styles.textAlignLeft];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n margin: 0,\n // Reset browser default style.\n flexShrink: 0,\n borderWidth: 0,\n borderStyle: 'solid',\n borderColor: (theme.vars || theme).palette.divider,\n borderBottomWidth: 'thin'\n}, ownerState.absolute && {\n position: 'absolute',\n bottom: 0,\n left: 0,\n width: '100%'\n}, ownerState.light && {\n borderColor: theme.vars ? `rgba(${theme.vars.palette.dividerChannel} / 0.08)` : alpha(theme.palette.divider, 0.08)\n}, ownerState.variant === 'inset' && {\n marginLeft: 72\n}, ownerState.variant === 'middle' && ownerState.orientation === 'horizontal' && {\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2)\n}, ownerState.variant === 'middle' && ownerState.orientation === 'vertical' && {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1)\n}, ownerState.orientation === 'vertical' && {\n height: '100%',\n borderBottomWidth: 0,\n borderRightWidth: 'thin'\n}, ownerState.flexItem && {\n alignSelf: 'stretch',\n height: 'auto'\n}), ({\n ownerState\n}) => _extends({}, ownerState.children && {\n display: 'flex',\n whiteSpace: 'nowrap',\n textAlign: 'center',\n border: 0,\n '&::before, &::after': {\n content: '\"\"',\n alignSelf: 'center'\n }\n}), ({\n theme,\n ownerState\n}) => _extends({}, ownerState.children && ownerState.orientation !== 'vertical' && {\n '&::before, &::after': {\n width: '100%',\n borderTop: `thin solid ${(theme.vars || theme).palette.divider}`\n }\n}), ({\n theme,\n ownerState\n}) => _extends({}, ownerState.children && ownerState.orientation === 'vertical' && {\n flexDirection: 'column',\n '&::before, &::after': {\n height: '100%',\n borderLeft: `thin solid ${(theme.vars || theme).palette.divider}`\n }\n}), ({\n ownerState\n}) => _extends({}, ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical' && {\n '&::before': {\n width: '90%'\n },\n '&::after': {\n width: '10%'\n }\n}, ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical' && {\n '&::before': {\n width: '10%'\n },\n '&::after': {\n width: '90%'\n }\n}));\nconst DividerWrapper = styled('span', {\n name: 'MuiDivider',\n slot: 'Wrapper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.wrapper, ownerState.orientation === 'vertical' && styles.wrapperVertical];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'inline-block',\n paddingLeft: `calc(${theme.spacing(1)} * 1.2)`,\n paddingRight: `calc(${theme.spacing(1)} * 1.2)`\n}, ownerState.orientation === 'vertical' && {\n paddingTop: `calc(${theme.spacing(1)} * 1.2)`,\n paddingBottom: `calc(${theme.spacing(1)} * 1.2)`\n}));\nconst Divider = /*#__PURE__*/React.forwardRef(function Divider(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDivider'\n });\n const {\n absolute = false,\n children,\n className,\n component = children ? 'div' : 'hr',\n flexItem = false,\n light = false,\n orientation = 'horizontal',\n role = component !== 'hr' ? 'separator' : undefined,\n textAlign = 'center',\n variant = 'fullWidth'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n absolute,\n component,\n flexItem,\n light,\n orientation,\n role,\n textAlign,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DividerRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n role: role,\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: children ? /*#__PURE__*/_jsx(DividerWrapper, {\n className: classes.wrapper,\n ownerState: ownerState,\n children: children\n }) : null\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Divider.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Absolutely position the element.\n * @default false\n */\n absolute: PropTypes.bool,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, a vertical divider will have the correct height when used in flex container.\n * (By default, a vertical divider will have a calculated height of `0px` if it is the child of a flex container.)\n * @default false\n */\n flexItem: PropTypes.bool,\n /**\n * If `true`, the divider will have a lighter color.\n * @default false\n */\n light: PropTypes.bool,\n /**\n * The component orientation.\n * @default 'horizontal'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n /**\n * @ignore\n */\n role: PropTypes /* @typescript-to-proptypes-ignore */.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The text alignment.\n * @default 'center'\n */\n textAlign: PropTypes.oneOf(['center', 'left', 'right']),\n /**\n * The variant to use.\n * @default 'fullWidth'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['fullWidth', 'inset', 'middle']), PropTypes.string])\n} : void 0;\nexport default Divider;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getInputAdornmentUtilityClass(slot) {\n return generateUtilityClass('MuiInputAdornment', slot);\n}\nconst inputAdornmentClasses = generateUtilityClasses('MuiInputAdornment', ['root', 'filled', 'standard', 'outlined', 'positionStart', 'positionEnd', 'disablePointerEvents', 'hiddenLabel', 'sizeSmall']);\nexport default inputAdornmentClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _span;\nconst _excluded = [\"children\", \"className\", \"component\", \"disablePointerEvents\", \"disableTypography\", \"position\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport capitalize from '../utils/capitalize';\nimport Typography from '../Typography';\nimport FormControlContext from '../FormControl/FormControlContext';\nimport useFormControl from '../FormControl/useFormControl';\nimport styled from '../styles/styled';\nimport inputAdornmentClasses, { getInputAdornmentUtilityClass } from './inputAdornmentClasses';\nimport useThemeProps from '../styles/useThemeProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`position${capitalize(ownerState.position)}`], ownerState.disablePointerEvents === true && styles.disablePointerEvents, styles[ownerState.variant]];\n};\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePointerEvents,\n hiddenLabel,\n position,\n size,\n variant\n } = ownerState;\n const slots = {\n root: ['root', disablePointerEvents && 'disablePointerEvents', position && `position${capitalize(position)}`, variant, hiddenLabel && 'hiddenLabel', size && `size${capitalize(size)}`]\n };\n return composeClasses(slots, getInputAdornmentUtilityClass, classes);\n};\nconst InputAdornmentRoot = styled('div', {\n name: 'MuiInputAdornment',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n height: '0.01em',\n // Fix IE11 flexbox alignment. To remove at some point.\n maxHeight: '2em',\n alignItems: 'center',\n whiteSpace: 'nowrap',\n color: (theme.vars || theme).palette.action.active\n}, ownerState.variant === 'filled' && {\n // Styles applied to the root element if `variant=\"filled\"`.\n [`&.${inputAdornmentClasses.positionStart}&:not(.${inputAdornmentClasses.hiddenLabel})`]: {\n marginTop: 16\n }\n}, ownerState.position === 'start' && {\n // Styles applied to the root element if `position=\"start\"`.\n marginRight: 8\n}, ownerState.position === 'end' && {\n // Styles applied to the root element if `position=\"end\"`.\n marginLeft: 8\n}, ownerState.disablePointerEvents === true && {\n // Styles applied to the root element if `disablePointerEvents={true}`.\n pointerEvents: 'none'\n}));\nconst InputAdornment = /*#__PURE__*/React.forwardRef(function InputAdornment(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiInputAdornment'\n });\n const {\n children,\n className,\n component = 'div',\n disablePointerEvents = false,\n disableTypography = false,\n position,\n variant: variantProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl() || {};\n let variant = variantProp;\n if (variantProp && muiFormControl.variant) {\n if (process.env.NODE_ENV !== 'production') {\n if (variantProp === muiFormControl.variant) {\n console.error('MUI: The `InputAdornment` variant infers the variant prop ' + 'you do not have to provide one.');\n }\n }\n }\n if (muiFormControl && !variant) {\n variant = muiFormControl.variant;\n }\n const ownerState = _extends({}, props, {\n hiddenLabel: muiFormControl.hiddenLabel,\n size: muiFormControl.size,\n disablePointerEvents,\n position,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(FormControlContext.Provider, {\n value: null,\n children: /*#__PURE__*/_jsx(InputAdornmentRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: typeof children === 'string' && !disableTypography ? /*#__PURE__*/_jsx(Typography, {\n color: \"text.secondary\",\n children: children\n }) : /*#__PURE__*/_jsxs(React.Fragment, {\n children: [position === 'start' ? /* notranslate needed while Google Translate will not fix zero-width space issue */_span || (_span = /*#__PURE__*/_jsx(\"span\", {\n className: \"notranslate\",\n children: \"\\u200B\"\n })) : null, children]\n })\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? InputAdornment.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component, normally an `IconButton` or string.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Disable pointer events on the root.\n * This allows for the content of the adornment to focus the `input` on click.\n * @default false\n */\n disablePointerEvents: PropTypes.bool,\n /**\n * If children is a string then disable wrapping in a Typography component.\n * @default false\n */\n disableTypography: PropTypes.bool,\n /**\n * The position this adornment should appear relative to the `Input`.\n */\n position: PropTypes.oneOf(['end', 'start']).isRequired,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n * Note: If you are using the `TextField` component or the `FormControl` component\n * you do not have to set this manually.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputAdornment;"],"names":["withStyles","theme","createStyles","container","display","flexFlow","padding","inputWithCopy","width","background","height","marginRight","inputLabel","fieldBasic","fontSize","_ref","label","value","classes","_jsxs","className","children","_jsx","OutlinedInput","readOnly","endAdornment","InputAdornment","position","TooltipWrapper","tooltip","CopyToClipboard","text","Button","id","onClick","onMouseDown","style","icon","CopyIcon","download","filename","element","document","createElement","setAttribute","body","appendChild","click","removeChild","warningBlock","color","margin","alignItems","credentialTitle","fontWeight","buttonContainer","justifyContent","marginTop","credentialsPanel","overflowY","maxHeight","promptTitle","buttonSpacer","newServiceAccount","open","closeModal","entity","consoleCreds","get","idp","ModalWrapper","modalOpen","onClose","title","titleIcon","ServiceAccountCredentialsIcon","Grid","item","xs","formScrollable","React","Array","isArray","map","credentialsPair","index","_Fragment","CredentialItem","accessKey","secretKey","undefined","WarnIcon","downloadImport","consoleExtras","itemMap","url","api","path","JSON","stringify","DownloadIcon","variant","length","downloaddAllCredentials","allCredentials","mode","onBeforeChange","editorHeight","sx","marginBottom","InputLabel","tooltipContainer","Tooltip","placement","HelpIcon","overflow","border","CodeEditor","language","onChange","evn","target","backgroundColor","fontFamily","minHeight","borderTop","Box","paddingRight","marginLeft","type","tooltipHelper","valueString","maxWidth","whiteSpace","textOverflow","fileInputField","fileInputStyles","textBoxContainer","paddingLeft","name","disabled","required","error","accept","showFileSelector","setShowSelector","useState","concat","fieldBottom","fieldContainer","errorInField","htmlFor","fieldLabelError","e","fileName","fileProcess","evt","callback","file","files","reader","FileReader","readAsDataURL","onload","fileBase64","result","fileArray","toString","split","data","IconButton","component","disableRipple","disableFocusRipple","size","CancelIcon","ErrorBlock","errorMessage","fileReselect","AttachFileIcon","styled","_templateObject","_taggedTemplateLiteral","deleteDialogStyles","content","paddingBottom","customDialogSize","snackBarCommon","wideLimit","noContentPadding","dispatch","useAppDispatch","openSnackbar","setOpenSnackbar","modalSnackMessage","useSelector","state","system","modalSnackBar","useEffect","setModalSnackMessage","message","customSize","paper","fullWidth","detailedErrorMsg","Dialog","scroll","event","reason","root","DialogTitle","titleText","closeContainer","closeButton","CloseIcon","MainError","isModal","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent","errorProps","cloneElement","configSectionItem","tenantCustomizationFields","containerItem","fieldGroup","createTenantCommon","paddingTop","responsiveSectionItem","wrapperContainer","envVarRow","borderBottom","flex","minWidth","fileItem","rowActions","overlayAction","modalBasic","wizardCommon","formFieldStyles","exposeMinIO","createTenant","fields","configure","exposeConsole","exposeSFTP","setDomains","consoleDomain","minioDomains","tenantCustom","tenantEnvVars","envVars","tenantSecurityContext","customRuntime","runtimeClassName","validationErrors","setValidationErrors","updateField","useCallback","field","updateAddField","pageName","customAccountValidation","fieldKey","runAsUser","customValidation","parseInt","customValidationMessage","runAsGroup","fsGroup","minioExtraValidations","validation","pattern","customPatternMessage","commonVal","commonFormValidation","isPageValid","valid","Object","keys","cleanValidation","fieldName","clearValidationError","Paper","paperWrapper","headerElement","H3Section","descriptionText","h3Section","FormSwitchWrapper","checked","InputBoxWrapper","placeholder","domain","updateMinIODomain","copyDomains","addNewMinIODomain","AddIcon","removeMinIODomain","RemoveIcon","multiContainer","min","SelectWrapper","fsGroupChangePolicy","options","runAsNonRoot","Divider","envVar","formFieldRow","key","existingEnvVars","setEnvVars","keyPair","i","push","filter","fIndex","useStyles","makeStyles","adUserDnRows","buttonTray","IDPActiveDirectory","idpSelection","identityProvider","ADURL","ADSkipTLS","ADServerInsecure","ADGroupSearchBaseDN","ADGroupSearchFilter","ADUserDNs","ADGroupDNs","ADLookupBindDN","ADLookupBindPassword","ADUserDNSearchBaseDN","ADUserDNSearchFilter","ADServerStartTLS","customIDPValidation","Fragment","Typography","gutterBottom","_","setIDPADUsrAtIndex","userDN","addIDPADUsrAtIndex","removeIDPADUsrAtIndex","DeleteIcon","setIDPADGroupAtIndex","addIDPADGroupAtIndex","removeIDPADGroupAtIndex","IDPOpenID","openIDConfigurationURL","openIDClientID","openIDSecretID","openIDClaimName","openIDScopes","shortened","gridTemplateColumns","gridGap","IDPBuiltIn","accessKeys","secretKeys","setIDPUsrAtIndex","setIDPPwdAtIndex","addIDPNewKeyPair","removeIDPKeyPairAtIndex","getRandomString","CasinoIcon","protocolRadioOptions","IdentityProvider","RadioGroupSelector","currentSelection","setIDP","selectorOptions","BuiltInLogoElement","OIDCLogoElement","LDAPLogoElement","minioCertificateRows","minioCertsContainer","minioCACertsRow","enableTLS","security","enableAutoCert","enableCustomCerts","minioCertificates","certificates","minioServerCertificates","minioClientCertificates","caCertificates","minioCAsCertificates","spacing","description","TLSHelpBox","FileSelector","encodedValue","addFileToKeyPair","cert","addKeyPair","deleteKeyPair","addFileToClientKeyPair","addClientKeyPair","deleteClientKeyPair","addFileToCaCertificates","addCaCertificate","deleteCaCertificate","VaultKMSAdd","encryptionTab","encryption","vaultEndpoint","vaultEngine","vaultNamespace","vaultPrefix","vaultAppRoleEngine","vaultId","vaultSecret","vaultRetry","vaultPing","encryptionValidation","AzureKMSAdd","azureEndpoint","azureTenantID","azureClientID","azureClientSecret","GCPKMSAdd","gcpProjectID","gcpEndpoint","gcpClientEmail","gcpClientID","gcpPrivateKeyID","gcpPrivateKey","GemaltoKMSAdd","gemaltoEndpoint","gemaltoToken","gemaltoDomain","gemaltoRetry","AWSKMSAdd","awsEndpoint","awsRegion","awsKMSKey","awsAccessKey","awsSecretKey","awsToken","encryptionTypeOptions","mutualTlsConfig","rightSpacer","responsiveContainer","replicas","rawConfiguration","enableEncryption","encryptionType","enableCustomCertsForKES","kesServerCertificate","minioMTLSCertificate","kmsMTLSCertificate","kmsCA","kesSecurityContext","encryptionAvailable","encoded_key","encoded_cert","SectionH1","textAlign","indicatorLabels","FormHr","Tabs","indicatorColor","textColor","scrollButtons","Tab","CodeMirrorWrapper","editor","addFileKESServerCert","addFileMinIOMTLSCert","addFileKMSMTLSCert","addFileKMSCa","affinityConfigField","affinityFieldLabel","radioField","affinityLabelKey","affinityLabelValue","affinityRow","podAffinity","affinity","nodeSelectorLabels","withPodAntiAffinity","keyValuePairs","nodeSelectorPairs","tolerations","loading","setLoading","keyValueMap","setKeyValueMap","keyOptions","setKeyOptions","invoke","then","res","k","catch","err","setModalErrorSnackMessage","vl","kvp","kvs","a","indexOf","join","splittedLabels","forEach","splitItem","updateToleration","alterToleration","setTolerationInfo","tolerationValue","affinityHelpText","newKey","newLKP","arrCp","setKeyValuePairs","v","tol","_tol$tolerationSecond","TolerationSelector","effect","onEffectChange","tolerationKey","onTolerationKeyChange","operator","onOperatorChange","onValueChange","tolerationSeconds","seconds","onSecondsChange","addNewToleration","removeToleration","customImage","imageName","customDockerhub","imageRegistry","imageRegistryUsername","imageRegistryPassword","kesImage","table","nodes","tenantSize","memoryNode","resourcesMemoryRequest","ecParity","distribution","ecParityCalc","cpuToUse","resourcesCPURequest","integrationSelection","usableInformation","storageFactors","find","erasureCode","Table","TableBody","TableRow","TableCell","scope","align","typeSelection","storageClass","disks","niceBytes","pvSize","persistentVolumes","rawCapacity","maxCapacity","Math","floor","maxFailureTolerations","CPU","memory","drivesPerServer","driveSize","sizeUnit","wrapText","wordWrap","AddNamespaceModal","namespace","nameTenant","addNamespaceLoading","addNSLoading","addNamespaceOpen","addNSOpen","ConfirmDialog","confirmText","confirmButtonProps","isOpen","ConfirmModalIcon","isLoading","onConfirm","createNamespaceAsync","closeAddNSModal","confirmationContent","LinearProgress","DialogContentText","formToRender","showNSCreateButton","namespaceError","openAddNSConfirm","debounceNamespace","useMemo","debounce","validateNamespaceAsync","cancel","setNamespace","overlayId","overlayIcon","addNamespace","openAddNSModal","NameTenantField","tenantName","tenantNameError","setTenantName","sizePreview","selectedStorageClass","selectedStorageType","storageClasses","features","selFeatures","isValid","IMkEnvs","default","NamespaceSelector","setStorageType","storageType","mkPanelConfigurations","TenantSize","SizePreview","TenantResources","formRender","setFormRender","setConfiguration","resourcesConfigurations","includes","NameTenantMain","requiredPages","CreateTenantButton","addSending","addingTenant","validPages","enabled","every","createTenantAsync","NewTenantCredentials","navigate","useNavigate","showNewCredentials","createdAccount","CredentialsPrompt","resetAddTenantForm","pageBox","settingsCommon","AddTenant","cancelButton","action","createButton","componentRender","filteredWizardSteps","buttons","advancedOnly","Configure","Images","Affinity","Security","Encryption","PageHeaderWrapper","BackLink","PageLayout","GenericWizard","wizardSteps","aws","HelpBox","iconComponent","StorageIcon","help","FeatureItem","fontStyle","params","useParams","tenantNameParam","tenantNamespaceParam","tenantNamespace","borderRadius","CertificateIcon","href","rel","columnGap","OIDCIcon","LDAPIcon","UsersIcon","_theme$palette","errorBlock","palette","main","withBreak","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","jsx","d","_excluded","DividerRoot","slot","overridesResolver","props","styles","ownerState","absolute","light","orientation","vertical","flexItem","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","_extends","flexShrink","borderWidth","borderStyle","borderColor","vars","divider","borderBottomWidth","bottom","left","dividerChannel","alpha","borderRightWidth","alignSelf","_ref2","_ref3","_ref4","flexDirection","borderLeft","_ref5","DividerWrapper","wrapper","wrapperVertical","_ref6","inProps","ref","useThemeProps","role","other","_objectWithoutPropertiesLoose","slots","composeClasses","getDividerUtilityClass","useUtilityClasses","as","clsx","getInputAdornmentUtilityClass","generateUtilityClass","generateUtilityClasses","_span","InputAdornmentRoot","capitalize","disablePointerEvents","active","inputAdornmentClasses","positionStart","hiddenLabel","pointerEvents","disableTypography","variantProp","muiFormControl","useFormControl","FormControlContext","Provider"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/298.593f6fcc.chunk.js b/web-app/build/static/js/298.593f6fcc.chunk.js deleted file mode 100644 index 7e0e3eeaebf..00000000000 --- a/web-app/build/static/js/298.593f6fcc.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[298],{24298:function(e,n,t){t.r(n);var r=t(29439),a=t(1413),o=t(72791),s=t(78687),c=t(11135),i=t(25787),u=t(87995),l=t(23814),Z=t(81207),d=t(39281),f=t(35527),h=t(79836),p=t(56890),m=t(35855),v=t(53994),j=t(53382),x=t(57689),b=t(41320),T=t(80184);n.default=(0,i.Z)((function(e){return(0,c.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},l.OR),l.qg),l.VX),l.Bz))}))((function(e){var n=e.classes,t=(0,b.TL)(),a=(0,x.UO)(),c=a.tenantName,i=a.tenantNamespace,l=(0,s.v9)((function(e){return e.tenants.loadingTenant})),w=(0,o.useState)(!0),N=(0,r.Z)(w,2),g=N[0],M=N[1],R=(0,o.useState)([""]),S=(0,r.Z)(R,1)[0],C=(0,o.useState)([""]),k=(0,r.Z)(C,1)[0],E=(0,o.useState)([""]),H=(0,r.Z)(E,1)[0];return(0,o.useEffect)((function(){l&&M(!0)}),[l]),(0,o.useEffect)((function(){g&&Z.Z.invoke("GET","/api/v1/namespaces/".concat(i||"","/tenants/").concat(c||"","/csr")).then((function(e){for(var n=0;n.\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport {\n actionsTray,\n containerForHeader,\n searchField,\n tableStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport api from \"../../../../common/api\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport Paper from \"@mui/material/Paper\";\nimport Table from \"@mui/material/Table\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TableRow from \"@mui/material/TableRow\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableBody from \"@mui/material/TableBody\";\nimport { useParams } from \"react-router-dom\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\n\ninterface ITenantCSRProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...actionsTray,\n ...searchField,\n ...tableStyles,\n ...containerForHeader,\n });\n\nconst TenantCSR = ({ classes }: ITenantCSRProps) => {\n const dispatch = useAppDispatch();\n const { tenantName, tenantNamespace } = useParams();\n\n const loadingTenant = useSelector(\n (state: AppState) => state.tenants.loadingTenant,\n );\n\n const [loading, setLoading] = useState(true);\n const [csrStatus] = useState([\"\"]);\n const [csrName] = useState([\"\"]);\n const [csrAnnotations] = useState([\"\"]);\n\n useEffect(() => {\n if (loadingTenant) {\n setLoading(true);\n }\n }, [loadingTenant]);\n\n useEffect(() => {\n if (loading) {\n api\n .invoke(\n \"GET\",\n `/api/v1/namespaces/${tenantNamespace || \"\"}/tenants/${\n tenantName || \"\"\n }/csr`,\n )\n .then((res) => {\n for (var _i = 0; _i < res.csrElement.length; _i++) {\n var entry = res.csrElement[_i];\n csrStatus.push(entry.status);\n csrName.push(entry.name);\n csrAnnotations.push(entry.annotations);\n }\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n });\n }\n }, [\n loading,\n tenantNamespace,\n tenantName,\n csrAnnotations,\n csrName,\n csrStatus,\n dispatch,\n ]);\n\n return (\n \n

Certificate Signing Requests

\n \n \n \n \n Name\n Status\n Annotation\n \n \n \n \n \n \n {csrName.map((csrName) => (\n

{csrName}

\n ))}\n
\n \n {csrStatus.map((csrStatus) => (\n

{csrStatus}

\n ))}\n
\n \n {csrAnnotations.map((csrAnnotations) => (\n

{csrAnnotations}

\n ))}\n
\n
\n
\n
\n
\n
\n );\n};\n\nexport default withStyles(styles)(TenantCSR);\n","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTableContainerUtilityClass(slot) {\n return generateUtilityClass('MuiTableContainer', slot);\n}\nconst tableContainerClasses = generateUtilityClasses('MuiTableContainer', ['root']);\nexport default tableContainerClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getTableContainerUtilityClass } from './tableContainerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getTableContainerUtilityClass, classes);\n};\nconst TableContainerRoot = styled('div', {\n name: 'MuiTableContainer',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n width: '100%',\n overflowX: 'auto'\n});\nconst TableContainer = /*#__PURE__*/React.forwardRef(function TableContainer(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTableContainer'\n });\n const {\n className,\n component = 'div'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n component\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(TableContainerRoot, _extends({\n ref: ref,\n as: component,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? TableContainer.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component, normally `Table`.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableContainer;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTableHeadUtilityClass(slot) {\n return generateUtilityClass('MuiTableHead', slot);\n}\nconst tableHeadClasses = generateUtilityClasses('MuiTableHead', ['root']);\nexport default tableHeadClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport Tablelvl2Context from '../Table/Tablelvl2Context';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getTableHeadUtilityClass } from './tableHeadClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getTableHeadUtilityClass, classes);\n};\nconst TableHeadRoot = styled('thead', {\n name: 'MuiTableHead',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'table-header-group'\n});\nconst tablelvl2 = {\n variant: 'head'\n};\nconst defaultComponent = 'thead';\nconst TableHead = /*#__PURE__*/React.forwardRef(function TableHead(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTableHead'\n });\n const {\n className,\n component = defaultComponent\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n component\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(Tablelvl2Context.Provider, {\n value: tablelvl2,\n children: /*#__PURE__*/_jsx(TableHeadRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n ref: ref,\n role: component === defaultComponent ? null : 'rowgroup',\n ownerState: ownerState\n }, other))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableHead.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component, normally `TableRow`.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableHead;"],"names":["withStyles","theme","createStyles","_objectSpread","actionsTray","searchField","tableStyles","containerForHeader","_ref","classes","dispatch","useAppDispatch","_useParams","useParams","tenantName","tenantNamespace","loadingTenant","useSelector","state","tenants","_useState","useState","_useState2","_slicedToArray","loading","setLoading","_useState3","csrStatus","_useState5","csrName","_useState7","csrAnnotations","useEffect","api","invoke","concat","then","res","_i","csrElement","length","entry","push","status","name","annotations","catch","err","setErrorSnackMessage","_jsxs","Fragment","children","_jsx","className","sectionTitle","TableContainer","component","Paper","Table","TableHead","TableRow","TableCell","TableBody","map","getTableContainerUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","TableContainerRoot","styled","overridesResolver","props","styles","root","width","overflowX","React","inProps","ref","useThemeProps","_props$component","other","_objectWithoutPropertiesLoose","ownerState","_extends","composeClasses","useUtilityClasses","as","clsx","getTableHeadUtilityClass","TableHeadRoot","display","tablelvl2","variant","defaultComponent","Tablelvl2Context","Provider","value","role"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/298.81cdf2af.chunk.js b/web-app/build/static/js/298.81cdf2af.chunk.js new file mode 100644 index 00000000000..268c463a992 --- /dev/null +++ b/web-app/build/static/js/298.81cdf2af.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[298],{24298:(e,n,a)=>{a.r(n),a.d(n,{default:()=>b});var t=a(72791),s=a(78687),r=a(11135),o=a(25787),c=a(87995),l=a(23814),i=a(81207),u=a(39281),d=a(35527),Z=a(79836),h=a(56890),p=a(35855),m=a(53994),j=a(53382),x=a(57689),f=a(41320),v=a(80184);const b=(0,o.Z)((e=>(0,r.Z)({...l.OR,...l.qg,...l.VX,...l.Bz})))((e=>{let{classes:n}=e;const a=(0,f.TL)(),{tenantName:r,tenantNamespace:o}=(0,x.UO)(),l=(0,s.v9)((e=>e.tenants.loadingTenant)),[b,T]=(0,t.useState)(!0),[w]=(0,t.useState)([""]),[N]=(0,t.useState)([""]),[g]=(0,t.useState)([""]);return(0,t.useEffect)((()=>{l&&T(!0)}),[l]),(0,t.useEffect)((()=>{b&&i.Z.invoke("GET","/api/v1/namespaces/".concat(o||"","/tenants/").concat(r||"","/csr")).then((e=>{for(var n=0;n{a((0,c.Ih)(e))}))}),[b,o,r,g,N,w,a]),(0,v.jsxs)(t.Fragment,{children:[(0,v.jsx)("h1",{className:n.sectionTitle,children:"Certificate Signing Requests"}),(0,v.jsx)(u.Z,{component:d.Z,children:(0,v.jsxs)(Z.Z,{"aria-label":"collapsible table",children:[(0,v.jsx)(h.Z,{children:(0,v.jsxs)(p.Z,{children:[(0,v.jsx)(m.Z,{children:"Name"}),(0,v.jsx)(m.Z,{children:"Status"}),(0,v.jsx)(m.Z,{children:"Annotation"}),(0,v.jsx)(m.Z,{})]})}),(0,v.jsx)(j.Z,{children:(0,v.jsxs)(p.Z,{children:[(0,v.jsx)(m.Z,{children:N.map((e=>(0,v.jsx)("p",{children:e})))}),(0,v.jsx)(m.Z,{children:w.map((e=>(0,v.jsx)("p",{children:e})))}),(0,v.jsx)(m.Z,{children:g.map((e=>(0,v.jsx)("p",{children:e})))})]})})]})})]})}))},39281:(e,n,a)=>{a.d(n,{Z:()=>j});var t=a(87462),s=a(63366),r=a(72791),o=a(28182),c=a(94419),l=a(31402),i=a(66934),u=a(75878),d=a(21217);function Z(e){return(0,d.Z)("MuiTableContainer",e)}(0,u.Z)("MuiTableContainer",["root"]);var h=a(80184);const p=["className","component"],m=(0,i.ZP)("div",{name:"MuiTableContainer",slot:"Root",overridesResolver:(e,n)=>n.root})({width:"100%",overflowX:"auto"}),j=r.forwardRef((function(e,n){const a=(0,l.Z)({props:e,name:"MuiTableContainer"}),{className:r,component:i="div"}=a,u=(0,s.Z)(a,p),d=(0,t.Z)({},a,{component:i}),j=(e=>{const{classes:n}=e;return(0,c.Z)({root:["root"]},Z,n)})(d);return(0,h.jsx)(m,(0,t.Z)({ref:n,as:i,className:(0,o.Z)(j.root,r),ownerState:d},u))}))},56890:(e,n,a)=>{a.d(n,{Z:()=>v});var t=a(87462),s=a(63366),r=a(72791),o=a(28182),c=a(94419),l=a(829),i=a(31402),u=a(66934),d=a(75878),Z=a(21217);function h(e){return(0,Z.Z)("MuiTableHead",e)}(0,d.Z)("MuiTableHead",["root"]);var p=a(80184);const m=["className","component"],j=(0,u.ZP)("thead",{name:"MuiTableHead",slot:"Root",overridesResolver:(e,n)=>n.root})({display:"table-header-group"}),x={variant:"head"},f="thead",v=r.forwardRef((function(e,n){const a=(0,i.Z)({props:e,name:"MuiTableHead"}),{className:r,component:u=f}=a,d=(0,s.Z)(a,m),Z=(0,t.Z)({},a,{component:u}),v=(e=>{const{classes:n}=e;return(0,c.Z)({root:["root"]},h,n)})(Z);return(0,p.jsx)(l.Z.Provider,{value:x,children:(0,p.jsx)(j,(0,t.Z)({as:u,className:(0,o.Z)(v.root,r),ref:n,role:u===f?null:"rowgroup",ownerState:Z},d))})}))}}]); +//# sourceMappingURL=298.81cdf2af.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/298.81cdf2af.chunk.js.map b/web-app/build/static/js/298.81cdf2af.chunk.js.map new file mode 100644 index 00000000000..390f5459e82 --- /dev/null +++ b/web-app/build/static/js/298.81cdf2af.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/298.81cdf2af.chunk.js","mappings":"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","sources":["screens/Console/Tenants/TenantDetails/TenantCSR.tsx","../node_modules/@mui/material/TableContainer/tableContainerClasses.js","../node_modules/@mui/material/TableContainer/TableContainer.js","../node_modules/@mui/material/TableHead/tableHeadClasses.js","../node_modules/@mui/material/TableHead/TableHead.js"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport {\n actionsTray,\n containerForHeader,\n searchField,\n tableStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport api from \"../../../../common/api\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport Paper from \"@mui/material/Paper\";\nimport Table from \"@mui/material/Table\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TableRow from \"@mui/material/TableRow\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableBody from \"@mui/material/TableBody\";\nimport { useParams } from \"react-router-dom\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\n\ninterface ITenantCSRProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...actionsTray,\n ...searchField,\n ...tableStyles,\n ...containerForHeader,\n });\n\nconst TenantCSR = ({ classes }: ITenantCSRProps) => {\n const dispatch = useAppDispatch();\n const { tenantName, tenantNamespace } = useParams();\n\n const loadingTenant = useSelector(\n (state: AppState) => state.tenants.loadingTenant,\n );\n\n const [loading, setLoading] = useState(true);\n const [csrStatus] = useState([\"\"]);\n const [csrName] = useState([\"\"]);\n const [csrAnnotations] = useState([\"\"]);\n\n useEffect(() => {\n if (loadingTenant) {\n setLoading(true);\n }\n }, [loadingTenant]);\n\n useEffect(() => {\n if (loading) {\n api\n .invoke(\n \"GET\",\n `/api/v1/namespaces/${tenantNamespace || \"\"}/tenants/${\n tenantName || \"\"\n }/csr`,\n )\n .then((res) => {\n for (var _i = 0; _i < res.csrElement.length; _i++) {\n var entry = res.csrElement[_i];\n csrStatus.push(entry.status);\n csrName.push(entry.name);\n csrAnnotations.push(entry.annotations);\n }\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n });\n }\n }, [\n loading,\n tenantNamespace,\n tenantName,\n csrAnnotations,\n csrName,\n csrStatus,\n dispatch,\n ]);\n\n return (\n \n

Certificate Signing Requests

\n \n \n \n \n Name\n Status\n Annotation\n \n \n \n \n \n \n {csrName.map((csrName) => (\n

{csrName}

\n ))}\n
\n \n {csrStatus.map((csrStatus) => (\n

{csrStatus}

\n ))}\n
\n \n {csrAnnotations.map((csrAnnotations) => (\n

{csrAnnotations}

\n ))}\n
\n
\n
\n
\n
\n
\n );\n};\n\nexport default withStyles(styles)(TenantCSR);\n","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTableContainerUtilityClass(slot) {\n return generateUtilityClass('MuiTableContainer', slot);\n}\nconst tableContainerClasses = generateUtilityClasses('MuiTableContainer', ['root']);\nexport default tableContainerClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getTableContainerUtilityClass } from './tableContainerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getTableContainerUtilityClass, classes);\n};\nconst TableContainerRoot = styled('div', {\n name: 'MuiTableContainer',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n width: '100%',\n overflowX: 'auto'\n});\nconst TableContainer = /*#__PURE__*/React.forwardRef(function TableContainer(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTableContainer'\n });\n const {\n className,\n component = 'div'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n component\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(TableContainerRoot, _extends({\n ref: ref,\n as: component,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? TableContainer.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component, normally `Table`.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableContainer;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTableHeadUtilityClass(slot) {\n return generateUtilityClass('MuiTableHead', slot);\n}\nconst tableHeadClasses = generateUtilityClasses('MuiTableHead', ['root']);\nexport default tableHeadClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport Tablelvl2Context from '../Table/Tablelvl2Context';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getTableHeadUtilityClass } from './tableHeadClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getTableHeadUtilityClass, classes);\n};\nconst TableHeadRoot = styled('thead', {\n name: 'MuiTableHead',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'table-header-group'\n});\nconst tablelvl2 = {\n variant: 'head'\n};\nconst defaultComponent = 'thead';\nconst TableHead = /*#__PURE__*/React.forwardRef(function TableHead(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTableHead'\n });\n const {\n className,\n component = defaultComponent\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n component\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(Tablelvl2Context.Provider, {\n value: tablelvl2,\n children: /*#__PURE__*/_jsx(TableHeadRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n ref: ref,\n role: component === defaultComponent ? null : 'rowgroup',\n ownerState: ownerState\n }, other))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableHead.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component, normally `TableRow`.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableHead;"],"names":["withStyles","theme","createStyles","actionsTray","searchField","tableStyles","containerForHeader","_ref","classes","dispatch","useAppDispatch","tenantName","tenantNamespace","useParams","loadingTenant","useSelector","state","tenants","loading","setLoading","useState","csrStatus","csrName","csrAnnotations","useEffect","api","invoke","concat","then","res","_i","csrElement","length","entry","push","status","name","annotations","catch","err","setErrorSnackMessage","_jsxs","Fragment","children","_jsx","className","sectionTitle","TableContainer","component","Paper","Table","TableHead","TableRow","TableCell","TableBody","map","getTableContainerUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","TableContainerRoot","styled","overridesResolver","props","styles","root","width","overflowX","React","inProps","ref","useThemeProps","other","_objectWithoutPropertiesLoose","ownerState","_extends","composeClasses","useUtilityClasses","as","clsx","getTableHeadUtilityClass","TableHeadRoot","display","tablelvl2","variant","defaultComponent","Tablelvl2Context","Provider","value","role"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/30.352379d0.chunk.js b/web-app/build/static/js/30.352379d0.chunk.js new file mode 100644 index 00000000000..f61bd990133 --- /dev/null +++ b/web-app/build/static/js/30.352379d0.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[30],{81806:(e,t,n)=>{n.d(t,{Z:()=>o});n(72791);var i=n(11135),a=n(25787),l=n(80184);const o=(0,a.Z)((e=>(0,i.Z)({root:{padding:0,margin:0,border:0,backgroundColor:"transparent",textDecoration:"underline",cursor:"pointer",fontSize:"inherit",color:e.palette.info.main,fontFamily:"Inter, sans-serif"}})))((e=>{let{classes:t,children:n,...i}=e;return(0,l.jsx)("button",{...i,className:t.root,children:n})}))},56028:(e,t,n)=>{n.d(t,{Z:()=>f});var i=n(72791),a=n(78687),l=n(13400),o=n(48888),s=n(5289),r=n(65661),c=n(39157),d=n(11135),u=n(25787),m=n(23814),p=n(41320),v=n(29823),h=n(86352),g=n(87995),x=n(80184);const f=(0,u.Z)((e=>(0,d.Z)({...m.Qw,content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765},...m.sN})))((e=>{let{onClose:t,modalOpen:n,title:d,children:u,classes:m,wideLimit:f=!0,noContentPadding:j,titleIcon:b=null}=e;const y=(0,p.TL)(),[Z,S]=(0,i.useState)(!1),w=(0,a.v9)((e=>e.system.modalSnackBar));(0,i.useEffect)((()=>{y((0,g.MK)(""))}),[y]),(0,i.useEffect)((()=>{if(w){if(""===w.message)return void S(!1);"error"!==w.type&&S(!0)}}),[w]);const k=f?{classes:{paper:m.customDialogSize}}:{maxWidth:"lg",fullWidth:!0};let P="";return w&&(P=w.detailedErrorMsg,(""===w.detailedErrorMsg||w.detailedErrorMsg.length<5)&&(P=w.message)),(0,x.jsxs)(s.Z,{open:n,classes:m,...k,scroll:"paper",onClose:(e,n)=>{"backdropClick"!==n&&t()},className:m.root,children:[(0,x.jsxs)(r.Z,{className:m.title,children:[(0,x.jsxs)("div",{className:m.titleText,children:[b," ",d]}),(0,x.jsx)("div",{className:m.closeContainer,children:(0,x.jsx)(l.Z,{"aria-label":"close",id:"close",className:m.closeButton,onClick:t,disableRipple:!0,size:"small",children:(0,x.jsx)(v.Z,{})})})]}),(0,x.jsx)(h.Z,{isModal:!0}),(0,x.jsx)(o.Z,{open:Z,className:m.snackBarModal,onClose:()=>{S(!1),y((0,g.MK)(""))},message:P,ContentProps:{className:"".concat(m.snackBar," ").concat(w&&"error"===w.type?m.errorSnackBar:"")},autoHideDuration:w&&"error"===w.type?1e4:5e3}),(0,x.jsx)(c.Z,{className:j?"":m.content,children:u})]})}))},45902:(e,t,n)=>{n.d(t,{Z:()=>l});n(72791);var i=n(36314),a=n(80184);const l=e=>{let{label:t=null,value:n="-",orientation:l="column",stkProps:o={},lblProps:s={},valProps:r={}}=e;return(0,a.jsxs)(i.Z,{direction:{xs:"column",sm:l},...o,children:[(0,a.jsx)("label",{style:{marginRight:5,fontWeight:600},...s,children:t}),(0,a.jsx)("label",{style:{marginRight:5,fontWeight:500},...r,children:n})]})}},74815:(e,t,n)=>{n.d(t,{Z:()=>d});n(72791);var i=n(2600),a=n(65390),l=n(41048),o=n(45248),s=n(75952),r=n(80184);const c=e=>{let{totalValue:t,sizeItems:n,bgColor:i="#ededed"}=e;return(0,r.jsx)("div",{style:{width:"100%",height:12,backgroundColor:i,borderRadius:30,display:"flex",transitionDuration:"0.3s",overflow:"hidden"},children:n.map(((e,n)=>{const i=100*e.value/t;return(0,r.jsx)("div",{style:{width:"".concat(i,"%"),height:"100%",backgroundColor:e.color,transitionDuration:"0.3s"}},"itemSize-".concat(n.toString()))}))})},d=e=>{let{totalCapacity:t,usedSpaceVariants:n,statusClass:d,render:u="pie"}=e;const m=["#8dacd3","#bca1ea","#92e8d2","#efc9ac","#97f274","#f7d291","#71ACCB","#f28282","#e28cc1","#2781B0"],p="#ededed",v=n.reduce(((e,t)=>e+t.value),0),h=t-v;let g=[];const x=n.find((e=>"STANDARD"===e.variant))||{value:0,variant:"empty"};if(n.length>10){g=[{value:v-x.value,color:"#2781B0",label:"Total Tiers Space"}]}else g=n.filter((e=>"STANDARD"!==e.variant)).map(((e,t)=>({value:e.value,color:m[t],label:"Tier - ".concat(e.variant)})));let f="#07193E";const j=100*x.value/t;j>=90?f="#C83B51":j>=75&&(f="#FFAB0F");const b=[{value:x.value,color:f,label:"Used Space by Tenant"},...g,{value:h,color:"bar"===u?p:"transparent",label:"Empty Space"}];if("bar"===u){const e=b.map((e=>({value:e.value,color:e.color,itemName:e.label})));return(0,r.jsx)("div",{style:{width:"100%",marginBottom:15},children:(0,r.jsx)(c,{totalValue:t,sizeItems:e,bgColor:p})})}return(0,r.jsxs)("div",{style:{position:"relative",width:110,height:110},children:[(0,r.jsx)("div",{style:{position:"absolute",right:-5,top:15,zIndex:400},className:d,children:(0,r.jsx)(s.J$M,{style:{border:"#fff 2px solid",borderRadius:"100%",width:20,height:20}})}),(0,r.jsx)("span",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",fontWeight:"bold",color:"#000",fontSize:11},children:isNaN(v)?"N/A":(0,o.l5)(v)}),(0,r.jsx)("div",{children:(0,r.jsxs)(i.u,{width:110,height:110,children:[(0,r.jsx)(a.b,{data:[{value:100}],cx:"50%",cy:"50%",dataKey:"value",outerRadius:50,innerRadius:40,fill:p,isAnimationActive:!1,stroke:"none"}),(0,r.jsx)(a.b,{data:b,cx:"50%",cy:"50%",dataKey:"value",outerRadius:50,innerRadius:40,children:b.map(((e,t)=>(0,r.jsx)(l.b,{fill:e.color,stroke:"none"},"cellCapacity-".concat(t))))})]})})]})}},21353:(e,t,n)=>{n.r(t),n.d(t,{default:()=>z});var i=n(72791),a=n(78687),l=n(26181),o=n.n(l),s=n(11135),r=n(25787),c=n(23814),d=n(61889),u=n(64554),m=n(75952),p=n(56028),v=n(21435),h=n(37516),g=n(81207),x=n(87995),f=n(41320),j=n(80184);const b=(0,r.Z)((e=>(0,s.Z)({infoText:{fontSize:14},...c.DF,...c.ID})))((e=>{let{open:t,closeModalAndRefresh:n,namespace:a,idTenant:l,classes:o}=e;const s=(0,f.TL)(),[r,c]=(0,i.useState)(!1),[u,b]=(0,i.useState)(""),[y,Z]=(0,i.useState)(!1),[S,w]=(0,i.useState)(""),[k,P]=(0,i.useState)(""),[R,C]=(0,i.useState)(""),[N,I]=(0,i.useState)(!0),F=(0,i.useCallback)((e=>{const t=new RegExp("^$|^((.*?)/(.*?):(.+))$");if("minioImage"===e)I(t.test(u))}),[u]);(0,i.useEffect)((()=>{F("minioImage")}),[u,F]);return(0,j.jsx)(p.Z,{title:"Update MinIO Version",modalOpen:t,onClose:()=>{n(!1)},children:(0,j.jsxs)(d.ZP,{container:!0,children:[(0,j.jsxs)(d.ZP,{item:!0,xs:12,className:o.modalFormScrollable,children:[(0,j.jsx)("div",{className:o.infoText,children:"Please enter the MinIO image from dockerhub to use. If blank, then latest build will be used."}),(0,j.jsx)("br",{}),(0,j.jsx)("br",{}),(0,j.jsx)(d.ZP,{item:!0,xs:12,className:o.formFieldRow,children:(0,j.jsx)(v.Z,{value:u,label:"MinIO's Image",id:"minioImage",name:"minioImage",placeholder:"E.g. minio/minio:RELEASE.2022-02-26T02-54-46Z",onChange:e=>{b(e.target.value)}})}),(0,j.jsx)(d.ZP,{item:!0,xs:12,className:o.formFieldRow,children:(0,j.jsx)(h.Z,{value:"imageRegistry",id:"setImageRegistry",name:"setImageRegistry",checked:y,onChange:e=>{Z(!y)},label:"Set Custom Image Registry",indicatorLabels:["Yes","No"]})}),y&&(0,j.jsxs)(i.Fragment,{children:[(0,j.jsx)(d.ZP,{item:!0,xs:12,className:o.formFieldRow,children:(0,j.jsx)(v.Z,{value:S,label:"Endpoint",id:"imageRegistry",name:"imageRegistry",placeholder:"E.g. https://index.docker.io/v1/",onChange:e=>{w(e.target.value)}})}),(0,j.jsx)(d.ZP,{item:!0,xs:12,className:o.formFieldRow,children:(0,j.jsx)(v.Z,{value:k,label:"Username",id:"imageRegistryUsername",name:"imageRegistryUsername",placeholder:"Enter image registry username",onChange:e=>{P(e.target.value)}})}),(0,j.jsx)(d.ZP,{item:!0,xs:12,className:o.formFieldRow,children:(0,j.jsx)(v.Z,{value:R,label:"Password",id:"imageRegistryPassword",name:"imageRegistryPassword",placeholder:"Enter image registry password",onChange:e=>{C(e.target.value)}})})]})]}),(0,j.jsxs)(d.ZP,{item:!0,xs:12,className:o.modalButtonBar,children:[(0,j.jsx)(m.zxk,{id:"clear",variant:"regular",onClick:()=>{b(""),Z(!1),w(""),P(""),C("")},label:"Clear"}),(0,j.jsx)(m.zxk,{id:"save-tenant",type:"submit",variant:"callAction",disabled:!N||y&&(""===S.trim()||""===k.trim()||""===R.trim())||r,onClick:()=>{c(!0);let e={image:u};if(y){const t={image_registry:{registry:S,username:k,password:R}};e={...e,...t}}g.Z.invoke("PUT","/api/v1/namespaces/".concat(a,"/tenants/").concat(l),e).then((()=>{c(!1),s((0,x.y1)("Image updated successfully")),n(!0)})).catch((e=>{s((0,x.zb)(e)),c(!1)}))},label:"Save"})]})]})})}));var y=n(81806),Z=n(36314),S=n(45248),w=n(74815),k=n(22512),P=n(45902);const R=e=>{var t,n,a,l,o,s;let{tenant:r,healthStatus:c,loading:u,error:p}=e,v={value:"n/a",unit:""},h={value:"n/a",unit:""},g={value:"n/a",unit:""},x={value:"n/a",unit:""},f={value:"n/a",unit:""};if(null!==(t=r.status)&&void 0!==t&&null!==(n=t.usage)&&void 0!==n&&n.raw){const e=(0,S.ae)("".concat(r.status.usage.raw),!0).split(" ");v.value=e[0],v.unit=e[1]}if(null!==(a=r.status)&&void 0!==a&&null!==(l=a.usage)&&void 0!==l&&l.capacity){const e=(0,S.ae)("".concat(r.status.usage.capacity),!0).split(" ");h.value=e[0],h.unit=e[1]}if(null!==(o=r.status)&&void 0!==o&&null!==(s=o.usage)&&void 0!==s&&s.capacity_usage){const e=(0,S.l5)(r.status.usage.capacity_usage,!0).split(" ");g.value=e[0],g.unit=e[1]}let b=[];if(r.tiers&&0!==r.tiers.length){b=r.tiers.map((e=>({value:e.size,variant:e.name})));let e=r.tiers.filter((e=>"internal"===e.type)).reduce(((e,t)=>e+t.size),0),t=r.tiers.filter((e=>"internal"!==e.type)).reduce(((e,t)=>e+t.size),0);const n=(0,S.l5)(t,!0).split(" ");f.value=n[0],f.unit=n[1];const i=(0,S.l5)(e,!0).split(" ");x.value=i[0],x.unit=i[1]}else{var y,R;b=[{value:(null===(y=r.status)||void 0===y||null===(R=y.usage)||void 0===R?void 0:R.capacity_usage)||0,variant:"STANDARD"}]}return(0,j.jsxs)(i.Fragment,{children:[u&&(0,j.jsx)("div",{style:{padding:5},children:(0,j.jsx)(d.ZP,{item:!0,xs:12,style:{textAlign:"center"},children:(0,j.jsx)(m.aNw,{style:{width:40,height:40}})})}),(()=>{var e,t;return u?null:""!==p?(0,j.jsx)(k.Z,{errorMessage:p,withBreak:!1}):(0,j.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,j.jsx)(w.Z,{totalCapacity:(null===(e=r.status)||void 0===e||null===(t=e.usage)||void 0===t?void 0:t.raw)||0,usedSpaceVariants:b,statusClass:"",render:"bar"}),(0,j.jsxs)(Z.Z,{direction:{xs:"column",sm:"row"},spacing:{xs:1,sm:2,md:4},alignItems:"stretch",margin:"0 0 15px 0",children:[(!r.tiers||0===r.tiers.length)&&(0,j.jsx)(i.Fragment,{children:(0,j.jsx)(P.Z,{label:"Internal:",orientation:"row",value:"".concat(g.value," ").concat(g.unit)})}),r.tiers&&r.tiers.length>0&&(0,j.jsxs)(i.Fragment,{children:[(0,j.jsx)(P.Z,{label:"Internal:",orientation:"row",value:"".concat(x.value," ").concat(x.unit)}),(0,j.jsx)(P.Z,{label:"Tiered:",orientation:"row",value:"".concat(f.value," ").concat(f.unit)})]}),c&&(0,j.jsx)(P.Z,{orientation:"row",label:"Health:",value:(0,j.jsx)("span",{className:c,children:(0,j.jsx)(m.J$M,{})})})]})]})})()]})};var C=n(50896),N=n(13400),I=n(42419);const F=(0,r.Z)((e=>(0,s.Z)({domainInline:{display:"flex",marginBottom:15},overlayAction:{marginLeft:10,display:"flex",alignItems:"center","& svg":{width:15,height:15},"& button":{background:"#EAEAEA"}},...c.DF,...c.ID})))((e=>{let{open:t,closeModalAndRefresh:n,namespace:a,idTenant:l,domains:o,classes:s}=e;const r=(0,f.TL)(),[c,u]=(0,i.useState)(!1),[h,b]=(0,i.useState)(""),[y,Z]=(0,i.useState)([""]),[S,w]=(0,i.useState)(!0),[k,P]=(0,i.useState)([!0]);(0,i.useEffect)((()=>{if(o){const e=o.console||"";if(b(e),""!==e){const t=new RegExp(/^(https?):\/\/([a-zA-Z0-9\-.]+)(:[0-9]+)?(\/[a-zA-Z0-9\-./]*)?$/);w(t.test(e))}else w(!0);if(o.minio&&o.minio.length>0){Z(o.minio);const e=new RegExp(/^(https?):\/\/([a-zA-Z0-9\-.]+)(:[0-9]+)?$/),t=o.minio.map((t=>""===t.trim()||e.test(t)));P(t)}}}),[o]);const R=()=>{const e=[...y],t=[...k];e.push(""),t.push(!0),Z(e),P(t)};return(0,j.jsx)(p.Z,{title:"Edit Tenant Domains - ".concat(l),modalOpen:t,onClose:()=>{n(!1)},children:(0,j.jsx)(d.ZP,{container:!0,children:(0,j.jsxs)(d.ZP,{item:!0,xs:12,className:s.modalFormScrollable,children:[(0,j.jsxs)(d.ZP,{item:!0,xs:12,className:"".concat(s.configSectionItem),children:[(0,j.jsx)("div",{className:s.containerItem,children:(0,j.jsx)(v.Z,{id:"console_domain",name:"console_domain",onChange:e=>{b(e.target.value),w(e.target.validity.valid)},label:"Console Domain",value:h,placeholder:"Eg. http://subdomain.domain:port/subpath1/subpath2",pattern:"^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-.\\/]*)?$",error:S?"":"Domain format is incorrect (http|https://subdomain.domain:port/subpath1/subpath2)"})}),(0,j.jsxs)("div",{children:[(0,j.jsx)("h4",{children:"MinIO Domains"}),(0,j.jsx)("div",{children:y.map(((e,t)=>(0,j.jsxs)("div",{className:"".concat(s.domainInline),children:[(0,j.jsx)(v.Z,{id:"minio-domain-".concat(t.toString()),name:"minio-domain-".concat(t.toString()),onChange:e=>{((e,t)=>{const n=[...y];n[t]=e,Z(n)})(e.target.value,t),((e,t)=>{const n=[...k];n[t]=e,P(n)})(e.target.validity.valid,t)},label:"MinIO Domain ".concat(t+1),value:e,placeholder:"Eg. http://subdomain.domain",pattern:"^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?$",error:k[t]?"":"MinIO domain format is incorrect (http|https://subdomain.domain)"}),(0,j.jsx)("div",{className:s.overlayAction,children:(0,j.jsx)(N.Z,{size:"small",onClick:R,disabled:t!==y.length-1,children:(0,j.jsx)(I.Z,{})})}),(0,j.jsx)("div",{className:s.overlayAction,children:(0,j.jsx)(N.Z,{size:"small",onClick:()=>(e=>{const t=y.filter(((t,n)=>n!==e)),n=k.filter(((t,n)=>n!==e));Z(t),P(n)})(t),disabled:y.length<=1,children:(0,j.jsx)(m.HFL,{})})})]},"minio-domain-key-".concat(t.toString()))))})]})]}),(0,j.jsxs)(d.ZP,{item:!0,xs:12,className:s.modalButtonBar,children:[(0,j.jsx)(m.zxk,{id:"clear-edit-domain",type:"button",variant:"regular",onClick:()=>{b(""),w(!0),Z([""]),P([!0])},label:"Clear"}),(0,j.jsx)(m.zxk,{id:"save-domain",type:"submit",variant:"callAction",disabled:c||!S||k.filter((e=>!e)).length>0,onClick:()=>{u(!0);let e={domains:{console:h,minio:y.filter((e=>""!==e.trim()))}};g.Z.invoke("PUT","/api/v1/namespaces/".concat(a,"/tenants/").concat(l,"/domains"),e).then((()=>{u(!1),r((0,x.y1)("Domains updated successfully")),n(!0)})).catch((e=>{u(!1),r((0,x.zb)(e))}))},label:"Save"})]})]})})})}));var A=n(57689),D=n(82295);const E=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"red",t=arguments.length>1?arguments[1]:void 0;return"red"===e?t.redState:"yellow"===e?t.yellowState:"green"===e?t.greenState:t.greyState},_=e=>{var t;let{tenant:n,classes:i}=e;return n?(0,j.jsx)(R,{tenant:n,label:"Storage",error:"",loading:!1,healthStatus:E(null===n||void 0===n||null===(t=n.status)||void 0===t?void 0:t.health_status,i)}):null},M=function(e){return e?(0,j.jsx)(m.Yp9,{}):(0,j.jsx)(m.cmQ,{style:{color:"grey"}})},B={display:"flex",justifyContent:"space-between",marginTop:"10px","@media (max-width: 600px)":{flexFlow:"column"}},T={stkProps:{sx:{flex:1,marginRight:10,display:"flex",alignItems:"center",justifyContent:"space-between","@media (max-width: 900px)":{marginRight:"25px"}}},lblProps:{style:{minWidth:100}}},z=(0,r.Z)((e=>(0,s.Z)({...c.oZ,redState:{color:e.palette.error.main,"& .min-icon":{width:16,height:16,marginRight:4}},yellowState:{color:e.palette.warning.main,"& .min-icon":{width:16,height:16,marginRight:4}},greenState:{color:e.palette.success.main,"& .min-icon":{width:16,height:16,marginRight:4}},greyState:{color:"grey","& .min-icon":{width:16,height:16,marginRight:4}},linkedSection:{color:e.palette.info.main,fontFamily:"'Inter', sans-serif"},autoGeneratedLink:{fontStyle:"italic"},...c.Bz})))((e=>{var t,n,l,s,r,c,p,v,h,g,x,Z,S,w,k,R,N,I,E,z,U,W,O,L;let{classes:$}=e;const G=(0,f.TL)(),{tenantName:V,tenantNamespace:H}=(0,A.UO)(),K=(0,a.v9)((e=>e.tenants.tenantInfo)),Q=(0,a.v9)((e=>o()(e.tenants.tenantInfo,"encryptionEnabled",!1))),Y=(0,a.v9)((e=>o()(e.tenants.tenantInfo,"minioTLS",!1))),q=(0,a.v9)((e=>o()(e.tenants.tenantInfo,"idpAdEnabled",!1))),J=(0,a.v9)((e=>o()(e.tenants.tenantInfo,"idpOidcEnabled",!1))),[X,ee]=(0,i.useState)(0),[te,ne]=(0,i.useState)(0),[ie,ae]=(0,i.useState)(0),[le,oe]=(0,i.useState)(!1),[se,re]=(0,i.useState)(!1);(0,i.useEffect)((()=>{var e,t,n;K&&(ee((null===K||void 0===K||null===(e=K.pools)||void 0===e?void 0:e.length)||0),ae((null===(t=K.pools)||void 0===t?void 0:t.reduce(((e,t)=>e+t.volumes_per_server*t.servers),0))||0),ne((null===(n=K.pools)||void 0===n?void 0:n.reduce(((e,t)=>e+t.servers),0))||0))}),[K]);return(0,j.jsxs)(i.Fragment,{children:[le&&(0,j.jsx)(b,{open:le,closeModalAndRefresh:e=>{oe(!1),e&&G((0,D.v)())},idTenant:V||"",namespace:H||""}),se&&(0,j.jsx)(F,{open:se,idTenant:V||"",namespace:H||"",domains:(null===K||void 0===K?void 0:K.domains)||null,closeModalAndRefresh:e=>{re(!1),e&&G((0,D.v)())}}),(0,j.jsx)(C.Z,{separator:!1,children:"Details"}),(0,j.jsx)(_,{tenant:K,classes:$}),(0,j.jsxs)(d.ZP,{container:!0,children:[(0,j.jsxs)(d.ZP,{item:!0,xs:12,sm:12,md:8,children:[(0,j.jsx)(d.ZP,{item:!0,xs:12,children:(0,j.jsx)(P.Z,{label:"State:",value:null===K||void 0===K?void 0:K.currentState})}),(0,j.jsx)(d.ZP,{item:!0,xs:12,children:(0,j.jsx)(P.Z,{label:"MinIO:",value:(0,j.jsx)(y.Z,{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"normal",wordBreak:"break-all"},onClick:()=>{oe(!0)},children:K?K.image:""})})}),(0,j.jsx)(d.ZP,{item:!0,xs:12,children:(0,j.jsxs)("h3",{children:["Domains",(0,j.jsx)(m.zxk,{id:"edit-domains",icon:(0,j.jsx)(m.dY8,{}),onClick:()=>{re(!0)}})]})}),(0,j.jsx)(d.ZP,{item:!0,xs:12,children:(0,j.jsx)(P.Z,{label:"Console:",value:(0,j.jsxs)(i.Fragment,{children:[null!==K&&void 0!==K&&null!==(t=K.domains)&&void 0!==t&&t.console&&""!==(null===K||void 0===K||null===(n=K.domains)||void 0===n?void 0:n.console)||null!==K&&void 0!==K&&null!==(l=K.endpoints)&&void 0!==l&&l.console?"":"-",(null===K||void 0===K||null===(s=K.endpoints)||void 0===s?void 0:s.console)&&(0,j.jsxs)(i.Fragment,{children:[(0,j.jsx)("a",{href:null===K||void 0===K||null===(r=K.endpoints)||void 0===r?void 0:r.console,target:"_blank",rel:"noopener",className:"".concat($.linkedSection," ").concat($.autoGeneratedLink),children:(null===K||void 0===K||null===(c=K.endpoints)||void 0===c?void 0:c.console)||"-"}),(0,j.jsx)("br",{})]}),(null===K||void 0===K||null===(p=K.domains)||void 0===p?void 0:p.console)&&""!==(null===K||void 0===K||null===(v=K.domains)||void 0===v?void 0:v.console)&&(0,j.jsx)("a",{href:(null===K||void 0===K||null===(h=K.domains)||void 0===h?void 0:h.console)||"",target:"_blank",rel:"noopener",className:$.linkedSection,children:(null===K||void 0===K||null===(g=K.domains)||void 0===g?void 0:g.console)||""})]})})}),(0,j.jsx)(d.ZP,{item:!0,xs:12,children:(0,j.jsx)(P.Z,{label:"MinIO Endpoint".concat(null!==K&&void 0!==K&&null!==(x=K.endpoints)&&void 0!==x&&x.minio&&1===(null===K||void 0===K||null===(Z=K.endpoints)||void 0===Z?void 0:Z.minio.length)?"":"s",":"),value:(0,j.jsxs)(i.Fragment,{children:[null!==K&&void 0!==K&&null!==(S=K.domains)&&void 0!==S&&S.minio||null!==K&&void 0!==K&&null!==(w=K.endpoints)&&void 0!==w&&w.minio?"":"-",(null===K||void 0===K||null===(k=K.endpoints)||void 0===k?void 0:k.minio)&&(0,j.jsxs)(i.Fragment,{children:[(0,j.jsx)("a",{href:null===K||void 0===K||null===(R=K.endpoints)||void 0===R?void 0:R.minio,target:"_blank",rel:"noopener",className:"".concat($.linkedSection," ").concat($.autoGeneratedLink),children:(null===K||void 0===K||null===(N=K.endpoints)||void 0===N?void 0:N.minio)||"-"}),(0,j.jsx)("br",{})]}),(null===K||void 0===K||null===(I=K.domains)||void 0===I?void 0:I.minio)&&K.domains.minio.map((e=>(0,j.jsxs)(i.Fragment,{children:[(0,j.jsx)("a",{href:e,target:"_blank",rel:"noopener",className:$.linkedSection,children:e}),(0,j.jsx)("br",{})]},e)))]})})})]}),(0,j.jsxs)(d.ZP,{item:!0,xs:12,sm:12,md:4,children:[(0,j.jsx)(d.ZP,{item:!0,xs:12,children:(0,j.jsx)(P.Z,{label:"Instances:",value:te})}),(0,j.jsx)(d.ZP,{item:!0,xs:12,children:(0,j.jsx)(P.Z,{label:"Clusters:",value:X,stkProps:{style:{marginRight:47}}})}),(0,j.jsx)(d.ZP,{item:!0,xs:12,children:(0,j.jsx)(P.Z,{label:"Total Drives:",value:ie,stkProps:{style:{marginRight:43}}})}),(0,j.jsx)(d.ZP,{item:!0,xs:12,children:(0,j.jsx)(P.Z,{label:"Write Quorum:",value:null!==K&&void 0!==K&&null!==(E=K.status)&&void 0!==E&&E.write_quorum?null===K||void 0===K||null===(z=K.status)||void 0===z?void 0:z.write_quorum:0})}),(0,j.jsx)(d.ZP,{item:!0,xs:12,children:(0,j.jsx)(P.Z,{label:"Drives Online:",value:null!==K&&void 0!==K&&null!==(U=K.status)&&void 0!==U&&U.drives_online?null===K||void 0===K||null===(W=K.status)||void 0===W?void 0:W.drives_online:0,stkProps:{style:{marginRight:8}}})}),(0,j.jsx)(d.ZP,{item:!0,xs:12,children:(0,j.jsx)(P.Z,{label:"Drives Offline:",value:null!==K&&void 0!==K&&null!==(O=K.status)&&void 0!==O&&O.drives_offline?null===K||void 0===K||null===(L=K.status)||void 0===L?void 0:L.drives_offline:0,stkProps:{style:{marginRight:7}}})})]})]}),(0,j.jsx)(C.Z,{children:"Features"}),(0,j.jsxs)(u.Z,{sx:{...B},children:[(0,j.jsx)(P.Z,{orientation:"row",label:"MinIO TLS:",value:M(Y,"tenant-tls"),...T}),(0,j.jsx)(P.Z,{orientation:"row",label:"AD/LDAP:",value:M(q,"tenant-sts"),...T}),(0,j.jsx)(P.Z,{orientation:"row",label:"Encryption:",value:M(Q,"tenant-enc"),...T})]}),(0,j.jsx)(u.Z,{sx:{...B},children:(0,j.jsx)(P.Z,{orientation:"row",label:"OpenID:",value:M(J,"tenant-oidc"),...T})})]})}))},22512:(e,t,n)=>{n.d(t,{Z:()=>r});var i=n(72791),a=n(20890),l=n(11135),o=n(25787),s=n(80184);const r=(0,o.Z)((e=>{var t;return(0,l.Z)({errorBlock:{color:(null===(t=e.palette)||void 0===t?void 0:t.error.main)||"#C83B51"}})}))((e=>{let{classes:t,errorMessage:n,withBreak:l=!0}=e;return(0,s.jsxs)(i.Fragment,{children:[l&&(0,s.jsx)("br",{}),(0,s.jsx)(a.Z,{component:"p",variant:"body1",className:t.errorBlock,children:n})]})}))},42419:(e,t,n)=>{var i=n(64836);t.Z=void 0;var a=i(n(45649)),l=n(80184),o=(0,a.default)((0,l.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add");t.Z=o},36314:(e,t,n)=>{n.d(t,{Z:()=>P});var i=n(63366),a=n(87462),l=n(72791),o=n(30831),s=n(82466),r=n(94419),c=n(21217),d=n(93457),u=n(86083),m=n(78519),p=n(85080),v=n(51184),h=n(45682),g=n(80184);const x=["component","direction","spacing","divider","children","className","useFlexGap"],f=(0,p.Z)(),j=(0,d.Z)("div",{name:"MuiStack",slot:"Root",overridesResolver:(e,t)=>t.root});function b(e){return(0,u.Z)({props:e,name:"MuiStack",defaultTheme:f})}function y(e,t){const n=l.Children.toArray(e).filter(Boolean);return n.reduce(((e,i,a)=>(e.push(i),a{let{ownerState:t,theme:n}=e,i=(0,a.Z)({display:"flex",flexDirection:"column"},(0,v.k9)({theme:n},(0,v.P$)({values:t.direction,breakpoints:n.breakpoints.values}),(e=>({flexDirection:e}))));if(t.spacing){const e=(0,h.hB)(n),a=Object.keys(n.breakpoints.values).reduce(((e,n)=>(("object"===typeof t.spacing&&null!=t.spacing[n]||"object"===typeof t.direction&&null!=t.direction[n])&&(e[n]=!0),e)),{}),l=(0,v.P$)({values:t.direction,base:a}),o=(0,v.P$)({values:t.spacing,base:a});"object"===typeof l&&Object.keys(l).forEach(((e,t,n)=>{if(!l[e]){const i=t>0?l[n[t-1]]:"column";l[e]=i}}));const r=(n,i)=>{return t.useFlexGap?{gap:(0,h.NA)(e,n)}:{"& > :not(style):not(style)":{margin:0},"& > :not(style) ~ :not(style)":{["margin".concat((a=i?l[i]:t.direction,{row:"Left","row-reverse":"Right",column:"Top","column-reverse":"Bottom"}[a]))]:(0,h.NA)(e,n)}};var a};i=(0,s.Z)(i,(0,v.k9)({theme:n},o,r))}return i=(0,v.dt)(n.breakpoints,i),i};var S=n(66934),w=n(31402);const k=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{createStyledComponent:t=j,useThemeProps:n=b,componentName:s="MuiStack"}=e,d=t(Z),u=l.forwardRef((function(e,t){const l=n(e),u=(0,m.Z)(l),{component:p="div",direction:v="column",spacing:h=0,divider:f,children:j,className:b,useFlexGap:Z=!1}=u,S=(0,i.Z)(u,x),w={direction:v,spacing:h,useFlexGap:Z},k=(0,r.Z)({root:["root"]},(e=>(0,c.Z)(s,e)),{});return(0,g.jsx)(d,(0,a.Z)({as:p,ownerState:w,ref:t,className:(0,o.Z)(k.root,b)},S,{children:f?y(j,f):j}))}));return u}({createStyledComponent:(0,S.ZP)("div",{name:"MuiStack",slot:"Root",overridesResolver:(e,t)=>t.root}),useThemeProps:e=>(0,w.Z)({props:e,name:"MuiStack"})}),P=k},93457:(e,t,n)=>{n.d(t,{Z:()=>i});const i=(0,n(44046).ZP)()},23688:(e,t,n)=>{function i(){var e=this.constructor.getDerivedStateFromProps(this.props,this.state);null!==e&&void 0!==e&&this.setState(e)}function a(e){this.setState(function(t){var n=this.constructor.getDerivedStateFromProps(e,t);return null!==n&&void 0!==n?n:null}.bind(this))}function l(e,t){try{var n=this.props,i=this.state;this.props=e,this.state=t,this.__reactInternalSnapshotFlag=!0,this.__reactInternalSnapshot=this.getSnapshotBeforeUpdate(n,i)}finally{this.props=n,this.state=i}}function o(e){var t=e.prototype;if(!t||!t.isReactComponent)throw new Error("Can only polyfill class components");if("function"!==typeof e.getDerivedStateFromProps&&"function"!==typeof t.getSnapshotBeforeUpdate)return e;var n=null,o=null,s=null;if("function"===typeof t.componentWillMount?n="componentWillMount":"function"===typeof t.UNSAFE_componentWillMount&&(n="UNSAFE_componentWillMount"),"function"===typeof t.componentWillReceiveProps?o="componentWillReceiveProps":"function"===typeof t.UNSAFE_componentWillReceiveProps&&(o="UNSAFE_componentWillReceiveProps"),"function"===typeof t.componentWillUpdate?s="componentWillUpdate":"function"===typeof t.UNSAFE_componentWillUpdate&&(s="UNSAFE_componentWillUpdate"),null!==n||null!==o||null!==s){var r=e.displayName||e.name,c="function"===typeof e.getDerivedStateFromProps?"getDerivedStateFromProps()":"getSnapshotBeforeUpdate()";throw Error("Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n"+r+" uses "+c+" but also contains the following legacy lifecycles:"+(null!==n?"\n "+n:"")+(null!==o?"\n "+o:"")+(null!==s?"\n "+s:"")+"\n\nThe above lifecycles should be removed. Learn more about this warning here:\nhttps://fb.me/react-async-component-lifecycle-hooks")}if("function"===typeof e.getDerivedStateFromProps&&(t.componentWillMount=i,t.componentWillReceiveProps=a),"function"===typeof t.getSnapshotBeforeUpdate){if("function"!==typeof t.componentDidUpdate)throw new Error("Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype");t.componentWillUpdate=l;var d=t.componentDidUpdate;t.componentDidUpdate=function(e,t,n){var i=this.__reactInternalSnapshotFlag?this.__reactInternalSnapshot:n;d.call(this,e,t,i)}}return e}n.r(t),n.d(t,{polyfill:()=>o}),i.__suppressDeprecationWarning=!0,a.__suppressDeprecationWarning=!0,l.__suppressDeprecationWarning=!0}}]); +//# sourceMappingURL=30.352379d0.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/30.352379d0.chunk.js.map b/web-app/build/static/js/30.352379d0.chunk.js.map new file mode 100644 index 00000000000..cf5964fff46 --- /dev/null +++ b/web-app/build/static/js/30.352379d0.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/30.352379d0.chunk.js","mappings":"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","sources":["screens/Console/Common/AButton/AButton.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx","screens/Console/Common/UsageBarWrapper/LabelValuePair.tsx","screens/Console/Common/UsageBar/UsageBar.tsx","screens/Console/Tenants/ListTenants/TenantCapacity.tsx","screens/Console/Tenants/TenantDetails/UpdateTenantModal.tsx","screens/Console/Common/UsageBarWrapper/SummaryUsageBar.tsx","screens/Console/Tenants/TenantDetails/EditDomains.tsx","screens/Console/Tenants/TenantDetails/TenantSummary.tsx","screens/shared/ErrorBlock.tsx","../node_modules/@mui/icons-material/Add.js","../node_modules/@mui/system/esm/Stack/createStack.js","../node_modules/@mui/material/Stack/Stack.js","../node_modules/@mui/system/esm/styled.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IconButtonProps } from \"@mui/material\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n padding: 0,\n margin: 0,\n border: 0,\n backgroundColor: \"transparent\",\n textDecoration: \"underline\",\n cursor: \"pointer\",\n fontSize: \"inherit\",\n color: theme.palette.info.main,\n fontFamily: \"Inter, sans-serif\",\n },\n });\n\ninterface IAButton extends IconButtonProps {\n classes: any;\n children: any;\n}\n\nconst AButton = ({ classes, children, ...rest }: IAButton) => {\n return (\n \n );\n};\n\nexport default withStyles(styles)(AButton);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport MainError from \"../MainError/MainError\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n noContentPadding?: boolean;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n noContentPadding,\n titleIcon = null,\n}: IModalProps) => {\n const dispatch = useAppDispatch();\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n const modalSnackMessage = useSelector(\n (state: AppState) => state.system.modalSnackBar,\n );\n\n useEffect(() => {\n dispatch(setModalSnackMessage(\"\"));\n }, [dispatch]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n dispatch(setModalSnackMessage(\"\"));\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n
\n {titleIcon} {title}\n
\n
\n \n \n \n
\n
\n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nexport default withStyles(styles)(ModalWrapper);\n","import React from \"react\";\nimport { Stack } from \"@mui/material\";\n\ntype LabelValuePairProps = {\n label?: any;\n value?: any;\n orientation?: any;\n stkProps?: any;\n lblProps?: any;\n valProps?: any;\n};\n\nconst LabelValuePair = ({\n label = null,\n value = \"-\",\n orientation = \"column\",\n stkProps = {},\n lblProps = {},\n valProps = {},\n}: LabelValuePairProps) => {\n return (\n \n \n \n \n );\n};\n\nexport default LabelValuePair;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\nexport interface ISizeBarItem {\n value: number;\n itemName: string;\n color: string;\n}\n\nexport interface IUsageBar {\n totalValue: number;\n sizeItems: ISizeBarItem[];\n bgColor?: string;\n}\n\nconst UsageBar = ({\n totalValue,\n sizeItems,\n bgColor = \"#ededed\",\n}: IUsageBar) => {\n return (\n \n {sizeItems.map((sizeElement, index) => {\n const itemPercentage = (sizeElement.value * 100) / totalValue;\n return (\n \n );\n })}\n \n );\n};\n\nexport default UsageBar;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Cell, Pie, PieChart } from \"recharts\";\nimport { CapacityValue, CapacityValues } from \"./types\";\nimport { niceBytesInt } from \"../../../../common/utils\";\nimport { CircleIcon } from \"mds\";\nimport UsageBar, { ISizeBarItem } from \"../../Common/UsageBar/UsageBar\";\n\ninterface ITenantCapacity {\n totalCapacity: number;\n usedSpaceVariants: CapacityValues[];\n statusClass: string;\n render?: \"pie\" | \"bar\";\n}\n\nconst TenantCapacity = ({\n totalCapacity,\n usedSpaceVariants,\n statusClass,\n render = \"pie\",\n}: ITenantCapacity) => {\n const colors = [\n \"#8dacd3\",\n \"#bca1ea\",\n \"#92e8d2\",\n \"#efc9ac\",\n \"#97f274\",\n \"#f7d291\",\n \"#71ACCB\",\n \"#f28282\",\n \"#e28cc1\",\n \"#2781B0\",\n ];\n\n const BGColor = \"#ededed\";\n\n const totalUsedSpace = usedSpaceVariants.reduce((acc, currValue) => {\n return acc + currValue.value;\n }, 0);\n\n const emptySpace = totalCapacity - totalUsedSpace;\n\n let tiersList: CapacityValue[] = [];\n\n const standardTier = usedSpaceVariants.find(\n (tier) => tier.variant === \"STANDARD\",\n ) || {\n value: 0,\n variant: \"empty\",\n };\n\n if (usedSpaceVariants.length > 10) {\n const totalUsedByTiers = totalUsedSpace - standardTier.value;\n\n tiersList = [\n { value: totalUsedByTiers, color: \"#2781B0\", label: \"Total Tiers Space\" },\n ];\n } else {\n tiersList = usedSpaceVariants\n .filter((variant) => variant.variant !== \"STANDARD\")\n .map((variant, index) => {\n return {\n value: variant.value,\n color: colors[index],\n label: `Tier - ${variant.variant}`,\n };\n });\n }\n\n let standardTierColor = \"#07193E\";\n\n const usedPercentage = (standardTier.value * 100) / totalCapacity;\n\n if (usedPercentage >= 90) {\n standardTierColor = \"#C83B51\";\n } else if (usedPercentage >= 75) {\n standardTierColor = \"#FFAB0F\";\n }\n\n const plotValues: CapacityValue[] = [\n {\n value: standardTier.value,\n color: standardTierColor,\n label: \"Used Space by Tenant\",\n },\n ...tiersList,\n {\n value: emptySpace,\n color: render === \"bar\" ? BGColor : \"transparent\",\n label: \"Empty Space\",\n },\n ];\n\n if (render === \"bar\") {\n const plotValuesForUsageBar: ISizeBarItem[] = plotValues.map((plotVal) => {\n return {\n value: plotVal.value,\n color: plotVal.color,\n itemName: plotVal.label,\n };\n });\n\n return (\n
\n \n
\n );\n }\n\n return (\n
\n \n \n
\n \n {!isNaN(totalUsedSpace) ? niceBytesInt(totalUsedSpace) : \"N/A\"}\n \n
\n \n \n \n {plotValues.map((entry, index) => (\n \n ))}\n \n \n
\n \n );\n};\n\nexport default TenantCapacity;\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { Button } from \"mds\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid } from \"@mui/material\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport api from \"../../../../common/api\";\nimport {\n setModalErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IUpdateTenantModal {\n open: boolean;\n closeModalAndRefresh: (update: boolean) => any;\n namespace: string;\n idTenant: string;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n infoText: {\n fontSize: 14,\n },\n ...formFieldStyles,\n ...modalStyleUtils,\n });\n\nconst UpdateTenantModal = ({\n open,\n closeModalAndRefresh,\n namespace,\n idTenant,\n classes,\n}: IUpdateTenantModal) => {\n const dispatch = useAppDispatch();\n const [isSending, setIsSending] = useState(false);\n const [minioImage, setMinioImage] = useState(\"\");\n const [imageRegistry, setImageRegistry] = useState(false);\n const [imageRegistryEndpoint, setImageRegistryEndpoint] =\n useState(\"\");\n const [imageRegistryUsername, setImageRegistryUsername] =\n useState(\"\");\n const [imageRegistryPassword, setImageRegistryPassword] =\n useState(\"\");\n const [validMinioImage, setValidMinioImage] = useState(true);\n\n const validateImage = useCallback(\n (fieldToCheck: string) => {\n const pattern = new RegExp(\"^$|^((.*?)/(.*?):(.+))$\");\n\n switch (fieldToCheck) {\n case \"minioImage\":\n setValidMinioImage(pattern.test(minioImage));\n break;\n }\n },\n [minioImage],\n );\n\n useEffect(() => {\n validateImage(\"minioImage\");\n }, [minioImage, validateImage]);\n\n const closeAction = () => {\n closeModalAndRefresh(false);\n };\n\n const resetForm = () => {\n setMinioImage(\"\");\n setImageRegistry(false);\n setImageRegistryEndpoint(\"\");\n setImageRegistryUsername(\"\");\n setImageRegistryPassword(\"\");\n };\n\n const updateMinIOImage = () => {\n setIsSending(true);\n\n let payload = {\n image: minioImage,\n };\n\n if (imageRegistry) {\n const registry: any = {\n image_registry: {\n registry: imageRegistryEndpoint,\n username: imageRegistryUsername,\n password: imageRegistryPassword,\n },\n };\n payload = {\n ...payload,\n ...registry,\n };\n }\n\n api\n .invoke(\n \"PUT\",\n `/api/v1/namespaces/${namespace}/tenants/${idTenant}`,\n payload,\n )\n .then(() => {\n setIsSending(false);\n dispatch(setSnackBarMessage(`Image updated successfully`));\n closeModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSending(false);\n });\n };\n\n return (\n \n \n \n
\n Please enter the MinIO image from dockerhub to use. If blank, then\n latest build will be used.\n
\n
\n
\n \n {\n setMinioImage(e.target.value);\n }}\n />\n \n \n ) => {\n setImageRegistry(!imageRegistry);\n }}\n label={\"Set Custom Image Registry\"}\n indicatorLabels={[\"Yes\", \"No\"]}\n />\n \n {imageRegistry && (\n \n \n {\n setImageRegistryEndpoint(e.target.value);\n }}\n />\n \n \n {\n setImageRegistryUsername(e.target.value);\n }}\n />\n \n \n {\n setImageRegistryPassword(e.target.value);\n }}\n />\n \n \n )}\n
\n \n \n \n \n
\n \n );\n};\n\nexport default withStyles(styles)(UpdateTenantModal);\n","import React, { Fragment } from \"react\";\nimport { Stack } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport { CapacityValues, ValueUnit } from \"../../Tenants/ListTenants/types\";\nimport { CircleIcon, Loader } from \"mds\";\nimport { niceBytes, niceBytesInt } from \"../../../../common/utils\";\nimport TenantCapacity from \"../../Tenants/ListTenants/TenantCapacity\";\nimport ErrorBlock from \"../../../shared/ErrorBlock\";\nimport LabelValuePair from \"./LabelValuePair\";\nimport { Tenant } from \"../../../../api/operatorApi\";\n\ninterface ISummaryUsageBar {\n tenant: Tenant;\n label: string;\n error: string;\n loading: boolean;\n labels?: boolean;\n healthStatus?: string;\n}\n\nconst SummaryUsageBar = ({\n tenant,\n healthStatus,\n loading,\n error,\n}: ISummaryUsageBar) => {\n let raw: ValueUnit = { value: \"n/a\", unit: \"\" };\n let capacity: ValueUnit = { value: \"n/a\", unit: \"\" };\n let used: ValueUnit = { value: \"n/a\", unit: \"\" };\n let localUse: ValueUnit = { value: \"n/a\", unit: \"\" };\n let tieredUse: ValueUnit = { value: \"n/a\", unit: \"\" };\n\n if (tenant.status?.usage?.raw) {\n const b = niceBytes(`${tenant.status.usage.raw}`, true);\n const parts = b.split(\" \");\n raw.value = parts[0];\n raw.unit = parts[1];\n }\n if (tenant.status?.usage?.capacity) {\n const b = niceBytes(`${tenant.status.usage.capacity}`, true);\n const parts = b.split(\" \");\n capacity.value = parts[0];\n capacity.unit = parts[1];\n }\n if (tenant.status?.usage?.capacity_usage) {\n const b = niceBytesInt(tenant.status.usage.capacity_usage, true);\n const parts = b.split(\" \");\n used.value = parts[0];\n used.unit = parts[1];\n }\n\n let spaceVariants: CapacityValues[] = [];\n if (!tenant.tiers || tenant.tiers.length === 0) {\n spaceVariants = [\n { value: tenant.status?.usage?.capacity_usage || 0, variant: \"STANDARD\" },\n ];\n } else {\n spaceVariants = tenant.tiers.map((itemTenant) => {\n return { value: itemTenant.size!, variant: itemTenant.name! };\n });\n let internalUsage = tenant.tiers\n .filter((itemTenant) => {\n return itemTenant.type === \"internal\";\n })\n .reduce((sum, itemTenant) => sum + itemTenant.size!, 0);\n let tieredUsage = tenant.tiers\n .filter((itemTenant) => {\n return itemTenant.type !== \"internal\";\n })\n .reduce((sum, itemTenant) => sum + itemTenant.size!, 0);\n\n const t = niceBytesInt(tieredUsage, true);\n const parts = t.split(\" \");\n tieredUse.value = parts[0];\n tieredUse.unit = parts[1];\n\n const is = niceBytesInt(internalUsage, true);\n const partsInternal = is.split(\" \");\n localUse.value = partsInternal[0];\n localUse.unit = partsInternal[1];\n }\n\n const renderComponent = () => {\n if (!loading) {\n return error !== \"\" ? (\n \n ) : (\n \n \n \n {(!tenant.tiers || tenant.tiers.length === 0) && (\n \n \n \n )}\n {tenant.tiers && tenant.tiers.length > 0 && (\n \n \n \n \n )}\n {healthStatus && (\n \n \n \n }\n />\n )}\n \n \n );\n }\n\n return null;\n };\n\n return (\n \n {loading && (\n
\n \n \n \n
\n )}\n {renderComponent()}\n
\n );\n};\n\nexport default SummaryUsageBar;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button, RemoveIcon } from \"mds\";\nimport { Grid, IconButton } from \"@mui/material\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n ErrorResponseHandler,\n IDomainsRequest,\n} from \"../../../../common/types\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport api from \"../../../../common/api\";\nimport {\n setModalErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IEditDomains {\n open: boolean;\n closeModalAndRefresh: (update: boolean) => any;\n namespace: string;\n idTenant: string;\n domains: IDomainsRequest | null;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n domainInline: {\n display: \"flex\",\n marginBottom: 15,\n },\n overlayAction: {\n marginLeft: 10,\n display: \"flex\",\n alignItems: \"center\",\n \"& svg\": {\n width: 15,\n height: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n ...formFieldStyles,\n ...modalStyleUtils,\n });\n\nconst EditDomains = ({\n open,\n closeModalAndRefresh,\n namespace,\n idTenant,\n domains,\n classes,\n}: IEditDomains) => {\n const dispatch = useAppDispatch();\n const [isSending, setIsSending] = useState(false);\n const [consoleDomain, setConsoleDomain] = useState(\"\");\n const [minioDomains, setMinioDomains] = useState([\"\"]);\n const [consoleDomainValid, setConsoleDomainValid] = useState(true);\n const [minioDomainValid, setMinioDomainValid] = useState([true]);\n\n useEffect(() => {\n if (domains) {\n const consoleDomainSet = domains.console || \"\";\n setConsoleDomain(consoleDomainSet);\n\n if (consoleDomainSet !== \"\") {\n // We Validate console domain\n const consoleRegExp = new RegExp(\n /^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-./]*)?$/,\n );\n\n setConsoleDomainValid(consoleRegExp.test(consoleDomainSet));\n } else {\n setConsoleDomainValid(true);\n }\n\n if (domains.minio && domains.minio.length > 0) {\n setMinioDomains(domains.minio);\n\n const minioRegExp = new RegExp(\n /^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?$/,\n );\n\n const initialValidations = domains.minio.map((domain) => {\n if (domain.trim() !== \"\") {\n return minioRegExp.test(domain);\n } else {\n return true;\n }\n });\n\n setMinioDomainValid(initialValidations);\n }\n }\n }, [domains]);\n\n const closeAction = () => {\n closeModalAndRefresh(false);\n };\n\n const resetForm = () => {\n setConsoleDomain(\"\");\n setConsoleDomainValid(true);\n setMinioDomains([\"\"]);\n setMinioDomainValid([true]);\n };\n\n const updateDomainsList = () => {\n setIsSending(true);\n\n let payload = {\n domains: {\n console: consoleDomain,\n minio: minioDomains.filter((minioDomain) => minioDomain.trim() !== \"\"),\n },\n };\n api\n .invoke(\n \"PUT\",\n `/api/v1/namespaces/${namespace}/tenants/${idTenant}/domains`,\n payload,\n )\n .then(() => {\n setIsSending(false);\n dispatch(setSnackBarMessage(`Domains updated successfully`));\n closeModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n setIsSending(false);\n dispatch(setModalErrorSnackMessage(error));\n });\n };\n\n const updateMinIODomain = (value: string, index: number) => {\n const cloneDomains = [...minioDomains];\n cloneDomains[index] = value;\n\n setMinioDomains(cloneDomains);\n };\n\n const addNewMinIODomain = () => {\n const cloneDomains = [...minioDomains];\n const cloneValidations = [...minioDomainValid];\n\n cloneDomains.push(\"\");\n cloneValidations.push(true);\n\n setMinioDomains(cloneDomains);\n setMinioDomainValid(cloneValidations);\n };\n\n const removeMinIODomain = (removeIndex: number) => {\n const filteredDomains = minioDomains.filter(\n (_, index) => index !== removeIndex,\n );\n\n const filterValidations = minioDomainValid.filter(\n (_, index) => index !== removeIndex,\n );\n\n setMinioDomains(filteredDomains);\n setMinioDomainValid(filterValidations);\n };\n\n const setMinioDomainValidation = (domainValid: boolean, index: number) => {\n const cloneValidation = [...minioDomainValid];\n cloneValidation[index] = domainValid;\n\n setMinioDomainValid(cloneValidation);\n };\n return (\n \n \n \n \n
\n ) => {\n setConsoleDomain(e.target.value);\n\n setConsoleDomainValid(e.target.validity.valid);\n }}\n label=\"Console Domain\"\n value={consoleDomain}\n placeholder={\n \"Eg. http://subdomain.domain:port/subpath1/subpath2\"\n }\n pattern={\n \"^(https?):\\\\/\\\\/([a-zA-Z0-9\\\\-.]+)(:[0-9]+)?(\\\\/[a-zA-Z0-9\\\\-.\\\\/]*)?$\"\n }\n error={\n !consoleDomainValid\n ? \"Domain format is incorrect (http|https://subdomain.domain:port/subpath1/subpath2)\"\n : \"\"\n }\n />\n
\n
\n

MinIO Domains

\n
\n {minioDomains.map((domain, index) => {\n return (\n \n ) => {\n updateMinIODomain(e.target.value, index);\n setMinioDomainValidation(\n e.target.validity.valid,\n index,\n );\n }}\n label={`MinIO Domain ${index + 1}`}\n value={domain}\n placeholder={\"Eg. http://subdomain.domain\"}\n pattern={\n \"^(https?):\\\\/\\\\/([a-zA-Z0-9\\\\-.]+)(:[0-9]+)?$\"\n }\n error={\n !minioDomainValid[index]\n ? \"MinIO domain format is incorrect (http|https://subdomain.domain)\"\n : \"\"\n }\n />\n
\n \n \n \n
\n\n
\n removeMinIODomain(index)}\n disabled={minioDomains.length <= 1}\n >\n \n \n
\n
\n );\n })}\n
\n \n
\n \n \n !domain).length > 0\n }\n onClick={updateDomainsList}\n label={\"Save\"}\n />\n \n
\n
\n \n );\n};\n\nexport default withStyles(styles)(EditDomains);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n containerForHeader,\n tenantDetailsStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { Box, Grid } from \"@mui/material\";\nimport UpdateTenantModal from \"./UpdateTenantModal\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport AButton from \"../../Common/AButton/AButton\";\nimport SummaryUsageBar from \"../../Common/UsageBarWrapper/SummaryUsageBar\";\nimport LabelValuePair from \"../../Common/UsageBarWrapper/LabelValuePair\";\nimport SectionTitle from \"../../Common/SectionTitle\";\nimport { Button, DisableIcon, EditIcon, TierOnlineIcon } from \"mds\";\nimport EditDomains from \"./EditDomains\";\nimport { useParams } from \"react-router-dom\";\nimport { getTenantAsync } from \"../thunks/tenantDetailsAsync\";\nimport { Tenant } from \"../../../../api/operatorApi\";\n\ninterface ITenantsSummary {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n redState: {\n color: theme.palette.error.main,\n \"& .min-icon\": {\n width: 16,\n height: 16,\n marginRight: 4,\n },\n },\n yellowState: {\n color: theme.palette.warning.main,\n \"& .min-icon\": {\n width: 16,\n height: 16,\n marginRight: 4,\n },\n },\n greenState: {\n color: theme.palette.success.main,\n \"& .min-icon\": {\n width: 16,\n height: 16,\n marginRight: 4,\n },\n },\n greyState: {\n color: \"grey\",\n \"& .min-icon\": {\n width: 16,\n height: 16,\n marginRight: 4,\n },\n },\n linkedSection: {\n color: theme.palette.info.main,\n fontFamily: \"'Inter', sans-serif\",\n },\n autoGeneratedLink: {\n fontStyle: \"italic\",\n },\n ...containerForHeader,\n });\n\nconst healthStatusToClass = (health_status: string = \"red\", classes: any) => {\n return health_status === \"red\"\n ? classes.redState\n : health_status === \"yellow\"\n ? classes.yellowState\n : health_status === \"green\"\n ? classes.greenState\n : classes.greyState;\n};\n\nconst StorageSummary = ({\n tenant,\n classes,\n}: {\n tenant: Tenant | null;\n classes: any;\n}) => {\n if (!tenant) {\n return null;\n }\n\n return (\n \n );\n};\n\nconst getToggle = (toggleValue: boolean, idPrefix = \"\") => {\n if (toggleValue) {\n return ;\n }\n return ;\n};\n\nconst featureRowStyle = {\n display: \"flex\",\n justifyContent: \"space-between\",\n marginTop: \"10px\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n};\n\nconst featureItemStyleProps = {\n stkProps: {\n sx: {\n flex: 1,\n marginRight: 10,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n \"@media (max-width: 900px)\": {\n marginRight: \"25px\",\n },\n },\n },\n lblProps: {\n style: {\n minWidth: 100,\n },\n },\n};\nconst TenantSummary = ({ classes }: ITenantsSummary) => {\n const dispatch = useAppDispatch();\n const { tenantName, tenantNamespace } = useParams();\n\n const tenant = useSelector((state: AppState) => state.tenants.tenantInfo);\n const encryptionEnabled = useSelector((state: AppState) =>\n get(state.tenants.tenantInfo, \"encryptionEnabled\", false),\n );\n const minioTLS = useSelector((state: AppState) =>\n get(state.tenants.tenantInfo, \"minioTLS\", false),\n );\n const adEnabled = useSelector((state: AppState) =>\n get(state.tenants.tenantInfo, \"idpAdEnabled\", false),\n );\n const oidcEnabled = useSelector((state: AppState) =>\n get(state.tenants.tenantInfo, \"idpOidcEnabled\", false),\n );\n\n const [poolCount, setPoolCount] = useState(0);\n const [instances, setInstances] = useState(0);\n const [volumes, setVolumes] = useState(0);\n const [updateMinioVersion, setUpdateMinioVersion] = useState(false);\n const [editDomainsOpen, setEditDomainsOpen] = useState(false);\n\n useEffect(() => {\n if (tenant) {\n setPoolCount(tenant?.pools?.length || 0);\n setVolumes(\n tenant.pools?.reduce(\n (sum, p) => sum + p.volumes_per_server * p.servers,\n 0,\n ) || 0,\n );\n setInstances(tenant.pools?.reduce((sum, p) => sum + p.servers, 0) || 0);\n }\n }, [tenant]);\n\n const closeEditDomainsModal = (refresh: boolean) => {\n setEditDomainsOpen(false);\n if (refresh) {\n dispatch(getTenantAsync());\n }\n };\n\n return (\n \n {updateMinioVersion && (\n {\n setUpdateMinioVersion(false);\n if (refresh) {\n dispatch(getTenantAsync());\n }\n }}\n idTenant={tenantName || \"\"}\n namespace={tenantNamespace || \"\"}\n />\n )}\n\n {editDomainsOpen && (\n \n )}\n\n Details\n\n \n\n \n \n \n \n \n \n {\n setUpdateMinioVersion(true);\n }}\n >\n {tenant ? tenant.image : \"\"}\n \n }\n />\n \n \n

\n Domains\n }\n onClick={() => {\n setEditDomainsOpen(true);\n }}\n />\n

\n
\n \n \n {(!tenant?.domains?.console ||\n tenant?.domains?.console === \"\") &&\n !tenant?.endpoints?.console\n ? \"-\"\n : \"\"}\n\n {tenant?.endpoints?.console && (\n \n \n {tenant?.endpoints?.console || \"-\"}\n \n
\n
\n )}\n\n {tenant?.domains?.console &&\n tenant?.domains?.console !== \"\" && (\n \n {tenant?.domains?.console || \"\"}\n \n )}\n
\n }\n />\n \n \n \n {!tenant?.domains?.minio && !tenant?.endpoints?.minio\n ? \"-\"\n : \"\"}\n {tenant?.endpoints?.minio && (\n \n \n {tenant?.endpoints?.minio || \"-\"}\n \n
\n
\n )}\n\n {tenant?.domains?.minio &&\n tenant.domains.minio.map((domain) => {\n return (\n \n \n {domain}\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 \n \n \n \n \n \n \n\n Features\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(TenantSummary);\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorBlock: {\n color: theme.palette?.error.main || \"#C83B51\",\n },\n });\n\ninterface IErrorBlockProps {\n classes: any;\n errorMessage: string;\n withBreak?: boolean;\n}\n\nconst ErrorBlock = ({\n classes,\n errorMessage,\n withBreak = true,\n}: IErrorBlockProps) => {\n return (\n \n {withBreak &&
}\n \n {errorMessage}\n \n
\n );\n};\n\nexport default withStyles(styles)(ErrorBlock);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"\n}), 'Add');\nexports.default = _default;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"component\", \"direction\", \"spacing\", \"divider\", \"children\", \"className\", \"useFlexGap\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { deepmerge, unstable_composeClasses as composeClasses, unstable_generateUtilityClass as generateUtilityClass } from '@mui/utils';\nimport systemStyled from '../styled';\nimport useThemePropsSystem from '../useThemeProps';\nimport { extendSxProp } from '../styleFunctionSx';\nimport createTheme from '../createTheme';\nimport { handleBreakpoints, mergeBreakpointsInOrder, resolveBreakpointValues } from '../breakpoints';\nimport { createUnarySpacing, getValue } from '../spacing';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\n// widening Theme to any so that the consumer can own the theme structure.\nconst defaultCreateStyledComponent = systemStyled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n});\nfunction useThemePropsDefault(props) {\n return useThemePropsSystem({\n props,\n name: 'MuiStack',\n defaultTheme\n });\n}\n\n/**\n * Return an array with the separator React element interspersed between\n * each React node of the input children.\n *\n * > joinChildren([1,2,3], 0)\n * [1,0,2,0,3]\n */\nfunction joinChildren(children, separator) {\n const childrenArray = React.Children.toArray(children).filter(Boolean);\n return childrenArray.reduce((output, child, index) => {\n output.push(child);\n if (index < childrenArray.length - 1) {\n output.push( /*#__PURE__*/React.cloneElement(separator, {\n key: `separator-${index}`\n }));\n }\n return output;\n }, []);\n}\nconst getSideFromDirection = direction => {\n return {\n row: 'Left',\n 'row-reverse': 'Right',\n column: 'Top',\n 'column-reverse': 'Bottom'\n }[direction];\n};\nexport const style = ({\n ownerState,\n theme\n}) => {\n let styles = _extends({\n display: 'flex',\n flexDirection: 'column'\n }, handleBreakpoints({\n theme\n }, resolveBreakpointValues({\n values: ownerState.direction,\n breakpoints: theme.breakpoints.values\n }), propValue => ({\n flexDirection: propValue\n })));\n if (ownerState.spacing) {\n const transformer = createUnarySpacing(theme);\n const base = Object.keys(theme.breakpoints.values).reduce((acc, breakpoint) => {\n if (typeof ownerState.spacing === 'object' && ownerState.spacing[breakpoint] != null || typeof ownerState.direction === 'object' && ownerState.direction[breakpoint] != null) {\n acc[breakpoint] = true;\n }\n return acc;\n }, {});\n const directionValues = resolveBreakpointValues({\n values: ownerState.direction,\n base\n });\n const spacingValues = resolveBreakpointValues({\n values: ownerState.spacing,\n base\n });\n if (typeof directionValues === 'object') {\n Object.keys(directionValues).forEach((breakpoint, index, breakpoints) => {\n const directionValue = directionValues[breakpoint];\n if (!directionValue) {\n const previousDirectionValue = index > 0 ? directionValues[breakpoints[index - 1]] : 'column';\n directionValues[breakpoint] = previousDirectionValue;\n }\n });\n }\n const styleFromPropValue = (propValue, breakpoint) => {\n if (ownerState.useFlexGap) {\n return {\n gap: getValue(transformer, propValue)\n };\n }\n return {\n // The useFlexGap={false} implement relies on each child to give up control of the margin.\n // We need to reset the margin to avoid double spacing.\n '& > :not(style):not(style)': {\n margin: 0\n },\n '& > :not(style) ~ :not(style)': {\n [`margin${getSideFromDirection(breakpoint ? directionValues[breakpoint] : ownerState.direction)}`]: getValue(transformer, propValue)\n }\n };\n };\n styles = deepmerge(styles, handleBreakpoints({\n theme\n }, spacingValues, styleFromPropValue));\n }\n styles = mergeBreakpointsInOrder(theme.breakpoints, styles);\n return styles;\n};\nexport default function createStack(options = {}) {\n const {\n // This will allow adding custom styled fn (for example for custom sx style function)\n createStyledComponent = defaultCreateStyledComponent,\n useThemeProps = useThemePropsDefault,\n componentName = 'MuiStack'\n } = options;\n const useUtilityClasses = () => {\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, slot => generateUtilityClass(componentName, slot), {});\n };\n const StackRoot = createStyledComponent(style);\n const Stack = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {\n const themeProps = useThemeProps(inProps);\n const props = extendSxProp(themeProps); // `color` type conflicts with html color attribute.\n const {\n component = 'div',\n direction = 'column',\n spacing = 0,\n divider,\n children,\n className,\n useFlexGap = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = {\n direction,\n spacing,\n useFlexGap\n };\n const classes = useUtilityClasses();\n return /*#__PURE__*/_jsx(StackRoot, _extends({\n as: component,\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n children: divider ? joinChildren(children, divider) : children\n }));\n });\n process.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n children: PropTypes.node,\n direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n divider: PropTypes.node,\n spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n } : void 0;\n return Stack;\n}","import PropTypes from 'prop-types';\nimport { createStack } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nconst Stack = createStack({\n createStyledComponent: styled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n }),\n useThemeProps: inProps => useThemeProps({\n props: inProps,\n name: 'MuiStack'\n })\n});\nprocess.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Defines the `flex-direction` style property.\n * It is applied for all screen sizes.\n * @default 'column'\n */\n direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n /**\n * Add an element between each child.\n */\n divider: PropTypes.node,\n /**\n * Defines the space between immediate children.\n * @default 0\n */\n spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n /**\n * The system prop, which allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * If `true`, the CSS flexbox `gap` is used instead of applying `margin` to children.\n *\n * While CSS `gap` removes the [known limitations](https://mui.com/joy-ui/react-stack/#limitations),\n * it is not fully supported in some browsers. We recommend checking https://caniuse.com/?search=flex%20gap before using this flag.\n *\n * To enable this flag globally, follow the [theme's default props](https://mui.com/material-ui/customization/theme-components/#default-props) configuration.\n * @default false\n */\n useFlexGap: PropTypes.bool\n} : void 0;\nexport default Stack;","import createStyled from './createStyled';\nconst styled = createStyled();\nexport default styled;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n"],"names":["withStyles","theme","createStyles","root","padding","margin","border","backgroundColor","textDecoration","cursor","fontSize","color","palette","info","main","fontFamily","_ref","classes","children","rest","_jsx","className","deleteDialogStyles","content","paddingBottom","customDialogSize","width","maxWidth","snackBarCommon","onClose","modalOpen","title","wideLimit","noContentPadding","titleIcon","dispatch","useAppDispatch","openSnackbar","setOpenSnackbar","useState","modalSnackMessage","useSelector","state","system","modalSnackBar","useEffect","setModalSnackMessage","message","type","customSize","paper","fullWidth","detailedErrorMsg","length","_jsxs","Dialog","open","scroll","event","reason","DialogTitle","titleText","closeContainer","IconButton","id","closeButton","onClick","disableRipple","size","CloseIcon","MainError","isModal","Snackbar","snackBarModal","ContentProps","concat","snackBar","errorSnackBar","autoHideDuration","DialogContent","label","value","orientation","stkProps","lblProps","valProps","Stack","direction","xs","sm","style","marginRight","fontWeight","totalValue","sizeItems","bgColor","height","borderRadius","display","transitionDuration","overflow","map","sizeElement","index","itemPercentage","toString","totalCapacity","usedSpaceVariants","statusClass","render","colors","BGColor","totalUsedSpace","reduce","acc","currValue","emptySpace","tiersList","standardTier","find","tier","variant","filter","standardTierColor","usedPercentage","plotValues","plotValuesForUsageBar","plotVal","itemName","marginBottom","UsageBar","position","right","top","zIndex","CircleIcon","left","transform","isNaN","niceBytesInt","PieChart","Pie","data","cx","cy","dataKey","outerRadius","innerRadius","fill","isAnimationActive","stroke","entry","Cell","infoText","formFieldStyles","modalStyleUtils","closeModalAndRefresh","namespace","idTenant","isSending","setIsSending","minioImage","setMinioImage","imageRegistry","setImageRegistry","imageRegistryEndpoint","setImageRegistryEndpoint","imageRegistryUsername","setImageRegistryUsername","imageRegistryPassword","setImageRegistryPassword","validMinioImage","setValidMinioImage","validateImage","useCallback","fieldToCheck","pattern","RegExp","test","ModalWrapper","closeAction","Grid","container","item","modalFormScrollable","formFieldRow","InputBoxWrapper","name","placeholder","onChange","e","target","FormSwitchWrapper","checked","indicatorLabels","Fragment","modalButtonBar","Button","resetForm","disabled","trim","updateMinIOImage","payload","image","registry","image_registry","username","password","api","invoke","then","setSnackBarMessage","catch","error","setModalErrorSnackMessage","_tenant$status","_tenant$status$usage","_tenant$status2","_tenant$status2$usage","_tenant$status3","_tenant$status3$usage","tenant","healthStatus","loading","raw","unit","capacity","used","localUse","tieredUse","status","usage","parts","niceBytes","split","capacity_usage","spaceVariants","tiers","itemTenant","internalUsage","sum","tieredUsage","partsInternal","_tenant$status4","_tenant$status4$usage","React","textAlign","Loader","renderComponent","_tenant$status5","_tenant$status5$usage","ErrorBlock","errorMessage","withBreak","TenantCapacity","spacing","md","alignItems","LabelValuePair","domainInline","overlayAction","marginLeft","background","domains","consoleDomain","setConsoleDomain","minioDomains","setMinioDomains","consoleDomainValid","setConsoleDomainValid","minioDomainValid","setMinioDomainValid","consoleDomainSet","console","consoleRegExp","minio","minioRegExp","initialValidations","domain","addNewMinIODomain","cloneDomains","cloneValidations","push","configSectionItem","containerItem","validity","valid","updateMinIODomain","setMinioDomainValidation","domainValid","cloneValidation","AddIcon","removeIndex","filteredDomains","_","filterValidations","removeMinIODomain","RemoveIcon","updateDomainsList","minioDomain","healthStatusToClass","health_status","arguments","undefined","redState","yellowState","greenState","greyState","StorageSummary","SummaryUsageBar","getToggle","toggleValue","TierOnlineIcon","DisableIcon","featureRowStyle","justifyContent","marginTop","flexFlow","featureItemStyleProps","sx","flex","minWidth","tenantDetailsStyles","warning","success","linkedSection","autoGeneratedLink","fontStyle","containerForHeader","_ref2","_tenant$domains","_tenant$domains2","_tenant$endpoints","_tenant$endpoints2","_tenant$endpoints3","_tenant$endpoints4","_tenant$domains3","_tenant$domains4","_tenant$domains5","_tenant$domains6","_tenant$endpoints5","_tenant$endpoints6","_tenant$domains7","_tenant$endpoints7","_tenant$endpoints8","_tenant$endpoints9","_tenant$endpoints10","_tenant$domains8","_tenant$status6","_tenant$status7","tenantName","tenantNamespace","useParams","tenants","tenantInfo","encryptionEnabled","get","minioTLS","adEnabled","oidcEnabled","poolCount","setPoolCount","instances","setInstances","volumes","setVolumes","updateMinioVersion","setUpdateMinioVersion","editDomainsOpen","setEditDomainsOpen","_tenant$pools","_tenant$pools2","_tenant$pools3","pools","p","volumes_per_server","servers","UpdateTenantModal","refresh","getTenantAsync","EditDomains","SectionTitle","separator","currentState","AButton","textOverflow","whiteSpace","wordBreak","icon","EditIcon","endpoints","href","rel","write_quorum","drives_online","drives_offline","Box","_theme$palette","errorBlock","Typography","component","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","_excluded","defaultTheme","createTheme","defaultCreateStyledComponent","systemStyled","slot","overridesResolver","props","styles","useThemePropsDefault","useThemePropsSystem","joinChildren","childrenArray","toArray","Boolean","output","child","key","ownerState","_extends","flexDirection","handleBreakpoints","resolveBreakpointValues","values","breakpoints","propValue","transformer","createUnarySpacing","base","Object","keys","breakpoint","directionValues","spacingValues","forEach","previousDirectionValue","styleFromPropValue","useFlexGap","gap","getValue","row","column","deepmerge","mergeBreakpointsInOrder","options","createStyledComponent","useThemeProps","componentName","StackRoot","inProps","ref","themeProps","extendSxProp","divider","other","_objectWithoutPropertiesLoose","composeClasses","generateUtilityClass","as","clsx","createStack","styled","createStyled","componentWillMount","this","constructor","getDerivedStateFromProps","setState","componentWillReceiveProps","nextProps","prevState","bind","componentWillUpdate","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","polyfill","Component","prototype","isReactComponent","Error","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","displayName","newApiName","componentDidUpdate","maybeSnapshot","snapshot","call","__suppressDeprecationWarning"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/30.80b393c6.chunk.js b/web-app/build/static/js/30.80b393c6.chunk.js deleted file mode 100644 index d77888be0f0..00000000000 --- a/web-app/build/static/js/30.80b393c6.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[30],{81806:function(e,n,t){var i=t(1413),o=t(45987),a=(t(72791),t(11135)),l=t(25787),s=t(80184),r=["classes","children"];n.Z=(0,l.Z)((function(e){return(0,a.Z)({root:{padding:0,margin:0,border:0,backgroundColor:"transparent",textDecoration:"underline",cursor:"pointer",fontSize:"inherit",color:e.palette.info.main,fontFamily:"Inter, sans-serif"}})}))((function(e){var n=e.classes,t=e.children,a=(0,o.Z)(e,r);return(0,s.jsx)("button",(0,i.Z)((0,i.Z)({},a),{},{className:n.root,children:t}))}))},56028:function(e,n,t){var i=t(29439),o=t(1413),a=t(72791),l=t(78687),s=t(13400),r=t(48888),c=t(5289),u=t(65661),d=t(39157),m=t(11135),v=t(25787),p=t(23814),h=t(41320),f=t(29823),g=t(86352),x=t(87995),Z=t(80184);n.Z=(0,v.Z)((function(e){return(0,m.Z)((0,o.Z)((0,o.Z)({},p.Qw),{},{content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},p.sN))}))((function(e){var n=e.onClose,t=e.modalOpen,m=e.title,v=e.children,p=e.classes,j=e.wideLimit,b=void 0===j||j,y=e.noContentPadding,S=e.titleIcon,w=void 0===S?null:S,k=(0,h.TL)(),P=(0,a.useState)(!1),R=(0,i.Z)(P,2),C=R[0],N=R[1],I=(0,l.v9)((function(e){return e.system.modalSnackBar}));(0,a.useEffect)((function(){k((0,x.MK)(""))}),[k]),(0,a.useEffect)((function(){if(I){if(""===I.message)return void N(!1);"error"!==I.type&&N(!0)}}),[I]);var F=b?{classes:{paper:p.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},A="";return I&&(A=I.detailedErrorMsg,(""===I.detailedErrorMsg||I.detailedErrorMsg.length<5)&&(A=I.message)),(0,Z.jsxs)(c.Z,(0,o.Z)((0,o.Z)({open:t,classes:p},F),{},{scroll:"paper",onClose:function(e,t){"backdropClick"!==t&&n()},className:p.root,children:[(0,Z.jsxs)(u.Z,{className:p.title,children:[(0,Z.jsxs)("div",{className:p.titleText,children:[w," ",m]}),(0,Z.jsx)("div",{className:p.closeContainer,children:(0,Z.jsx)(s.Z,{"aria-label":"close",id:"close",className:p.closeButton,onClick:n,disableRipple:!0,size:"small",children:(0,Z.jsx)(f.Z,{})})})]}),(0,Z.jsx)(g.Z,{isModal:!0}),(0,Z.jsx)(r.Z,{open:C,className:p.snackBarModal,onClose:function(){N(!1),k((0,x.MK)(""))},message:A,ContentProps:{className:"".concat(p.snackBar," ").concat(I&&"error"===I.type?p.errorSnackBar:"")},autoHideDuration:I&&"error"===I.type?1e4:5e3}),(0,Z.jsx)(d.Z,{className:y?"":p.content,children:v})]}))}))},45902:function(e,n,t){var i=t(1413),o=(t(72791),t(36314)),a=t(80184);n.Z=function(e){var n=e.label,t=void 0===n?null:n,l=e.value,s=void 0===l?"-":l,r=e.orientation,c=void 0===r?"column":r,u=e.stkProps,d=void 0===u?{}:u,m=e.lblProps,v=void 0===m?{}:m,p=e.valProps,h=void 0===p?{}:p;return(0,a.jsxs)(o.Z,(0,i.Z)((0,i.Z)({direction:{xs:"column",sm:c}},d),{},{children:[(0,a.jsx)("label",(0,i.Z)((0,i.Z)({style:{marginRight:5,fontWeight:600}},v),{},{children:t})),(0,a.jsx)("label",(0,i.Z)((0,i.Z)({style:{marginRight:5,fontWeight:500}},h),{},{children:s}))]}))}},74815:function(e,n,t){t.d(n,{Z:function(){return d}});var i=t(93433),o=(t(72791),t(2600)),a=t(65390),l=t(41048),s=t(45248),r=t(75952),c=t(80184),u=function(e){var n=e.totalValue,t=e.sizeItems,i=e.bgColor,o=void 0===i?"#ededed":i;return(0,c.jsx)("div",{style:{width:"100%",height:12,backgroundColor:o,borderRadius:30,display:"flex",transitionDuration:"0.3s",overflow:"hidden"},children:t.map((function(e,t){var i=100*e.value/n;return(0,c.jsx)("div",{style:{width:"".concat(i,"%"),height:"100%",backgroundColor:e.color,transitionDuration:"0.3s"}},"itemSize-".concat(t.toString()))}))})},d=function(e){var n=e.totalCapacity,t=e.usedSpaceVariants,d=e.statusClass,m=e.render,v=void 0===m?"pie":m,p=["#8dacd3","#bca1ea","#92e8d2","#efc9ac","#97f274","#f7d291","#71ACCB","#f28282","#e28cc1","#2781B0"],h="#ededed",f=t.reduce((function(e,n){return e+n.value}),0),g=n-f,x=[],Z=t.find((function(e){return"STANDARD"===e.variant}))||{value:0,variant:"empty"};t.length>10?x=[{value:f-Z.value,color:"#2781B0",label:"Total Tiers Space"}]:x=t.filter((function(e){return"STANDARD"!==e.variant})).map((function(e,n){return{value:e.value,color:p[n],label:"Tier - ".concat(e.variant)}}));var j="#07193E",b=100*Z.value/n;b>=90?j="#C83B51":b>=75&&(j="#FFAB0F");var y=[{value:Z.value,color:j,label:"Used Space by Tenant"}].concat((0,i.Z)(x),[{value:g,color:"bar"===v?h:"transparent",label:"Empty Space"}]);if("bar"===v){var S=y.map((function(e){return{value:e.value,color:e.color,itemName:e.label}}));return(0,c.jsx)("div",{style:{width:"100%",marginBottom:15},children:(0,c.jsx)(u,{totalValue:n,sizeItems:S,bgColor:h})})}return(0,c.jsxs)("div",{style:{position:"relative",width:110,height:110},children:[(0,c.jsx)("div",{style:{position:"absolute",right:-5,top:15,zIndex:400},className:d,children:(0,c.jsx)(r.J$M,{style:{border:"#fff 2px solid",borderRadius:"100%",width:20,height:20}})}),(0,c.jsx)("span",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",fontWeight:"bold",color:"#000",fontSize:11},children:isNaN(f)?"N/A":(0,s.l5)(f)}),(0,c.jsx)("div",{children:(0,c.jsxs)(o.u,{width:110,height:110,children:[(0,c.jsx)(a.b,{data:[{value:100}],cx:"50%",cy:"50%",dataKey:"value",outerRadius:50,innerRadius:40,fill:h,isAnimationActive:!1,stroke:"none"}),(0,c.jsx)(a.b,{data:y,cx:"50%",cy:"50%",dataKey:"value",outerRadius:50,innerRadius:40,children:y.map((function(e,n){return(0,c.jsx)(l.b,{fill:e.color,stroke:"none"},"cellCapacity-".concat(n))}))})]})})]})}},21353:function(e,n,t){t.r(n),t.d(n,{default:function(){return O}});var i=t(29439),o=t(1413),a=t(72791),l=t(78687),s=t(26181),r=t.n(s),c=t(11135),u=t(25787),d=t(23814),m=t(61889),v=t(64554),p=t(75952),h=t(56028),f=t(21435),g=t(37516),x=t(81207),Z=t(87995),j=t(41320),b=t(80184),y=(0,u.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)({infoText:{fontSize:14}},d.DF),d.ID))}))((function(e){var n=e.open,t=e.closeModalAndRefresh,l=e.namespace,s=e.idTenant,r=e.classes,c=(0,j.TL)(),u=(0,a.useState)(!1),d=(0,i.Z)(u,2),v=d[0],y=d[1],S=(0,a.useState)(""),w=(0,i.Z)(S,2),k=w[0],P=w[1],R=(0,a.useState)(!1),C=(0,i.Z)(R,2),N=C[0],I=C[1],F=(0,a.useState)(""),A=(0,i.Z)(F,2),D=A[0],E=A[1],_=(0,a.useState)(""),M=(0,i.Z)(_,2),B=M[0],T=M[1],z=(0,a.useState)(""),U=(0,i.Z)(z,2),W=U[0],O=U[1],L=(0,a.useState)(!0),$=(0,i.Z)(L,2),G=$[0],V=$[1],H=(0,a.useCallback)((function(e){var n=new RegExp("^$|^((.*?)/(.*?):(.+))$");if("minioImage"===e)V(n.test(k))}),[k]);(0,a.useEffect)((function(){H("minioImage")}),[k,H]);return(0,b.jsx)(h.Z,{title:"Update MinIO Version",modalOpen:n,onClose:function(){t(!1)},children:(0,b.jsxs)(m.ZP,{container:!0,children:[(0,b.jsxs)(m.ZP,{item:!0,xs:12,className:r.modalFormScrollable,children:[(0,b.jsx)("div",{className:r.infoText,children:"Please enter the MinIO image from dockerhub to use. If blank, then latest build will be used."}),(0,b.jsx)("br",{}),(0,b.jsx)("br",{}),(0,b.jsx)(m.ZP,{item:!0,xs:12,className:r.formFieldRow,children:(0,b.jsx)(f.Z,{value:k,label:"MinIO's Image",id:"minioImage",name:"minioImage",placeholder:"E.g. minio/minio:RELEASE.2022-02-26T02-54-46Z",onChange:function(e){P(e.target.value)}})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,className:r.formFieldRow,children:(0,b.jsx)(g.Z,{value:"imageRegistry",id:"setImageRegistry",name:"setImageRegistry",checked:N,onChange:function(e){I(!N)},label:"Set Custom Image Registry",indicatorLabels:["Yes","No"]})}),N&&(0,b.jsxs)(a.Fragment,{children:[(0,b.jsx)(m.ZP,{item:!0,xs:12,className:r.formFieldRow,children:(0,b.jsx)(f.Z,{value:D,label:"Endpoint",id:"imageRegistry",name:"imageRegistry",placeholder:"E.g. https://index.docker.io/v1/",onChange:function(e){E(e.target.value)}})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,className:r.formFieldRow,children:(0,b.jsx)(f.Z,{value:B,label:"Username",id:"imageRegistryUsername",name:"imageRegistryUsername",placeholder:"Enter image registry username",onChange:function(e){T(e.target.value)}})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,className:r.formFieldRow,children:(0,b.jsx)(f.Z,{value:W,label:"Password",id:"imageRegistryPassword",name:"imageRegistryPassword",placeholder:"Enter image registry password",onChange:function(e){O(e.target.value)}})})]})]}),(0,b.jsxs)(m.ZP,{item:!0,xs:12,className:r.modalButtonBar,children:[(0,b.jsx)(p.zxk,{id:"clear",variant:"regular",onClick:function(){P(""),I(!1),E(""),T(""),O("")},label:"Clear"}),(0,b.jsx)(p.zxk,{id:"save-tenant",type:"submit",variant:"callAction",disabled:!G||N&&(""===D.trim()||""===B.trim()||""===W.trim())||v,onClick:function(){y(!0);var e={image:k};if(N){var n={image_registry:{registry:D,username:B,password:W}};e=(0,o.Z)((0,o.Z)({},e),n)}x.Z.invoke("PUT","/api/v1/namespaces/".concat(l,"/tenants/").concat(s),e).then((function(){y(!1),c((0,Z.y1)("Image updated successfully")),t(!0)})).catch((function(e){c((0,Z.zb)(e)),y(!1)}))},label:"Save"})]})]})})})),S=t(81806),w=t(36314),k=t(45248),P=t(74815),R=t(22512),C=t(45902),N=function(e){var n,t,i,o,l,s,r=e.tenant,c=e.healthStatus,u=e.loading,d=e.error,v={value:"n/a",unit:""},h={value:"n/a",unit:""},f={value:"n/a",unit:""},g={value:"n/a",unit:""},x={value:"n/a",unit:""};if(null!==(n=r.status)&&void 0!==n&&null!==(t=n.usage)&&void 0!==t&&t.raw){var Z=(0,k.ae)("".concat(r.status.usage.raw),!0).split(" ");v.value=Z[0],v.unit=Z[1]}if(null!==(i=r.status)&&void 0!==i&&null!==(o=i.usage)&&void 0!==o&&o.capacity){var j=(0,k.ae)("".concat(r.status.usage.capacity),!0).split(" ");h.value=j[0],h.unit=j[1]}if(null!==(l=r.status)&&void 0!==l&&null!==(s=l.usage)&&void 0!==s&&s.capacity_usage){var y=(0,k.l5)(r.status.usage.capacity_usage,!0).split(" ");f.value=y[0],f.unit=y[1]}var S=[];if(r.tiers&&0!==r.tiers.length){S=r.tiers.map((function(e){return{value:e.size,variant:e.name}}));var N=r.tiers.filter((function(e){return"internal"===e.type})).reduce((function(e,n){return e+n.size}),0),I=r.tiers.filter((function(e){return"internal"!==e.type})).reduce((function(e,n){return e+n.size}),0),F=(0,k.l5)(I,!0).split(" ");x.value=F[0],x.unit=F[1];var A=(0,k.l5)(N,!0).split(" ");g.value=A[0],g.unit=A[1]}else{var D,E;S=[{value:(null===(D=r.status)||void 0===D||null===(E=D.usage)||void 0===E?void 0:E.capacity_usage)||0,variant:"STANDARD"}]}return(0,b.jsxs)(a.Fragment,{children:[u&&(0,b.jsx)("div",{style:{padding:5},children:(0,b.jsx)(m.ZP,{item:!0,xs:12,style:{textAlign:"center"},children:(0,b.jsx)(p.aNw,{style:{width:40,height:40}})})}),function(){var e,n;return u?null:""!==d?(0,b.jsx)(R.Z,{errorMessage:d,withBreak:!1}):(0,b.jsxs)(m.ZP,{item:!0,xs:12,children:[(0,b.jsx)(P.Z,{totalCapacity:(null===(e=r.status)||void 0===e||null===(n=e.usage)||void 0===n?void 0:n.raw)||0,usedSpaceVariants:S,statusClass:"",render:"bar"}),(0,b.jsxs)(w.Z,{direction:{xs:"column",sm:"row"},spacing:{xs:1,sm:2,md:4},alignItems:"stretch",margin:"0 0 15px 0",children:[(!r.tiers||0===r.tiers.length)&&(0,b.jsx)(a.Fragment,{children:(0,b.jsx)(C.Z,{label:"Internal:",orientation:"row",value:"".concat(f.value," ").concat(f.unit)})}),r.tiers&&r.tiers.length>0&&(0,b.jsxs)(a.Fragment,{children:[(0,b.jsx)(C.Z,{label:"Internal:",orientation:"row",value:"".concat(g.value," ").concat(g.unit)}),(0,b.jsx)(C.Z,{label:"Tiered:",orientation:"row",value:"".concat(x.value," ").concat(x.unit)})]}),c&&(0,b.jsx)(C.Z,{orientation:"row",label:"Health:",value:(0,b.jsx)("span",{className:c,children:(0,b.jsx)(p.J$M,{})})})]})]})}()]})},I=t(50896),F=t(93433),A=t(13400),D=t(42419),E=(0,u.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)({domainInline:{display:"flex",marginBottom:15},overlayAction:{marginLeft:10,display:"flex",alignItems:"center","& svg":{width:15,height:15},"& button":{background:"#EAEAEA"}}},d.DF),d.ID))}))((function(e){var n=e.open,t=e.closeModalAndRefresh,o=e.namespace,l=e.idTenant,s=e.domains,r=e.classes,c=(0,j.TL)(),u=(0,a.useState)(!1),d=(0,i.Z)(u,2),v=d[0],g=d[1],y=(0,a.useState)(""),S=(0,i.Z)(y,2),w=S[0],k=S[1],P=(0,a.useState)([""]),R=(0,i.Z)(P,2),C=R[0],N=R[1],I=(0,a.useState)(!0),E=(0,i.Z)(I,2),_=E[0],M=E[1],B=(0,a.useState)([!0]),T=(0,i.Z)(B,2),z=T[0],U=T[1];(0,a.useEffect)((function(){if(s){var e=s.console||"";if(k(e),""!==e){var n=new RegExp(/^(https?):\/\/([a-zA-Z0-9\-.]+)(:[0-9]+)?(\/[a-zA-Z0-9\-./]*)?$/);M(n.test(e))}else M(!0);if(s.minio&&s.minio.length>0){N(s.minio);var t=new RegExp(/^(https?):\/\/([a-zA-Z0-9\-.]+)(:[0-9]+)?$/),i=s.minio.map((function(e){return""===e.trim()||t.test(e)}));U(i)}}}),[s]);var W=function(){var e=(0,F.Z)(C),n=(0,F.Z)(z);e.push(""),n.push(!0),N(e),U(n)};return(0,b.jsx)(h.Z,{title:"Edit Tenant Domains - ".concat(l),modalOpen:n,onClose:function(){t(!1)},children:(0,b.jsx)(m.ZP,{container:!0,children:(0,b.jsxs)(m.ZP,{item:!0,xs:12,className:r.modalFormScrollable,children:[(0,b.jsxs)(m.ZP,{item:!0,xs:12,className:"".concat(r.configSectionItem),children:[(0,b.jsx)("div",{className:r.containerItem,children:(0,b.jsx)(f.Z,{id:"console_domain",name:"console_domain",onChange:function(e){k(e.target.value),M(e.target.validity.valid)},label:"Console Domain",value:w,placeholder:"Eg. http://subdomain.domain:port/subpath1/subpath2",pattern:"^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-.\\/]*)?$",error:_?"":"Domain format is incorrect (http|https://subdomain.domain:port/subpath1/subpath2)"})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h4",{children:"MinIO Domains"}),(0,b.jsx)("div",{children:C.map((function(e,n){return(0,b.jsxs)("div",{className:"".concat(r.domainInline),children:[(0,b.jsx)(f.Z,{id:"minio-domain-".concat(n.toString()),name:"minio-domain-".concat(n.toString()),onChange:function(e){!function(e,n){var t=(0,F.Z)(C);t[n]=e,N(t)}(e.target.value,n),function(e,n){var t=(0,F.Z)(z);t[n]=e,U(t)}(e.target.validity.valid,n)},label:"MinIO Domain ".concat(n+1),value:e,placeholder:"Eg. http://subdomain.domain",pattern:"^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?$",error:z[n]?"":"MinIO domain format is incorrect (http|https://subdomain.domain)"}),(0,b.jsx)("div",{className:r.overlayAction,children:(0,b.jsx)(A.Z,{size:"small",onClick:W,disabled:n!==C.length-1,children:(0,b.jsx)(D.Z,{})})}),(0,b.jsx)("div",{className:r.overlayAction,children:(0,b.jsx)(A.Z,{size:"small",onClick:function(){return function(e){var n=C.filter((function(n,t){return t!==e})),t=z.filter((function(n,t){return t!==e}));N(n),U(t)}(n)},disabled:C.length<=1,children:(0,b.jsx)(p.HFL,{})})})]},"minio-domain-key-".concat(n.toString()))}))})]})]}),(0,b.jsxs)(m.ZP,{item:!0,xs:12,className:r.modalButtonBar,children:[(0,b.jsx)(p.zxk,{id:"clear-edit-domain",type:"button",variant:"regular",onClick:function(){k(""),M(!0),N([""]),U([!0])},label:"Clear"}),(0,b.jsx)(p.zxk,{id:"save-domain",type:"submit",variant:"callAction",disabled:v||!_||z.filter((function(e){return!e})).length>0,onClick:function(){g(!0);var e={domains:{console:w,minio:C.filter((function(e){return""!==e.trim()}))}};x.Z.invoke("PUT","/api/v1/namespaces/".concat(o,"/tenants/").concat(l,"/domains"),e).then((function(){g(!1),c((0,Z.y1)("Domains updated successfully")),t(!0)})).catch((function(e){g(!1),c((0,Z.zb)(e))}))},label:"Save"})]})]})})})})),_=t(57689),M=t(82295),B=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"red",n=arguments.length>1?arguments[1]:void 0;return"red"===e?n.redState:"yellow"===e?n.yellowState:"green"===e?n.greenState:n.greyState},T=function(e){var n,t=e.tenant,i=e.classes;return t?(0,b.jsx)(N,{tenant:t,label:"Storage",error:"",loading:!1,healthStatus:B(null===t||void 0===t||null===(n=t.status)||void 0===n?void 0:n.health_status,i)}):null},z=function(e){return e?(0,b.jsx)(p.Yp9,{}):(0,b.jsx)(p.cmQ,{style:{color:"grey"}})},U={display:"flex",justifyContent:"space-between",marginTop:"10px","@media (max-width: 600px)":{flexFlow:"column"}},W={stkProps:{sx:{flex:1,marginRight:10,display:"flex",alignItems:"center",justifyContent:"space-between","@media (max-width: 900px)":{marginRight:"25px"}}},lblProps:{style:{minWidth:100}}},O=(0,u.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)({},d.oZ),{},{redState:{color:e.palette.error.main,"& .min-icon":{width:16,height:16,marginRight:4}},yellowState:{color:e.palette.warning.main,"& .min-icon":{width:16,height:16,marginRight:4}},greenState:{color:e.palette.success.main,"& .min-icon":{width:16,height:16,marginRight:4}},greyState:{color:"grey","& .min-icon":{width:16,height:16,marginRight:4}},linkedSection:{color:e.palette.info.main,fontFamily:"'Inter', sans-serif"},autoGeneratedLink:{fontStyle:"italic"}},d.Bz))}))((function(e){var n,t,s,c,u,d,h,f,g,x,Z,w,k,P,R,N,F,A,D,B,O,L,$,G,V=e.classes,H=(0,j.TL)(),K=(0,_.UO)(),Q=K.tenantName,Y=K.tenantNamespace,q=(0,l.v9)((function(e){return e.tenants.tenantInfo})),J=(0,l.v9)((function(e){return r()(e.tenants.tenantInfo,"encryptionEnabled",!1)})),X=(0,l.v9)((function(e){return r()(e.tenants.tenantInfo,"minioTLS",!1)})),ee=(0,l.v9)((function(e){return r()(e.tenants.tenantInfo,"idpAdEnabled",!1)})),ne=(0,l.v9)((function(e){return r()(e.tenants.tenantInfo,"idpOidcEnabled",!1)})),te=(0,a.useState)(0),ie=(0,i.Z)(te,2),oe=ie[0],ae=ie[1],le=(0,a.useState)(0),se=(0,i.Z)(le,2),re=se[0],ce=se[1],ue=(0,a.useState)(0),de=(0,i.Z)(ue,2),me=de[0],ve=de[1],pe=(0,a.useState)(!1),he=(0,i.Z)(pe,2),fe=he[0],ge=he[1],xe=(0,a.useState)(!1),Ze=(0,i.Z)(xe,2),je=Ze[0],be=Ze[1];(0,a.useEffect)((function(){var e,n,t;q&&(ae((null===q||void 0===q||null===(e=q.pools)||void 0===e?void 0:e.length)||0),ve((null===(n=q.pools)||void 0===n?void 0:n.reduce((function(e,n){return e+n.volumes_per_server*n.servers}),0))||0),ce((null===(t=q.pools)||void 0===t?void 0:t.reduce((function(e,n){return e+n.servers}),0))||0))}),[q]);return(0,b.jsxs)(a.Fragment,{children:[fe&&(0,b.jsx)(y,{open:fe,closeModalAndRefresh:function(e){ge(!1),e&&H((0,M.v)())},idTenant:Q||"",namespace:Y||""}),je&&(0,b.jsx)(E,{open:je,idTenant:Q||"",namespace:Y||"",domains:(null===q||void 0===q?void 0:q.domains)||null,closeModalAndRefresh:function(e){be(!1),e&&H((0,M.v)())}}),(0,b.jsx)(I.Z,{separator:!1,children:"Details"}),(0,b.jsx)(T,{tenant:q,classes:V}),(0,b.jsxs)(m.ZP,{container:!0,children:[(0,b.jsxs)(m.ZP,{item:!0,xs:12,sm:12,md:8,children:[(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(C.Z,{label:"State:",value:null===q||void 0===q?void 0:q.currentState})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(C.Z,{label:"MinIO:",value:(0,b.jsx)(S.Z,{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"normal",wordBreak:"break-all"},onClick:function(){ge(!0)},children:q?q.image:""})})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsxs)("h3",{children:["Domains",(0,b.jsx)(p.zxk,{id:"edit-domains",icon:(0,b.jsx)(p.dY8,{}),onClick:function(){be(!0)}})]})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(C.Z,{label:"Console:",value:(0,b.jsxs)(a.Fragment,{children:[null!==q&&void 0!==q&&null!==(n=q.domains)&&void 0!==n&&n.console&&""!==(null===q||void 0===q||null===(t=q.domains)||void 0===t?void 0:t.console)||null!==q&&void 0!==q&&null!==(s=q.endpoints)&&void 0!==s&&s.console?"":"-",(null===q||void 0===q||null===(c=q.endpoints)||void 0===c?void 0:c.console)&&(0,b.jsxs)(a.Fragment,{children:[(0,b.jsx)("a",{href:null===q||void 0===q||null===(u=q.endpoints)||void 0===u?void 0:u.console,target:"_blank",rel:"noopener",className:"".concat(V.linkedSection," ").concat(V.autoGeneratedLink),children:(null===q||void 0===q||null===(d=q.endpoints)||void 0===d?void 0:d.console)||"-"}),(0,b.jsx)("br",{})]}),(null===q||void 0===q||null===(h=q.domains)||void 0===h?void 0:h.console)&&""!==(null===q||void 0===q||null===(f=q.domains)||void 0===f?void 0:f.console)&&(0,b.jsx)("a",{href:(null===q||void 0===q||null===(g=q.domains)||void 0===g?void 0:g.console)||"",target:"_blank",rel:"noopener",className:V.linkedSection,children:(null===q||void 0===q||null===(x=q.domains)||void 0===x?void 0:x.console)||""})]})})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(C.Z,{label:"MinIO Endpoint".concat(null!==q&&void 0!==q&&null!==(Z=q.endpoints)&&void 0!==Z&&Z.minio&&1===(null===q||void 0===q||null===(w=q.endpoints)||void 0===w?void 0:w.minio.length)?"":"s",":"),value:(0,b.jsxs)(a.Fragment,{children:[null!==q&&void 0!==q&&null!==(k=q.domains)&&void 0!==k&&k.minio||null!==q&&void 0!==q&&null!==(P=q.endpoints)&&void 0!==P&&P.minio?"":"-",(null===q||void 0===q||null===(R=q.endpoints)||void 0===R?void 0:R.minio)&&(0,b.jsxs)(a.Fragment,{children:[(0,b.jsx)("a",{href:null===q||void 0===q||null===(N=q.endpoints)||void 0===N?void 0:N.minio,target:"_blank",rel:"noopener",className:"".concat(V.linkedSection," ").concat(V.autoGeneratedLink),children:(null===q||void 0===q||null===(F=q.endpoints)||void 0===F?void 0:F.minio)||"-"}),(0,b.jsx)("br",{})]}),(null===q||void 0===q||null===(A=q.domains)||void 0===A?void 0:A.minio)&&q.domains.minio.map((function(e){return(0,b.jsxs)(a.Fragment,{children:[(0,b.jsx)("a",{href:e,target:"_blank",rel:"noopener",className:V.linkedSection,children:e}),(0,b.jsx)("br",{})]},e)}))]})})})]}),(0,b.jsxs)(m.ZP,{item:!0,xs:12,sm:12,md:4,children:[(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(C.Z,{label:"Instances:",value:re})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(C.Z,{label:"Clusters:",value:oe,stkProps:{style:{marginRight:47}}})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(C.Z,{label:"Total Drives:",value:me,stkProps:{style:{marginRight:43}}})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(C.Z,{label:"Write Quorum:",value:null!==q&&void 0!==q&&null!==(D=q.status)&&void 0!==D&&D.write_quorum?null===q||void 0===q||null===(B=q.status)||void 0===B?void 0:B.write_quorum:0})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(C.Z,{label:"Drives Online:",value:null!==q&&void 0!==q&&null!==(O=q.status)&&void 0!==O&&O.drives_online?null===q||void 0===q||null===(L=q.status)||void 0===L?void 0:L.drives_online:0,stkProps:{style:{marginRight:8}}})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(C.Z,{label:"Drives Offline:",value:null!==q&&void 0!==q&&null!==($=q.status)&&void 0!==$&&$.drives_offline?null===q||void 0===q||null===(G=q.status)||void 0===G?void 0:G.drives_offline:0,stkProps:{style:{marginRight:7}}})})]})]}),(0,b.jsx)(I.Z,{children:"Features"}),(0,b.jsxs)(v.Z,{sx:(0,o.Z)({},U),children:[(0,b.jsx)(C.Z,(0,o.Z)({orientation:"row",label:"MinIO TLS:",value:z(X,"tenant-tls")},W)),(0,b.jsx)(C.Z,(0,o.Z)({orientation:"row",label:"AD/LDAP:",value:z(ee,"tenant-sts")},W)),(0,b.jsx)(C.Z,(0,o.Z)({orientation:"row",label:"Encryption:",value:z(J,"tenant-enc")},W))]}),(0,b.jsx)(v.Z,{sx:(0,o.Z)({},U),children:(0,b.jsx)(C.Z,(0,o.Z)({orientation:"row",label:"OpenID:",value:z(ne,"tenant-oidc")},W))})]})}))},22512:function(e,n,t){var i=t(72791),o=t(20890),a=t(11135),l=t(25787),s=t(80184);n.Z=(0,l.Z)((function(e){var n;return(0,a.Z)({errorBlock:{color:(null===(n=e.palette)||void 0===n?void 0:n.error.main)||"#C83B51"}})}))((function(e){var n=e.classes,t=e.errorMessage,a=e.withBreak,l=void 0===a||a;return(0,s.jsxs)(i.Fragment,{children:[l&&(0,s.jsx)("br",{}),(0,s.jsx)(o.Z,{component:"p",variant:"body1",className:n.errorBlock,children:t})]})}))},42419:function(e,n,t){var i=t(64836);n.Z=void 0;var o=i(t(45649)),a=t(80184),l=(0,o.default)((0,a.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add");n.Z=l},36314:function(e,n,t){t.d(n,{Z:function(){return R}});var i=t(4942),o=t(63366),a=t(87462),l=t(72791),s=t(28182),r=t(82466),c=t(94419),u=t(21217),d=t(93457),m=t(86083),v=t(78519),p=t(85080),h=t(51184),f=t(45682),g=t(80184),x=["component","direction","spacing","divider","children","className","useFlexGap"],Z=(0,p.Z)(),j=(0,d.Z)("div",{name:"MuiStack",slot:"Root",overridesResolver:function(e,n){return n.root}});function b(e){return(0,m.Z)({props:e,name:"MuiStack",defaultTheme:Z})}function y(e,n){var t=l.Children.toArray(e).filter(Boolean);return t.reduce((function(e,i,o){return e.push(i),o0?c[t[n-1]]:"column";c[e]=i}}));o=(0,r.Z)(o,(0,h.k9)({theme:t},u,(function(e,t){return n.useFlexGap?{gap:(0,f.NA)(l,e)}:{"& > :not(style) + :not(style)":(0,i.Z)({margin:0},"margin".concat((o=t?c[t]:n.direction,{row:"Left","row-reverse":"Right",column:"Top","column-reverse":"Bottom"}[o])),(0,f.NA)(l,e))};var o})))}return o=(0,h.dt)(t.breakpoints,o)};var w=t(66934),k=t(31402),P=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.createStyledComponent,t=void 0===n?j:n,i=e.useThemeProps,r=void 0===i?b:i,d=e.componentName,m=void 0===d?"MuiStack":d,p=t(S),h=l.forwardRef((function(e,n){var t=r(e),i=(0,v.Z)(t),l=i.component,d=void 0===l?"div":l,h=i.direction,f=void 0===h?"column":h,Z=i.spacing,j=void 0===Z?0:Z,b=i.divider,S=i.children,w=i.className,k=i.useFlexGap,P=void 0!==k&&k,R=(0,o.Z)(i,x),C={direction:f,spacing:j,useFlexGap:P},N=(0,c.Z)({root:["root"]},(function(e){return(0,u.Z)(m,e)}),{});return(0,g.jsx)(p,(0,a.Z)({as:d,ownerState:C,ref:n,className:(0,s.Z)(N.root,w)},R,{children:b?y(S,b):S}))}));return h}({createStyledComponent:(0,w.ZP)("div",{name:"MuiStack",slot:"Root",overridesResolver:function(e,n){return n.root}}),useThemeProps:function(e){return(0,k.Z)({props:e,name:"MuiStack"})}}),R=P},93457:function(e,n,t){var i=(0,t(44046).ZP)();n.Z=i},23688:function(e,n,t){function i(){var e=this.constructor.getDerivedStateFromProps(this.props,this.state);null!==e&&void 0!==e&&this.setState(e)}function o(e){this.setState(function(n){var t=this.constructor.getDerivedStateFromProps(e,n);return null!==t&&void 0!==t?t:null}.bind(this))}function a(e,n){try{var t=this.props,i=this.state;this.props=e,this.state=n,this.__reactInternalSnapshotFlag=!0,this.__reactInternalSnapshot=this.getSnapshotBeforeUpdate(t,i)}finally{this.props=t,this.state=i}}function l(e){var n=e.prototype;if(!n||!n.isReactComponent)throw new Error("Can only polyfill class components");if("function"!==typeof e.getDerivedStateFromProps&&"function"!==typeof n.getSnapshotBeforeUpdate)return e;var t=null,l=null,s=null;if("function"===typeof n.componentWillMount?t="componentWillMount":"function"===typeof n.UNSAFE_componentWillMount&&(t="UNSAFE_componentWillMount"),"function"===typeof n.componentWillReceiveProps?l="componentWillReceiveProps":"function"===typeof n.UNSAFE_componentWillReceiveProps&&(l="UNSAFE_componentWillReceiveProps"),"function"===typeof n.componentWillUpdate?s="componentWillUpdate":"function"===typeof n.UNSAFE_componentWillUpdate&&(s="UNSAFE_componentWillUpdate"),null!==t||null!==l||null!==s){var r=e.displayName||e.name,c="function"===typeof e.getDerivedStateFromProps?"getDerivedStateFromProps()":"getSnapshotBeforeUpdate()";throw Error("Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n"+r+" uses "+c+" but also contains the following legacy lifecycles:"+(null!==t?"\n "+t:"")+(null!==l?"\n "+l:"")+(null!==s?"\n "+s:"")+"\n\nThe above lifecycles should be removed. Learn more about this warning here:\nhttps://fb.me/react-async-component-lifecycle-hooks")}if("function"===typeof e.getDerivedStateFromProps&&(n.componentWillMount=i,n.componentWillReceiveProps=o),"function"===typeof n.getSnapshotBeforeUpdate){if("function"!==typeof n.componentDidUpdate)throw new Error("Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype");n.componentWillUpdate=a;var u=n.componentDidUpdate;n.componentDidUpdate=function(e,n,t){var i=this.__reactInternalSnapshotFlag?this.__reactInternalSnapshot:t;u.call(this,e,n,i)}}return e}t.r(n),t.d(n,{polyfill:function(){return l}}),i.__suppressDeprecationWarning=!0,o.__suppressDeprecationWarning=!0,a.__suppressDeprecationWarning=!0}}]); -//# sourceMappingURL=30.80b393c6.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/30.80b393c6.chunk.js.map b/web-app/build/static/js/30.80b393c6.chunk.js.map deleted file mode 100644 index 48c4bd74d86..00000000000 --- a/web-app/build/static/js/30.80b393c6.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/30.80b393c6.chunk.js","mappings":"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","sources":["screens/Console/Common/AButton/AButton.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx","screens/Console/Common/UsageBarWrapper/LabelValuePair.tsx","screens/Console/Common/UsageBar/UsageBar.tsx","screens/Console/Tenants/ListTenants/TenantCapacity.tsx","screens/Console/Tenants/TenantDetails/UpdateTenantModal.tsx","screens/Console/Common/UsageBarWrapper/SummaryUsageBar.tsx","screens/Console/Tenants/TenantDetails/EditDomains.tsx","screens/Console/Tenants/TenantDetails/TenantSummary.tsx","screens/shared/ErrorBlock.tsx","../node_modules/@mui/icons-material/Add.js","../node_modules/@mui/system/esm/Stack/createStack.js","../node_modules/@mui/material/Stack/Stack.js","../node_modules/@mui/system/esm/styled.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IconButtonProps } from \"@mui/material\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n padding: 0,\n margin: 0,\n border: 0,\n backgroundColor: \"transparent\",\n textDecoration: \"underline\",\n cursor: \"pointer\",\n fontSize: \"inherit\",\n color: theme.palette.info.main,\n fontFamily: \"Inter, sans-serif\",\n },\n });\n\ninterface IAButton extends IconButtonProps {\n classes: any;\n children: any;\n}\n\nconst AButton = ({ classes, children, ...rest }: IAButton) => {\n return (\n \n );\n};\n\nexport default withStyles(styles)(AButton);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport MainError from \"../MainError/MainError\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n noContentPadding?: boolean;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n noContentPadding,\n titleIcon = null,\n}: IModalProps) => {\n const dispatch = useAppDispatch();\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n const modalSnackMessage = useSelector(\n (state: AppState) => state.system.modalSnackBar,\n );\n\n useEffect(() => {\n dispatch(setModalSnackMessage(\"\"));\n }, [dispatch]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n dispatch(setModalSnackMessage(\"\"));\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n
\n {titleIcon} {title}\n
\n
\n \n \n \n
\n
\n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nexport default withStyles(styles)(ModalWrapper);\n","import React from \"react\";\nimport { Stack } from \"@mui/material\";\n\ntype LabelValuePairProps = {\n label?: any;\n value?: any;\n orientation?: any;\n stkProps?: any;\n lblProps?: any;\n valProps?: any;\n};\n\nconst LabelValuePair = ({\n label = null,\n value = \"-\",\n orientation = \"column\",\n stkProps = {},\n lblProps = {},\n valProps = {},\n}: LabelValuePairProps) => {\n return (\n \n \n \n \n );\n};\n\nexport default LabelValuePair;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\nexport interface ISizeBarItem {\n value: number;\n itemName: string;\n color: string;\n}\n\nexport interface IUsageBar {\n totalValue: number;\n sizeItems: ISizeBarItem[];\n bgColor?: string;\n}\n\nconst UsageBar = ({\n totalValue,\n sizeItems,\n bgColor = \"#ededed\",\n}: IUsageBar) => {\n return (\n \n {sizeItems.map((sizeElement, index) => {\n const itemPercentage = (sizeElement.value * 100) / totalValue;\n return (\n \n );\n })}\n \n );\n};\n\nexport default UsageBar;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Cell, Pie, PieChart } from \"recharts\";\nimport { CapacityValue, CapacityValues } from \"./types\";\nimport { niceBytesInt } from \"../../../../common/utils\";\nimport { CircleIcon } from \"mds\";\nimport UsageBar, { ISizeBarItem } from \"../../Common/UsageBar/UsageBar\";\n\ninterface ITenantCapacity {\n totalCapacity: number;\n usedSpaceVariants: CapacityValues[];\n statusClass: string;\n render?: \"pie\" | \"bar\";\n}\n\nconst TenantCapacity = ({\n totalCapacity,\n usedSpaceVariants,\n statusClass,\n render = \"pie\",\n}: ITenantCapacity) => {\n const colors = [\n \"#8dacd3\",\n \"#bca1ea\",\n \"#92e8d2\",\n \"#efc9ac\",\n \"#97f274\",\n \"#f7d291\",\n \"#71ACCB\",\n \"#f28282\",\n \"#e28cc1\",\n \"#2781B0\",\n ];\n\n const BGColor = \"#ededed\";\n\n const totalUsedSpace = usedSpaceVariants.reduce((acc, currValue) => {\n return acc + currValue.value;\n }, 0);\n\n const emptySpace = totalCapacity - totalUsedSpace;\n\n let tiersList: CapacityValue[] = [];\n\n const standardTier = usedSpaceVariants.find(\n (tier) => tier.variant === \"STANDARD\",\n ) || {\n value: 0,\n variant: \"empty\",\n };\n\n if (usedSpaceVariants.length > 10) {\n const totalUsedByTiers = totalUsedSpace - standardTier.value;\n\n tiersList = [\n { value: totalUsedByTiers, color: \"#2781B0\", label: \"Total Tiers Space\" },\n ];\n } else {\n tiersList = usedSpaceVariants\n .filter((variant) => variant.variant !== \"STANDARD\")\n .map((variant, index) => {\n return {\n value: variant.value,\n color: colors[index],\n label: `Tier - ${variant.variant}`,\n };\n });\n }\n\n let standardTierColor = \"#07193E\";\n\n const usedPercentage = (standardTier.value * 100) / totalCapacity;\n\n if (usedPercentage >= 90) {\n standardTierColor = \"#C83B51\";\n } else if (usedPercentage >= 75) {\n standardTierColor = \"#FFAB0F\";\n }\n\n const plotValues: CapacityValue[] = [\n {\n value: standardTier.value,\n color: standardTierColor,\n label: \"Used Space by Tenant\",\n },\n ...tiersList,\n {\n value: emptySpace,\n color: render === \"bar\" ? BGColor : \"transparent\",\n label: \"Empty Space\",\n },\n ];\n\n if (render === \"bar\") {\n const plotValuesForUsageBar: ISizeBarItem[] = plotValues.map((plotVal) => {\n return {\n value: plotVal.value,\n color: plotVal.color,\n itemName: plotVal.label,\n };\n });\n\n return (\n
\n \n
\n );\n }\n\n return (\n
\n \n \n
\n \n {!isNaN(totalUsedSpace) ? niceBytesInt(totalUsedSpace) : \"N/A\"}\n \n
\n \n \n \n {plotValues.map((entry, index) => (\n \n ))}\n \n \n
\n \n );\n};\n\nexport default TenantCapacity;\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { Button } from \"mds\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid } from \"@mui/material\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport api from \"../../../../common/api\";\nimport {\n setModalErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IUpdateTenantModal {\n open: boolean;\n closeModalAndRefresh: (update: boolean) => any;\n namespace: string;\n idTenant: string;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n infoText: {\n fontSize: 14,\n },\n ...formFieldStyles,\n ...modalStyleUtils,\n });\n\nconst UpdateTenantModal = ({\n open,\n closeModalAndRefresh,\n namespace,\n idTenant,\n classes,\n}: IUpdateTenantModal) => {\n const dispatch = useAppDispatch();\n const [isSending, setIsSending] = useState(false);\n const [minioImage, setMinioImage] = useState(\"\");\n const [imageRegistry, setImageRegistry] = useState(false);\n const [imageRegistryEndpoint, setImageRegistryEndpoint] =\n useState(\"\");\n const [imageRegistryUsername, setImageRegistryUsername] =\n useState(\"\");\n const [imageRegistryPassword, setImageRegistryPassword] =\n useState(\"\");\n const [validMinioImage, setValidMinioImage] = useState(true);\n\n const validateImage = useCallback(\n (fieldToCheck: string) => {\n const pattern = new RegExp(\"^$|^((.*?)/(.*?):(.+))$\");\n\n switch (fieldToCheck) {\n case \"minioImage\":\n setValidMinioImage(pattern.test(minioImage));\n break;\n }\n },\n [minioImage],\n );\n\n useEffect(() => {\n validateImage(\"minioImage\");\n }, [minioImage, validateImage]);\n\n const closeAction = () => {\n closeModalAndRefresh(false);\n };\n\n const resetForm = () => {\n setMinioImage(\"\");\n setImageRegistry(false);\n setImageRegistryEndpoint(\"\");\n setImageRegistryUsername(\"\");\n setImageRegistryPassword(\"\");\n };\n\n const updateMinIOImage = () => {\n setIsSending(true);\n\n let payload = {\n image: minioImage,\n };\n\n if (imageRegistry) {\n const registry: any = {\n image_registry: {\n registry: imageRegistryEndpoint,\n username: imageRegistryUsername,\n password: imageRegistryPassword,\n },\n };\n payload = {\n ...payload,\n ...registry,\n };\n }\n\n api\n .invoke(\n \"PUT\",\n `/api/v1/namespaces/${namespace}/tenants/${idTenant}`,\n payload,\n )\n .then(() => {\n setIsSending(false);\n dispatch(setSnackBarMessage(`Image updated successfully`));\n closeModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSending(false);\n });\n };\n\n return (\n \n \n \n
\n Please enter the MinIO image from dockerhub to use. If blank, then\n latest build will be used.\n
\n
\n
\n \n {\n setMinioImage(e.target.value);\n }}\n />\n \n \n ) => {\n setImageRegistry(!imageRegistry);\n }}\n label={\"Set Custom Image Registry\"}\n indicatorLabels={[\"Yes\", \"No\"]}\n />\n \n {imageRegistry && (\n \n \n {\n setImageRegistryEndpoint(e.target.value);\n }}\n />\n \n \n {\n setImageRegistryUsername(e.target.value);\n }}\n />\n \n \n {\n setImageRegistryPassword(e.target.value);\n }}\n />\n \n \n )}\n
\n \n \n \n \n
\n \n );\n};\n\nexport default withStyles(styles)(UpdateTenantModal);\n","import React, { Fragment } from \"react\";\nimport { Stack } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport { CapacityValues, ValueUnit } from \"../../Tenants/ListTenants/types\";\nimport { CircleIcon, Loader } from \"mds\";\nimport { niceBytes, niceBytesInt } from \"../../../../common/utils\";\nimport TenantCapacity from \"../../Tenants/ListTenants/TenantCapacity\";\nimport ErrorBlock from \"../../../shared/ErrorBlock\";\nimport LabelValuePair from \"./LabelValuePair\";\nimport { Tenant } from \"../../../../api/operatorApi\";\n\ninterface ISummaryUsageBar {\n tenant: Tenant;\n label: string;\n error: string;\n loading: boolean;\n labels?: boolean;\n healthStatus?: string;\n}\n\nconst SummaryUsageBar = ({\n tenant,\n healthStatus,\n loading,\n error,\n}: ISummaryUsageBar) => {\n let raw: ValueUnit = { value: \"n/a\", unit: \"\" };\n let capacity: ValueUnit = { value: \"n/a\", unit: \"\" };\n let used: ValueUnit = { value: \"n/a\", unit: \"\" };\n let localUse: ValueUnit = { value: \"n/a\", unit: \"\" };\n let tieredUse: ValueUnit = { value: \"n/a\", unit: \"\" };\n\n if (tenant.status?.usage?.raw) {\n const b = niceBytes(`${tenant.status.usage.raw}`, true);\n const parts = b.split(\" \");\n raw.value = parts[0];\n raw.unit = parts[1];\n }\n if (tenant.status?.usage?.capacity) {\n const b = niceBytes(`${tenant.status.usage.capacity}`, true);\n const parts = b.split(\" \");\n capacity.value = parts[0];\n capacity.unit = parts[1];\n }\n if (tenant.status?.usage?.capacity_usage) {\n const b = niceBytesInt(tenant.status.usage.capacity_usage, true);\n const parts = b.split(\" \");\n used.value = parts[0];\n used.unit = parts[1];\n }\n\n let spaceVariants: CapacityValues[] = [];\n if (!tenant.tiers || tenant.tiers.length === 0) {\n spaceVariants = [\n { value: tenant.status?.usage?.capacity_usage || 0, variant: \"STANDARD\" },\n ];\n } else {\n spaceVariants = tenant.tiers.map((itemTenant) => {\n return { value: itemTenant.size!, variant: itemTenant.name! };\n });\n let internalUsage = tenant.tiers\n .filter((itemTenant) => {\n return itemTenant.type === \"internal\";\n })\n .reduce((sum, itemTenant) => sum + itemTenant.size!, 0);\n let tieredUsage = tenant.tiers\n .filter((itemTenant) => {\n return itemTenant.type !== \"internal\";\n })\n .reduce((sum, itemTenant) => sum + itemTenant.size!, 0);\n\n const t = niceBytesInt(tieredUsage, true);\n const parts = t.split(\" \");\n tieredUse.value = parts[0];\n tieredUse.unit = parts[1];\n\n const is = niceBytesInt(internalUsage, true);\n const partsInternal = is.split(\" \");\n localUse.value = partsInternal[0];\n localUse.unit = partsInternal[1];\n }\n\n const renderComponent = () => {\n if (!loading) {\n return error !== \"\" ? (\n \n ) : (\n \n \n \n {(!tenant.tiers || tenant.tiers.length === 0) && (\n \n \n \n )}\n {tenant.tiers && tenant.tiers.length > 0 && (\n \n \n \n \n )}\n {healthStatus && (\n \n \n \n }\n />\n )}\n \n \n );\n }\n\n return null;\n };\n\n return (\n \n {loading && (\n
\n \n \n \n
\n )}\n {renderComponent()}\n
\n );\n};\n\nexport default SummaryUsageBar;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button, RemoveIcon } from \"mds\";\nimport { Grid, IconButton } from \"@mui/material\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n ErrorResponseHandler,\n IDomainsRequest,\n} from \"../../../../common/types\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport api from \"../../../../common/api\";\nimport {\n setModalErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IEditDomains {\n open: boolean;\n closeModalAndRefresh: (update: boolean) => any;\n namespace: string;\n idTenant: string;\n domains: IDomainsRequest | null;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n domainInline: {\n display: \"flex\",\n marginBottom: 15,\n },\n overlayAction: {\n marginLeft: 10,\n display: \"flex\",\n alignItems: \"center\",\n \"& svg\": {\n width: 15,\n height: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n ...formFieldStyles,\n ...modalStyleUtils,\n });\n\nconst EditDomains = ({\n open,\n closeModalAndRefresh,\n namespace,\n idTenant,\n domains,\n classes,\n}: IEditDomains) => {\n const dispatch = useAppDispatch();\n const [isSending, setIsSending] = useState(false);\n const [consoleDomain, setConsoleDomain] = useState(\"\");\n const [minioDomains, setMinioDomains] = useState([\"\"]);\n const [consoleDomainValid, setConsoleDomainValid] = useState(true);\n const [minioDomainValid, setMinioDomainValid] = useState([true]);\n\n useEffect(() => {\n if (domains) {\n const consoleDomainSet = domains.console || \"\";\n setConsoleDomain(consoleDomainSet);\n\n if (consoleDomainSet !== \"\") {\n // We Validate console domain\n const consoleRegExp = new RegExp(\n /^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-./]*)?$/,\n );\n\n setConsoleDomainValid(consoleRegExp.test(consoleDomainSet));\n } else {\n setConsoleDomainValid(true);\n }\n\n if (domains.minio && domains.minio.length > 0) {\n setMinioDomains(domains.minio);\n\n const minioRegExp = new RegExp(\n /^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?$/,\n );\n\n const initialValidations = domains.minio.map((domain) => {\n if (domain.trim() !== \"\") {\n return minioRegExp.test(domain);\n } else {\n return true;\n }\n });\n\n setMinioDomainValid(initialValidations);\n }\n }\n }, [domains]);\n\n const closeAction = () => {\n closeModalAndRefresh(false);\n };\n\n const resetForm = () => {\n setConsoleDomain(\"\");\n setConsoleDomainValid(true);\n setMinioDomains([\"\"]);\n setMinioDomainValid([true]);\n };\n\n const updateDomainsList = () => {\n setIsSending(true);\n\n let payload = {\n domains: {\n console: consoleDomain,\n minio: minioDomains.filter((minioDomain) => minioDomain.trim() !== \"\"),\n },\n };\n api\n .invoke(\n \"PUT\",\n `/api/v1/namespaces/${namespace}/tenants/${idTenant}/domains`,\n payload,\n )\n .then(() => {\n setIsSending(false);\n dispatch(setSnackBarMessage(`Domains updated successfully`));\n closeModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n setIsSending(false);\n dispatch(setModalErrorSnackMessage(error));\n });\n };\n\n const updateMinIODomain = (value: string, index: number) => {\n const cloneDomains = [...minioDomains];\n cloneDomains[index] = value;\n\n setMinioDomains(cloneDomains);\n };\n\n const addNewMinIODomain = () => {\n const cloneDomains = [...minioDomains];\n const cloneValidations = [...minioDomainValid];\n\n cloneDomains.push(\"\");\n cloneValidations.push(true);\n\n setMinioDomains(cloneDomains);\n setMinioDomainValid(cloneValidations);\n };\n\n const removeMinIODomain = (removeIndex: number) => {\n const filteredDomains = minioDomains.filter(\n (_, index) => index !== removeIndex,\n );\n\n const filterValidations = minioDomainValid.filter(\n (_, index) => index !== removeIndex,\n );\n\n setMinioDomains(filteredDomains);\n setMinioDomainValid(filterValidations);\n };\n\n const setMinioDomainValidation = (domainValid: boolean, index: number) => {\n const cloneValidation = [...minioDomainValid];\n cloneValidation[index] = domainValid;\n\n setMinioDomainValid(cloneValidation);\n };\n return (\n \n \n \n \n
\n ) => {\n setConsoleDomain(e.target.value);\n\n setConsoleDomainValid(e.target.validity.valid);\n }}\n label=\"Console Domain\"\n value={consoleDomain}\n placeholder={\n \"Eg. http://subdomain.domain:port/subpath1/subpath2\"\n }\n pattern={\n \"^(https?):\\\\/\\\\/([a-zA-Z0-9\\\\-.]+)(:[0-9]+)?(\\\\/[a-zA-Z0-9\\\\-.\\\\/]*)?$\"\n }\n error={\n !consoleDomainValid\n ? \"Domain format is incorrect (http|https://subdomain.domain:port/subpath1/subpath2)\"\n : \"\"\n }\n />\n
\n
\n

MinIO Domains

\n
\n {minioDomains.map((domain, index) => {\n return (\n \n ) => {\n updateMinIODomain(e.target.value, index);\n setMinioDomainValidation(\n e.target.validity.valid,\n index,\n );\n }}\n label={`MinIO Domain ${index + 1}`}\n value={domain}\n placeholder={\"Eg. http://subdomain.domain\"}\n pattern={\n \"^(https?):\\\\/\\\\/([a-zA-Z0-9\\\\-.]+)(:[0-9]+)?$\"\n }\n error={\n !minioDomainValid[index]\n ? \"MinIO domain format is incorrect (http|https://subdomain.domain)\"\n : \"\"\n }\n />\n
\n \n \n \n
\n\n
\n removeMinIODomain(index)}\n disabled={minioDomains.length <= 1}\n >\n \n \n
\n
\n );\n })}\n
\n \n
\n \n \n !domain).length > 0\n }\n onClick={updateDomainsList}\n label={\"Save\"}\n />\n \n
\n
\n \n );\n};\n\nexport default withStyles(styles)(EditDomains);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n containerForHeader,\n tenantDetailsStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { Box, Grid } from \"@mui/material\";\nimport UpdateTenantModal from \"./UpdateTenantModal\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport AButton from \"../../Common/AButton/AButton\";\nimport SummaryUsageBar from \"../../Common/UsageBarWrapper/SummaryUsageBar\";\nimport LabelValuePair from \"../../Common/UsageBarWrapper/LabelValuePair\";\nimport SectionTitle from \"../../Common/SectionTitle\";\nimport { Button, DisableIcon, EditIcon, TierOnlineIcon } from \"mds\";\nimport EditDomains from \"./EditDomains\";\nimport { useParams } from \"react-router-dom\";\nimport { getTenantAsync } from \"../thunks/tenantDetailsAsync\";\nimport { Tenant } from \"../../../../api/operatorApi\";\n\ninterface ITenantsSummary {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n redState: {\n color: theme.palette.error.main,\n \"& .min-icon\": {\n width: 16,\n height: 16,\n marginRight: 4,\n },\n },\n yellowState: {\n color: theme.palette.warning.main,\n \"& .min-icon\": {\n width: 16,\n height: 16,\n marginRight: 4,\n },\n },\n greenState: {\n color: theme.palette.success.main,\n \"& .min-icon\": {\n width: 16,\n height: 16,\n marginRight: 4,\n },\n },\n greyState: {\n color: \"grey\",\n \"& .min-icon\": {\n width: 16,\n height: 16,\n marginRight: 4,\n },\n },\n linkedSection: {\n color: theme.palette.info.main,\n fontFamily: \"'Inter', sans-serif\",\n },\n autoGeneratedLink: {\n fontStyle: \"italic\",\n },\n ...containerForHeader,\n });\n\nconst healthStatusToClass = (health_status: string = \"red\", classes: any) => {\n return health_status === \"red\"\n ? classes.redState\n : health_status === \"yellow\"\n ? classes.yellowState\n : health_status === \"green\"\n ? classes.greenState\n : classes.greyState;\n};\n\nconst StorageSummary = ({\n tenant,\n classes,\n}: {\n tenant: Tenant | null;\n classes: any;\n}) => {\n if (!tenant) {\n return null;\n }\n\n return (\n \n );\n};\n\nconst getToggle = (toggleValue: boolean, idPrefix = \"\") => {\n if (toggleValue) {\n return ;\n }\n return ;\n};\n\nconst featureRowStyle = {\n display: \"flex\",\n justifyContent: \"space-between\",\n marginTop: \"10px\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n};\n\nconst featureItemStyleProps = {\n stkProps: {\n sx: {\n flex: 1,\n marginRight: 10,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n \"@media (max-width: 900px)\": {\n marginRight: \"25px\",\n },\n },\n },\n lblProps: {\n style: {\n minWidth: 100,\n },\n },\n};\nconst TenantSummary = ({ classes }: ITenantsSummary) => {\n const dispatch = useAppDispatch();\n const { tenantName, tenantNamespace } = useParams();\n\n const tenant = useSelector((state: AppState) => state.tenants.tenantInfo);\n const encryptionEnabled = useSelector((state: AppState) =>\n get(state.tenants.tenantInfo, \"encryptionEnabled\", false),\n );\n const minioTLS = useSelector((state: AppState) =>\n get(state.tenants.tenantInfo, \"minioTLS\", false),\n );\n const adEnabled = useSelector((state: AppState) =>\n get(state.tenants.tenantInfo, \"idpAdEnabled\", false),\n );\n const oidcEnabled = useSelector((state: AppState) =>\n get(state.tenants.tenantInfo, \"idpOidcEnabled\", false),\n );\n\n const [poolCount, setPoolCount] = useState(0);\n const [instances, setInstances] = useState(0);\n const [volumes, setVolumes] = useState(0);\n const [updateMinioVersion, setUpdateMinioVersion] = useState(false);\n const [editDomainsOpen, setEditDomainsOpen] = useState(false);\n\n useEffect(() => {\n if (tenant) {\n setPoolCount(tenant?.pools?.length || 0);\n setVolumes(\n tenant.pools?.reduce(\n (sum, p) => sum + p.volumes_per_server * p.servers,\n 0,\n ) || 0,\n );\n setInstances(tenant.pools?.reduce((sum, p) => sum + p.servers, 0) || 0);\n }\n }, [tenant]);\n\n const closeEditDomainsModal = (refresh: boolean) => {\n setEditDomainsOpen(false);\n if (refresh) {\n dispatch(getTenantAsync());\n }\n };\n\n return (\n \n {updateMinioVersion && (\n {\n setUpdateMinioVersion(false);\n if (refresh) {\n dispatch(getTenantAsync());\n }\n }}\n idTenant={tenantName || \"\"}\n namespace={tenantNamespace || \"\"}\n />\n )}\n\n {editDomainsOpen && (\n \n )}\n\n Details\n\n \n\n \n \n \n \n \n \n {\n setUpdateMinioVersion(true);\n }}\n >\n {tenant ? tenant.image : \"\"}\n \n }\n />\n \n \n

\n Domains\n }\n onClick={() => {\n setEditDomainsOpen(true);\n }}\n />\n

\n
\n \n \n {(!tenant?.domains?.console ||\n tenant?.domains?.console === \"\") &&\n !tenant?.endpoints?.console\n ? \"-\"\n : \"\"}\n\n {tenant?.endpoints?.console && (\n \n \n {tenant?.endpoints?.console || \"-\"}\n \n
\n
\n )}\n\n {tenant?.domains?.console &&\n tenant?.domains?.console !== \"\" && (\n \n {tenant?.domains?.console || \"\"}\n \n )}\n
\n }\n />\n \n \n \n {!tenant?.domains?.minio && !tenant?.endpoints?.minio\n ? \"-\"\n : \"\"}\n {tenant?.endpoints?.minio && (\n \n \n {tenant?.endpoints?.minio || \"-\"}\n \n
\n
\n )}\n\n {tenant?.domains?.minio &&\n tenant.domains.minio.map((domain) => {\n return (\n \n \n {domain}\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 \n \n \n \n \n \n \n\n Features\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(TenantSummary);\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorBlock: {\n color: theme.palette?.error.main || \"#C83B51\",\n },\n });\n\ninterface IErrorBlockProps {\n classes: any;\n errorMessage: string;\n withBreak?: boolean;\n}\n\nconst ErrorBlock = ({\n classes,\n errorMessage,\n withBreak = true,\n}: IErrorBlockProps) => {\n return (\n \n {withBreak &&
}\n \n {errorMessage}\n \n
\n );\n};\n\nexport default withStyles(styles)(ErrorBlock);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"\n}), 'Add');\nexports.default = _default;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"component\", \"direction\", \"spacing\", \"divider\", \"children\", \"className\", \"useFlexGap\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { deepmerge, unstable_composeClasses as composeClasses, unstable_generateUtilityClass as generateUtilityClass } from '@mui/utils';\nimport systemStyled from '../styled';\nimport useThemePropsSystem from '../useThemeProps';\nimport { extendSxProp } from '../styleFunctionSx';\nimport createTheme from '../createTheme';\nimport { handleBreakpoints, mergeBreakpointsInOrder, resolveBreakpointValues } from '../breakpoints';\nimport { createUnarySpacing, getValue } from '../spacing';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\n// widening Theme to any so that the consumer can own the theme structure.\nconst defaultCreateStyledComponent = systemStyled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n});\nfunction useThemePropsDefault(props) {\n return useThemePropsSystem({\n props,\n name: 'MuiStack',\n defaultTheme\n });\n}\n\n/**\n * Return an array with the separator React element interspersed between\n * each React node of the input children.\n *\n * > joinChildren([1,2,3], 0)\n * [1,0,2,0,3]\n */\nfunction joinChildren(children, separator) {\n const childrenArray = React.Children.toArray(children).filter(Boolean);\n return childrenArray.reduce((output, child, index) => {\n output.push(child);\n if (index < childrenArray.length - 1) {\n output.push( /*#__PURE__*/React.cloneElement(separator, {\n key: `separator-${index}`\n }));\n }\n return output;\n }, []);\n}\nconst getSideFromDirection = direction => {\n return {\n row: 'Left',\n 'row-reverse': 'Right',\n column: 'Top',\n 'column-reverse': 'Bottom'\n }[direction];\n};\nexport const style = ({\n ownerState,\n theme\n}) => {\n let styles = _extends({\n display: 'flex',\n flexDirection: 'column'\n }, handleBreakpoints({\n theme\n }, resolveBreakpointValues({\n values: ownerState.direction,\n breakpoints: theme.breakpoints.values\n }), propValue => ({\n flexDirection: propValue\n })));\n if (ownerState.spacing) {\n const transformer = createUnarySpacing(theme);\n const base = Object.keys(theme.breakpoints.values).reduce((acc, breakpoint) => {\n if (typeof ownerState.spacing === 'object' && ownerState.spacing[breakpoint] != null || typeof ownerState.direction === 'object' && ownerState.direction[breakpoint] != null) {\n acc[breakpoint] = true;\n }\n return acc;\n }, {});\n const directionValues = resolveBreakpointValues({\n values: ownerState.direction,\n base\n });\n const spacingValues = resolveBreakpointValues({\n values: ownerState.spacing,\n base\n });\n if (typeof directionValues === 'object') {\n Object.keys(directionValues).forEach((breakpoint, index, breakpoints) => {\n const directionValue = directionValues[breakpoint];\n if (!directionValue) {\n const previousDirectionValue = index > 0 ? directionValues[breakpoints[index - 1]] : 'column';\n directionValues[breakpoint] = previousDirectionValue;\n }\n });\n }\n const styleFromPropValue = (propValue, breakpoint) => {\n if (ownerState.useFlexGap) {\n return {\n gap: getValue(transformer, propValue)\n };\n }\n return {\n '& > :not(style) + :not(style)': {\n margin: 0,\n [`margin${getSideFromDirection(breakpoint ? directionValues[breakpoint] : ownerState.direction)}`]: getValue(transformer, propValue)\n }\n };\n };\n styles = deepmerge(styles, handleBreakpoints({\n theme\n }, spacingValues, styleFromPropValue));\n }\n styles = mergeBreakpointsInOrder(theme.breakpoints, styles);\n return styles;\n};\nexport default function createStack(options = {}) {\n const {\n // This will allow adding custom styled fn (for example for custom sx style function)\n createStyledComponent = defaultCreateStyledComponent,\n useThemeProps = useThemePropsDefault,\n componentName = 'MuiStack'\n } = options;\n const useUtilityClasses = () => {\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, slot => generateUtilityClass(componentName, slot), {});\n };\n const StackRoot = createStyledComponent(style);\n const Stack = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {\n const themeProps = useThemeProps(inProps);\n const props = extendSxProp(themeProps); // `color` type conflicts with html color attribute.\n const {\n component = 'div',\n direction = 'column',\n spacing = 0,\n divider,\n children,\n className,\n useFlexGap = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = {\n direction,\n spacing,\n useFlexGap\n };\n const classes = useUtilityClasses();\n return /*#__PURE__*/_jsx(StackRoot, _extends({\n as: component,\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n children: divider ? joinChildren(children, divider) : children\n }));\n });\n process.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n children: PropTypes.node,\n direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n divider: PropTypes.node,\n spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n } : void 0;\n return Stack;\n}","import PropTypes from 'prop-types';\nimport { createStack } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nconst Stack = createStack({\n createStyledComponent: styled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n }),\n useThemeProps: inProps => useThemeProps({\n props: inProps,\n name: 'MuiStack'\n })\n});\nprocess.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Defines the `flex-direction` style property.\n * It is applied for all screen sizes.\n * @default 'column'\n */\n direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n /**\n * Add an element between each child.\n */\n divider: PropTypes.node,\n /**\n * Defines the space between immediate children.\n * @default 0\n */\n spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n /**\n * The system prop, which allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * If `true`, the CSS flexbox `gap` is used instead of applying `margin` to children.\n *\n * While CSS `gap` removes the [known limitations](https://mui.com/joy-ui/react-stack/#limitations),\n * it is not fully supported in some browsers. We recommend checking https://caniuse.com/?search=flex%20gap before using this flag.\n *\n * To enable this flag globally, follow the [theme's default props](https://mui.com/material-ui/customization/theme-components/#default-props) configuration.\n * @default false\n */\n useFlexGap: PropTypes.bool\n} : void 0;\nexport default Stack;","import createStyled from './createStyled';\nconst styled = createStyled();\nexport default styled;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n"],"names":["withStyles","theme","createStyles","root","padding","margin","border","backgroundColor","textDecoration","cursor","fontSize","color","palette","info","main","fontFamily","_ref","classes","children","rest","_objectWithoutProperties","_excluded","_jsx","_objectSpread","className","deleteDialogStyles","content","paddingBottom","customDialogSize","width","maxWidth","snackBarCommon","onClose","modalOpen","title","_ref$wideLimit","wideLimit","noContentPadding","_ref$titleIcon","titleIcon","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","openSnackbar","setOpenSnackbar","modalSnackMessage","useSelector","state","system","modalSnackBar","useEffect","setModalSnackMessage","message","type","customSize","paper","fullWidth","detailedErrorMsg","length","_jsxs","Dialog","open","scroll","event","reason","DialogTitle","titleText","closeContainer","IconButton","id","closeButton","onClick","disableRipple","size","CloseIcon","MainError","isModal","Snackbar","snackBarModal","ContentProps","concat","snackBar","errorSnackBar","autoHideDuration","DialogContent","_ref$label","label","_ref$value","value","_ref$orientation","orientation","_ref$stkProps","stkProps","_ref$lblProps","lblProps","_ref$valProps","valProps","Stack","direction","xs","sm","style","marginRight","fontWeight","totalValue","sizeItems","_ref$bgColor","bgColor","height","borderRadius","display","transitionDuration","overflow","map","sizeElement","index","itemPercentage","toString","totalCapacity","usedSpaceVariants","statusClass","_ref$render","render","colors","BGColor","totalUsedSpace","reduce","acc","currValue","emptySpace","tiersList","standardTier","find","tier","variant","filter","standardTierColor","usedPercentage","plotValues","_toConsumableArray","plotValuesForUsageBar","plotVal","itemName","marginBottom","UsageBar","position","right","top","zIndex","CircleIcon","left","transform","isNaN","niceBytesInt","PieChart","Pie","data","cx","cy","dataKey","outerRadius","innerRadius","fill","isAnimationActive","stroke","entry","Cell","infoText","formFieldStyles","modalStyleUtils","closeModalAndRefresh","namespace","idTenant","isSending","setIsSending","_useState3","_useState4","minioImage","setMinioImage","_useState5","_useState6","imageRegistry","setImageRegistry","_useState7","_useState8","imageRegistryEndpoint","setImageRegistryEndpoint","_useState9","_useState10","imageRegistryUsername","setImageRegistryUsername","_useState11","_useState12","imageRegistryPassword","setImageRegistryPassword","_useState13","_useState14","validMinioImage","setValidMinioImage","validateImage","useCallback","fieldToCheck","pattern","RegExp","test","ModalWrapper","Grid","container","item","modalFormScrollable","formFieldRow","InputBoxWrapper","name","placeholder","onChange","e","target","FormSwitchWrapper","checked","indicatorLabels","Fragment","modalButtonBar","Button","disabled","trim","payload","image","registry","image_registry","username","password","api","invoke","then","setSnackBarMessage","catch","error","setModalErrorSnackMessage","_tenant$status","_tenant$status$usage","_tenant$status2","_tenant$status2$usage","_tenant$status3","_tenant$status3$usage","tenant","healthStatus","loading","raw","unit","capacity","used","localUse","tieredUse","status","usage","parts","niceBytes","split","capacity_usage","spaceVariants","tiers","itemTenant","internalUsage","sum","tieredUsage","partsInternal","_tenant$status4","_tenant$status4$usage","React","textAlign","Loader","_tenant$status5","_tenant$status5$usage","ErrorBlock","errorMessage","withBreak","TenantCapacity","spacing","md","alignItems","LabelValuePair","renderComponent","domainInline","overlayAction","marginLeft","background","domains","consoleDomain","setConsoleDomain","minioDomains","setMinioDomains","consoleDomainValid","setConsoleDomainValid","minioDomainValid","setMinioDomainValid","consoleDomainSet","console","consoleRegExp","minio","minioRegExp","initialValidations","domain","addNewMinIODomain","cloneDomains","cloneValidations","push","configSectionItem","containerItem","validity","valid","updateMinIODomain","domainValid","cloneValidation","setMinioDomainValidation","AddIcon","removeIndex","filteredDomains","_","filterValidations","removeMinIODomain","RemoveIcon","minioDomain","healthStatusToClass","health_status","arguments","undefined","redState","yellowState","greenState","greyState","StorageSummary","SummaryUsageBar","getToggle","toggleValue","TierOnlineIcon","DisableIcon","featureRowStyle","justifyContent","marginTop","flexFlow","featureItemStyleProps","sx","flex","minWidth","tenantDetailsStyles","warning","success","linkedSection","autoGeneratedLink","fontStyle","containerForHeader","_ref2","_tenant$domains","_tenant$domains2","_tenant$endpoints","_tenant$endpoints2","_tenant$endpoints3","_tenant$endpoints4","_tenant$domains3","_tenant$domains4","_tenant$domains5","_tenant$domains6","_tenant$endpoints5","_tenant$endpoints6","_tenant$domains7","_tenant$endpoints7","_tenant$endpoints8","_tenant$endpoints9","_tenant$endpoints10","_tenant$domains8","_tenant$status6","_tenant$status7","_useParams","useParams","tenantName","tenantNamespace","tenants","tenantInfo","encryptionEnabled","get","minioTLS","adEnabled","oidcEnabled","poolCount","setPoolCount","instances","setInstances","volumes","setVolumes","updateMinioVersion","setUpdateMinioVersion","editDomainsOpen","setEditDomainsOpen","_tenant$pools","_tenant$pools2","_tenant$pools3","pools","p","volumes_per_server","servers","UpdateTenantModal","refresh","getTenantAsync","EditDomains","SectionTitle","separator","currentState","AButton","textOverflow","whiteSpace","wordBreak","icon","EditIcon","endpoints","href","rel","write_quorum","drives_online","drives_offline","Box","_theme$palette","errorBlock","_ref$withBreak","Typography","component","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","defaultTheme","createTheme","defaultCreateStyledComponent","systemStyled","slot","overridesResolver","props","styles","useThemePropsDefault","useThemePropsSystem","joinChildren","childrenArray","toArray","Boolean","output","child","key","ownerState","_extends","flexDirection","handleBreakpoints","resolveBreakpointValues","values","breakpoints","propValue","transformer","createUnarySpacing","base","Object","keys","breakpoint","directionValues","spacingValues","forEach","previousDirectionValue","deepmerge","useFlexGap","gap","getValue","_defineProperty","row","column","mergeBreakpointsInOrder","options","_options$createStyled","createStyledComponent","_options$useThemeProp","useThemeProps","_options$componentNam","componentName","StackRoot","inProps","ref","themeProps","extendSxProp","_props$component","_props$direction","_props$spacing","divider","_props$useFlexGap","other","_objectWithoutPropertiesLoose","composeClasses","generateUtilityClass","as","clsx","createStack","styled","createStyled","componentWillMount","this","constructor","getDerivedStateFromProps","setState","componentWillReceiveProps","nextProps","prevState","bind","componentWillUpdate","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","polyfill","Component","prototype","isReactComponent","Error","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","displayName","newApiName","componentDidUpdate","maybeSnapshot","snapshot","call","__suppressDeprecationWarning"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/32.322d0e88.chunk.js b/web-app/build/static/js/32.322d0e88.chunk.js deleted file mode 100644 index 2367610e597..00000000000 --- a/web-app/build/static/js/32.322d0e88.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[32],{9505:function(e,n,t){var a=t(29439),i=t(72791),l=t(81207);n.Z=function(e,n){var t=(0,i.useState)(!1),o=(0,a.Z)(t,2),r=o[0],s=o[1];return[r,function(t,a,i,o){s(!0),l.Z.invoke(t,a,i,o).then((function(n){s(!1),e(n)})).catch((function(e){s(!1),n(e)}))}]}},29032:function(e,n,t){t.r(n),t.d(n,{default:function(){return v}});var a=t(29439),i=t(72791),l=t(51691),o=t(21435),r=t(61889),s=t(9505),c=t(40306),u=t(75952),d=t(11135),m=t(25787),f=t(80184),h=(0,m.Z)((function(e){return(0,d.Z)({headerContainer:{backgroundColor:"#e78794",borderRadius:3,marginBottom:20,padding:1,paddingBottom:15},labelHeadline:{color:"#000000",fontSize:14,marginLeft:20},labelText:{color:"#000000",fontSize:14,marginLeft:20,marginRight:40}})}))((function(e){var n=e.classes,t=e.label,a=e.title;return(0,f.jsxs)("div",{className:n.headerContainer,children:[(0,f.jsx)("h4",{className:n.labelHeadline,children:a}),(0,f.jsx)("div",{className:n.labelText,children:t})]})})),p=t(37516),b=t(87995),x=t(41320),v=function(e){var n=e.deleteOpen,t=e.selectedTenant,d=e.closeDeleteModalAndRefresh,m=(0,x.TL)(),v=(0,i.useState)(""),Z=(0,a.Z)(v,2),g=Z[0],j=Z[1],C=(0,i.useState)(!1),T=(0,a.Z)(C,2),k=T[0],D=T[1],w=(0,s.Z)((function(){return d(!0)}),(function(e){return m((0,b.Ih)(e))})),N=(0,a.Z)(w,2),L=N[0],S=N[1];return(0,f.jsx)(c.Z,{title:"Delete Tenant",confirmText:"Delete",isOpen:n,titleIcon:(0,f.jsx)(u.NvT,{}),isLoading:L,onConfirm:function(){g===t.name?S("DELETE","/api/v1/namespaces/".concat(t.namespace,"/tenants/").concat(t.name),{delete_pvcs:k}):(0,b.Ih)({errorMessage:"Tenant name is incorrect",detailedError:""})},onClose:function(){return d(!1)},confirmButtonProps:{disabled:g!==t.name||L},confirmationContent:(0,f.jsxs)(l.Z,{children:[k&&(0,f.jsx)(r.ZP,{item:!0,xs:12,children:(0,f.jsx)(h,{title:"WARNING",label:"Delete Volumes: Data will be permanently deleted. Please proceed with caution."})}),"To continue please type ",(0,f.jsx)("b",{children:t.name})," in the box.",(0,f.jsxs)(r.ZP,{item:!0,xs:12,children:[(0,f.jsx)(o.Z,{id:"retype-tenant",name:"retype-tenant",onChange:function(e){j(e.target.value)},label:"",value:g}),(0,f.jsx)("br",{}),(0,f.jsx)(p.Z,{checked:k,id:"delete-volumes",label:"Delete Volumes",name:"delete-volumes",onChange:function(){D(!k)},value:k})]})]})})}}}]); -//# sourceMappingURL=32.322d0e88.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/32.322d0e88.chunk.js.map b/web-app/build/static/js/32.322d0e88.chunk.js.map deleted file mode 100644 index 8ff1e261d63..00000000000 --- a/web-app/build/static/js/32.322d0e88.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/32.322d0e88.chunk.js","mappings":"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","sources":["screens/Console/Common/Hooks/useApi.tsx","screens/Console/Common/WarningMessage/WarningMessage.tsx","screens/Console/Tenants/ListTenants/DeleteTenant.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport api from \"../../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\n\ntype NoReturnFunction = (param?: any) => void;\ntype ApiMethodToInvoke = (method: string, url: string, data?: any) => void;\ntype IsApiInProgress = boolean;\n\nconst useApi = (\n onSuccess: NoReturnFunction,\n onError: NoReturnFunction,\n): [IsApiInProgress, ApiMethodToInvoke] => {\n const [isLoading, setIsLoading] = useState(false);\n\n const callApi = (method: string, url: string, data?: any, headers?: any) => {\n setIsLoading(true);\n api\n .invoke(method, url, data, headers)\n .then((res: any) => {\n setIsLoading(false);\n onSuccess(res);\n })\n .catch((err: ErrorResponseHandler) => {\n setIsLoading(false);\n onError(err);\n });\n };\n\n return [isLoading, callApi];\n};\n\nexport default useApi;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\ninterface IWarningMessage {\n classes: any;\n label: any;\n title: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n headerContainer: {\n backgroundColor: \"#e78794\",\n borderRadius: 3,\n marginBottom: 20,\n padding: 1,\n paddingBottom: 15,\n },\n labelHeadline: {\n color: \"#000000\",\n fontSize: 14,\n marginLeft: 20,\n },\n labelText: {\n color: \"#000000\",\n fontSize: 14,\n marginLeft: 20,\n marginRight: 40,\n },\n });\n\nconst WarningMessage = ({ classes, label, title }: IWarningMessage) => {\n return (\n
\n

{title}

\n
{label}
\n
\n );\n};\n\nexport default withStyles(styles)(WarningMessage);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { DialogContentText } from \"@mui/material\";\n\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport WarningMessage from \"../../Common/WarningMessage/WarningMessage\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { Tenant } from \"../../../../api/operatorApi\";\n\ninterface IDeleteTenant {\n deleteOpen: boolean;\n selectedTenant: Tenant;\n closeDeleteModalAndRefresh: (refreshList: boolean) => any;\n}\n\nconst DeleteTenant = ({\n deleteOpen,\n selectedTenant,\n closeDeleteModalAndRefresh,\n}: IDeleteTenant) => {\n const dispatch = useAppDispatch();\n const [retypeTenant, setRetypeTenant] = useState(\"\");\n\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteVolumes, setDeleteVolumes] = useState(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n const onConfirmDelete = () => {\n if (retypeTenant !== selectedTenant.name) {\n setErrorSnackMessage({\n errorMessage: \"Tenant name is incorrect\",\n detailedError: \"\",\n });\n return;\n }\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/namespaces/${selectedTenant.namespace}/tenants/${selectedTenant.name}`,\n { delete_pvcs: deleteVolumes },\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: retypeTenant !== selectedTenant.name || deleteLoading,\n }}\n confirmationContent={\n \n {deleteVolumes && (\n \n \n \n )}\n To continue please type {selectedTenant.name} in the box.\n \n ) => {\n setRetypeTenant(event.target.value);\n }}\n label=\"\"\n value={retypeTenant}\n />\n
\n {\n setDeleteVolumes(!deleteVolumes);\n }}\n value={deleteVolumes}\n />\n
\n
\n }\n />\n );\n};\n\nexport default DeleteTenant;\n"],"names":["onSuccess","onError","_useState","useState","_useState2","_slicedToArray","isLoading","setIsLoading","method","url","data","headers","api","invoke","then","res","catch","err","withStyles","theme","createStyles","headerContainer","backgroundColor","borderRadius","marginBottom","padding","paddingBottom","labelHeadline","color","fontSize","marginLeft","labelText","marginRight","_ref","classes","label","title","_jsxs","className","children","_jsx","deleteOpen","selectedTenant","closeDeleteModalAndRefresh","dispatch","useAppDispatch","retypeTenant","setRetypeTenant","_useState3","_useState4","deleteVolumes","setDeleteVolumes","_useApi","useApi","setErrorSnackMessage","_useApi2","deleteLoading","invokeDeleteApi","ConfirmDialog","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","onConfirm","name","concat","namespace","delete_pvcs","errorMessage","detailedError","onClose","confirmButtonProps","disabled","confirmationContent","DialogContentText","Grid","item","xs","WarningMessage","InputBoxWrapper","id","onChange","event","target","value","FormSwitchWrapper","checked"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/32.4cb9b9ed.chunk.js b/web-app/build/static/js/32.4cb9b9ed.chunk.js new file mode 100644 index 00000000000..fe130168c09 --- /dev/null +++ b/web-app/build/static/js/32.4cb9b9ed.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[32],{9505:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(72791),l=n(81207);const s=(e,t)=>{const[n,s]=(0,a.useState)(!1);return[n,(n,a,o,r)=>{s(!0),l.Z.invoke(n,a,o,r).then((t=>{s(!1),e(t)})).catch((e=>{s(!1),t(e)}))}]}},29032:(e,t,n)=>{n.r(t),n.d(t,{default:()=>v});var a=n(72791),l=n(51691),s=n(21435),o=n(61889),r=n(9505),i=n(40306),c=n(75952),d=n(11135),m=n(25787),h=n(80184);const u=(0,m.Z)((e=>(0,d.Z)({headerContainer:{backgroundColor:"#e78794",borderRadius:3,marginBottom:20,padding:1,paddingBottom:15},labelHeadline:{color:"#000000",fontSize:14,marginLeft:20},labelText:{color:"#000000",fontSize:14,marginLeft:20,marginRight:40}})))((e=>{let{classes:t,label:n,title:a}=e;return(0,h.jsxs)("div",{className:t.headerContainer,children:[(0,h.jsx)("h4",{className:t.labelHeadline,children:a}),(0,h.jsx)("div",{className:t.labelText,children:n})]})}));var p=n(37516),b=n(87995),x=n(41320);const v=e=>{let{deleteOpen:t,selectedTenant:n,closeDeleteModalAndRefresh:d}=e;const m=(0,x.TL)(),[v,g]=(0,a.useState)(""),[j,f]=(0,a.useState)(!1),[Z,C]=(0,r.Z)((()=>d(!0)),(e=>m((0,b.Ih)(e))));return(0,h.jsx)(i.Z,{title:"Delete Tenant",confirmText:"Delete",isOpen:t,titleIcon:(0,h.jsx)(c.NvT,{}),isLoading:Z,onConfirm:()=>{v===n.name?C("DELETE","/api/v1/namespaces/".concat(n.namespace,"/tenants/").concat(n.name),{delete_pvcs:j}):(0,b.Ih)({errorMessage:"Tenant name is incorrect",detailedError:""})},onClose:()=>d(!1),confirmButtonProps:{disabled:v!==n.name||Z},confirmationContent:(0,h.jsxs)(l.Z,{children:[j&&(0,h.jsx)(o.ZP,{item:!0,xs:12,children:(0,h.jsx)(u,{title:"WARNING",label:"Delete Volumes: Data will be permanently deleted. Please proceed with caution."})}),"To continue please type ",(0,h.jsx)("b",{children:n.name})," in the box.",(0,h.jsxs)(o.ZP,{item:!0,xs:12,children:[(0,h.jsx)(s.Z,{id:"retype-tenant",name:"retype-tenant",onChange:e=>{g(e.target.value)},label:"",value:v}),(0,h.jsx)("br",{}),(0,h.jsx)(p.Z,{checked:j,id:"delete-volumes",label:"Delete Volumes",name:"delete-volumes",onChange:()=>{f(!j)},value:j})]})]})})}}}]); +//# sourceMappingURL=32.4cb9b9ed.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/32.4cb9b9ed.chunk.js.map b/web-app/build/static/js/32.4cb9b9ed.chunk.js.map new file mode 100644 index 00000000000..d825bd6b9c1 --- /dev/null +++ b/web-app/build/static/js/32.4cb9b9ed.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/32.4cb9b9ed.chunk.js","mappings":"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","sources":["screens/Console/Common/Hooks/useApi.tsx","screens/Console/Common/WarningMessage/WarningMessage.tsx","screens/Console/Tenants/ListTenants/DeleteTenant.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport api from \"../../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\n\ntype NoReturnFunction = (param?: any) => void;\ntype ApiMethodToInvoke = (method: string, url: string, data?: any) => void;\ntype IsApiInProgress = boolean;\n\nconst useApi = (\n onSuccess: NoReturnFunction,\n onError: NoReturnFunction,\n): [IsApiInProgress, ApiMethodToInvoke] => {\n const [isLoading, setIsLoading] = useState(false);\n\n const callApi = (method: string, url: string, data?: any, headers?: any) => {\n setIsLoading(true);\n api\n .invoke(method, url, data, headers)\n .then((res: any) => {\n setIsLoading(false);\n onSuccess(res);\n })\n .catch((err: ErrorResponseHandler) => {\n setIsLoading(false);\n onError(err);\n });\n };\n\n return [isLoading, callApi];\n};\n\nexport default useApi;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\ninterface IWarningMessage {\n classes: any;\n label: any;\n title: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n headerContainer: {\n backgroundColor: \"#e78794\",\n borderRadius: 3,\n marginBottom: 20,\n padding: 1,\n paddingBottom: 15,\n },\n labelHeadline: {\n color: \"#000000\",\n fontSize: 14,\n marginLeft: 20,\n },\n labelText: {\n color: \"#000000\",\n fontSize: 14,\n marginLeft: 20,\n marginRight: 40,\n },\n });\n\nconst WarningMessage = ({ classes, label, title }: IWarningMessage) => {\n return (\n
\n

{title}

\n
{label}
\n
\n );\n};\n\nexport default withStyles(styles)(WarningMessage);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { DialogContentText } from \"@mui/material\";\n\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport WarningMessage from \"../../Common/WarningMessage/WarningMessage\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { Tenant } from \"../../../../api/operatorApi\";\n\ninterface IDeleteTenant {\n deleteOpen: boolean;\n selectedTenant: Tenant;\n closeDeleteModalAndRefresh: (refreshList: boolean) => any;\n}\n\nconst DeleteTenant = ({\n deleteOpen,\n selectedTenant,\n closeDeleteModalAndRefresh,\n}: IDeleteTenant) => {\n const dispatch = useAppDispatch();\n const [retypeTenant, setRetypeTenant] = useState(\"\");\n\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteVolumes, setDeleteVolumes] = useState(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n const onConfirmDelete = () => {\n if (retypeTenant !== selectedTenant.name) {\n setErrorSnackMessage({\n errorMessage: \"Tenant name is incorrect\",\n detailedError: \"\",\n });\n return;\n }\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/namespaces/${selectedTenant.namespace}/tenants/${selectedTenant.name}`,\n { delete_pvcs: deleteVolumes },\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: retypeTenant !== selectedTenant.name || deleteLoading,\n }}\n confirmationContent={\n \n {deleteVolumes && (\n \n \n \n )}\n To continue please type {selectedTenant.name} in the box.\n \n ) => {\n setRetypeTenant(event.target.value);\n }}\n label=\"\"\n value={retypeTenant}\n />\n
\n {\n setDeleteVolumes(!deleteVolumes);\n }}\n value={deleteVolumes}\n />\n
\n
\n }\n />\n );\n};\n\nexport default DeleteTenant;\n"],"names":["useApi","onSuccess","onError","isLoading","setIsLoading","useState","callApi","method","url","data","headers","api","invoke","then","res","catch","err","withStyles","theme","createStyles","headerContainer","backgroundColor","borderRadius","marginBottom","padding","paddingBottom","labelHeadline","color","fontSize","marginLeft","labelText","marginRight","_ref","classes","label","title","_jsxs","className","children","_jsx","deleteOpen","selectedTenant","closeDeleteModalAndRefresh","dispatch","useAppDispatch","retypeTenant","setRetypeTenant","deleteVolumes","setDeleteVolumes","deleteLoading","invokeDeleteApi","onDelSuccess","setErrorSnackMessage","ConfirmDialog","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","onConfirm","onConfirmDelete","name","concat","namespace","delete_pvcs","errorMessage","detailedError","onClose","confirmButtonProps","disabled","confirmationContent","DialogContentText","Grid","item","xs","WarningMessage","InputBoxWrapper","id","onChange","event","target","value","FormSwitchWrapper","checked"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/33.8113b137.chunk.js b/web-app/build/static/js/33.8113b137.chunk.js deleted file mode 100644 index 8c385a13ff7..00000000000 --- a/web-app/build/static/js/33.8113b137.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[33],{81806:function(e,t,n){var a=n(1413),i=n(45987),r=(n(72791),n(11135)),s=n(25787),l=n(80184),c=["classes","children"];t.Z=(0,s.Z)((function(e){return(0,r.Z)({root:{padding:0,margin:0,border:0,backgroundColor:"transparent",textDecoration:"underline",cursor:"pointer",fontSize:"inherit",color:e.palette.info.main,fontFamily:"Inter, sans-serif"}})}))((function(e){var t=e.classes,n=e.children,r=(0,i.Z)(e,c);return(0,l.jsx)("button",(0,a.Z)((0,a.Z)({},r),{},{className:t.root,children:n}))}))},75578:function(e,t,n){var a=n(1413),i=n(72791),r=n(80184);t.Z=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(n){return(0,r.jsx)(i.Suspense,{fallback:t,children:(0,r.jsx)(e,(0,a.Z)({},n))})}}},27454:function(e,t,n){var a=n(1413),i=n(72791),r=n(96040),s=n(80184);t.Z=function(e){var t=e.tooltip,n=e.children,l=e.errorProps,c=void 0===l?null:l,o=e.placement;return(0,s.jsx)(r.Z,{title:t,placement:o,children:(0,s.jsx)("span",{children:c?(0,i.cloneElement)(n,(0,a.Z)({},c)):n})})}},76033:function(e,t,n){n.r(t),n.d(t,{default:function(){return L}});var a=n(29439),i=n(72791),r=n(75952),s=n(61889),l=n(57482),c=n(57689),o=n(17238),u=n(82295),d=n(45248),h=n(80184),f=function(e){var t=e.label,n=e.value,a=e.unit,r=e.variant,s=void 0===r?"normal":r;return(0,h.jsxs)("div",{style:{margin:"0px 20px"},children:[(0,h.jsxs)("div",{style:{textAlign:"center"},children:[(0,h.jsx)("span",{style:{fontSize:18,color:"normal"===s?"#000":"#999",fontWeight:400},children:n}),a&&(0,h.jsxs)(i.Fragment,{children:[" ",(0,h.jsx)("span",{style:{fontSize:12,color:"#8F9090",fontWeight:"bold"},children:a})]})]}),(0,h.jsx)("div",{style:{textAlign:"center",color:"normal"===s?"#767676":"#bababa",fontSize:12,whiteSpace:"nowrap"},children:t})]})},x=n(74815),p=n(41320),v=(0,n(72455).Z)((function(e){return{redState:{color:e.palette.error.main,"& .min-icon":{width:16,height:16,float:"left",marginRight:4}},yellowState:{color:e.palette.warning.main,"& .min-icon":{width:16,height:16,float:"left",marginRight:4}},greenState:{color:e.palette.success.main,"& .min-icon":{width:16,height:16,float:"left",marginRight:4}},greyState:{color:"grey","& .min-icon":{width:16,height:16,float:"left",marginRight:4}},tenantItem:{border:"1px solid #EAEAEA",marginBottom:16,padding:"15px 30px","&:hover":{backgroundColor:"#FAFAFA",cursor:"pointer"}},titleContainer:{display:"flex",justifyContent:"space-between",width:"100%"},title:{fontSize:18,fontWeight:"bold"},namespaceLabel:{display:"inline-flex",backgroundColor:"#EAEDEF",borderRadius:2,padding:"4px 8px",fontSize:10,marginRight:20},status:{fontSize:12,color:"#8F9090"}}})),m=function(e){var t=e.tenant,n=(0,p.TL)(),a=(0,c.s0)(),l=v(),m={value:"n/a",unit:""},g={value:"n/a",unit:""},j={value:"n/a",unit:""},y={value:"n/a",unit:""},b={value:"n/a",unit:""};if(t.capacity_raw){var Z=(0,d.ae)("".concat(t.capacity_raw),!0).split(" ");m.value=Z[0],m.unit=Z[1]}if(t.capacity){var S=(0,d.ae)("".concat(t.capacity),!0).split(" ");g.value=S[0],g.unit=S[1]}if(t.capacity_usage){var C=(0,d.l5)(t.capacity_usage,!0).split(" ");j.value=C[0],j.unit=C[1]}var w=[];if(t.tiers&&0!==t.tiers.length){var A,F;w=null===(A=t.tiers)||void 0===A?void 0:A.map((function(e){return{value:e.size,variant:e.name}}));var _=null===(F=t.tiers)||void 0===F?void 0:F.filter((function(e){return"internal"===e.type})).reduce((function(e,t){return e+t.size}),0),z=t.tiers.filter((function(e){return"internal"!==e.type})).reduce((function(e,t){return e+t.size}),0),T=(0,d.l5)(z,!0).split(" ");b.value=T[0],b.unit=T[1];var P=(0,d.l5)(_,!0).split(" ");y.value=P[0],y.unit=P[1]}else w=[{value:t.capacity_usage||0,variant:"STANDARD"}];return(0,h.jsx)(i.Fragment,{children:(0,h.jsx)("div",{className:l.tenantItem,id:"list-tenant-".concat(t.name),onClick:function(){n((0,o.V7)({name:t.name,namespace:t.namespace})),n((0,u.v)()),a("/namespaces/".concat(t.namespace,"/tenants/").concat(t.name,"/summary"))},children:(0,h.jsxs)(s.ZP,{container:!0,children:[(0,h.jsxs)(s.ZP,{item:!0,xs:12,className:l.titleContainer,children:[(0,h.jsx)("div",{className:l.title,children:(0,h.jsx)("span",{children:t.name})}),(0,h.jsx)("div",{children:(0,h.jsxs)("span",{className:l.namespaceLabel,children:["Namespace:\xa0",t.namespace]})})]}),(0,h.jsx)(s.ZP,{item:!0,xs:12,sx:{marginTop:2},children:(0,h.jsxs)(s.ZP,{container:!0,children:[(0,h.jsx)(s.ZP,{item:!0,xs:2,children:(0,h.jsx)(x.Z,{totalCapacity:t.capacity||0,usedSpaceVariants:w,statusClass:function(e){switch(e){case"red":return l.redState;case"yellow":return l.yellowState;case"green":return l.greenState;default:return l.greyState}}(t.health_status)})}),(0,h.jsxs)(s.ZP,{item:!0,xs:!0,children:[(0,h.jsxs)(s.ZP,{item:!0,xs:!0,sx:{display:"flex",justifyContent:"flex-start",alignItems:"center",marginTop:"10px"},children:[(0,h.jsx)(f,{label:"Raw Capacity",value:m.value,unit:m.unit}),(0,h.jsx)(f,{label:"Usable Capacity",value:g.value,unit:g.unit}),(0,h.jsx)(f,{label:"Pools",value:"".concat(t.pool_count),variant:"faded"})]}),(0,h.jsx)(s.ZP,{item:!0,xs:12,sx:{paddingLeft:"20px",marginTop:"15px"},children:(0,h.jsxs)("span",{className:l.status,children:[(0,h.jsx)("strong",{children:"State:"})," ",t.currentState]})})]}),(0,h.jsx)(s.ZP,{item:!0,xs:3,children:(0,h.jsx)(i.Fragment,{children:(0,h.jsxs)(s.ZP,{container:!0,children:[(0,h.jsxs)(s.ZP,{item:!0,xs:2,textAlign:"center",justifyContent:"center",justifyItems:"center",children:[(0,h.jsx)(r.FU8,{style:{width:25,color:"rgb(91,91,91)"}}),(0,h.jsx)("div",{style:{color:"rgb(118, 118, 118)",fontSize:12,fontWeight:"400"},children:"Usage"})]}),(0,h.jsx)(s.ZP,{item:!0,xs:1}),(0,h.jsxs)(s.ZP,{item:!0,style:{paddingTop:8},children:[(!t.tiers||0===t.tiers.length)&&(0,h.jsxs)("div",{style:{fontSize:14,fontWeight:400},children:[(0,h.jsxs)("span",{style:{color:"rgb(62,62,62)"},children:["Internal:"," "]})," ","".concat(j.value," ").concat(j.unit)]}),t.tiers&&t.tiers.length>0&&(0,h.jsxs)(i.Fragment,{children:[(0,h.jsxs)("div",{style:{fontSize:14,fontWeight:400},children:[(0,h.jsxs)("span",{style:{color:"rgb(62,62,62)"},children:["Internal:"," "]})," ","".concat(y.value," ").concat(y.unit)]}),(0,h.jsxs)("div",{style:{fontSize:14,fontWeight:400},children:[(0,h.jsxs)("span",{style:{color:"rgb(62,62,62)"},children:["Tiered:"," "]})," ","".concat(b.value," ").concat(b.unit)]})]})]})]})})})]})})]})})})},g=n(81806),j=n(75578),y=n(22338),b=n(79762),Z=n(5171),S={},C=function(e){var t=e.rowRenderFunction,n=e.totalItems,a=e.defaultHeight,r=function(e){var n=e.index,a=e.style;return(0,h.jsx)("div",{style:a,children:t(n)})};return(0,h.jsx)(i.Fragment,{children:(0,h.jsx)(b.Z,{isItemLoaded:function(e){return!!S[e]},loadMoreItems:function(e,t){for(var n=e;n<=t;n++)S[n]=1;for(var a=e;a<=t;a++)S[a]=2},itemCount:n,children:function(e){var t=e.onItemsRendered,i=e.ref;return(0,h.jsx)(Z.qj,{children:function(e){var s=e.width,l=e.height;return(0,h.jsx)(y.t7,{itemSize:a||220,height:l,itemCount:n,width:s,ref:i,onItemsRendered:t,children:r})}})}})})},w=n(4942),A=n(1413),F=n(63466),_=n(27391),z=n(25787),T=n(11135),P=n(23814),R=(0,z.Z)((function(e){return(0,T.Z)({searchField:(0,A.Z)({},P.qg.searchField),adornment:{}})}))((function(e){var t=e.placeholder,n=void 0===t?"":t,a=e.classes,i=e.onChange,s=e.adornmentPosition,l=void 0===s?"end":s,c=e.overrideClass,o=e.value,u=(0,w.Z)({disableUnderline:!0},"".concat(l,"Adornment"),(0,h.jsx)(F.Z,{position:l,className:a.adornment,children:(0,h.jsx)(r.W1M,{})}));return(0,h.jsx)(_.Z,{placeholder:n,className:c||a.searchField,id:"search-resource",label:"",InputProps:u,onChange:function(e){i(e.target.value)},variant:"standard",value:o})})),I=n(74794),k=n(87995),N=n(90673),D=n(27454),E=n(47974),W=n(79626),B=(0,j.Z)(i.lazy((function(){return n.e(798).then(n.bind(n,37798))}))),L=function(){var e=(0,p.TL)(),t=(0,c.s0)(),n=(0,i.useState)(!1),o=(0,a.Z)(n,2),u=o[0],d=o[1],f=(0,i.useState)(""),x=(0,a.Z)(f,2),v=x[0],j=x[1],y=(0,i.useState)([]),b=(0,a.Z)(y,2),Z=b[0],S=b[1],w=(0,i.useState)(!1),A=(0,a.Z)(w,2),F=A[0],_=A[1],z=(0,i.useState)(null),T=(0,a.Z)(z,2),P=T[0],L=T[1],U=(0,i.useState)("name"),M=(0,a.Z)(U,2),V=M[0],K=M[1],q=Z.filter((function(e){return""===v||e.name.indexOf(v)>=0}));q.sort((function(e,t){switch(V){case"capacity":return e.capacity&&t.capacity?e.capacity>t.capacity?1:e.capacityt.capacity_usage?1:e.capacity_usaget.name?1:e.name10?g=[{value:v-j.value,color:"#2781B0",label:"Total Tiers Space"}]:g=n.filter((function(e){return"STANDARD"!==e.variant})).map((function(e,t){return{value:e.value,color:x[t],label:"Tier - ".concat(e.variant)}}));var y="#07193E",b=100*j.value/t;b>=90?y="#C83B51":b>=75&&(y="#FFAB0F");var Z=[{value:j.value,color:y,label:"Used Space by Tenant"}].concat((0,a.Z)(g),[{value:m,color:"bar"===f?p:"transparent",label:"Empty Space"}]);if("bar"===f){var S=Z.map((function(e){return{value:e.value,color:e.color,itemName:e.label}}));return(0,o.jsx)("div",{style:{width:"100%",marginBottom:15},children:(0,o.jsx)(u,{totalValue:t,sizeItems:S,bgColor:p})})}return(0,o.jsxs)("div",{style:{position:"relative",width:110,height:110},children:[(0,o.jsx)("div",{style:{position:"absolute",right:-5,top:15,zIndex:400},className:d,children:(0,o.jsx)(c.J$M,{style:{border:"#fff 2px solid",borderRadius:"100%",width:20,height:20}})}),(0,o.jsx)("span",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",fontWeight:"bold",color:"#000",fontSize:11},children:isNaN(v)?"N/A":(0,l.l5)(v)}),(0,o.jsx)("div",{children:(0,o.jsxs)(i.u,{width:110,height:110,children:[(0,o.jsx)(r.b,{data:[{value:100}],cx:"50%",cy:"50%",dataKey:"value",outerRadius:50,innerRadius:40,fill:p,isAnimationActive:!1,stroke:"none"}),(0,o.jsx)(r.b,{data:Z,cx:"50%",cy:"50%",dataKey:"value",outerRadius:50,innerRadius:40,children:Z.map((function(e,t){return(0,o.jsx)(s.b,{fill:e.color,stroke:"none"},"cellCapacity-".concat(t))}))})]})})]})}}}]); -//# sourceMappingURL=33.8113b137.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/33.8113b137.chunk.js.map b/web-app/build/static/js/33.8113b137.chunk.js.map deleted file mode 100644 index 1261e58c6da..00000000000 --- a/web-app/build/static/js/33.8113b137.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/33.8113b137.chunk.js","mappings":"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","sources":["screens/Console/Common/AButton/AButton.tsx","screens/Console/Common/Components/withSuspense.tsx","screens/Console/Common/TooltipWrapper/TooltipWrapper.tsx","screens/Console/Tenants/ListTenants/InformationItem.tsx","screens/Console/Tenants/ListTenants/TenantListItem.tsx","screens/Console/Common/VirtualizedList/VirtualizedList.tsx","screens/Console/Common/SearchBox.tsx","screens/Console/Tenants/ListTenants/ListTenants.tsx","screens/Console/Common/UsageBar/UsageBar.tsx","screens/Console/Tenants/ListTenants/TenantCapacity.tsx"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IconButtonProps } from \"@mui/material\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n padding: 0,\n margin: 0,\n border: 0,\n backgroundColor: \"transparent\",\n textDecoration: \"underline\",\n cursor: \"pointer\",\n fontSize: \"inherit\",\n color: theme.palette.info.main,\n fontFamily: \"Inter, sans-serif\",\n },\n });\n\ninterface IAButton extends IconButtonProps {\n classes: any;\n children: any;\n}\n\nconst AButton = ({ classes, children, ...rest }: IAButton) => {\n return (\n \n );\n};\n\nexport default withStyles(styles)(AButton);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { cloneElement } from \"react\";\nimport { Tooltip } from \"@mui/material\";\n\ninterface ITooltipWrapperProps {\n tooltip: string;\n children: any;\n errorProps?: any;\n placement?:\n | \"bottom-end\"\n | \"bottom-start\"\n | \"bottom\"\n | \"left-end\"\n | \"left-start\"\n | \"left\"\n | \"right-end\"\n | \"right-start\"\n | \"right\"\n | \"top-end\"\n | \"top-start\"\n | \"top\";\n}\n\nconst TooltipWrapper = ({\n tooltip,\n children,\n errorProps = null,\n placement,\n}: ITooltipWrapperProps) => {\n return (\n \n \n {errorProps ? cloneElement(children, { ...errorProps }) : children}\n \n \n );\n};\n\nexport default TooltipWrapper;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\n\ninterface IInformationItemProps {\n label: string;\n value: string;\n unit?: string;\n variant?: \"normal\" | \"faded\";\n}\n\nconst InformationItem = ({\n label,\n value,\n unit,\n variant = \"normal\",\n}: IInformationItemProps) => {\n return (\n

\n
\n \n {value}\n \n {unit && (\n \n {\" \"}\n \n {unit}\n \n \n )}\n
\n \n {label}\n
\n \n );\n};\n\nexport default InformationItem;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\n\nimport { useNavigate } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport { CapacityValues, ValueUnit } from \"./types\";\nimport { setTenantName } from \"../tenantsSlice\";\nimport { getTenantAsync } from \"../thunks/tenantDetailsAsync\";\nimport { DrivesIcon } from \"mds\";\nimport { niceBytes, niceBytesInt } from \"../../../../common/utils\";\nimport Grid from \"@mui/material/Grid\";\nimport InformationItem from \"./InformationItem\";\nimport TenantCapacity from \"./TenantCapacity\";\nimport { useAppDispatch } from \"../../../../store\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { TenantList } from \"../../../../api/operatorApi\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n redState: {\n color: theme.palette.error.main,\n \"& .min-icon\": {\n width: 16,\n height: 16,\n float: \"left\",\n marginRight: 4,\n },\n },\n yellowState: {\n color: theme.palette.warning.main,\n \"& .min-icon\": {\n width: 16,\n height: 16,\n float: \"left\",\n marginRight: 4,\n },\n },\n greenState: {\n color: theme.palette.success.main,\n \"& .min-icon\": {\n width: 16,\n height: 16,\n float: \"left\",\n marginRight: 4,\n },\n },\n greyState: {\n color: \"grey\",\n \"& .min-icon\": {\n width: 16,\n height: 16,\n float: \"left\",\n marginRight: 4,\n },\n },\n tenantItem: {\n border: \"1px solid #EAEAEA\",\n marginBottom: 16,\n padding: \"15px 30px\",\n \"&:hover\": {\n backgroundColor: \"#FAFAFA\",\n cursor: \"pointer\",\n },\n },\n titleContainer: {\n display: \"flex\",\n justifyContent: \"space-between\",\n width: \"100%\",\n },\n title: {\n fontSize: 18,\n fontWeight: \"bold\",\n },\n namespaceLabel: {\n display: \"inline-flex\",\n backgroundColor: \"#EAEDEF\",\n borderRadius: 2,\n padding: \"4px 8px\",\n fontSize: 10,\n marginRight: 20,\n },\n status: {\n fontSize: 12,\n color: \"#8F9090\",\n },\n}));\n\nconst TenantListItem = ({ tenant }: { tenant: TenantList }) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const classes = useStyles();\n\n const healthStatusToClass = (health_status: string) => {\n switch (health_status) {\n case \"red\":\n return classes.redState;\n case \"yellow\":\n return classes.yellowState;\n case \"green\":\n return classes.greenState;\n default:\n return classes.greyState;\n }\n };\n\n let raw: ValueUnit = { value: \"n/a\", unit: \"\" };\n let capacity: ValueUnit = { value: \"n/a\", unit: \"\" };\n let used: ValueUnit = { value: \"n/a\", unit: \"\" };\n let localUse: ValueUnit = { value: \"n/a\", unit: \"\" };\n let tieredUse: ValueUnit = { value: \"n/a\", unit: \"\" };\n\n if (tenant.capacity_raw) {\n const b = niceBytes(`${tenant.capacity_raw}`, true);\n const parts = b.split(\" \");\n raw.value = parts[0];\n raw.unit = parts[1];\n }\n if (tenant.capacity) {\n const b = niceBytes(`${tenant.capacity}`, true);\n const parts = b.split(\" \");\n capacity.value = parts[0];\n capacity.unit = parts[1];\n }\n if (tenant.capacity_usage) {\n const b = niceBytesInt(tenant.capacity_usage, true);\n const parts = b.split(\" \");\n used.value = parts[0];\n used.unit = parts[1];\n }\n\n let spaceVariants: CapacityValues[] = [];\n if (!tenant.tiers || tenant.tiers.length === 0) {\n spaceVariants = [\n { value: tenant.capacity_usage || 0, variant: \"STANDARD\" },\n ];\n } else {\n spaceVariants = tenant.tiers?.map((itemTenant) => {\n return { value: itemTenant.size!, variant: itemTenant.name! };\n });\n let internalUsage = tenant.tiers\n ?.filter((itemTenant) => {\n return itemTenant.type === \"internal\";\n })\n .reduce((sum, itemTenant) => sum + itemTenant.size!, 0);\n let tieredUsage = tenant.tiers\n .filter((itemTenant) => {\n return itemTenant.type !== \"internal\";\n })\n .reduce((sum, itemTenant) => sum + itemTenant.size!, 0);\n\n const t = niceBytesInt(tieredUsage, true);\n const parts = t.split(\" \");\n tieredUse.value = parts[0];\n tieredUse.unit = parts[1];\n\n const is = niceBytesInt(internalUsage, true);\n const partsInternal = is.split(\" \");\n localUse.value = partsInternal[0];\n localUse.unit = partsInternal[1];\n }\n\n const openTenantDetails = () => {\n dispatch(\n setTenantName({\n name: tenant.name!,\n namespace: tenant.namespace!,\n }),\n );\n dispatch(getTenantAsync());\n navigate(`/namespaces/${tenant.namespace}/tenants/${tenant.name}/summary`);\n };\n\n return (\n \n \n \n \n
\n {tenant.name}\n
\n
\n \n Namespace: {tenant.namespace}\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n State: {tenant.currentState}\n \n \n \n \n \n \n \n \n \n Usage\n \n \n \n \n {(!tenant.tiers || tenant.tiers.length === 0) && (\n \n \n Internal:{\" \"}\n {\" \"}\n {`${used.value} ${used.unit}`}\n \n )}\n\n {tenant.tiers && tenant.tiers.length > 0 && (\n \n \n \n Internal:{\" \"}\n {\" \"}\n {`${localUse.value} ${localUse.unit}`}\n \n \n \n Tiered:{\" \"}\n {\" \"}\n {`${tieredUse.value} ${tieredUse.unit}`}\n \n \n )}\n \n \n \n \n
\n \n \n \n
\n );\n};\n\nexport default TenantListItem;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, ReactElement } from \"react\";\nimport { FixedSizeList as List } from \"react-window\";\nimport InfiniteLoader from \"react-window-infinite-loader\";\nimport { AutoSizer } from \"react-virtualized\";\n\ninterface IVirtualizedList {\n rowRenderFunction: (index: number) => ReactElement | null;\n totalItems: number;\n defaultHeight?: number;\n}\n\nlet itemStatusMap: any = {};\nconst LOADING = 1;\nconst LOADED = 2;\n\nconst VirtualizedList = ({\n rowRenderFunction,\n totalItems,\n defaultHeight,\n}: IVirtualizedList) => {\n const isItemLoaded = (index: any) => !!itemStatusMap[index];\n\n const loadMoreItems = (startIndex: number, stopIndex: number) => {\n for (let index = startIndex; index <= stopIndex; index++) {\n itemStatusMap[index] = LOADING;\n }\n\n for (let index = startIndex; index <= stopIndex; index++) {\n itemStatusMap[index] = LOADED;\n }\n };\n\n const RenderItemLine = ({ index, style }: any) => {\n return
{rowRenderFunction(index)}
;\n };\n\n return (\n \n \n {({ onItemsRendered, ref }) => (\n // @ts-ignore\n \n {({ width, height }) => {\n return (\n \n {RenderItemLine}\n \n );\n }}\n \n )}\n \n \n );\n};\n\nexport default VirtualizedList;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport { SearchIcon } from \"mds\";\nimport TextField from \"@mui/material/TextField\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { searchField } from \"./FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n searchField: {\n ...searchField.searchField,\n },\n adornment: {},\n });\n\ntype SearchBoxProps = {\n placeholder?: string;\n value: string;\n classes: any;\n onChange: (value: string) => void;\n adornmentPosition?: \"start\" | \"end\";\n overrideClass?: any;\n};\n\nconst SearchBox = ({\n placeholder = \"\",\n classes,\n onChange,\n adornmentPosition = \"end\",\n overrideClass,\n value,\n}: SearchBoxProps) => {\n const inputProps = {\n disableUnderline: true,\n [`${adornmentPosition}Adornment`]: (\n \n \n \n ),\n };\n return (\n {\n onChange(e.target.value);\n }}\n variant=\"standard\"\n value={value}\n />\n );\n};\n\nexport default withStyles(styles)(SearchBox);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { AddIcon, Button, HelpBox, RefreshIcon, TenantsIcon } from \"mds\";\nimport Grid from \"@mui/material/Grid\";\nimport { LinearProgress, SelectChangeEvent } from \"@mui/material\";\nimport { NewServiceAccount } from \"../../Common/CredentialsPrompt/types\";\nimport TenantListItem from \"./TenantListItem\";\nimport AButton from \"../../Common/AButton/AButton\";\n\nimport withSuspense from \"../../Common/Components/withSuspense\";\nimport VirtualizedList from \"../../Common/VirtualizedList/VirtualizedList\";\nimport SearchBox from \"../../Common/SearchBox\";\nimport PageLayout from \"../../Common/Layout/PageLayout\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport SelectWrapper from \"../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useAppDispatch } from \"../../../../store\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport { api } from \"../../../../api\";\nimport {\n Error,\n HttpResponse,\n ListTenantsResponse,\n TenantList,\n} from \"../../../../api/operatorApi\";\n\nconst CredentialsPrompt = withSuspense(\n React.lazy(() => import(\"../../Common/CredentialsPrompt/CredentialsPrompt\")),\n);\n\nconst ListTenants = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [isLoading, setIsLoading] = useState(false);\n const [filterTenants, setFilterTenants] = useState(\"\");\n const [records, setRecords] = useState([]);\n const [showNewCredentials, setShowNewCredentials] = useState(false);\n const [createdAccount, setCreatedAccount] =\n useState(null);\n const [sortValue, setSortValue] = useState(\"name\");\n\n const closeCredentialsModal = () => {\n setShowNewCredentials(false);\n setCreatedAccount(null);\n };\n\n const filteredRecords = records.filter((b: any) => {\n if (filterTenants === \"\") {\n return true;\n } else {\n if (b.name.indexOf(filterTenants) >= 0) {\n return true;\n } else {\n return false;\n }\n }\n });\n\n filteredRecords.sort((a, b) => {\n switch (sortValue) {\n case \"capacity\":\n if (!a.capacity || !b.capacity) {\n return 0;\n }\n\n if (a.capacity > b.capacity) {\n return 1;\n }\n\n if (a.capacity < b.capacity) {\n return -1;\n }\n\n return 0;\n case \"usage\":\n if (!a.capacity_usage || !b.capacity_usage) {\n return 0;\n }\n\n if (a.capacity_usage > b.capacity_usage) {\n return 1;\n }\n\n if (a.capacity_usage < b.capacity_usage) {\n return -1;\n }\n\n return 0;\n case \"active_status\":\n if (a.health_status === \"red\" && b.health_status !== \"red\") {\n return 1;\n }\n\n if (a.health_status !== \"red\" && b.health_status === \"red\") {\n return -1;\n }\n\n return 0;\n case \"failing_status\":\n if (a.health_status === \"green\" && b.health_status !== \"green\") {\n return 1;\n }\n\n if (a.health_status !== \"green\" && b.health_status === \"green\") {\n return -1;\n }\n\n return 0;\n default:\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n return 0;\n }\n });\n\n useEffect(() => {\n if (isLoading) {\n const fetchRecords = () => {\n api.tenants\n .listAllTenants()\n .then((res: HttpResponse) => {\n if (!res.data) {\n setIsLoading(false);\n return;\n }\n let resTenants: TenantList[] =\n (res.data.tenants as TenantList[]) ?? [];\n\n setRecords(resTenants);\n setIsLoading(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(err));\n setIsLoading(false);\n });\n };\n fetchRecords();\n }\n }, [isLoading, dispatch]);\n\n useEffect(() => {\n setIsLoading(true);\n }, []);\n\n const renderItemLine = (index: number) => {\n const tenant = filteredRecords[index] || null;\n\n if (tenant) {\n return ;\n }\n\n return null;\n };\n\n return (\n \n {showNewCredentials && (\n {\n closeCredentialsModal();\n }}\n entity=\"Tenant\"\n />\n )}\n {\n setFilterTenants(val);\n }}\n value={filterTenants}\n />\n }\n actions={\n \n \n {\n setIsLoading(true);\n }}\n icon={}\n variant={\"regular\"}\n />\n \n \n {\n navigate(\"/tenants/add\");\n }}\n icon={}\n variant={\"callAction\"}\n />\n \n \n }\n />\n \n \n {isLoading && }\n {!isLoading && (\n \n {filteredRecords.length !== 0 && (\n \n \n \n \n Sort by\n \n ) => {\n setSortValue(e.target.value as string);\n }}\n name={\"sort-by\"}\n options={[\n { label: \"Name\", value: \"name\" },\n {\n label: \"Capacity\",\n value: \"capacity\",\n },\n {\n label: \"Usage\",\n value: \"usage\",\n },\n {\n label: \"Active Status\",\n value: \"active_status\",\n },\n {\n label: \"Failing Status\",\n value: \"failing_status\",\n },\n ]}\n />\n \n \n \n \n )}\n {filteredRecords.length === 0 && (\n \n \n }\n title={\"Tenants\"}\n help={\n \n Tenant is the logical structure to represent a MinIO\n deployment. A tenant can have different size and\n configurations from other tenants, even a different\n storage class.\n
\n
\n To get started, \n {\n navigate(\"/tenants/add\");\n }}\n >\n Create a Tenant.\n \n
\n }\n />\n
\n \n )}\n \n )}\n \n \n \n );\n};\n\nexport default ListTenants;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\nexport interface ISizeBarItem {\n value: number;\n itemName: string;\n color: string;\n}\n\nexport interface IUsageBar {\n totalValue: number;\n sizeItems: ISizeBarItem[];\n bgColor?: string;\n}\n\nconst UsageBar = ({\n totalValue,\n sizeItems,\n bgColor = \"#ededed\",\n}: IUsageBar) => {\n return (\n \n {sizeItems.map((sizeElement, index) => {\n const itemPercentage = (sizeElement.value * 100) / totalValue;\n return (\n \n );\n })}\n \n );\n};\n\nexport default UsageBar;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Cell, Pie, PieChart } from \"recharts\";\nimport { CapacityValue, CapacityValues } from \"./types\";\nimport { niceBytesInt } from \"../../../../common/utils\";\nimport { CircleIcon } from \"mds\";\nimport UsageBar, { ISizeBarItem } from \"../../Common/UsageBar/UsageBar\";\n\ninterface ITenantCapacity {\n totalCapacity: number;\n usedSpaceVariants: CapacityValues[];\n statusClass: string;\n render?: \"pie\" | \"bar\";\n}\n\nconst TenantCapacity = ({\n totalCapacity,\n usedSpaceVariants,\n statusClass,\n render = \"pie\",\n}: ITenantCapacity) => {\n const colors = [\n \"#8dacd3\",\n \"#bca1ea\",\n \"#92e8d2\",\n \"#efc9ac\",\n \"#97f274\",\n \"#f7d291\",\n \"#71ACCB\",\n \"#f28282\",\n \"#e28cc1\",\n \"#2781B0\",\n ];\n\n const BGColor = \"#ededed\";\n\n const totalUsedSpace = usedSpaceVariants.reduce((acc, currValue) => {\n return acc + currValue.value;\n }, 0);\n\n const emptySpace = totalCapacity - totalUsedSpace;\n\n let tiersList: CapacityValue[] = [];\n\n const standardTier = usedSpaceVariants.find(\n (tier) => tier.variant === \"STANDARD\",\n ) || {\n value: 0,\n variant: \"empty\",\n };\n\n if (usedSpaceVariants.length > 10) {\n const totalUsedByTiers = totalUsedSpace - standardTier.value;\n\n tiersList = [\n { value: totalUsedByTiers, color: \"#2781B0\", label: \"Total Tiers Space\" },\n ];\n } else {\n tiersList = usedSpaceVariants\n .filter((variant) => variant.variant !== \"STANDARD\")\n .map((variant, index) => {\n return {\n value: variant.value,\n color: colors[index],\n label: `Tier - ${variant.variant}`,\n };\n });\n }\n\n let standardTierColor = \"#07193E\";\n\n const usedPercentage = (standardTier.value * 100) / totalCapacity;\n\n if (usedPercentage >= 90) {\n standardTierColor = \"#C83B51\";\n } else if (usedPercentage >= 75) {\n standardTierColor = \"#FFAB0F\";\n }\n\n const plotValues: CapacityValue[] = [\n {\n value: standardTier.value,\n color: standardTierColor,\n label: \"Used Space by Tenant\",\n },\n ...tiersList,\n {\n value: emptySpace,\n color: render === \"bar\" ? BGColor : \"transparent\",\n label: \"Empty Space\",\n },\n ];\n\n if (render === \"bar\") {\n const plotValuesForUsageBar: ISizeBarItem[] = plotValues.map((plotVal) => {\n return {\n value: plotVal.value,\n color: plotVal.color,\n itemName: plotVal.label,\n };\n });\n\n return (\n
\n \n
\n );\n }\n\n return (\n
\n \n \n
\n \n {!isNaN(totalUsedSpace) ? niceBytesInt(totalUsedSpace) : \"N/A\"}\n \n
\n \n \n \n {plotValues.map((entry, index) => (\n \n ))}\n \n \n
\n \n );\n};\n\nexport default TenantCapacity;\n"],"names":["withStyles","theme","createStyles","root","padding","margin","border","backgroundColor","textDecoration","cursor","fontSize","color","palette","info","main","fontFamily","_ref","classes","children","rest","_objectWithoutProperties","_excluded","_jsx","_objectSpread","className","WrappedComponent","fallback","arguments","length","undefined","props","Suspense","tooltip","_ref$errorProps","errorProps","placement","Tooltip","title","cloneElement","label","value","unit","_ref$variant","variant","_jsxs","style","textAlign","fontWeight","Fragment","whiteSpace","useStyles","makeStyles","redState","error","width","height","float","marginRight","yellowState","warning","greenState","success","greyState","tenantItem","marginBottom","titleContainer","display","justifyContent","namespaceLabel","borderRadius","status","tenant","dispatch","useAppDispatch","navigate","useNavigate","raw","capacity","used","localUse","tieredUse","capacity_raw","parts","niceBytes","concat","split","capacity_usage","niceBytesInt","spaceVariants","tiers","_tenant$tiers","_tenant$tiers2","map","itemTenant","size","name","internalUsage","filter","type","reduce","sum","tieredUsage","partsInternal","id","onClick","setTenantName","namespace","getTenantAsync","Grid","container","item","xs","sx","marginTop","TenantCapacity","totalCapacity","usedSpaceVariants","statusClass","health_status","healthStatusToClass","alignItems","InformationItem","pool_count","paddingLeft","currentState","justifyItems","DrivesIcon","paddingTop","itemStatusMap","rowRenderFunction","totalItems","defaultHeight","RenderItemLine","_ref2","index","InfiniteLoader","isItemLoaded","loadMoreItems","startIndex","stopIndex","itemCount","_ref3","onItemsRendered","ref","AutoSizer","_ref4","List","itemSize","searchField","adornment","_ref$placeholder","placeholder","onChange","_ref$adornmentPositio","adornmentPosition","overrideClass","inputProps","_defineProperty","disableUnderline","InputAdornment","position","SearchIcon","TextField","InputProps","e","target","CredentialsPrompt","withSuspense","React","_useState","useState","_useState2","_slicedToArray","isLoading","setIsLoading","_useState3","_useState4","filterTenants","setFilterTenants","_useState5","_useState6","records","setRecords","_useState7","_useState8","showNewCredentials","setShowNewCredentials","_useState9","_useState10","createdAccount","setCreatedAccount","_useState11","_useState12","sortValue","setSortValue","filteredRecords","b","indexOf","sort","a","useEffect","api","tenants","listAllTenants","then","res","data","resTenants","catch","err","setErrorSnackMessage","newServiceAccount","open","closeModal","entity","PageHeaderWrapper","middleComponent","SearchBox","val","actions","TooltipWrapper","Button","icon","RefreshIcon","AddIcon","PageLayout","LinearProgress","maxWidth","flexDirection","SelectWrapper","options","VirtualizedList","TenantListItem","alignContent","HelpBox","iconComponent","TenantsIcon","help","AButton","totalValue","sizeItems","_ref$bgColor","bgColor","transitionDuration","overflow","sizeElement","itemPercentage","toString","_ref$render","render","colors","BGColor","totalUsedSpace","acc","currValue","emptySpace","tiersList","standardTier","find","tier","standardTierColor","usedPercentage","plotValues","_toConsumableArray","plotValuesForUsageBar","plotVal","itemName","UsageBar","right","top","zIndex","CircleIcon","left","transform","isNaN","PieChart","Pie","cx","cy","dataKey","outerRadius","innerRadius","fill","isAnimationActive","stroke","entry","Cell"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/33.b83df7a5.chunk.js b/web-app/build/static/js/33.b83df7a5.chunk.js new file mode 100644 index 00000000000..e8cbeb9edbe --- /dev/null +++ b/web-app/build/static/js/33.b83df7a5.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[33],{81806:(e,t,a)=>{a.d(t,{Z:()=>l});a(72791);var n=a(11135),s=a(25787),i=a(80184);const l=(0,s.Z)((e=>(0,n.Z)({root:{padding:0,margin:0,border:0,backgroundColor:"transparent",textDecoration:"underline",cursor:"pointer",fontSize:"inherit",color:e.palette.info.main,fontFamily:"Inter, sans-serif"}})))((e=>{let{classes:t,children:a,...n}=e;return(0,i.jsx)("button",{...n,className:t.root,children:a})}))},75578:(e,t,a)=>{a.d(t,{Z:()=>i});var n=a(72791),s=a(80184);const i=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(a){return(0,s.jsx)(n.Suspense,{fallback:t,children:(0,s.jsx)(e,{...a})})}}},27454:(e,t,a)=>{a.d(t,{Z:()=>l});var n=a(72791),s=a(96040),i=a(80184);const l=e=>{let{tooltip:t,children:a,errorProps:l=null,placement:r}=e;return(0,i.jsx)(s.Z,{title:t,placement:r,children:(0,i.jsx)("span",{children:l?(0,n.cloneElement)(a,{...l}):a})})}},76033:(e,t,a)=>{a.r(t),a.d(t,{default:()=>E});var n=a(72791),s=a(75952),i=a(61889),l=a(57482),r=a(57689),c=a(17238),o=a(82295),d=a(45248),u=a(80184);const h=e=>{let{label:t,value:a,unit:s,variant:i="normal"}=e;return(0,u.jsxs)("div",{style:{margin:"0px 20px"},children:[(0,u.jsxs)("div",{style:{textAlign:"center"},children:[(0,u.jsx)("span",{style:{fontSize:18,color:"normal"===i?"#000":"#999",fontWeight:400},children:a}),s&&(0,u.jsxs)(n.Fragment,{children:[" ",(0,u.jsx)("span",{style:{fontSize:12,color:"#8F9090",fontWeight:"bold"},children:s})]})]}),(0,u.jsx)("div",{style:{textAlign:"center",color:"normal"===i?"#767676":"#bababa",fontSize:12,whiteSpace:"nowrap"},children:t})]})};var x=a(74815),p=a(41320);const m=(0,a(72455).Z)((e=>({redState:{color:e.palette.error.main,"& .min-icon":{width:16,height:16,float:"left",marginRight:4}},yellowState:{color:e.palette.warning.main,"& .min-icon":{width:16,height:16,float:"left",marginRight:4}},greenState:{color:e.palette.success.main,"& .min-icon":{width:16,height:16,float:"left",marginRight:4}},greyState:{color:"grey","& .min-icon":{width:16,height:16,float:"left",marginRight:4}},tenantItem:{border:"1px solid #EAEAEA",marginBottom:16,padding:"15px 30px","&:hover":{backgroundColor:"#FAFAFA",cursor:"pointer"}},titleContainer:{display:"flex",justifyContent:"space-between",width:"100%"},title:{fontSize:18,fontWeight:"bold"},namespaceLabel:{display:"inline-flex",backgroundColor:"#EAEDEF",borderRadius:2,padding:"4px 8px",fontSize:10,marginRight:20},status:{fontSize:12,color:"#8F9090"}}))),g=e=>{let{tenant:t}=e;const a=(0,p.TL)(),l=(0,r.s0)(),g=m();let v={value:"n/a",unit:""},f={value:"n/a",unit:""},j={value:"n/a",unit:""},y={value:"n/a",unit:""},b={value:"n/a",unit:""};if(t.capacity_raw){const e=(0,d.ae)("".concat(t.capacity_raw),!0).split(" ");v.value=e[0],v.unit=e[1]}if(t.capacity){const e=(0,d.ae)("".concat(t.capacity),!0).split(" ");f.value=e[0],f.unit=e[1]}if(t.capacity_usage){const e=(0,d.l5)(t.capacity_usage,!0).split(" ");j.value=e[0],j.unit=e[1]}let S=[];if(t.tiers&&0!==t.tiers.length){var C,Z;S=null===(C=t.tiers)||void 0===C?void 0:C.map((e=>({value:e.size,variant:e.name})));let e=null===(Z=t.tiers)||void 0===Z?void 0:Z.filter((e=>"internal"===e.type)).reduce(((e,t)=>e+t.size),0),a=t.tiers.filter((e=>"internal"!==e.type)).reduce(((e,t)=>e+t.size),0);const n=(0,d.l5)(a,!0).split(" ");b.value=n[0],b.unit=n[1];const s=(0,d.l5)(e,!0).split(" ");y.value=s[0],y.unit=s[1]}else S=[{value:t.capacity_usage||0,variant:"STANDARD"}];return(0,u.jsx)(n.Fragment,{children:(0,u.jsx)("div",{className:g.tenantItem,id:"list-tenant-".concat(t.name),onClick:()=>{a((0,c.V7)({name:t.name,namespace:t.namespace})),a((0,o.v)()),l("/namespaces/".concat(t.namespace,"/tenants/").concat(t.name,"/summary"))},children:(0,u.jsxs)(i.ZP,{container:!0,children:[(0,u.jsxs)(i.ZP,{item:!0,xs:12,className:g.titleContainer,children:[(0,u.jsx)("div",{className:g.title,children:(0,u.jsx)("span",{children:t.name})}),(0,u.jsx)("div",{children:(0,u.jsxs)("span",{className:g.namespaceLabel,children:["Namespace:\xa0",t.namespace]})})]}),(0,u.jsx)(i.ZP,{item:!0,xs:12,sx:{marginTop:2},children:(0,u.jsxs)(i.ZP,{container:!0,children:[(0,u.jsx)(i.ZP,{item:!0,xs:2,children:(0,u.jsx)(x.Z,{totalCapacity:t.capacity||0,usedSpaceVariants:S,statusClass:(e=>{switch(e){case"red":return g.redState;case"yellow":return g.yellowState;case"green":return g.greenState;default:return g.greyState}})(t.health_status)})}),(0,u.jsxs)(i.ZP,{item:!0,xs:!0,children:[(0,u.jsxs)(i.ZP,{item:!0,xs:!0,sx:{display:"flex",justifyContent:"flex-start",alignItems:"center",marginTop:"10px"},children:[(0,u.jsx)(h,{label:"Raw Capacity",value:v.value,unit:v.unit}),(0,u.jsx)(h,{label:"Usable Capacity",value:f.value,unit:f.unit}),(0,u.jsx)(h,{label:"Pools",value:"".concat(t.pool_count),variant:"faded"})]}),(0,u.jsx)(i.ZP,{item:!0,xs:12,sx:{paddingLeft:"20px",marginTop:"15px"},children:(0,u.jsxs)("span",{className:g.status,children:[(0,u.jsx)("strong",{children:"State:"})," ",t.currentState]})})]}),(0,u.jsx)(i.ZP,{item:!0,xs:3,children:(0,u.jsx)(n.Fragment,{children:(0,u.jsxs)(i.ZP,{container:!0,children:[(0,u.jsxs)(i.ZP,{item:!0,xs:2,textAlign:"center",justifyContent:"center",justifyItems:"center",children:[(0,u.jsx)(s.FU8,{style:{width:25,color:"rgb(91,91,91)"}}),(0,u.jsx)("div",{style:{color:"rgb(118, 118, 118)",fontSize:12,fontWeight:"400"},children:"Usage"})]}),(0,u.jsx)(i.ZP,{item:!0,xs:1}),(0,u.jsxs)(i.ZP,{item:!0,style:{paddingTop:8},children:[(!t.tiers||0===t.tiers.length)&&(0,u.jsxs)("div",{style:{fontSize:14,fontWeight:400},children:[(0,u.jsxs)("span",{style:{color:"rgb(62,62,62)"},children:["Internal:"," "]})," ","".concat(j.value," ").concat(j.unit)]}),t.tiers&&t.tiers.length>0&&(0,u.jsxs)(n.Fragment,{children:[(0,u.jsxs)("div",{style:{fontSize:14,fontWeight:400},children:[(0,u.jsxs)("span",{style:{color:"rgb(62,62,62)"},children:["Internal:"," "]})," ","".concat(y.value," ").concat(y.unit)]}),(0,u.jsxs)("div",{style:{fontSize:14,fontWeight:400},children:[(0,u.jsxs)("span",{style:{color:"rgb(62,62,62)"},children:["Tiered:"," "]})," ","".concat(b.value," ").concat(b.unit)]})]})]})]})})})]})})]})})})};var v=a(81806),f=a(75578),j=a(22338),y=a(79762),b=a(36355);let S={};const C=e=>{let{rowRenderFunction:t,totalItems:a,defaultHeight:s}=e;const i=e=>{let{index:a,style:n}=e;return(0,u.jsx)("div",{style:n,children:t(a)})};return(0,u.jsx)(n.Fragment,{children:(0,u.jsx)(y.Z,{isItemLoaded:e=>!!S[e],loadMoreItems:(e,t)=>{for(let a=e;a<=t;a++)S[a]=1;for(let a=e;a<=t;a++)S[a]=2},itemCount:a,children:e=>{let{onItemsRendered:t,ref:n}=e;return(0,u.jsx)(b.qj,{children:e=>{let{width:l,height:r}=e;return(0,u.jsx)(j.t7,{itemSize:s||220,height:r,itemCount:a,width:l,ref:n,onItemsRendered:t,children:i})}})}})})};var Z=a(63466),w=a(27391),A=a(25787),F=a(11135),_=a(23814);const z=(0,A.Z)((e=>(0,F.Z)({searchField:{..._.qg.searchField},adornment:{}})))((e=>{let{placeholder:t="",classes:a,onChange:n,adornmentPosition:i="end",overrideClass:l,value:r}=e;const c={disableUnderline:!0,["".concat(i,"Adornment")]:(0,u.jsx)(Z.Z,{position:i,className:a.adornment,children:(0,u.jsx)(s.W1M,{})})};return(0,u.jsx)(w.Z,{placeholder:t,className:l||a.searchField,id:"search-resource",label:"",InputProps:c,onChange:e=>{n(e.target.value)},variant:"standard",value:r})}));var T=a(74794),P=a(87995),R=a(90673),I=a(27454),k=a(47974),N=a(79626);const D=(0,f.Z)(n.lazy((()=>a.e(798).then(a.bind(a,37798))))),E=()=>{const e=(0,p.TL)(),t=(0,r.s0)(),[a,c]=(0,n.useState)(!1),[o,d]=(0,n.useState)(""),[h,x]=(0,n.useState)([]),[m,f]=(0,n.useState)(!1),[j,y]=(0,n.useState)(null),[b,S]=(0,n.useState)("name"),Z=h.filter((e=>""===o||e.name.indexOf(o)>=0));Z.sort(((e,t)=>{switch(b){case"capacity":return e.capacity&&t.capacity?e.capacity>t.capacity?1:e.capacityt.capacity_usage?1:e.capacity_usaget.name?1:e.name{if(a){(()=>{N.h.tenants.listAllTenants().then((e=>{var t;if(!e.data)return void c(!1);let a=null!==(t=e.data.tenants)&&void 0!==t?t:[];x(a),c(!1)})).catch((t=>{e((0,P.Ih)(t)),c(!1)}))})()}}),[a,e]),(0,n.useEffect)((()=>{c(!0)}),[]);return(0,u.jsxs)(n.Fragment,{children:[m&&(0,u.jsx)(D,{newServiceAccount:j,open:m,closeModal:()=>{f(!1),y(null)},entity:"Tenant"}),(0,u.jsx)(k.Z,{label:"Tenants",middleComponent:(0,u.jsx)(z,{placeholder:"Filter Tenants",onChange:e=>{d(e)},value:o}),actions:(0,u.jsxs)(i.ZP,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:[(0,u.jsx)(I.Z,{tooltip:"Refresh Tenant List",children:(0,u.jsx)(s.zxk,{id:"refresh-tenant-list",onClick:()=>{c(!0)},icon:(0,u.jsx)(s.DuK,{}),variant:"regular"})}),(0,u.jsx)(I.Z,{tooltip:"Create Tenant",children:(0,u.jsx)(s.zxk,{id:"create-tenant",label:"Create Tenant",onClick:()=>{t("/tenants/add")},icon:(0,u.jsx)(s.dtP,{}),variant:"callAction"})})]})}),(0,u.jsx)(T.Z,{children:(0,u.jsxs)(i.ZP,{item:!0,xs:12,style:{height:"calc(100vh - 195px)"},children:[a&&(0,u.jsx)(l.Z,{}),!a&&(0,u.jsxs)(n.Fragment,{children:[0!==Z.length&&(0,u.jsxs)(n.Fragment,{children:[(0,u.jsx)(i.ZP,{item:!0,xs:12,style:{display:"flex",justifyContent:"flex-end",marginBottom:10},children:(0,u.jsxs)("div",{style:{maxWidth:200,width:"95%",display:"flex",flexDirection:"row",alignItems:"center"},children:[(0,u.jsx)("span",{style:{whiteSpace:"nowrap",fontSize:14,color:"#838383",fontWeight:"bold",marginRight:10},children:"Sort by"}),(0,u.jsx)(R.Z,{id:"sort-by",label:"",value:b,onChange:e=>{S(e.target.value)},name:"sort-by",options:[{label:"Name",value:"name"},{label:"Capacity",value:"capacity"},{label:"Usage",value:"usage"},{label:"Active Status",value:"active_status"},{label:"Failing Status",value:"failing_status"}]})]})}),(0,u.jsx)(C,{rowRenderFunction:e=>{const t=Z[e]||null;return t?(0,u.jsx)(g,{tenant:t}):null},totalItems:Z.length})]}),0===Z.length&&(0,u.jsx)(i.ZP,{container:!0,justifyContent:"center",alignContent:"center",alignItems:"center",children:(0,u.jsx)(i.ZP,{item:!0,xs:8,children:(0,u.jsx)(s.KfX,{iconComponent:(0,u.jsx)(s.zb0,{}),title:"Tenants",help:(0,u.jsxs)(n.Fragment,{children:["Tenant is the logical structure to represent a MinIO deployment. A tenant can have different size and configurations from other tenants, even a different storage class.",(0,u.jsx)("br",{}),(0,u.jsx)("br",{}),"To get started,\xa0",(0,u.jsx)(v.Z,{onClick:()=>{t("/tenants/add")},children:"Create a Tenant."})]})})})})]})]})})]})}},74815:(e,t,a)=>{a.d(t,{Z:()=>d});a(72791);var n=a(2600),s=a(65390),i=a(41048),l=a(45248),r=a(75952),c=a(80184);const o=e=>{let{totalValue:t,sizeItems:a,bgColor:n="#ededed"}=e;return(0,c.jsx)("div",{style:{width:"100%",height:12,backgroundColor:n,borderRadius:30,display:"flex",transitionDuration:"0.3s",overflow:"hidden"},children:a.map(((e,a)=>{const n=100*e.value/t;return(0,c.jsx)("div",{style:{width:"".concat(n,"%"),height:"100%",backgroundColor:e.color,transitionDuration:"0.3s"}},"itemSize-".concat(a.toString()))}))})},d=e=>{let{totalCapacity:t,usedSpaceVariants:a,statusClass:d,render:u="pie"}=e;const h=["#8dacd3","#bca1ea","#92e8d2","#efc9ac","#97f274","#f7d291","#71ACCB","#f28282","#e28cc1","#2781B0"],x="#ededed",p=a.reduce(((e,t)=>e+t.value),0),m=t-p;let g=[];const v=a.find((e=>"STANDARD"===e.variant))||{value:0,variant:"empty"};if(a.length>10){g=[{value:p-v.value,color:"#2781B0",label:"Total Tiers Space"}]}else g=a.filter((e=>"STANDARD"!==e.variant)).map(((e,t)=>({value:e.value,color:h[t],label:"Tier - ".concat(e.variant)})));let f="#07193E";const j=100*v.value/t;j>=90?f="#C83B51":j>=75&&(f="#FFAB0F");const y=[{value:v.value,color:f,label:"Used Space by Tenant"},...g,{value:m,color:"bar"===u?x:"transparent",label:"Empty Space"}];if("bar"===u){const e=y.map((e=>({value:e.value,color:e.color,itemName:e.label})));return(0,c.jsx)("div",{style:{width:"100%",marginBottom:15},children:(0,c.jsx)(o,{totalValue:t,sizeItems:e,bgColor:x})})}return(0,c.jsxs)("div",{style:{position:"relative",width:110,height:110},children:[(0,c.jsx)("div",{style:{position:"absolute",right:-5,top:15,zIndex:400},className:d,children:(0,c.jsx)(r.J$M,{style:{border:"#fff 2px solid",borderRadius:"100%",width:20,height:20}})}),(0,c.jsx)("span",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",fontWeight:"bold",color:"#000",fontSize:11},children:isNaN(p)?"N/A":(0,l.l5)(p)}),(0,c.jsx)("div",{children:(0,c.jsxs)(n.u,{width:110,height:110,children:[(0,c.jsx)(s.b,{data:[{value:100}],cx:"50%",cy:"50%",dataKey:"value",outerRadius:50,innerRadius:40,fill:x,isAnimationActive:!1,stroke:"none"}),(0,c.jsx)(s.b,{data:y,cx:"50%",cy:"50%",dataKey:"value",outerRadius:50,innerRadius:40,children:y.map(((e,t)=>(0,c.jsx)(i.b,{fill:e.color,stroke:"none"},"cellCapacity-".concat(t))))})]})})]})}}}]); +//# sourceMappingURL=33.b83df7a5.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/33.b83df7a5.chunk.js.map b/web-app/build/static/js/33.b83df7a5.chunk.js.map new file mode 100644 index 00000000000..b3b67716575 --- /dev/null +++ b/web-app/build/static/js/33.b83df7a5.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/33.b83df7a5.chunk.js","mappings":"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","sources":["screens/Console/Common/AButton/AButton.tsx","screens/Console/Common/Components/withSuspense.tsx","screens/Console/Common/TooltipWrapper/TooltipWrapper.tsx","screens/Console/Tenants/ListTenants/InformationItem.tsx","screens/Console/Tenants/ListTenants/TenantListItem.tsx","screens/Console/Common/VirtualizedList/VirtualizedList.tsx","screens/Console/Common/SearchBox.tsx","screens/Console/Tenants/ListTenants/ListTenants.tsx","screens/Console/Common/UsageBar/UsageBar.tsx","screens/Console/Tenants/ListTenants/TenantCapacity.tsx"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IconButtonProps } from \"@mui/material\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n padding: 0,\n margin: 0,\n border: 0,\n backgroundColor: \"transparent\",\n textDecoration: \"underline\",\n cursor: \"pointer\",\n fontSize: \"inherit\",\n color: theme.palette.info.main,\n fontFamily: \"Inter, sans-serif\",\n },\n });\n\ninterface IAButton extends IconButtonProps {\n classes: any;\n children: any;\n}\n\nconst AButton = ({ classes, children, ...rest }: IAButton) => {\n return (\n \n );\n};\n\nexport default withStyles(styles)(AButton);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { cloneElement } from \"react\";\nimport { Tooltip } from \"@mui/material\";\n\ninterface ITooltipWrapperProps {\n tooltip: string;\n children: any;\n errorProps?: any;\n placement?:\n | \"bottom-end\"\n | \"bottom-start\"\n | \"bottom\"\n | \"left-end\"\n | \"left-start\"\n | \"left\"\n | \"right-end\"\n | \"right-start\"\n | \"right\"\n | \"top-end\"\n | \"top-start\"\n | \"top\";\n}\n\nconst TooltipWrapper = ({\n tooltip,\n children,\n errorProps = null,\n placement,\n}: ITooltipWrapperProps) => {\n return (\n \n \n {errorProps ? cloneElement(children, { ...errorProps }) : children}\n \n \n );\n};\n\nexport default TooltipWrapper;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\n\ninterface IInformationItemProps {\n label: string;\n value: string;\n unit?: string;\n variant?: \"normal\" | \"faded\";\n}\n\nconst InformationItem = ({\n label,\n value,\n unit,\n variant = \"normal\",\n}: IInformationItemProps) => {\n return (\n

\n
\n \n {value}\n \n {unit && (\n \n {\" \"}\n \n {unit}\n \n \n )}\n
\n \n {label}\n
\n \n );\n};\n\nexport default InformationItem;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\n\nimport { useNavigate } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport { CapacityValues, ValueUnit } from \"./types\";\nimport { setTenantName } from \"../tenantsSlice\";\nimport { getTenantAsync } from \"../thunks/tenantDetailsAsync\";\nimport { DrivesIcon } from \"mds\";\nimport { niceBytes, niceBytesInt } from \"../../../../common/utils\";\nimport Grid from \"@mui/material/Grid\";\nimport InformationItem from \"./InformationItem\";\nimport TenantCapacity from \"./TenantCapacity\";\nimport { useAppDispatch } from \"../../../../store\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { TenantList } from \"../../../../api/operatorApi\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n redState: {\n color: theme.palette.error.main,\n \"& .min-icon\": {\n width: 16,\n height: 16,\n float: \"left\",\n marginRight: 4,\n },\n },\n yellowState: {\n color: theme.palette.warning.main,\n \"& .min-icon\": {\n width: 16,\n height: 16,\n float: \"left\",\n marginRight: 4,\n },\n },\n greenState: {\n color: theme.palette.success.main,\n \"& .min-icon\": {\n width: 16,\n height: 16,\n float: \"left\",\n marginRight: 4,\n },\n },\n greyState: {\n color: \"grey\",\n \"& .min-icon\": {\n width: 16,\n height: 16,\n float: \"left\",\n marginRight: 4,\n },\n },\n tenantItem: {\n border: \"1px solid #EAEAEA\",\n marginBottom: 16,\n padding: \"15px 30px\",\n \"&:hover\": {\n backgroundColor: \"#FAFAFA\",\n cursor: \"pointer\",\n },\n },\n titleContainer: {\n display: \"flex\",\n justifyContent: \"space-between\",\n width: \"100%\",\n },\n title: {\n fontSize: 18,\n fontWeight: \"bold\",\n },\n namespaceLabel: {\n display: \"inline-flex\",\n backgroundColor: \"#EAEDEF\",\n borderRadius: 2,\n padding: \"4px 8px\",\n fontSize: 10,\n marginRight: 20,\n },\n status: {\n fontSize: 12,\n color: \"#8F9090\",\n },\n}));\n\nconst TenantListItem = ({ tenant }: { tenant: TenantList }) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const classes = useStyles();\n\n const healthStatusToClass = (health_status: string) => {\n switch (health_status) {\n case \"red\":\n return classes.redState;\n case \"yellow\":\n return classes.yellowState;\n case \"green\":\n return classes.greenState;\n default:\n return classes.greyState;\n }\n };\n\n let raw: ValueUnit = { value: \"n/a\", unit: \"\" };\n let capacity: ValueUnit = { value: \"n/a\", unit: \"\" };\n let used: ValueUnit = { value: \"n/a\", unit: \"\" };\n let localUse: ValueUnit = { value: \"n/a\", unit: \"\" };\n let tieredUse: ValueUnit = { value: \"n/a\", unit: \"\" };\n\n if (tenant.capacity_raw) {\n const b = niceBytes(`${tenant.capacity_raw}`, true);\n const parts = b.split(\" \");\n raw.value = parts[0];\n raw.unit = parts[1];\n }\n if (tenant.capacity) {\n const b = niceBytes(`${tenant.capacity}`, true);\n const parts = b.split(\" \");\n capacity.value = parts[0];\n capacity.unit = parts[1];\n }\n if (tenant.capacity_usage) {\n const b = niceBytesInt(tenant.capacity_usage, true);\n const parts = b.split(\" \");\n used.value = parts[0];\n used.unit = parts[1];\n }\n\n let spaceVariants: CapacityValues[] = [];\n if (!tenant.tiers || tenant.tiers.length === 0) {\n spaceVariants = [\n { value: tenant.capacity_usage || 0, variant: \"STANDARD\" },\n ];\n } else {\n spaceVariants = tenant.tiers?.map((itemTenant) => {\n return { value: itemTenant.size!, variant: itemTenant.name! };\n });\n let internalUsage = tenant.tiers\n ?.filter((itemTenant) => {\n return itemTenant.type === \"internal\";\n })\n .reduce((sum, itemTenant) => sum + itemTenant.size!, 0);\n let tieredUsage = tenant.tiers\n .filter((itemTenant) => {\n return itemTenant.type !== \"internal\";\n })\n .reduce((sum, itemTenant) => sum + itemTenant.size!, 0);\n\n const t = niceBytesInt(tieredUsage, true);\n const parts = t.split(\" \");\n tieredUse.value = parts[0];\n tieredUse.unit = parts[1];\n\n const is = niceBytesInt(internalUsage, true);\n const partsInternal = is.split(\" \");\n localUse.value = partsInternal[0];\n localUse.unit = partsInternal[1];\n }\n\n const openTenantDetails = () => {\n dispatch(\n setTenantName({\n name: tenant.name!,\n namespace: tenant.namespace!,\n }),\n );\n dispatch(getTenantAsync());\n navigate(`/namespaces/${tenant.namespace}/tenants/${tenant.name}/summary`);\n };\n\n return (\n \n \n \n \n
\n {tenant.name}\n
\n
\n \n Namespace: {tenant.namespace}\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n State: {tenant.currentState}\n \n \n \n \n \n \n \n \n \n Usage\n \n \n \n \n {(!tenant.tiers || tenant.tiers.length === 0) && (\n \n \n Internal:{\" \"}\n {\" \"}\n {`${used.value} ${used.unit}`}\n \n )}\n\n {tenant.tiers && tenant.tiers.length > 0 && (\n \n \n \n Internal:{\" \"}\n {\" \"}\n {`${localUse.value} ${localUse.unit}`}\n \n \n \n Tiered:{\" \"}\n {\" \"}\n {`${tieredUse.value} ${tieredUse.unit}`}\n \n \n )}\n \n \n \n \n
\n \n \n \n
\n );\n};\n\nexport default TenantListItem;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, ReactElement } from \"react\";\nimport { FixedSizeList as List } from \"react-window\";\nimport InfiniteLoader from \"react-window-infinite-loader\";\nimport { AutoSizer } from \"react-virtualized\";\n\ninterface IVirtualizedList {\n rowRenderFunction: (index: number) => ReactElement | null;\n totalItems: number;\n defaultHeight?: number;\n}\n\nlet itemStatusMap: any = {};\nconst LOADING = 1;\nconst LOADED = 2;\n\nconst VirtualizedList = ({\n rowRenderFunction,\n totalItems,\n defaultHeight,\n}: IVirtualizedList) => {\n const isItemLoaded = (index: any) => !!itemStatusMap[index];\n\n const loadMoreItems = (startIndex: number, stopIndex: number) => {\n for (let index = startIndex; index <= stopIndex; index++) {\n itemStatusMap[index] = LOADING;\n }\n\n for (let index = startIndex; index <= stopIndex; index++) {\n itemStatusMap[index] = LOADED;\n }\n };\n\n const RenderItemLine = ({ index, style }: any) => {\n return
{rowRenderFunction(index)}
;\n };\n\n return (\n \n \n {({ onItemsRendered, ref }) => (\n // @ts-ignore\n \n {({ width, height }) => {\n return (\n \n {RenderItemLine}\n \n );\n }}\n \n )}\n \n \n );\n};\n\nexport default VirtualizedList;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport { SearchIcon } from \"mds\";\nimport TextField from \"@mui/material/TextField\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { searchField } from \"./FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n searchField: {\n ...searchField.searchField,\n },\n adornment: {},\n });\n\ntype SearchBoxProps = {\n placeholder?: string;\n value: string;\n classes: any;\n onChange: (value: string) => void;\n adornmentPosition?: \"start\" | \"end\";\n overrideClass?: any;\n};\n\nconst SearchBox = ({\n placeholder = \"\",\n classes,\n onChange,\n adornmentPosition = \"end\",\n overrideClass,\n value,\n}: SearchBoxProps) => {\n const inputProps = {\n disableUnderline: true,\n [`${adornmentPosition}Adornment`]: (\n \n \n \n ),\n };\n return (\n {\n onChange(e.target.value);\n }}\n variant=\"standard\"\n value={value}\n />\n );\n};\n\nexport default withStyles(styles)(SearchBox);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { AddIcon, Button, HelpBox, RefreshIcon, TenantsIcon } from \"mds\";\nimport Grid from \"@mui/material/Grid\";\nimport { LinearProgress, SelectChangeEvent } from \"@mui/material\";\nimport { NewServiceAccount } from \"../../Common/CredentialsPrompt/types\";\nimport TenantListItem from \"./TenantListItem\";\nimport AButton from \"../../Common/AButton/AButton\";\n\nimport withSuspense from \"../../Common/Components/withSuspense\";\nimport VirtualizedList from \"../../Common/VirtualizedList/VirtualizedList\";\nimport SearchBox from \"../../Common/SearchBox\";\nimport PageLayout from \"../../Common/Layout/PageLayout\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport SelectWrapper from \"../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useAppDispatch } from \"../../../../store\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport { api } from \"../../../../api\";\nimport {\n Error,\n HttpResponse,\n ListTenantsResponse,\n TenantList,\n} from \"../../../../api/operatorApi\";\n\nconst CredentialsPrompt = withSuspense(\n React.lazy(() => import(\"../../Common/CredentialsPrompt/CredentialsPrompt\")),\n);\n\nconst ListTenants = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [isLoading, setIsLoading] = useState(false);\n const [filterTenants, setFilterTenants] = useState(\"\");\n const [records, setRecords] = useState([]);\n const [showNewCredentials, setShowNewCredentials] = useState(false);\n const [createdAccount, setCreatedAccount] =\n useState(null);\n const [sortValue, setSortValue] = useState(\"name\");\n\n const closeCredentialsModal = () => {\n setShowNewCredentials(false);\n setCreatedAccount(null);\n };\n\n const filteredRecords = records.filter((b: any) => {\n if (filterTenants === \"\") {\n return true;\n } else {\n if (b.name.indexOf(filterTenants) >= 0) {\n return true;\n } else {\n return false;\n }\n }\n });\n\n filteredRecords.sort((a, b) => {\n switch (sortValue) {\n case \"capacity\":\n if (!a.capacity || !b.capacity) {\n return 0;\n }\n\n if (a.capacity > b.capacity) {\n return 1;\n }\n\n if (a.capacity < b.capacity) {\n return -1;\n }\n\n return 0;\n case \"usage\":\n if (!a.capacity_usage || !b.capacity_usage) {\n return 0;\n }\n\n if (a.capacity_usage > b.capacity_usage) {\n return 1;\n }\n\n if (a.capacity_usage < b.capacity_usage) {\n return -1;\n }\n\n return 0;\n case \"active_status\":\n if (a.health_status === \"red\" && b.health_status !== \"red\") {\n return 1;\n }\n\n if (a.health_status !== \"red\" && b.health_status === \"red\") {\n return -1;\n }\n\n return 0;\n case \"failing_status\":\n if (a.health_status === \"green\" && b.health_status !== \"green\") {\n return 1;\n }\n\n if (a.health_status !== \"green\" && b.health_status === \"green\") {\n return -1;\n }\n\n return 0;\n default:\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n return 0;\n }\n });\n\n useEffect(() => {\n if (isLoading) {\n const fetchRecords = () => {\n api.tenants\n .listAllTenants()\n .then((res: HttpResponse) => {\n if (!res.data) {\n setIsLoading(false);\n return;\n }\n let resTenants: TenantList[] =\n (res.data.tenants as TenantList[]) ?? [];\n\n setRecords(resTenants);\n setIsLoading(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(err));\n setIsLoading(false);\n });\n };\n fetchRecords();\n }\n }, [isLoading, dispatch]);\n\n useEffect(() => {\n setIsLoading(true);\n }, []);\n\n const renderItemLine = (index: number) => {\n const tenant = filteredRecords[index] || null;\n\n if (tenant) {\n return ;\n }\n\n return null;\n };\n\n return (\n \n {showNewCredentials && (\n {\n closeCredentialsModal();\n }}\n entity=\"Tenant\"\n />\n )}\n {\n setFilterTenants(val);\n }}\n value={filterTenants}\n />\n }\n actions={\n \n \n {\n setIsLoading(true);\n }}\n icon={}\n variant={\"regular\"}\n />\n \n \n {\n navigate(\"/tenants/add\");\n }}\n icon={}\n variant={\"callAction\"}\n />\n \n \n }\n />\n \n \n {isLoading && }\n {!isLoading && (\n \n {filteredRecords.length !== 0 && (\n \n \n \n \n Sort by\n \n ) => {\n setSortValue(e.target.value as string);\n }}\n name={\"sort-by\"}\n options={[\n { label: \"Name\", value: \"name\" },\n {\n label: \"Capacity\",\n value: \"capacity\",\n },\n {\n label: \"Usage\",\n value: \"usage\",\n },\n {\n label: \"Active Status\",\n value: \"active_status\",\n },\n {\n label: \"Failing Status\",\n value: \"failing_status\",\n },\n ]}\n />\n \n \n \n \n )}\n {filteredRecords.length === 0 && (\n \n \n }\n title={\"Tenants\"}\n help={\n \n Tenant is the logical structure to represent a MinIO\n deployment. A tenant can have different size and\n configurations from other tenants, even a different\n storage class.\n
\n
\n To get started, \n {\n navigate(\"/tenants/add\");\n }}\n >\n Create a Tenant.\n \n
\n }\n />\n
\n \n )}\n \n )}\n \n \n \n );\n};\n\nexport default ListTenants;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\nexport interface ISizeBarItem {\n value: number;\n itemName: string;\n color: string;\n}\n\nexport interface IUsageBar {\n totalValue: number;\n sizeItems: ISizeBarItem[];\n bgColor?: string;\n}\n\nconst UsageBar = ({\n totalValue,\n sizeItems,\n bgColor = \"#ededed\",\n}: IUsageBar) => {\n return (\n \n {sizeItems.map((sizeElement, index) => {\n const itemPercentage = (sizeElement.value * 100) / totalValue;\n return (\n \n );\n })}\n \n );\n};\n\nexport default UsageBar;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Cell, Pie, PieChart } from \"recharts\";\nimport { CapacityValue, CapacityValues } from \"./types\";\nimport { niceBytesInt } from \"../../../../common/utils\";\nimport { CircleIcon } from \"mds\";\nimport UsageBar, { ISizeBarItem } from \"../../Common/UsageBar/UsageBar\";\n\ninterface ITenantCapacity {\n totalCapacity: number;\n usedSpaceVariants: CapacityValues[];\n statusClass: string;\n render?: \"pie\" | \"bar\";\n}\n\nconst TenantCapacity = ({\n totalCapacity,\n usedSpaceVariants,\n statusClass,\n render = \"pie\",\n}: ITenantCapacity) => {\n const colors = [\n \"#8dacd3\",\n \"#bca1ea\",\n \"#92e8d2\",\n \"#efc9ac\",\n \"#97f274\",\n \"#f7d291\",\n \"#71ACCB\",\n \"#f28282\",\n \"#e28cc1\",\n \"#2781B0\",\n ];\n\n const BGColor = \"#ededed\";\n\n const totalUsedSpace = usedSpaceVariants.reduce((acc, currValue) => {\n return acc + currValue.value;\n }, 0);\n\n const emptySpace = totalCapacity - totalUsedSpace;\n\n let tiersList: CapacityValue[] = [];\n\n const standardTier = usedSpaceVariants.find(\n (tier) => tier.variant === \"STANDARD\",\n ) || {\n value: 0,\n variant: \"empty\",\n };\n\n if (usedSpaceVariants.length > 10) {\n const totalUsedByTiers = totalUsedSpace - standardTier.value;\n\n tiersList = [\n { value: totalUsedByTiers, color: \"#2781B0\", label: \"Total Tiers Space\" },\n ];\n } else {\n tiersList = usedSpaceVariants\n .filter((variant) => variant.variant !== \"STANDARD\")\n .map((variant, index) => {\n return {\n value: variant.value,\n color: colors[index],\n label: `Tier - ${variant.variant}`,\n };\n });\n }\n\n let standardTierColor = \"#07193E\";\n\n const usedPercentage = (standardTier.value * 100) / totalCapacity;\n\n if (usedPercentage >= 90) {\n standardTierColor = \"#C83B51\";\n } else if (usedPercentage >= 75) {\n standardTierColor = \"#FFAB0F\";\n }\n\n const plotValues: CapacityValue[] = [\n {\n value: standardTier.value,\n color: standardTierColor,\n label: \"Used Space by Tenant\",\n },\n ...tiersList,\n {\n value: emptySpace,\n color: render === \"bar\" ? BGColor : \"transparent\",\n label: \"Empty Space\",\n },\n ];\n\n if (render === \"bar\") {\n const plotValuesForUsageBar: ISizeBarItem[] = plotValues.map((plotVal) => {\n return {\n value: plotVal.value,\n color: plotVal.color,\n itemName: plotVal.label,\n };\n });\n\n return (\n
\n \n
\n );\n }\n\n return (\n
\n \n \n
\n \n {!isNaN(totalUsedSpace) ? niceBytesInt(totalUsedSpace) : \"N/A\"}\n \n
\n \n \n \n {plotValues.map((entry, index) => (\n \n ))}\n \n \n
\n \n );\n};\n\nexport default TenantCapacity;\n"],"names":["withStyles","theme","createStyles","root","padding","margin","border","backgroundColor","textDecoration","cursor","fontSize","color","palette","info","main","fontFamily","_ref","classes","children","rest","_jsx","className","WrappedComponent","fallback","arguments","length","undefined","props","Suspense","tooltip","errorProps","placement","Tooltip","title","cloneElement","label","value","unit","variant","_jsxs","style","textAlign","fontWeight","Fragment","whiteSpace","useStyles","makeStyles","redState","error","width","height","float","marginRight","yellowState","warning","greenState","success","greyState","tenantItem","marginBottom","titleContainer","display","justifyContent","namespaceLabel","borderRadius","status","tenant","dispatch","useAppDispatch","navigate","useNavigate","raw","capacity","used","localUse","tieredUse","capacity_raw","parts","niceBytes","concat","split","capacity_usage","niceBytesInt","spaceVariants","tiers","_tenant$tiers","_tenant$tiers2","map","itemTenant","size","name","internalUsage","filter","type","reduce","sum","tieredUsage","partsInternal","id","onClick","openTenantDetails","setTenantName","namespace","getTenantAsync","Grid","container","item","xs","sx","marginTop","TenantCapacity","totalCapacity","usedSpaceVariants","statusClass","health_status","healthStatusToClass","alignItems","InformationItem","pool_count","paddingLeft","currentState","justifyItems","DrivesIcon","paddingTop","itemStatusMap","rowRenderFunction","totalItems","defaultHeight","RenderItemLine","_ref2","index","InfiniteLoader","isItemLoaded","loadMoreItems","startIndex","stopIndex","itemCount","_ref3","onItemsRendered","ref","AutoSizer","_ref4","List","itemSize","searchField","adornment","placeholder","onChange","adornmentPosition","overrideClass","inputProps","disableUnderline","InputAdornment","position","SearchIcon","TextField","InputProps","e","target","CredentialsPrompt","withSuspense","React","ListTenants","isLoading","setIsLoading","useState","filterTenants","setFilterTenants","records","setRecords","showNewCredentials","setShowNewCredentials","createdAccount","setCreatedAccount","sortValue","setSortValue","filteredRecords","b","indexOf","sort","a","useEffect","fetchRecords","api","tenants","listAllTenants","then","res","data","resTenants","catch","err","setErrorSnackMessage","newServiceAccount","open","closeModal","entity","PageHeaderWrapper","middleComponent","SearchBox","val","actions","TooltipWrapper","Button","icon","RefreshIcon","AddIcon","PageLayout","LinearProgress","maxWidth","flexDirection","SelectWrapper","options","VirtualizedList","TenantListItem","alignContent","HelpBox","iconComponent","TenantsIcon","help","AButton","totalValue","sizeItems","bgColor","transitionDuration","overflow","sizeElement","itemPercentage","toString","render","colors","BGColor","totalUsedSpace","acc","currValue","emptySpace","tiersList","standardTier","find","tier","standardTierColor","usedPercentage","plotValues","plotValuesForUsageBar","plotVal","itemName","UsageBar","right","top","zIndex","CircleIcon","left","transform","isNaN","PieChart","Pie","cx","cy","dataKey","outerRadius","innerRadius","fill","isAnimationActive","stroke","entry","Cell"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/332.2e44c6de.chunk.js b/web-app/build/static/js/332.2e44c6de.chunk.js new file mode 100644 index 00000000000..5df21b99603 --- /dev/null +++ b/web-app/build/static/js/332.2e44c6de.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[332],{54639:(e,t,i)=>{i.d(t,{Z:()=>C});var n=i(72791),s=i(26181),a=i.n(s),r=i(61889),o=i(30829),c=i(96040),l=i(13400),d=i(99663),m=i(86711),x=i(11135),u=i(25787),h=i(23814);var p=i(75952),f=i(22512),j=i(80184);const C=(0,u.Z)((e=>(0,x.Z)({...h.YI,...h.Hr,valueString:{maxWidth:350,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:2},fileInputField:{margin:"13px 0","@media (max-width: 900px)":{flexFlow:"column"}},...h.bV,inputLabel:{...h.YI.inputLabel,fontWeight:"normal"},textBoxContainer:{...h.YI.textBoxContainer,maxWidth:"100%",border:"1px solid #eaeaea",paddingLeft:"15px"}})))((e=>{let{label:t,classes:i,onChange:s,id:x,name:u,disabled:h=!1,tooltip:C="",required:g,error:y="",accept:b="",value:v=""}=e;const[Z,A]=(0,n.useState)(!1);return(0,j.jsx)(n.Fragment,{children:(0,j.jsxs)(r.ZP,{item:!0,xs:12,className:"".concat(i.fileInputField," ").concat(i.fieldBottom," ").concat(i.fieldContainer," ").concat(""!==y?i.errorInField:""),children:[""!==t&&(0,j.jsxs)(o.Z,{htmlFor:x,className:"".concat(""!==y?i.fieldLabelError:""," ").concat(i.inputLabel),children:[(0,j.jsxs)("span",{children:[t,g?"*":""]}),""!==C&&(0,j.jsx)("div",{className:i.tooltipContainer,children:(0,j.jsx)(c.Z,{title:C,placement:"top-start",children:(0,j.jsx)("div",{className:i.tooltip,children:(0,j.jsx)(p.byK,{})})})})]}),Z||""===v?(0,j.jsxs)("div",{className:i.textBoxContainer,children:[(0,j.jsx)("input",{type:"file",name:u,onChange:e=>{const t=a()(e,"target.files[0].name","");((e,t)=>{const i=e.target.files[0],n=new FileReader;n.readAsDataURL(i),n.onload=()=>{const e=n.result;if(e){const i=e.toString().split("base64,");2===i.length&&t(i[1])}}})(e,(e=>{s(e,t)}))},accept:b,required:g,disabled:h,className:i.fileInputField}),""!==v&&(0,j.jsx)(l.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:()=>{A(!1)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,j.jsx)(m.Z,{})}),""!==y&&(0,j.jsx)(f.Z,{errorMessage:y})]}):(0,j.jsxs)("div",{className:i.fileReselect,children:[(0,j.jsx)("div",{className:i.valueString,children:v}),(0,j.jsx)(l.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:()=>{A(!0)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,j.jsx)(d.Z,{})})]})]})})}))},13871:(e,t,i)=>{i.d(t,{Z:()=>a});var n,s=i(30168);const a=(0,i(26088).Z)("hr")(n||(n=(0,s.Z)(["\n border-top: 0;\n border-left: 0;\n border-right: 0;\n border-color: #999999;\n background-color: transparent;\n"])))},80666:(e,t,i)=>{i.d(t,{Z:()=>b});i(72791);var n=i(99779),s=i(11135),a=i(25787),r=i(90983),o=i(81918),c=i(89164),l=i(61889),d=i(20890),m=i(64554),x=i(94721),u=i(90493),h=i(84852),p=i(20653),f=i(49900),j=i(52502),C=i(69212),g=i(75952),y=i(80184);const b=(0,a.Z)((e=>(0,s.Z)({certificateIcon:{float:"left",paddingTop:"5px !important",paddingRight:"10px !important"},certificateInfo:{float:"right"},certificateWrapper:{height:"auto",margin:5,border:"1px solid #E2E2E2",userSelect:"text",borderRadius:4,"& h6":{fontWeight:"bold"},"& div":{padding:0}},certificateExpiry:{color:"#616161",display:"flex",alignItems:"center",flexWrap:"wrap",marginBottom:5,"& .label":{fontWeight:"bold"}},certificateDomains:{color:"#616161","& .label":{fontWeight:"bold"}},certificatesList:{border:"1px solid #E2E2E2",borderRadius:4,color:"#616161",textTransform:"lowercase",overflowY:"scroll",maxHeight:145,marginBottom:10},certificatesListItem:{padding:"0px 16px",borderBottom:"1px solid #E2E2E2","& div":{minWidth:0},"& svg":{fontSize:12,marginRight:10,opacity:.5},"& span":{fontSize:12}},certificateExpiring:{color:"orange","& .label":{fontWeight:"bold"}},certificateExpired:{color:"red","& .label":{fontWeight:"bold"}}})))((e=>{let{classes:t,certificateInfo:i,onDelete:s=(()=>{})}=e;const a=i.domains||[],b=n.ou.fromISO(i.expiry),v=n.ou.utc();let Z=0,A="",N="";if(b){let e=b.diff(v);Z=e.as("days"),A=e.minus(n.nL.fromObject({days:1})).shiftTo("days").toHuman({listStyle:"long",maximumFractionDigits:0}),Z>=10&&Z<30&&(N=t.certificateExpiring),Z<10&&(N=t.certificateExpired,Z<2&&(A=e.minus(n.nL.fromObject({minutes:1})).shiftTo("hours","minutes").toHuman({listStyle:"long",maximumFractionDigits:0}),e.as("minutes")<=1&&(A="EXPIRED")))}return(0,y.jsx)(o.Z,{variant:"outlined",color:"primary",className:t.certificateWrapper,label:(0,y.jsxs)(c.Z,{children:[(0,y.jsx)(l.ZP,{item:!0,xs:1,className:t.certificateIcon,children:(0,y.jsx)(g.Baz,{})}),(0,y.jsxs)(l.ZP,{item:!0,xs:11,className:t.certificateInfo,children:[(0,y.jsx)(d.Z,{variant:"subtitle1",display:"block",gutterBottom:!0,children:i.name}),(0,y.jsxs)(m.Z,{className:t.certificateExpiry,children:[(0,y.jsx)(j.Z,{color:"inherit",fontSize:"small"}),"\xa0",(0,y.jsx)("span",{className:"label",children:"Expiry:\xa0"}),(0,y.jsx)("span",{children:b.toFormat("yyyy/MM/dd")})]}),(0,y.jsxs)(m.Z,{className:t.certificateExpiry,children:[(0,y.jsx)(C.Z,{color:"inherit",fontSize:"small"}),"\xa0",(0,y.jsx)("span",{className:"label",children:"Expires in:\xa0"}),(0,y.jsx)("span",{className:N,children:A})]}),(0,y.jsx)(x.Z,{}),(0,y.jsx)("br",{}),(0,y.jsx)(m.Z,{className:t.certificateDomains,children:(0,y.jsx)("span",{className:"label",children:"".concat(a.length," Domain (s):")})}),(0,y.jsx)(u.Z,{className:t.certificatesList,children:a.map(((e,i)=>(0,y.jsxs)(h.ZP,{className:t.certificatesListItem,children:[(0,y.jsx)(p.Z,{children:(0,y.jsx)(r.Z,{})}),(0,y.jsx)(f.Z,{primary:e})]},"".concat(e,"-").concat(i))))})]})]}),onDelete:s},i.name)}))},88070:(e,t,i)=>{i.d(t,{Z:()=>l});i(72791);var n=i(78687),s=i(64554),a=i(75952),r=i(57689),o=i(80184);const c=e=>{let{icon:t,description:i}=e;return(0,o.jsxs)(s.Z,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[t," ",(0,o.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:i})]})},l=()=>{const e=(0,r.UO)(),t=e.tenantName||"",i=e.tenantNamespace||"",l=(0,n.v9)((e=>""!==i?i:""!==e.createTenant.fields.nameTenant.namespace?e.createTenant.fields.nameTenant.namespace:"")),d=(0,n.v9)((e=>""!==t?t:""!==e.createTenant.fields.nameTenant.tenantName?e.createTenant.fields.nameTenant.tenantName:""));return(0,o.jsx)(s.Z,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px",marginTop:{xs:"0px"}},children:(0,o.jsxs)(s.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,o.jsx)(c,{icon:(0,o.jsx)(a.Baz,{}),description:"TLS Certificates Warning"}),(0,o.jsxs)(s.Z,{sx:{fontSize:"14px",marginBottom:"15px"},children:["Automatic certificate generation is not enabled.",(0,o.jsx)("br",{}),(0,o.jsx)("br",{}),"If you wish to continue only with ",(0,o.jsx)("b",{children:"custom certificates"})," make sure they are valid for the following internode hostnames, i.e.:",(0,o.jsx)("br",{}),(0,o.jsx)("br",{}),(0,o.jsxs)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:["minio.",l,(0,o.jsx)("br",{}),"minio.",l,".svc",(0,o.jsx)("br",{}),"minio.",l,".svc.",(0,o.jsx)("br",{}),"*.",d,"-hl.",l,".svc.",(0,o.jsx)("br",{}),"*.",l,".svc."]}),(0,o.jsx)("br",{}),"Replace ",(0,o.jsx)("em",{children:""}),","," ",(0,o.jsx)("em",{children:""})," and",(0,o.jsx)("em",{children:""})," with the actual values for your MinIO tenant.",(0,o.jsx)("br",{}),(0,o.jsx)("br",{}),"You can learn more at our"," ",(0,o.jsx)("a",{href:"https://min.io/docs/minio/kubernetes/upstream/operations/network-encryption.html?ref=op#id5",target:"_blank",rel:"noopener",children:"documentation"}),"."]})]})})}},62332:(e,t,i)=>{i.r(t),i.d(t,{default:()=>k});var n=i(72791),s=i(78687),a=i(51691),r=i(13400),o=i(75952),c=i(11135),l=i(25787),d=i(61889),m=i(23814),x=i(41320),u=i(87995),h=i(37516),p=i(54639),f=i(81207),j=i(40306),C=i(80666),g=i(21435),y=i(90673),b=i(80184);const v=(0,l.Z)((e=>(0,c.Z)({configSectionItem:{marginRight:15,marginBottom:15,"& .multiContainer":{border:"1px solid red"}}})))((e=>{let{classes:t,runAsGroup:i,runAsUser:a,fsGroup:r,fsGroupChangePolicy:o,runAsNonRoot:c,setRunAsUser:l,setRunAsGroup:m,setFSGroup:x,setRunAsNonRoot:u,setFSGroupChangePolicy:p}=e;const f=(0,s.I0)();return(0,b.jsx)(n.Fragment,{children:(0,b.jsxs)("fieldset",{className:"".concat(t.fieldGroup," ").concat(t.fieldSpaceTop," "),children:[(0,b.jsx)("legend",{className:t.descriptionText,children:"Security Context"}),(0,b.jsx)(d.ZP,{item:!0,xs:12,children:(0,b.jsxs)("div",{className:"".concat(t.multiContainerStackNarrow," "),children:[(0,b.jsx)("div",{className:t.configSectionItem,children:(0,b.jsx)(g.Z,{type:"number",id:"securityContext_runAsUser",name:"securityContext_runAsUser",onChange:e=>{f(l(e.target.value))},label:"Run As User",value:a,required:!0,min:"0"})}),(0,b.jsx)("div",{className:t.configSectionItem,children:(0,b.jsx)(g.Z,{type:"number",id:"securityContext_runAsGroup",name:"securityContext_runAsGroup",onChange:e=>{f(m(e.target.value))},label:"Run As Group",value:i,required:!0,min:"0"})})]})}),(0,b.jsx)(d.ZP,{item:!0,xs:12,children:(0,b.jsxs)("div",{className:"".concat(t.multiContainerStackNarrow," "),children:[(0,b.jsx)("div",{className:t.configSectionItem,children:(0,b.jsx)(g.Z,{type:"number",id:"securityContext_fsGroup",name:"securityContext_fsGroup",onChange:e=>{f(x(e.target.value))},label:"FsGroup",value:r,required:!0,min:"0"})}),(0,b.jsx)("div",{className:t.configSectionItem,children:(0,b.jsx)(y.Z,{label:"FsGroupChangePolicy",id:"securityContext_fsGroupChangePolicy",name:"securityContext_fsGroupChangePolicy",onChange:e=>{f(p(e.target.value))},value:o,options:[{label:"Always",value:"Always"},{label:"OnRootMismatch",value:"OnRootMismatch"}]})})]})}),(0,b.jsx)(d.ZP,{item:!0,xs:12,children:(0,b.jsx)("div",{className:t.multiContainer,children:(0,b.jsx)(h.Z,{value:"SecurityContextRunAsNonRoot",id:"securityContext_runAsNonRoot",name:"securityContext_runAsNonRoot",checked:c,onChange:()=>{f(u(!c))},label:"Do not run as Root"})})})]})})}));var Z=i(1078),A=i(88070),N=i(13871);const S=(0,s.$j)((e=>({loadingTenant:e.tenants.loadingTenant,selectedTenant:e.tenants.currentTenant,tenant:e.tenants.tenantInfo})),null),k=(0,l.Z)((e=>(0,c.Z)({...m.oZ,...m.bK,minioCertificateRows:{display:"flex",alignItems:"center",justifyContent:"flex-start",borderBottom:"1px solid #EAEAEA","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1}},minioCACertsRow:{display:"flex",alignItems:"center",justifyContent:"flex-start",borderBottom:"1px solid #EAEAEA","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1,"& div label":{minWidth:50}}},rowActions:{display:"flex",justifyContent:"flex-end","@media (max-width: 900px)":{flex:1}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},loaderAlign:{textAlign:"center"},fileItem:{marginRight:10,display:"flex","& div label":{minWidth:50},"@media (max-width: 900px)":{flexFlow:"column"}},...m.Bz,...m.QV,...m.DF,...m.oO,...m.AK})))(S((e=>{let{classes:t}=e;const i=(0,x.TL)(),c=(0,s.v9)((e=>e.tenants.tenantInfo)),l=(0,s.v9)((e=>e.tenants.loadingTenant)),[m,g]=(0,n.useState)(!1),[y,S]=(0,n.useState)(!1),[k,w]=(0,n.useState)(!1),[R,P]=(0,n.useState)(!1),[T,I]=(0,n.useState)(!1),[F,E]=(0,n.useState)([]),[_,G]=(0,n.useState)([{id:Date.now().toString(),key:"",cert:"",encoded_key:"",encoded_cert:""}]),[B,L]=(0,n.useState)([{id:Date.now().toString(),key:"",cert:"",encoded_key:"",encoded_cert:""}]),[D,z]=(0,n.useState)([{id:Date.now().toString(),key:"",cert:"",encoded_key:"",encoded_cert:""}]),[O,W]=(0,n.useState)([]),[M,U]=(0,n.useState)([]),[K,H]=(0,n.useState)([]),q=(0,s.v9)((e=>e.editTenantSecurityContext.runAsGroup)),Y=(0,s.v9)((e=>e.editTenantSecurityContext.runAsUser)),V=(0,s.v9)((e=>e.editTenantSecurityContext.fsGroup)),Q=(0,s.v9)((e=>e.editTenantSecurityContext.runAsNonRoot)),X=(0,s.v9)((e=>e.editTenantSecurityContext.fsGroupChangePolicy)),$=(0,n.useCallback)((()=>{f.Z.invoke("GET","/api/v1/namespaces/".concat(null===c||void 0===c?void 0:c.namespace,"/tenants/").concat(null===c||void 0===c?void 0:c.name,"/security")).then((e=>{P(e.autoCert),w(e.autoCert),(e.customCertificates.minio||e.customCertificates.client||e.customCertificates.minioCAs)&&(I(!0),w(!0)),W(e.customCertificates.minio||[]),U(e.customCertificates.client||[]),H(e.customCertificates.minioCAs||[]),i((0,Z.Be)(e.securityContext.runAsGroup)),i((0,Z.wT)(e.securityContext.runAsUser)),i((0,Z.FP)(e.securityContext.fsGroup)),i((0,Z.vM)(e.securityContext.runAsNonRoot)),i((0,Z.rR)(e.securityContext.fsGroupChangePolicy))})).catch((e=>{i((0,u.Ih)(e))}))}),[c,i]);(0,n.useEffect)((()=>{c&&$()}),[c,$]);const J=e=>{E([...F,e.name]);const t=O.filter((t=>t.name!==e.name)),i=M.filter((t=>t.name!==e.name)),n=K.filter((t=>t.name!==e.name));W(t),U(i),H(n)},ee=(e,t,i,n,s)=>{let a=_,r=()=>{};switch(e){case"minio":a=_,r=G;break;case"client":a=B,r=L;break;case"minioCAs":a=D,r=z}r(a.map((e=>e.id===t?{...e,[i]:n,["encoded_".concat(i)]:s}:e)))},te=(e,t)=>{let i=_,n=()=>{};switch(e){case"minio":i=_,n=G;break;case"client":i=B,n=L;break;case"minioCAs":i=D,n=z}if(i.length>1){n(i.filter((e=>e.id!==t)))}},ie=e=>{let t=_,i=()=>{};switch(e){case"minio":t=_,i=G;break;case"client":t=B,i=L;break;case"minioCAs":t=D,i=z}i([...t,{id:Date.now().toString(),key:"",cert:"",encoded_key:"",encoded_cert:""}])};return(0,b.jsxs)(n.Fragment,{children:[(0,b.jsx)(j.Z,{title:"Save and Restart",confirmText:"Restart",cancelText:"Cancel",titleIcon:(0,b.jsx)(o.EjK,{}),isLoading:m,onClose:()=>S(!1),isOpen:y,onConfirm:()=>{g(!0);let e={autoCert:R,customCertificates:{},securityContext:{runAsGroup:q,runAsUser:Y,runAsNonRoot:Q,fsGroup:V,fsGroupChangePolicy:X}};e.customCertificates=T?{secretsToBeDeleted:F,minioServerCertificates:_.map((e=>({crt:e.encoded_cert,key:e.encoded_key}))).filter((e=>e.crt&&e.key)),minioClientCertificates:B.map((e=>({crt:e.encoded_cert,key:e.encoded_key}))).filter((e=>e.crt&&e.key)),minioCAsCertificates:D.map((e=>e.encoded_cert)).filter((e=>e))}:{secretsToBeDeleted:[...O.map((e=>e.name)),...M.map((e=>e.name)),...K.map((e=>e.name))],minioServerCertificates:[],minioClientCertificates:[],minioCAsCertificates:[]},f.Z.invoke("POST","/api/v1/namespaces/".concat(null===c||void 0===c?void 0:c.namespace,"/tenants/").concat(null===c||void 0===c?void 0:c.name,"/security"),e).then((()=>{g(!1),S(!1),G([{cert:"",encoded_cert:"",encoded_key:"",id:Date.now().toString(),key:""}]),L([{cert:"",encoded_cert:"",encoded_key:"",id:Date.now().toString(),key:""}]),z([{cert:"",encoded_cert:"",encoded_key:"",id:Date.now().toString(),key:""}]),$()})).catch((e=>{i((0,u.Ih)(e)),g(!1)}))},confirmationContent:(0,b.jsx)(a.Z,{children:"Are you sure you want to save the changes and restart the service?"})}),l?(0,b.jsx)("div",{className:t.loaderAlign,children:(0,b.jsx)(o.aNw,{})}):(0,b.jsxs)(d.ZP,{container:!0,spacing:1,children:[(0,b.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,b.jsx)("h1",{className:t.sectionTitle,children:"Security"}),(0,b.jsx)(N.Z,{})]}),(0,b.jsxs)(d.ZP,{container:!0,spacing:1,children:[(0,b.jsx)(d.ZP,{item:!0,xs:12,children:(0,b.jsx)(h.Z,{value:"enableTLS",id:"enableTLS",name:"enableTLS",checked:k,onChange:e=>{const t=e.target.checked;w(t)},label:"TLS",description:"Securing all the traffic using TLS. This is required for Encryption Configuration"})}),k&&(0,b.jsxs)(n.Fragment,{children:[(0,b.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,b.jsx)(h.Z,{value:"enableAutoCert",id:"enableAutoCert",name:"enableAutoCert",checked:R,onChange:e=>{const t=e.target.checked;P(t)},label:"AutoCert",description:"The internode certificates will be generated and managed by MinIO Operator"})}),(0,b.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,b.jsx)(h.Z,{value:"enableCustomCerts",id:"enableCustomCerts",name:"enableCustomCerts",checked:T,onChange:e=>{const t=e.target.checked;I(t)},label:"Custom Certificates",description:"Certificates used to terminated TLS at MinIO"})}),T&&(0,b.jsxs)(n.Fragment,{children:[!R&&(0,b.jsx)(d.ZP,{item:!0,xs:12,children:(0,b.jsx)(A.Z,{})}),(0,b.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,b.jsx)("h5",{children:"MinIO Server Certificates"})}),(0,b.jsx)(d.ZP,{item:!0,xs:12,children:O.map((e=>(0,b.jsx)(C.Z,{certificateInfo:e,onDelete:()=>J(e)})))}),(0,b.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:_.map(((e,i)=>(0,b.jsxs)(d.ZP,{item:!0,xs:12,className:t.minioCertificateRows,children:[(0,b.jsxs)(d.ZP,{item:!0,xs:10,className:t.fileItem,children:[(0,b.jsx)(p.Z,{onChange:(t,i)=>ee("minio",e.id,"cert",i,t),accept:".cer,.crt,.cert,.pem",id:"tlsCert",name:"tlsCert",label:"Cert",value:e.cert}),(0,b.jsx)(p.Z,{onChange:(t,i)=>ee("minio",e.id,"key",i,t),accept:".key,.pem",id:"tlsKey",name:"tlsKey",label:"Key",value:e.key})]}),(0,b.jsxs)(d.ZP,{item:!0,xs:2,className:t.rowActions,children:[(0,b.jsx)("div",{className:t.overlayAction,children:(0,b.jsx)(r.Z,{size:"small",onClick:()=>ie("minio"),disabled:i!==_.length-1,children:(0,b.jsx)(o.dtP,{})})}),(0,b.jsx)("div",{className:t.overlayAction,children:(0,b.jsx)(r.Z,{size:"small",onClick:()=>te("minio",e.id),disabled:_.length<=1,children:(0,b.jsx)(o.HFL,{})})})]})]},e.id)))}),(0,b.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,b.jsx)("h5",{children:"MinIO Client Certificates"})}),(0,b.jsx)(d.ZP,{item:!0,xs:12,children:M.map((e=>(0,b.jsx)(C.Z,{certificateInfo:e,onDelete:()=>J(e)})))}),(0,b.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:B.map(((e,i)=>(0,b.jsxs)(d.ZP,{item:!0,xs:12,className:t.minioCertificateRows,children:[(0,b.jsxs)(d.ZP,{item:!0,xs:10,className:t.fileItem,children:[(0,b.jsx)(p.Z,{onChange:(t,i)=>ee("client",e.id,"cert",i,t),accept:".cer,.crt,.cert,.pem",id:"tlsCert",name:"tlsCert",label:"Cert",value:e.cert}),(0,b.jsx)(p.Z,{onChange:(t,i)=>ee("client",e.id,"key",i,t),accept:".key,.pem",id:"tlsKey",name:"tlsKey",label:"Key",value:e.key})]}),(0,b.jsxs)(d.ZP,{item:!0,xs:2,className:t.rowActions,children:[(0,b.jsx)("div",{className:t.overlayAction,children:(0,b.jsx)(r.Z,{size:"small",onClick:()=>ie("client"),disabled:i!==B.length-1,children:(0,b.jsx)(o.dtP,{})})}),(0,b.jsx)("div",{className:t.overlayAction,children:(0,b.jsx)(r.Z,{size:"small",onClick:()=>te("client",e.id),disabled:B.length<=1,children:(0,b.jsx)(o.HFL,{})})})]})]},e.id)))}),(0,b.jsx)(d.ZP,{item:!0,xs:12,children:(0,b.jsx)("h5",{children:"MinIO CA Certificates"})}),(0,b.jsx)(d.ZP,{item:!0,xs:12,children:K.map((e=>(0,b.jsx)(C.Z,{certificateInfo:e,onDelete:()=>J(e)})))}),(0,b.jsx)(d.ZP,{item:!0,xs:12,children:D.map(((e,i)=>(0,b.jsxs)(d.ZP,{item:!0,xs:12,className:t.minioCACertsRow,children:[(0,b.jsx)(d.ZP,{item:!0,xs:10,children:(0,b.jsx)(p.Z,{onChange:(t,i)=>ee("minioCAs",e.id,"cert",i,t),accept:".cer,.crt,.cert,.pem",id:"tlsCert",name:"tlsCert",label:"Cert",value:e.cert})}),(0,b.jsx)(d.ZP,{item:!0,xs:2,children:(0,b.jsxs)("div",{className:t.rowActions,children:[(0,b.jsx)("div",{className:t.overlayAction,children:(0,b.jsx)(r.Z,{size:"small",onClick:()=>ie("minioCAs"),disabled:i!==D.length-1,children:(0,b.jsx)(o.dtP,{})})}),(0,b.jsx)("div",{className:t.overlayAction,children:(0,b.jsx)(r.Z,{size:"small",onClick:()=>te("minioCAs",e.id),disabled:D.length<=1,children:(0,b.jsx)(o.HFL,{})})})]})})]},e.id)))})]})]}),(0,b.jsxs)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:[(0,b.jsx)("h1",{className:t.sectionTitle,children:"Security Context"}),(0,b.jsx)(N.Z,{})]}),(0,b.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,b.jsx)(v,{classes:t,runAsGroup:q,runAsUser:Y,fsGroup:V,runAsNonRoot:Q,fsGroupChangePolicy:X,setFSGroup:e=>i((0,Z.FP)(e)),setRunAsUser:e=>i((0,Z.wT)(e)),setRunAsGroup:e=>i((0,Z.Be)(e)),setRunAsNonRoot:e=>i((0,Z.vM)(e)),setFSGroupChangePolicy:e=>i((0,Z.rR)(e))})}),(0,b.jsx)(d.ZP,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:(0,b.jsx)(o.zxk,{id:"save-security",type:"submit",variant:"callAction",disabled:y||m,onClick:()=>S(!0),label:"Save"})})]})]})]})})))},22512:(e,t,i)=>{i.d(t,{Z:()=>c});var n=i(72791),s=i(20890),a=i(11135),r=i(25787),o=i(80184);const c=(0,r.Z)((e=>{var t;return(0,a.Z)({errorBlock:{color:(null===(t=e.palette)||void 0===t?void 0:t.error.main)||"#C83B51"}})}))((e=>{let{classes:t,errorMessage:i,withBreak:a=!0}=e;return(0,o.jsxs)(n.Fragment,{children:[a&&(0,o.jsx)("br",{}),(0,o.jsx)(s.Z,{component:"p",variant:"body1",className:t.errorBlock,children:i})]})}))}}]); +//# sourceMappingURL=332.2e44c6de.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/332.2e44c6de.chunk.js.map b/web-app/build/static/js/332.2e44c6de.chunk.js.map new file mode 100644 index 00000000000..2290fb5f110 --- /dev/null +++ b/web-app/build/static/js/332.2e44c6de.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/332.2e44c6de.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/FileSelector/FileSelector.tsx","screens/Console/Common/FormComponents/FileSelector/utils.ts","screens/Console/Common/FormHr.tsx","screens/Console/Common/TLSCertificate/TLSCertificate.tsx","screens/Console/Tenants/HelpBox/TLSHelpBox.tsx","screens/Console/Tenants/securityContextSelector.tsx","screens/Console/Tenants/TenantDetails/TenantSecurity.tsx","screens/shared/ErrorBlock.tsx"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport get from \"lodash/get\";\nimport { Grid, InputLabel, Tooltip } from \"@mui/material\";\nimport IconButton from \"@mui/material/IconButton\";\nimport AttachFileIcon from \"@mui/icons-material/AttachFile\";\nimport CancelIcon from \"@mui/icons-material/Cancel\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n fileInputStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { fileProcess } from \"./utils\";\nimport { HelpIcon } from \"mds\";\nimport ErrorBlock from \"../../../../shared/ErrorBlock\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: string, i: string) => void;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n required?: boolean;\n error?: string;\n accept?: string;\n value?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n valueString: {\n maxWidth: 350,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n marginTop: 2,\n },\n fileInputField: {\n margin: \"13px 0\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n ...fileInputStyles,\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n textBoxContainer: {\n ...fieldBasic.textBoxContainer,\n maxWidth: \"100%\",\n border: \"1px solid #eaeaea\",\n paddingLeft: \"15px\",\n },\n });\n\nconst FileSelector = ({\n label,\n classes,\n onChange,\n id,\n name,\n disabled = false,\n tooltip = \"\",\n required,\n error = \"\",\n accept = \"\",\n value = \"\",\n}: InputBoxProps) => {\n const [showFileSelector, setShowSelector] = useState(false);\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n {showFileSelector || value === \"\" ? (\n
\n {\n const fileName = get(e, \"target.files[0].name\", \"\");\n fileProcess(e, (data: any) => {\n onChange(data, fileName);\n });\n }}\n accept={accept}\n required={required}\n disabled={disabled}\n className={classes.fileInputField}\n />\n\n {value !== \"\" && (\n {\n setShowSelector(false);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n )}\n\n {error !== \"\" && }\n
\n ) : (\n
\n
{value}
\n {\n setShowSelector(true);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n
\n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(FileSelector);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const fileProcess = (evt: any, callback: any) => {\n const file = evt.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n // reader.readAsDataURL(file) output will be something like: data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSU\n // we care only about the actual base64 part (everything after \"data:application/x-x509-ca-cert;base64,\")\n const fileBase64 = reader.result;\n if (fileBase64) {\n const fileArray = fileBase64.toString().split(\"base64,\");\n\n if (fileArray.length === 2) {\n callback(fileArray[1]);\n }\n }\n };\n};\n","// This file is part of MinIO Operator\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport styled from \"@emotion/styled\";\n\nconst FormHr = styled(\"hr\")`\n border-top: 0;\n border-left: 0;\n border-right: 0;\n border-color: #999999;\n background-color: transparent;\n`;\n\nexport default FormHr;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { DateTime, Duration } from \"luxon\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { ICertificateInfo } from \"../../Tenants/types\";\nimport LanguageIcon from \"@mui/icons-material/Language\";\nimport Chip from \"@mui/material/Chip\";\nimport {\n Box,\n Container,\n Divider,\n Grid,\n List,\n ListItem,\n ListItemAvatar,\n ListItemText,\n Typography,\n} from \"@mui/material\";\nimport EventBusyIcon from \"@mui/icons-material/EventBusy\";\nimport AccessTimeIcon from \"@mui/icons-material/AccessTime\";\nimport { CertificateIcon } from \"mds\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n certificateIcon: {\n float: \"left\",\n paddingTop: \"5px !important\",\n paddingRight: \"10px !important\",\n },\n certificateInfo: { float: \"right\" },\n certificateWrapper: {\n height: \"auto\",\n margin: 5,\n border: \"1px solid #E2E2E2\",\n userSelect: \"text\",\n borderRadius: 4,\n \"& h6\": {\n fontWeight: \"bold\",\n },\n \"& div\": {\n padding: 0,\n },\n },\n certificateExpiry: {\n color: \"#616161\",\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n marginBottom: 5,\n \"& .label\": {\n fontWeight: \"bold\",\n },\n },\n certificateDomains: {\n color: \"#616161\",\n \"& .label\": {\n fontWeight: \"bold\",\n },\n },\n certificatesList: {\n border: \"1px solid #E2E2E2\",\n borderRadius: 4,\n color: \"#616161\",\n textTransform: \"lowercase\",\n overflowY: \"scroll\",\n maxHeight: 145,\n marginBottom: 10,\n },\n certificatesListItem: {\n padding: \"0px 16px\",\n borderBottom: \"1px solid #E2E2E2\",\n \"& div\": {\n minWidth: 0,\n },\n \"& svg\": {\n fontSize: 12,\n marginRight: 10,\n opacity: 0.5,\n },\n \"& span\": {\n fontSize: 12,\n },\n },\n certificateExpiring: {\n color: \"orange\",\n \"& .label\": {\n fontWeight: \"bold\",\n },\n },\n certificateExpired: {\n color: \"red\",\n \"& .label\": {\n fontWeight: \"bold\",\n },\n },\n });\n\ninterface ITLSCertificate {\n classes: any;\n certificateInfo: ICertificateInfo;\n onDelete: any;\n}\n\nconst TLSCertificate = ({\n classes,\n certificateInfo,\n onDelete = () => {},\n}: ITLSCertificate) => {\n const certificates = certificateInfo.domains || [];\n\n const expiry = DateTime.fromISO(certificateInfo.expiry);\n const now = DateTime.utc();\n // Expose error on Tenant if certificate is near expiration or expired\n let daysToExpiry: number = 0;\n let daysToExpiryHuman: string = \"\";\n let certificateExpiration: string = \"\";\n if (expiry) {\n let durationToExpiry = expiry.diff(now);\n daysToExpiry = durationToExpiry.as(\"days\");\n daysToExpiryHuman = durationToExpiry\n .minus(Duration.fromObject({ days: 1 }))\n .shiftTo(\"days\")\n .toHuman({ listStyle: \"long\", maximumFractionDigits: 0 });\n if (daysToExpiry >= 10 && daysToExpiry < 30) {\n certificateExpiration = classes.certificateExpiring;\n }\n if (daysToExpiry < 10) {\n certificateExpiration = classes.certificateExpired;\n if (daysToExpiry < 2) {\n daysToExpiryHuman = durationToExpiry\n .minus(Duration.fromObject({ minutes: 1 }))\n .shiftTo(\"hours\", \"minutes\")\n .toHuman({ listStyle: \"long\", maximumFractionDigits: 0 });\n if (durationToExpiry.as(\"minutes\") <= 1) {\n daysToExpiryHuman = \"EXPIRED\";\n }\n }\n }\n }\n\n return (\n \n \n \n \n \n \n {certificateInfo.name}\n \n \n \n  \n Expiry: \n {expiry.toFormat(\"yyyy/MM/dd\")}\n \n \n \n  \n Expires in: \n {daysToExpiryHuman}\n \n \n
\n \n {`${certificates.length} Domain (s):`}\n \n \n {certificates.map((dom, index) => (\n \n \n \n \n \n \n ))}\n \n
\n \n }\n onDelete={onDelete}\n />\n );\n};\n\nexport default withStyles(styles)(TLSCertificate);\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Box } from \"@mui/material\";\nimport { CertificateIcon } from \"mds\";\nimport { useParams } from \"react-router-dom\";\nimport { AppState } from \"../../../../store\";\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string;\n}) => {\n return (\n \n {icon}{\" \"}\n
\n {description}\n
\n \n );\n};\nconst TLSHelpBox = () => {\n const params = useParams();\n const tenantNameParam = params.tenantName || \"\";\n const tenantNamespaceParam = params.tenantNamespace || \"\";\n const namespace = useSelector((state: AppState) => {\n var defaultNamespace = \"\";\n if (tenantNamespaceParam !== \"\") {\n return tenantNamespaceParam;\n }\n if (state.createTenant.fields.nameTenant.namespace !== \"\") {\n return state.createTenant.fields.nameTenant.namespace;\n }\n return defaultNamespace;\n });\n\n const tenantName = useSelector((state: AppState) => {\n var defaultTenantName = \"\";\n if (tenantNameParam !== \"\") {\n return tenantNameParam;\n }\n\n if (state.createTenant.fields.nameTenant.tenantName !== \"\") {\n return state.createTenant.fields.nameTenant.tenantName;\n }\n return defaultTenantName;\n });\n\n return (\n \n \n }\n description={`TLS Certificates Warning`}\n />\n \n Automatic certificate generation is not enabled.\n
\n
\n If you wish to continue only with custom certificates make sure\n they are valid for the following internode hostnames, i.e.:\n
\n
\n \n minio.{namespace}\n
\n minio.{namespace}.svc\n
\n minio.{namespace}.svc.<cluster domain>\n
\n *.{tenantName}-hl.{namespace}.svc.<cluster domain>\n
\n *.{namespace}.svc.<cluster domain>\n \n
\n Replace <tenant-name>,{\" \"}\n <namespace> and\n <cluster domain> with the actual values for your\n MinIO tenant.\n
\n
\n You can learn more at our{\" \"}\n \n documentation\n \n .\n
\n \n \n );\n};\n\nexport default TLSHelpBox;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FormSwitchWrapper from \"../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport SelectWrapper from \"../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport { Grid, SelectChangeEvent } from \"@mui/material\";\nimport { useDispatch } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fsGroupChangePolicyType } from \"./types\";\n\ninterface IEditSecurityContextProps {\n classes: any;\n runAsUser: string;\n runAsGroup: string;\n fsGroup: string;\n fsGroupChangePolicy: fsGroupChangePolicyType;\n runAsNonRoot: boolean;\n setRunAsUser: any;\n setRunAsGroup: any;\n setFSGroup: any;\n setRunAsNonRoot: any;\n setFSGroupChangePolicy: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n configSectionItem: {\n marginRight: 15,\n marginBottom: 15,\n \"& .multiContainer\": {\n border: \"1px solid red\",\n },\n },\n });\n\nconst SecurityContextSelector = ({\n classes,\n runAsGroup,\n runAsUser,\n fsGroup,\n fsGroupChangePolicy,\n runAsNonRoot,\n setRunAsUser,\n setRunAsGroup,\n setFSGroup,\n setRunAsNonRoot,\n setFSGroupChangePolicy,\n}: IEditSecurityContextProps) => {\n const dispatch = useDispatch();\n return (\n \n
\n Security Context\n\n \n
\n
\n ) => {\n dispatch(setRunAsUser(e.target.value));\n }}\n label=\"Run As User\"\n value={runAsUser}\n required\n min=\"0\"\n />\n
\n
\n ) => {\n dispatch(setRunAsGroup(e.target.value));\n }}\n label=\"Run As Group\"\n value={runAsGroup}\n required\n min=\"0\"\n />\n
\n
\n
\n \n
\n
\n ) => {\n dispatch(setFSGroup(e.target.value));\n }}\n label=\"FsGroup\"\n value={fsGroup}\n required\n min=\"0\"\n />\n
\n\n
\n ) => {\n dispatch(setFSGroupChangePolicy(e.target.value));\n }}\n value={fsGroupChangePolicy}\n options={[\n {\n label: \"Always\",\n value: \"Always\",\n },\n {\n label: \"OnRootMismatch\",\n value: \"OnRootMismatch\",\n },\n ]}\n />\n
\n
\n
\n \n
\n {\n dispatch(setRunAsNonRoot(!runAsNonRoot));\n }}\n label={\"Do not run as Root\"}\n />\n
\n
\n
\n
\n );\n};\n\nexport default withStyles(styles)(SecurityContextSelector);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { connect, useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport { DialogContentText, IconButton } from \"@mui/material\";\nimport { AddIcon, Button, ConfirmModalIcon, Loader, RemoveIcon } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n fsGroupChangePolicyType,\n ICertificateInfo,\n ITenantSecurityResponse,\n} from \"../types\";\nimport {\n containerForHeader,\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n spacingUtils,\n tenantDetailsStyles,\n wizardCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\n\nimport { KeyPair } from \"../ListTenants/utils\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport FileSelector from \"../../Common/FormComponents/FileSelector/FileSelector\";\nimport api from \"../../../../common/api\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport TLSCertificate from \"../../Common/TLSCertificate/TLSCertificate\";\nimport SecurityContextSelector from \"../securityContextSelector\";\nimport {\n setFSGroup,\n setFSGroupChangePolicy,\n setRunAsGroup,\n setRunAsNonRoot,\n setRunAsUser,\n} from \"../tenantSecurityContextSlice\";\nimport TLSHelpBox from \"../HelpBox/TLSHelpBox\";\nimport FormHr from \"../../Common/FormHr\";\n\ninterface ITenantSecurity {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n ...spacingUtils,\n minioCertificateRows: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n borderBottom: \"1px solid #EAEAEA\",\n \"&:last-child\": {\n borderBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n flex: 1,\n },\n },\n minioCACertsRow: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n\n borderBottom: \"1px solid #EAEAEA\",\n \"&:last-child\": {\n borderBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n flex: 1,\n\n \"& div label\": {\n minWidth: 50,\n },\n },\n },\n rowActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n \"@media (max-width: 900px)\": {\n flex: 1,\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n loaderAlign: {\n textAlign: \"center\",\n },\n fileItem: {\n marginRight: 10,\n display: \"flex\",\n \"& div label\": {\n minWidth: 50,\n },\n\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n ...containerForHeader,\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst TenantSecurity = ({ classes }: ITenantSecurity) => {\n const dispatch = useAppDispatch();\n\n const tenant = useSelector((state: AppState) => state.tenants.tenantInfo);\n const loadingTenant = useSelector(\n (state: AppState) => state.tenants.loadingTenant,\n );\n\n const [isSending, setIsSending] = useState(false);\n const [dialogOpen, setDialogOpen] = useState(false);\n const [enableTLS, setEnableTLS] = useState(false);\n const [enableAutoCert, setEnableAutoCert] = useState(false);\n const [enableCustomCerts, setEnableCustomCerts] = useState(false);\n const [certificatesToBeRemoved, setCertificatesToBeRemoved] = useState<\n string[]\n >([]);\n // MinIO certificates\n const [minioServerCertificates, setMinioServerCertificates] = useState<\n KeyPair[]\n >([\n {\n id: Date.now().toString(),\n key: \"\",\n cert: \"\",\n encoded_key: \"\",\n encoded_cert: \"\",\n },\n ]);\n const [minioClientCertificates, setMinioClientCertificates] = useState<\n KeyPair[]\n >([\n {\n id: Date.now().toString(),\n key: \"\",\n cert: \"\",\n encoded_key: \"\",\n encoded_cert: \"\",\n },\n ]);\n const [minioCaCertificates, setMinioCaCertificates] = useState([\n {\n id: Date.now().toString(),\n key: \"\",\n cert: \"\",\n encoded_key: \"\",\n encoded_cert: \"\",\n },\n ]);\n const [minioServerCertificateSecrets, setMinioServerCertificateSecrets] =\n useState([]);\n const [minioClientCertificateSecrets, setMinioClientCertificateSecrets] =\n useState([]);\n const [minioTLSCaCertificateSecrets, setMinioTLSCaCertificateSecrets] =\n useState([]);\n\n const runAsGroup = useSelector(\n (state: AppState) => state.editTenantSecurityContext.runAsGroup,\n );\n const runAsUser = useSelector(\n (state: AppState) => state.editTenantSecurityContext.runAsUser,\n );\n const fsGroup = useSelector(\n (state: AppState) => state.editTenantSecurityContext.fsGroup,\n );\n const runAsNonRoot = useSelector(\n (state: AppState) => state.editTenantSecurityContext.runAsNonRoot,\n );\n const fsGroupChangePolicy = useSelector(\n (state: AppState) => state.editTenantSecurityContext.fsGroupChangePolicy,\n );\n\n const getTenantSecurityInfo = useCallback(() => {\n api\n .invoke(\n \"GET\",\n `/api/v1/namespaces/${tenant?.namespace}/tenants/${tenant?.name}/security`,\n )\n .then((res: ITenantSecurityResponse) => {\n setEnableAutoCert(res.autoCert);\n setEnableTLS(res.autoCert);\n if (\n res.customCertificates.minio ||\n res.customCertificates.client ||\n res.customCertificates.minioCAs\n ) {\n setEnableCustomCerts(true);\n setEnableTLS(true);\n }\n setMinioServerCertificateSecrets(res.customCertificates.minio || []);\n setMinioClientCertificateSecrets(res.customCertificates.client || []);\n setMinioTLSCaCertificateSecrets(res.customCertificates.minioCAs || []);\n dispatch(setRunAsGroup(res.securityContext.runAsGroup));\n dispatch(setRunAsUser(res.securityContext.runAsUser));\n dispatch(setFSGroup(res.securityContext.fsGroup!));\n dispatch(setRunAsNonRoot(res.securityContext.runAsNonRoot));\n dispatch(\n setFSGroupChangePolicy(\n res.securityContext.fsGroupChangePolicy as fsGroupChangePolicyType,\n ),\n );\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n });\n }, [tenant, dispatch]);\n\n useEffect(() => {\n if (tenant) {\n getTenantSecurityInfo();\n }\n }, [tenant, getTenantSecurityInfo]);\n\n const updateTenantSecurity = () => {\n setIsSending(true);\n let payload = {\n autoCert: enableAutoCert,\n customCertificates: {},\n securityContext: {\n runAsGroup: runAsGroup,\n runAsUser: runAsUser,\n runAsNonRoot: runAsNonRoot,\n fsGroup: fsGroup,\n fsGroupChangePolicy: fsGroupChangePolicy,\n },\n };\n if (enableCustomCerts) {\n payload[\"customCertificates\"] = {\n secretsToBeDeleted: certificatesToBeRemoved,\n minioServerCertificates: minioServerCertificates\n .map((keyPair: KeyPair) => ({\n crt: keyPair.encoded_cert,\n key: keyPair.encoded_key,\n }))\n .filter((cert: any) => cert.crt && cert.key),\n minioClientCertificates: minioClientCertificates\n .map((keyPair: KeyPair) => ({\n crt: keyPair.encoded_cert,\n key: keyPair.encoded_key,\n }))\n .filter((cert: any) => cert.crt && cert.key),\n minioCAsCertificates: minioCaCertificates\n .map((keyPair: KeyPair) => keyPair.encoded_cert)\n .filter((cert: any) => cert),\n };\n } else {\n payload[\"customCertificates\"] = {\n secretsToBeDeleted: [\n ...minioServerCertificateSecrets.map((cert) => cert.name),\n ...minioClientCertificateSecrets.map((cert) => cert.name),\n ...minioTLSCaCertificateSecrets.map((cert) => cert.name),\n ],\n minioServerCertificates: [],\n minioClientCertificates: [],\n minioCAsCertificates: [],\n };\n }\n api\n .invoke(\n \"POST\",\n `/api/v1/namespaces/${tenant?.namespace}/tenants/${tenant?.name}/security`,\n payload,\n )\n .then(() => {\n setIsSending(false);\n // Close confirmation modal\n setDialogOpen(false);\n // Refresh Information and reset forms\n setMinioServerCertificates([\n {\n cert: \"\",\n encoded_cert: \"\",\n encoded_key: \"\",\n id: Date.now().toString(),\n key: \"\",\n },\n ]);\n setMinioClientCertificates([\n {\n cert: \"\",\n encoded_cert: \"\",\n encoded_key: \"\",\n id: Date.now().toString(),\n key: \"\",\n },\n ]);\n setMinioCaCertificates([\n {\n cert: \"\",\n encoded_cert: \"\",\n encoded_key: \"\",\n id: Date.now().toString(),\n key: \"\",\n },\n ]);\n getTenantSecurityInfo();\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setIsSending(false);\n });\n };\n\n const removeCertificate = (certificateInfo: ICertificateInfo) => {\n // TLS certificate secrets can be referenced MinIO, Console or KES, we need to remove the secret from all list and update\n // the arrays\n // Add certificate to the global list of secrets to be removed\n setCertificatesToBeRemoved([\n ...certificatesToBeRemoved,\n certificateInfo.name,\n ]);\n\n // Update MinIO server TLS certificate secrets\n const updatedMinioServerCertificateSecrets =\n minioServerCertificateSecrets.filter(\n (certificateSecret) => certificateSecret.name !== certificateInfo.name,\n );\n // Update MinIO client TLS certificate secrets\n const updatedMinioClientCertificateSecrets =\n minioClientCertificateSecrets.filter(\n (certificateSecret) => certificateSecret.name !== certificateInfo.name,\n );\n const updatedMinIOTLSCaCertificateSecrets =\n minioTLSCaCertificateSecrets.filter(\n (certificateSecret) => certificateSecret.name !== certificateInfo.name,\n );\n setMinioServerCertificateSecrets(updatedMinioServerCertificateSecrets);\n setMinioClientCertificateSecrets(updatedMinioClientCertificateSecrets);\n setMinioTLSCaCertificateSecrets(updatedMinIOTLSCaCertificateSecrets);\n };\n\n const addFileToKeyPair = (\n type: string,\n id: string,\n key: string,\n fileName: string,\n value: string,\n ) => {\n let certificates = minioServerCertificates;\n let updateCertificates: any = () => {};\n\n switch (type) {\n case \"minio\": {\n certificates = minioServerCertificates;\n updateCertificates = setMinioServerCertificates;\n break;\n }\n case \"client\": {\n certificates = minioClientCertificates;\n updateCertificates = setMinioClientCertificates;\n break;\n }\n case \"minioCAs\": {\n certificates = minioCaCertificates;\n updateCertificates = setMinioCaCertificates;\n break;\n }\n default:\n }\n\n const NCertList = certificates.map((item: KeyPair) => {\n if (item.id === id) {\n return {\n ...item,\n [key]: fileName,\n [`encoded_${key}`]: value,\n };\n }\n return item;\n });\n updateCertificates(NCertList);\n };\n\n const deleteKeyPair = (type: string, id: string) => {\n let certificates = minioServerCertificates;\n let updateCertificates: any = () => {};\n\n switch (type) {\n case \"minio\": {\n certificates = minioServerCertificates;\n updateCertificates = setMinioServerCertificates;\n break;\n }\n case \"client\": {\n certificates = minioClientCertificates;\n updateCertificates = setMinioClientCertificates;\n break;\n }\n case \"minioCAs\": {\n certificates = minioCaCertificates;\n updateCertificates = setMinioCaCertificates;\n break;\n }\n default:\n }\n\n if (certificates.length > 1) {\n const cleanCertsList = certificates.filter(\n (item: KeyPair) => item.id !== id,\n );\n updateCertificates(cleanCertsList);\n }\n };\n\n const addKeyPair = (type: string) => {\n let certificates = minioServerCertificates;\n let updateCertificates: any = () => {};\n\n switch (type) {\n case \"minio\": {\n certificates = minioServerCertificates;\n updateCertificates = setMinioServerCertificates;\n break;\n }\n case \"client\": {\n certificates = minioClientCertificates;\n updateCertificates = setMinioClientCertificates;\n break;\n }\n case \"minioCAs\": {\n certificates = minioCaCertificates;\n updateCertificates = setMinioCaCertificates;\n break;\n }\n default:\n }\n const updatedCertificates = [\n ...certificates,\n {\n id: Date.now().toString(),\n key: \"\",\n cert: \"\",\n encoded_key: \"\",\n encoded_cert: \"\",\n },\n ];\n updateCertificates(updatedCertificates);\n };\n\n return (\n \n }\n isLoading={isSending}\n onClose={() => setDialogOpen(false)}\n isOpen={dialogOpen}\n onConfirm={updateTenantSecurity}\n confirmationContent={\n \n Are you sure you want to save the changes and restart the service?\n \n }\n />\n {loadingTenant ? (\n
\n \n
\n ) : (\n \n \n

Security

\n \n
\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n setEnableTLS(checked);\n }}\n label={\"TLS\"}\n description={\n \"Securing all the traffic using TLS. This is required for Encryption Configuration\"\n }\n />\n \n {enableTLS && (\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n setEnableAutoCert(checked);\n }}\n label={\"AutoCert\"}\n description={\n \"The internode certificates will be generated and managed by MinIO Operator\"\n }\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n setEnableCustomCerts(checked);\n }}\n label={\"Custom Certificates\"}\n description={\"Certificates used to terminated TLS at MinIO\"}\n />\n \n\n {enableCustomCerts && (\n \n {!enableAutoCert && (\n \n \n \n )}\n \n
MinIO Server Certificates
\n
\n \n {minioServerCertificateSecrets.map(\n (certificateInfo: ICertificateInfo) => (\n removeCertificate(certificateInfo)}\n />\n ),\n )}\n \n \n {minioServerCertificates.map((keyPair, index) => (\n \n \n \n addFileToKeyPair(\n \"minio\",\n keyPair.id,\n \"cert\",\n fileName,\n encodedValue,\n )\n }\n accept=\".cer,.crt,.cert,.pem\"\n id=\"tlsCert\"\n name=\"tlsCert\"\n label=\"Cert\"\n value={keyPair.cert}\n />\n \n addFileToKeyPair(\n \"minio\",\n keyPair.id,\n \"key\",\n fileName,\n encodedValue,\n )\n }\n accept=\".key,.pem\"\n id=\"tlsKey\"\n name=\"tlsKey\"\n label=\"Key\"\n value={keyPair.key}\n />\n \n \n
\n addKeyPair(\"minio\")}\n disabled={\n index !== minioServerCertificates.length - 1\n }\n >\n \n \n
\n
\n \n deleteKeyPair(\"minio\", keyPair.id)\n }\n disabled={minioServerCertificates.length <= 1}\n >\n \n \n
\n
\n
\n ))}\n
\n\n \n
MinIO Client Certificates
\n
\n \n {minioClientCertificateSecrets.map(\n (certificateInfo: ICertificateInfo) => (\n removeCertificate(certificateInfo)}\n />\n ),\n )}\n \n \n {minioClientCertificates.map((keyPair, index) => (\n \n \n \n addFileToKeyPair(\n \"client\",\n keyPair.id,\n \"cert\",\n fileName,\n encodedValue,\n )\n }\n accept=\".cer,.crt,.cert,.pem\"\n id=\"tlsCert\"\n name=\"tlsCert\"\n label=\"Cert\"\n value={keyPair.cert}\n />\n \n addFileToKeyPair(\n \"client\",\n keyPair.id,\n \"key\",\n fileName,\n encodedValue,\n )\n }\n accept=\".key,.pem\"\n id=\"tlsKey\"\n name=\"tlsKey\"\n label=\"Key\"\n value={keyPair.key}\n />\n \n \n
\n addKeyPair(\"client\")}\n disabled={\n index !== minioClientCertificates.length - 1\n }\n >\n \n \n
\n
\n \n deleteKeyPair(\"client\", keyPair.id)\n }\n disabled={minioClientCertificates.length <= 1}\n >\n \n \n
\n
\n
\n ))}\n
\n\n \n
MinIO CA Certificates
\n
\n \n {minioTLSCaCertificateSecrets.map(\n (certificateInfo: ICertificateInfo) => (\n removeCertificate(certificateInfo)}\n />\n ),\n )}\n \n \n {minioCaCertificates.map((keyPair: KeyPair, index) => (\n \n \n \n addFileToKeyPair(\n \"minioCAs\",\n keyPair.id,\n \"cert\",\n fileName,\n encodedValue,\n )\n }\n accept=\".cer,.crt,.cert,.pem\"\n id=\"tlsCert\"\n name=\"tlsCert\"\n label=\"Cert\"\n value={keyPair.cert}\n />\n \n \n
\n
\n addKeyPair(\"minioCAs\")}\n disabled={\n index !== minioCaCertificates.length - 1\n }\n >\n \n \n
\n
\n \n deleteKeyPair(\"minioCAs\", keyPair.id)\n }\n disabled={minioCaCertificates.length <= 1}\n >\n \n \n
\n
\n
\n
\n ))}\n \n \n )}\n \n )}\n \n

Security Context

\n \n
\n \n dispatch(setFSGroup(value))}\n setRunAsUser={(value: string) => dispatch(setRunAsUser(value))}\n setRunAsGroup={(value: string) =>\n dispatch(setRunAsGroup(value))\n }\n setRunAsNonRoot={(value: boolean) =>\n dispatch(setRunAsNonRoot(value))\n }\n setFSGroupChangePolicy={(value: fsGroupChangePolicyType) =>\n dispatch(setFSGroupChangePolicy(value))\n }\n />\n \n \n setDialogOpen(true)}\n label={\"Save\"}\n />\n \n \n \n )}\n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n loadingTenant: state.tenants.loadingTenant,\n selectedTenant: state.tenants.currentTenant,\n tenant: state.tenants.tenantInfo,\n});\n\nconst connector = connect(mapState, null);\n\nexport default withStyles(styles)(connector(TenantSecurity));\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorBlock: {\n color: theme.palette?.error.main || \"#C83B51\",\n },\n });\n\ninterface IErrorBlockProps {\n classes: any;\n errorMessage: string;\n withBreak?: boolean;\n}\n\nconst ErrorBlock = ({\n classes,\n errorMessage,\n withBreak = true,\n}: IErrorBlockProps) => {\n return (\n \n {withBreak &&
}\n \n {errorMessage}\n \n
\n );\n};\n\nexport default withStyles(styles)(ErrorBlock);\n"],"names":["withStyles","theme","createStyles","fieldBasic","tooltipHelper","valueString","maxWidth","whiteSpace","overflow","textOverflow","marginTop","fileInputField","margin","flexFlow","fileInputStyles","inputLabel","fontWeight","textBoxContainer","border","paddingLeft","_ref","label","classes","onChange","id","name","disabled","tooltip","required","error","accept","value","showFileSelector","setShowSelector","useState","_jsx","React","children","_jsxs","Grid","item","xs","className","concat","fieldBottom","fieldContainer","errorInField","InputLabel","htmlFor","fieldLabelError","tooltipContainer","Tooltip","title","placement","HelpIcon","type","e","fileName","get","fileProcess","evt","callback","file","target","files","reader","FileReader","readAsDataURL","onload","fileBase64","result","fileArray","toString","split","length","data","IconButton","color","component","onClick","disableRipple","disableFocusRipple","size","CancelIcon","ErrorBlock","errorMessage","fileReselect","AttachFileIcon","styled","_templateObject","_taggedTemplateLiteral","certificateIcon","float","paddingTop","paddingRight","certificateInfo","certificateWrapper","height","userSelect","borderRadius","padding","certificateExpiry","display","alignItems","flexWrap","marginBottom","certificateDomains","certificatesList","textTransform","overflowY","maxHeight","certificatesListItem","borderBottom","minWidth","fontSize","marginRight","opacity","certificateExpiring","certificateExpired","onDelete","certificates","domains","expiry","DateTime","fromISO","now","utc","daysToExpiry","daysToExpiryHuman","certificateExpiration","durationToExpiry","diff","as","minus","Duration","fromObject","days","shiftTo","toHuman","listStyle","maximumFractionDigits","minutes","Chip","variant","Container","CertificateIcon","Typography","gutterBottom","Box","EventBusyIcon","toFormat","AccessTimeIcon","Divider","List","map","dom","index","ListItem","ListItemAvatar","LanguageIcon","ListItemText","primary","FeatureItem","icon","description","sx","width","style","fontStyle","TLSHelpBox","params","useParams","tenantNameParam","tenantName","tenantNamespaceParam","tenantNamespace","namespace","useSelector","state","createTenant","fields","nameTenant","flex","href","rel","configSectionItem","runAsGroup","runAsUser","fsGroup","fsGroupChangePolicy","runAsNonRoot","setRunAsUser","setRunAsGroup","setFSGroup","setRunAsNonRoot","setFSGroupChangePolicy","dispatch","useDispatch","Fragment","fieldGroup","fieldSpaceTop","descriptionText","multiContainerStackNarrow","InputBoxWrapper","min","SelectWrapper","options","multiContainer","FormSwitchWrapper","checked","connector","connect","loadingTenant","tenants","selectedTenant","currentTenant","tenant","tenantInfo","tenantDetailsStyles","spacingUtils","minioCertificateRows","justifyContent","minioCACertsRow","rowActions","overlayAction","marginLeft","background","loaderAlign","textAlign","fileItem","containerForHeader","createTenantCommon","formFieldStyles","modalBasic","wizardCommon","useAppDispatch","isSending","setIsSending","dialogOpen","setDialogOpen","enableTLS","setEnableTLS","enableAutoCert","setEnableAutoCert","enableCustomCerts","setEnableCustomCerts","certificatesToBeRemoved","setCertificatesToBeRemoved","minioServerCertificates","setMinioServerCertificates","Date","key","cert","encoded_key","encoded_cert","minioClientCertificates","setMinioClientCertificates","minioCaCertificates","setMinioCaCertificates","minioServerCertificateSecrets","setMinioServerCertificateSecrets","minioClientCertificateSecrets","setMinioClientCertificateSecrets","minioTLSCaCertificateSecrets","setMinioTLSCaCertificateSecrets","editTenantSecurityContext","getTenantSecurityInfo","useCallback","api","invoke","then","res","autoCert","customCertificates","minio","client","minioCAs","securityContext","catch","err","setErrorSnackMessage","useEffect","removeCertificate","updatedMinioServerCertificateSecrets","filter","certificateSecret","updatedMinioClientCertificateSecrets","updatedMinIOTLSCaCertificateSecrets","addFileToKeyPair","updateCertificates","deleteKeyPair","addKeyPair","ConfirmDialog","confirmText","cancelText","titleIcon","ConfirmModalIcon","isLoading","onClose","isOpen","onConfirm","updateTenantSecurity","payload","secretsToBeDeleted","keyPair","crt","minioCAsCertificates","confirmationContent","DialogContentText","Loader","container","spacing","sectionTitle","FormHr","formFieldRow","TLSCertificate","FileSelector","encodedValue","AddIcon","RemoveIcon","SecurityContextSelector","Button","_theme$palette","errorBlock","palette","main","withBreak"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/332.ae2fe11c.chunk.js b/web-app/build/static/js/332.ae2fe11c.chunk.js deleted file mode 100644 index 846039b3fec..00000000000 --- a/web-app/build/static/js/332.ae2fe11c.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[332],{54639:function(e,n,t){t.d(n,{Z:function(){return v}});var i=t(29439),r=t(1413),s=t(72791),a=t(26181),o=t.n(a),c=t(61889),l=t(30829),d=t(96040),u=t(13400),m=t(99663),x=t(86711),f=t(11135),h=t(25787),p=t(23814),j=t(75952),C=t(22512),Z=t(80184),v=(0,h.Z)((function(e){return(0,f.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},p.YI),p.Hr),{},{valueString:{maxWidth:350,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:2},fileInputField:{margin:"13px 0","@media (max-width: 900px)":{flexFlow:"column"}}},p.bV),{},{inputLabel:(0,r.Z)((0,r.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"}),textBoxContainer:(0,r.Z)((0,r.Z)({},p.YI.textBoxContainer),{},{maxWidth:"100%",border:"1px solid #eaeaea",paddingLeft:"15px"})}))}))((function(e){var n=e.label,t=e.classes,r=e.onChange,a=e.id,f=e.name,h=e.disabled,p=void 0!==h&&h,v=e.tooltip,g=void 0===v?"":v,y=e.required,b=e.error,A=void 0===b?"":b,N=e.accept,S=void 0===N?"":N,k=e.value,w=void 0===k?"":k,R=(0,s.useState)(!1),P=(0,i.Z)(R,2),T=P[0],I=P[1];return(0,Z.jsx)(s.Fragment,{children:(0,Z.jsxs)(c.ZP,{item:!0,xs:12,className:"".concat(t.fileInputField," ").concat(t.fieldBottom," ").concat(t.fieldContainer," ").concat(""!==A?t.errorInField:""),children:[""!==n&&(0,Z.jsxs)(l.Z,{htmlFor:a,className:"".concat(""!==A?t.fieldLabelError:""," ").concat(t.inputLabel),children:[(0,Z.jsxs)("span",{children:[n,y?"*":""]}),""!==g&&(0,Z.jsx)("div",{className:t.tooltipContainer,children:(0,Z.jsx)(d.Z,{title:g,placement:"top-start",children:(0,Z.jsx)("div",{className:t.tooltip,children:(0,Z.jsx)(j.byK,{})})})})]}),T||""===w?(0,Z.jsxs)("div",{className:t.textBoxContainer,children:[(0,Z.jsx)("input",{type:"file",name:f,onChange:function(e){var n=o()(e,"target.files[0].name","");!function(e,n){var t=e.target.files[0],i=new FileReader;i.readAsDataURL(t),i.onload=function(){var e=i.result;if(e){var t=e.toString().split("base64,");2===t.length&&n(t[1])}}}(e,(function(e){r(e,n)}))},accept:S,required:y,disabled:p,className:t.fileInputField}),""!==w&&(0,Z.jsx)(u.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){I(!1)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,Z.jsx)(x.Z,{})}),""!==A&&(0,Z.jsx)(C.Z,{errorMessage:A})]}):(0,Z.jsxs)("div",{className:t.fileReselect,children:[(0,Z.jsx)("div",{className:t.valueString,children:w}),(0,Z.jsx)(u.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){I(!0)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,Z.jsx)(m.Z,{})})]})]})})}))},13871:function(e,n,t){var i,r=t(30168),s=(0,t(26088).Z)("hr")(i||(i=(0,r.Z)(["\n border-top: 0;\n border-left: 0;\n border-right: 0;\n border-color: #999999;\n background-color: transparent;\n"])));n.Z=s},80666:function(e,n,t){t(72791);var i=t(99779),r=t(11135),s=t(25787),a=t(90983),o=t(81918),c=t(89164),l=t(61889),d=t(20890),u=t(64554),m=t(94721),x=t(90493),f=t(84852),h=t(20653),p=t(49900),j=t(52502),C=t(69212),Z=t(75952),v=t(80184);n.Z=(0,s.Z)((function(e){return(0,r.Z)({certificateIcon:{float:"left",paddingTop:"5px !important",paddingRight:"10px !important"},certificateInfo:{float:"right"},certificateWrapper:{height:"auto",margin:5,border:"1px solid #E2E2E2",userSelect:"text",borderRadius:4,"& h6":{fontWeight:"bold"},"& div":{padding:0}},certificateExpiry:{color:"#616161",display:"flex",alignItems:"center",flexWrap:"wrap",marginBottom:5,"& .label":{fontWeight:"bold"}},certificateDomains:{color:"#616161","& .label":{fontWeight:"bold"}},certificatesList:{border:"1px solid #E2E2E2",borderRadius:4,color:"#616161",textTransform:"lowercase",overflowY:"scroll",maxHeight:145,marginBottom:10},certificatesListItem:{padding:"0px 16px",borderBottom:"1px solid #E2E2E2","& div":{minWidth:0},"& svg":{fontSize:12,marginRight:10,opacity:.5},"& span":{fontSize:12}},certificateExpiring:{color:"orange","& .label":{fontWeight:"bold"}},certificateExpired:{color:"red","& .label":{fontWeight:"bold"}}})}))((function(e){var n=e.classes,t=e.certificateInfo,r=e.onDelete,s=void 0===r?function(){}:r,g=t.domains||[],y=i.ou.fromISO(t.expiry),b=i.ou.utc(),A=0,N="",S="";if(y){var k=y.diff(b);A=k.as("days"),N=k.minus(i.nL.fromObject({days:1})).shiftTo("days").toHuman({listStyle:"long",maximumFractionDigits:0}),A>=10&&A<30&&(S=n.certificateExpiring),A<10&&(S=n.certificateExpired,A<2&&(N=k.minus(i.nL.fromObject({minutes:1})).shiftTo("hours","minutes").toHuman({listStyle:"long",maximumFractionDigits:0}),k.as("minutes")<=1&&(N="EXPIRED")))}return(0,v.jsx)(o.Z,{variant:"outlined",color:"primary",className:n.certificateWrapper,label:(0,v.jsxs)(c.Z,{children:[(0,v.jsx)(l.ZP,{item:!0,xs:1,className:n.certificateIcon,children:(0,v.jsx)(Z.Baz,{})}),(0,v.jsxs)(l.ZP,{item:!0,xs:11,className:n.certificateInfo,children:[(0,v.jsx)(d.Z,{variant:"subtitle1",display:"block",gutterBottom:!0,children:t.name}),(0,v.jsxs)(u.Z,{className:n.certificateExpiry,children:[(0,v.jsx)(j.Z,{color:"inherit",fontSize:"small"}),"\xa0",(0,v.jsx)("span",{className:"label",children:"Expiry:\xa0"}),(0,v.jsx)("span",{children:y.toFormat("yyyy/MM/dd")})]}),(0,v.jsxs)(u.Z,{className:n.certificateExpiry,children:[(0,v.jsx)(C.Z,{color:"inherit",fontSize:"small"}),"\xa0",(0,v.jsx)("span",{className:"label",children:"Expires in:\xa0"}),(0,v.jsx)("span",{className:S,children:N})]}),(0,v.jsx)(m.Z,{}),(0,v.jsx)("br",{}),(0,v.jsx)(u.Z,{className:n.certificateDomains,children:(0,v.jsx)("span",{className:"label",children:"".concat(g.length," Domain (s):")})}),(0,v.jsx)(x.Z,{className:n.certificatesList,children:g.map((function(e,t){return(0,v.jsxs)(f.ZP,{className:n.certificatesListItem,children:[(0,v.jsx)(h.Z,{children:(0,v.jsx)(a.Z,{})}),(0,v.jsx)(p.Z,{primary:e})]},"".concat(e,"-").concat(t))}))})]})]}),onDelete:s},t.name)}))},88070:function(e,n,t){t(72791);var i=t(78687),r=t(64554),s=t(75952),a=t(57689),o=t(80184),c=function(e){var n=e.icon,t=e.description;return(0,o.jsxs)(r.Z,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[n," ",(0,o.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:t})]})};n.Z=function(){var e=(0,a.UO)(),n=e.tenantName||"",t=e.tenantNamespace||"",l=(0,i.v9)((function(e){return""!==t?t:""!==e.createTenant.fields.nameTenant.namespace?e.createTenant.fields.nameTenant.namespace:""})),d=(0,i.v9)((function(e){return""!==n?n:""!==e.createTenant.fields.nameTenant.tenantName?e.createTenant.fields.nameTenant.tenantName:""}));return(0,o.jsx)(r.Z,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px",marginTop:{xs:"0px"}},children:(0,o.jsxs)(r.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,o.jsx)(c,{icon:(0,o.jsx)(s.Baz,{}),description:"TLS Certificates Warning"}),(0,o.jsxs)(r.Z,{sx:{fontSize:"14px",marginBottom:"15px"},children:["Automatic certificate generation is not enabled.",(0,o.jsx)("br",{}),(0,o.jsx)("br",{}),"If you wish to continue only with ",(0,o.jsx)("b",{children:"custom certificates"})," make sure they are valid for the following internode hostnames, i.e.:",(0,o.jsx)("br",{}),(0,o.jsx)("br",{}),(0,o.jsxs)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:["minio.",l,(0,o.jsx)("br",{}),"minio.",l,".svc",(0,o.jsx)("br",{}),"minio.",l,".svc.",(0,o.jsx)("br",{}),"*.",d,"-hl.",l,".svc.",(0,o.jsx)("br",{}),"*.",l,".svc."]}),(0,o.jsx)("br",{}),"Replace ",(0,o.jsx)("em",{children:""}),","," ",(0,o.jsx)("em",{children:""})," and",(0,o.jsx)("em",{children:""})," with the actual values for your MinIO tenant.",(0,o.jsx)("br",{}),(0,o.jsx)("br",{}),"You can learn more at our"," ",(0,o.jsx)("a",{href:"https://min.io/docs/minio/kubernetes/upstream/operations/network-encryption.html?ref=op#id5",target:"_blank",rel:"noopener",children:"documentation"}),"."]})]})})}},62332:function(e,n,t){t.r(n),t.d(n,{default:function(){return T}});var i=t(4942),r=t(93433),s=t(29439),a=t(1413),o=t(72791),c=t(78687),l=t(51691),d=t(13400),u=t(75952),m=t(11135),x=t(25787),f=t(61889),h=t(23814),p=t(41320),j=t(87995),C=t(37516),Z=t(54639),v=t(81207),g=t(40306),y=t(80666),b=t(21435),A=t(90673),N=t(80184),S=(0,x.Z)((function(e){return(0,m.Z)({configSectionItem:{marginRight:15,marginBottom:15,"& .multiContainer":{border:"1px solid red"}}})}))((function(e){var n=e.classes,t=e.runAsGroup,i=e.runAsUser,r=e.fsGroup,s=e.fsGroupChangePolicy,a=e.runAsNonRoot,l=e.setRunAsUser,d=e.setRunAsGroup,u=e.setFSGroup,m=e.setRunAsNonRoot,x=e.setFSGroupChangePolicy,h=(0,c.I0)();return(0,N.jsx)(o.Fragment,{children:(0,N.jsxs)("fieldset",{className:"".concat(n.fieldGroup," ").concat(n.fieldSpaceTop," "),children:[(0,N.jsx)("legend",{className:n.descriptionText,children:"Security Context"}),(0,N.jsx)(f.ZP,{item:!0,xs:12,children:(0,N.jsxs)("div",{className:"".concat(n.multiContainerStackNarrow," "),children:[(0,N.jsx)("div",{className:n.configSectionItem,children:(0,N.jsx)(b.Z,{type:"number",id:"securityContext_runAsUser",name:"securityContext_runAsUser",onChange:function(e){h(l(e.target.value))},label:"Run As User",value:i,required:!0,min:"0"})}),(0,N.jsx)("div",{className:n.configSectionItem,children:(0,N.jsx)(b.Z,{type:"number",id:"securityContext_runAsGroup",name:"securityContext_runAsGroup",onChange:function(e){h(d(e.target.value))},label:"Run As Group",value:t,required:!0,min:"0"})})]})}),(0,N.jsx)(f.ZP,{item:!0,xs:12,children:(0,N.jsxs)("div",{className:"".concat(n.multiContainerStackNarrow," "),children:[(0,N.jsx)("div",{className:n.configSectionItem,children:(0,N.jsx)(b.Z,{type:"number",id:"securityContext_fsGroup",name:"securityContext_fsGroup",onChange:function(e){h(u(e.target.value))},label:"FsGroup",value:r,required:!0,min:"0"})}),(0,N.jsx)("div",{className:n.configSectionItem,children:(0,N.jsx)(A.Z,{label:"FsGroupChangePolicy",id:"securityContext_fsGroupChangePolicy",name:"securityContext_fsGroupChangePolicy",onChange:function(e){h(x(e.target.value))},value:s,options:[{label:"Always",value:"Always"},{label:"OnRootMismatch",value:"OnRootMismatch"}]})})]})}),(0,N.jsx)(f.ZP,{item:!0,xs:12,children:(0,N.jsx)("div",{className:n.multiContainer,children:(0,N.jsx)(C.Z,{value:"SecurityContextRunAsNonRoot",id:"securityContext_runAsNonRoot",name:"securityContext_runAsNonRoot",checked:a,onChange:function(){h(m(!a))},label:"Do not run as Root"})})})]})})})),k=t(1078),w=t(88070),R=t(13871),P=(0,c.$j)((function(e){return{loadingTenant:e.tenants.loadingTenant,selectedTenant:e.tenants.currentTenant,tenant:e.tenants.tenantInfo}}),null),T=(0,x.Z)((function(e){return(0,m.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},h.oZ),h.bK),{},{minioCertificateRows:{display:"flex",alignItems:"center",justifyContent:"flex-start",borderBottom:"1px solid #EAEAEA","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1}},minioCACertsRow:{display:"flex",alignItems:"center",justifyContent:"flex-start",borderBottom:"1px solid #EAEAEA","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1,"& div label":{minWidth:50}}},rowActions:{display:"flex",justifyContent:"flex-end","@media (max-width: 900px)":{flex:1}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},loaderAlign:{textAlign:"center"},fileItem:{marginRight:10,display:"flex","& div label":{minWidth:50},"@media (max-width: 900px)":{flexFlow:"column"}}},h.Bz),h.QV),h.DF),h.oO),h.AK))}))(P((function(e){var n=e.classes,t=(0,p.TL)(),m=(0,c.v9)((function(e){return e.tenants.tenantInfo})),x=(0,c.v9)((function(e){return e.tenants.loadingTenant})),h=(0,o.useState)(!1),b=(0,s.Z)(h,2),A=b[0],P=b[1],T=(0,o.useState)(!1),I=(0,s.Z)(T,2),F=I[0],E=I[1],_=(0,o.useState)(!1),G=(0,s.Z)(_,2),B=G[0],L=G[1],D=(0,o.useState)(!1),z=(0,s.Z)(D,2),O=z[0],W=z[1],M=(0,o.useState)(!1),U=(0,s.Z)(M,2),K=U[0],H=U[1],q=(0,o.useState)([]),Y=(0,s.Z)(q,2),V=Y[0],Q=Y[1],X=(0,o.useState)([{id:Date.now().toString(),key:"",cert:"",encoded_key:"",encoded_cert:""}]),$=(0,s.Z)(X,2),J=$[0],ee=$[1],ne=(0,o.useState)([{id:Date.now().toString(),key:"",cert:"",encoded_key:"",encoded_cert:""}]),te=(0,s.Z)(ne,2),ie=te[0],re=te[1],se=(0,o.useState)([{id:Date.now().toString(),key:"",cert:"",encoded_key:"",encoded_cert:""}]),ae=(0,s.Z)(se,2),oe=ae[0],ce=ae[1],le=(0,o.useState)([]),de=(0,s.Z)(le,2),ue=de[0],me=de[1],xe=(0,o.useState)([]),fe=(0,s.Z)(xe,2),he=fe[0],pe=fe[1],je=(0,o.useState)([]),Ce=(0,s.Z)(je,2),Ze=Ce[0],ve=Ce[1],ge=(0,c.v9)((function(e){return e.editTenantSecurityContext.runAsGroup})),ye=(0,c.v9)((function(e){return e.editTenantSecurityContext.runAsUser})),be=(0,c.v9)((function(e){return e.editTenantSecurityContext.fsGroup})),Ae=(0,c.v9)((function(e){return e.editTenantSecurityContext.runAsNonRoot})),Ne=(0,c.v9)((function(e){return e.editTenantSecurityContext.fsGroupChangePolicy})),Se=(0,o.useCallback)((function(){v.Z.invoke("GET","/api/v1/namespaces/".concat(null===m||void 0===m?void 0:m.namespace,"/tenants/").concat(null===m||void 0===m?void 0:m.name,"/security")).then((function(e){W(e.autoCert),L(e.autoCert),(e.customCertificates.minio||e.customCertificates.client||e.customCertificates.minioCAs)&&(H(!0),L(!0)),me(e.customCertificates.minio||[]),pe(e.customCertificates.client||[]),ve(e.customCertificates.minioCAs||[]),t((0,k.Be)(e.securityContext.runAsGroup)),t((0,k.wT)(e.securityContext.runAsUser)),t((0,k.FP)(e.securityContext.fsGroup)),t((0,k.vM)(e.securityContext.runAsNonRoot)),t((0,k.rR)(e.securityContext.fsGroupChangePolicy))})).catch((function(e){t((0,j.Ih)(e))}))}),[m,t]);(0,o.useEffect)((function(){m&&Se()}),[m,Se]);var ke=function(e){Q([].concat((0,r.Z)(V),[e.name]));var n=ue.filter((function(n){return n.name!==e.name})),t=he.filter((function(n){return n.name!==e.name})),i=Ze.filter((function(n){return n.name!==e.name}));me(n),pe(t),ve(i)},we=function(e,n,t,r,s){var o=J,c=function(){};switch(e){case"minio":o=J,c=ee;break;case"client":o=ie,c=re;break;case"minioCAs":o=oe,c=ce}c(o.map((function(e){var o;return e.id===n?(0,a.Z)((0,a.Z)({},e),{},(o={},(0,i.Z)(o,t,r),(0,i.Z)(o,"encoded_".concat(t),s),o)):e})))},Re=function(e,n){var t=J,i=function(){};switch(e){case"minio":t=J,i=ee;break;case"client":t=ie,i=re;break;case"minioCAs":t=oe,i=ce}t.length>1&&i(t.filter((function(e){return e.id!==n})))},Pe=function(e){var n=J,t=function(){};switch(e){case"minio":n=J,t=ee;break;case"client":n=ie,t=re;break;case"minioCAs":n=oe,t=ce}t([].concat((0,r.Z)(n),[{id:Date.now().toString(),key:"",cert:"",encoded_key:"",encoded_cert:""}]))};return(0,N.jsxs)(o.Fragment,{children:[(0,N.jsx)(g.Z,{title:"Save and Restart",confirmText:"Restart",cancelText:"Cancel",titleIcon:(0,N.jsx)(u.EjK,{}),isLoading:A,onClose:function(){return E(!1)},isOpen:F,onConfirm:function(){P(!0);var e={autoCert:O,customCertificates:{},securityContext:{runAsGroup:ge,runAsUser:ye,runAsNonRoot:Ae,fsGroup:be,fsGroupChangePolicy:Ne}};e.customCertificates=K?{secretsToBeDeleted:V,minioServerCertificates:J.map((function(e){return{crt:e.encoded_cert,key:e.encoded_key}})).filter((function(e){return e.crt&&e.key})),minioClientCertificates:ie.map((function(e){return{crt:e.encoded_cert,key:e.encoded_key}})).filter((function(e){return e.crt&&e.key})),minioCAsCertificates:oe.map((function(e){return e.encoded_cert})).filter((function(e){return e}))}:{secretsToBeDeleted:[].concat((0,r.Z)(ue.map((function(e){return e.name}))),(0,r.Z)(he.map((function(e){return e.name}))),(0,r.Z)(Ze.map((function(e){return e.name})))),minioServerCertificates:[],minioClientCertificates:[],minioCAsCertificates:[]},v.Z.invoke("POST","/api/v1/namespaces/".concat(null===m||void 0===m?void 0:m.namespace,"/tenants/").concat(null===m||void 0===m?void 0:m.name,"/security"),e).then((function(){P(!1),E(!1),ee([{cert:"",encoded_cert:"",encoded_key:"",id:Date.now().toString(),key:""}]),re([{cert:"",encoded_cert:"",encoded_key:"",id:Date.now().toString(),key:""}]),ce([{cert:"",encoded_cert:"",encoded_key:"",id:Date.now().toString(),key:""}]),Se()})).catch((function(e){t((0,j.Ih)(e)),P(!1)}))},confirmationContent:(0,N.jsx)(l.Z,{children:"Are you sure you want to save the changes and restart the service?"})}),x?(0,N.jsx)("div",{className:n.loaderAlign,children:(0,N.jsx)(u.aNw,{})}):(0,N.jsxs)(f.ZP,{container:!0,spacing:1,children:[(0,N.jsxs)(f.ZP,{item:!0,xs:12,children:[(0,N.jsx)("h1",{className:n.sectionTitle,children:"Security"}),(0,N.jsx)(R.Z,{})]}),(0,N.jsxs)(f.ZP,{container:!0,spacing:1,children:[(0,N.jsx)(f.ZP,{item:!0,xs:12,children:(0,N.jsx)(C.Z,{value:"enableTLS",id:"enableTLS",name:"enableTLS",checked:B,onChange:function(e){var n=e.target.checked;L(n)},label:"TLS",description:"Securing all the traffic using TLS. This is required for Encryption Configuration"})}),B&&(0,N.jsxs)(o.Fragment,{children:[(0,N.jsx)(f.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,N.jsx)(C.Z,{value:"enableAutoCert",id:"enableAutoCert",name:"enableAutoCert",checked:O,onChange:function(e){var n=e.target.checked;W(n)},label:"AutoCert",description:"The internode certificates will be generated and managed by MinIO Operator"})}),(0,N.jsx)(f.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,N.jsx)(C.Z,{value:"enableCustomCerts",id:"enableCustomCerts",name:"enableCustomCerts",checked:K,onChange:function(e){var n=e.target.checked;H(n)},label:"Custom Certificates",description:"Certificates used to terminated TLS at MinIO"})}),K&&(0,N.jsxs)(o.Fragment,{children:[!O&&(0,N.jsx)(f.ZP,{item:!0,xs:12,children:(0,N.jsx)(w.Z,{})}),(0,N.jsx)(f.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,N.jsx)("h5",{children:"MinIO Server Certificates"})}),(0,N.jsx)(f.ZP,{item:!0,xs:12,children:ue.map((function(e){return(0,N.jsx)(y.Z,{certificateInfo:e,onDelete:function(){return ke(e)}})}))}),(0,N.jsx)(f.ZP,{item:!0,xs:12,className:n.formFieldRow,children:J.map((function(e,t){return(0,N.jsxs)(f.ZP,{item:!0,xs:12,className:n.minioCertificateRows,children:[(0,N.jsxs)(f.ZP,{item:!0,xs:10,className:n.fileItem,children:[(0,N.jsx)(Z.Z,{onChange:function(n,t){return we("minio",e.id,"cert",t,n)},accept:".cer,.crt,.cert,.pem",id:"tlsCert",name:"tlsCert",label:"Cert",value:e.cert}),(0,N.jsx)(Z.Z,{onChange:function(n,t){return we("minio",e.id,"key",t,n)},accept:".key,.pem",id:"tlsKey",name:"tlsKey",label:"Key",value:e.key})]}),(0,N.jsxs)(f.ZP,{item:!0,xs:2,className:n.rowActions,children:[(0,N.jsx)("div",{className:n.overlayAction,children:(0,N.jsx)(d.Z,{size:"small",onClick:function(){return Pe("minio")},disabled:t!==J.length-1,children:(0,N.jsx)(u.dtP,{})})}),(0,N.jsx)("div",{className:n.overlayAction,children:(0,N.jsx)(d.Z,{size:"small",onClick:function(){return Re("minio",e.id)},disabled:J.length<=1,children:(0,N.jsx)(u.HFL,{})})})]})]},e.id)}))}),(0,N.jsx)(f.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,N.jsx)("h5",{children:"MinIO Client Certificates"})}),(0,N.jsx)(f.ZP,{item:!0,xs:12,children:he.map((function(e){return(0,N.jsx)(y.Z,{certificateInfo:e,onDelete:function(){return ke(e)}})}))}),(0,N.jsx)(f.ZP,{item:!0,xs:12,className:n.formFieldRow,children:ie.map((function(e,t){return(0,N.jsxs)(f.ZP,{item:!0,xs:12,className:n.minioCertificateRows,children:[(0,N.jsxs)(f.ZP,{item:!0,xs:10,className:n.fileItem,children:[(0,N.jsx)(Z.Z,{onChange:function(n,t){return we("client",e.id,"cert",t,n)},accept:".cer,.crt,.cert,.pem",id:"tlsCert",name:"tlsCert",label:"Cert",value:e.cert}),(0,N.jsx)(Z.Z,{onChange:function(n,t){return we("client",e.id,"key",t,n)},accept:".key,.pem",id:"tlsKey",name:"tlsKey",label:"Key",value:e.key})]}),(0,N.jsxs)(f.ZP,{item:!0,xs:2,className:n.rowActions,children:[(0,N.jsx)("div",{className:n.overlayAction,children:(0,N.jsx)(d.Z,{size:"small",onClick:function(){return Pe("client")},disabled:t!==ie.length-1,children:(0,N.jsx)(u.dtP,{})})}),(0,N.jsx)("div",{className:n.overlayAction,children:(0,N.jsx)(d.Z,{size:"small",onClick:function(){return Re("client",e.id)},disabled:ie.length<=1,children:(0,N.jsx)(u.HFL,{})})})]})]},e.id)}))}),(0,N.jsx)(f.ZP,{item:!0,xs:12,children:(0,N.jsx)("h5",{children:"MinIO CA Certificates"})}),(0,N.jsx)(f.ZP,{item:!0,xs:12,children:Ze.map((function(e){return(0,N.jsx)(y.Z,{certificateInfo:e,onDelete:function(){return ke(e)}})}))}),(0,N.jsx)(f.ZP,{item:!0,xs:12,children:oe.map((function(e,t){return(0,N.jsxs)(f.ZP,{item:!0,xs:12,className:n.minioCACertsRow,children:[(0,N.jsx)(f.ZP,{item:!0,xs:10,children:(0,N.jsx)(Z.Z,{onChange:function(n,t){return we("minioCAs",e.id,"cert",t,n)},accept:".cer,.crt,.cert,.pem",id:"tlsCert",name:"tlsCert",label:"Cert",value:e.cert})}),(0,N.jsx)(f.ZP,{item:!0,xs:2,children:(0,N.jsxs)("div",{className:n.rowActions,children:[(0,N.jsx)("div",{className:n.overlayAction,children:(0,N.jsx)(d.Z,{size:"small",onClick:function(){return Pe("minioCAs")},disabled:t!==oe.length-1,children:(0,N.jsx)(u.dtP,{})})}),(0,N.jsx)("div",{className:n.overlayAction,children:(0,N.jsx)(d.Z,{size:"small",onClick:function(){return Re("minioCAs",e.id)},disabled:oe.length<=1,children:(0,N.jsx)(u.HFL,{})})})]})})]},e.id)}))})]})]}),(0,N.jsxs)(f.ZP,{item:!0,xs:12,className:n.formFieldRow,children:[(0,N.jsx)("h1",{className:n.sectionTitle,children:"Security Context"}),(0,N.jsx)(R.Z,{})]}),(0,N.jsx)(f.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,N.jsx)(S,{classes:n,runAsGroup:ge,runAsUser:ye,fsGroup:be,runAsNonRoot:Ae,fsGroupChangePolicy:Ne,setFSGroup:function(e){return t((0,k.FP)(e))},setRunAsUser:function(e){return t((0,k.wT)(e))},setRunAsGroup:function(e){return t((0,k.Be)(e))},setRunAsNonRoot:function(e){return t((0,k.vM)(e))},setFSGroupChangePolicy:function(e){return t((0,k.rR)(e))}})}),(0,N.jsx)(f.ZP,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:(0,N.jsx)(u.zxk,{id:"save-security",type:"submit",variant:"callAction",disabled:F||A,onClick:function(){return E(!0)},label:"Save"})})]})]})]})})))},22512:function(e,n,t){var i=t(72791),r=t(20890),s=t(11135),a=t(25787),o=t(80184);n.Z=(0,a.Z)((function(e){var n;return(0,s.Z)({errorBlock:{color:(null===(n=e.palette)||void 0===n?void 0:n.error.main)||"#C83B51"}})}))((function(e){var n=e.classes,t=e.errorMessage,s=e.withBreak,a=void 0===s||s;return(0,o.jsxs)(i.Fragment,{children:[a&&(0,o.jsx)("br",{}),(0,o.jsx)(r.Z,{component:"p",variant:"body1",className:n.errorBlock,children:t})]})}))}}]); -//# sourceMappingURL=332.ae2fe11c.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/332.ae2fe11c.chunk.js.map b/web-app/build/static/js/332.ae2fe11c.chunk.js.map deleted file mode 100644 index afacefa5d54..00000000000 --- a/web-app/build/static/js/332.ae2fe11c.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/332.ae2fe11c.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/FileSelector/FileSelector.tsx","screens/Console/Common/FormComponents/FileSelector/utils.ts","screens/Console/Common/FormHr.tsx","screens/Console/Common/TLSCertificate/TLSCertificate.tsx","screens/Console/Tenants/HelpBox/TLSHelpBox.tsx","screens/Console/Tenants/securityContextSelector.tsx","screens/Console/Tenants/TenantDetails/TenantSecurity.tsx","screens/shared/ErrorBlock.tsx"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport get from \"lodash/get\";\nimport { Grid, InputLabel, Tooltip } from \"@mui/material\";\nimport IconButton from \"@mui/material/IconButton\";\nimport AttachFileIcon from \"@mui/icons-material/AttachFile\";\nimport CancelIcon from \"@mui/icons-material/Cancel\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n fileInputStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { fileProcess } from \"./utils\";\nimport { HelpIcon } from \"mds\";\nimport ErrorBlock from \"../../../../shared/ErrorBlock\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: string, i: string) => void;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n required?: boolean;\n error?: string;\n accept?: string;\n value?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n valueString: {\n maxWidth: 350,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n marginTop: 2,\n },\n fileInputField: {\n margin: \"13px 0\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n ...fileInputStyles,\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n textBoxContainer: {\n ...fieldBasic.textBoxContainer,\n maxWidth: \"100%\",\n border: \"1px solid #eaeaea\",\n paddingLeft: \"15px\",\n },\n });\n\nconst FileSelector = ({\n label,\n classes,\n onChange,\n id,\n name,\n disabled = false,\n tooltip = \"\",\n required,\n error = \"\",\n accept = \"\",\n value = \"\",\n}: InputBoxProps) => {\n const [showFileSelector, setShowSelector] = useState(false);\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n {showFileSelector || value === \"\" ? (\n
\n {\n const fileName = get(e, \"target.files[0].name\", \"\");\n fileProcess(e, (data: any) => {\n onChange(data, fileName);\n });\n }}\n accept={accept}\n required={required}\n disabled={disabled}\n className={classes.fileInputField}\n />\n\n {value !== \"\" && (\n {\n setShowSelector(false);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n )}\n\n {error !== \"\" && }\n
\n ) : (\n
\n
{value}
\n {\n setShowSelector(true);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n
\n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(FileSelector);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const fileProcess = (evt: any, callback: any) => {\n const file = evt.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n // reader.readAsDataURL(file) output will be something like: data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSU\n // we care only about the actual base64 part (everything after \"data:application/x-x509-ca-cert;base64,\")\n const fileBase64 = reader.result;\n if (fileBase64) {\n const fileArray = fileBase64.toString().split(\"base64,\");\n\n if (fileArray.length === 2) {\n callback(fileArray[1]);\n }\n }\n };\n};\n","// This file is part of MinIO Operator\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport styled from \"@emotion/styled\";\n\nconst FormHr = styled(\"hr\")`\n border-top: 0;\n border-left: 0;\n border-right: 0;\n border-color: #999999;\n background-color: transparent;\n`;\n\nexport default FormHr;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { DateTime, Duration } from \"luxon\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { ICertificateInfo } from \"../../Tenants/types\";\nimport LanguageIcon from \"@mui/icons-material/Language\";\nimport Chip from \"@mui/material/Chip\";\nimport {\n Box,\n Container,\n Divider,\n Grid,\n List,\n ListItem,\n ListItemAvatar,\n ListItemText,\n Typography,\n} from \"@mui/material\";\nimport EventBusyIcon from \"@mui/icons-material/EventBusy\";\nimport AccessTimeIcon from \"@mui/icons-material/AccessTime\";\nimport { CertificateIcon } from \"mds\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n certificateIcon: {\n float: \"left\",\n paddingTop: \"5px !important\",\n paddingRight: \"10px !important\",\n },\n certificateInfo: { float: \"right\" },\n certificateWrapper: {\n height: \"auto\",\n margin: 5,\n border: \"1px solid #E2E2E2\",\n userSelect: \"text\",\n borderRadius: 4,\n \"& h6\": {\n fontWeight: \"bold\",\n },\n \"& div\": {\n padding: 0,\n },\n },\n certificateExpiry: {\n color: \"#616161\",\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n marginBottom: 5,\n \"& .label\": {\n fontWeight: \"bold\",\n },\n },\n certificateDomains: {\n color: \"#616161\",\n \"& .label\": {\n fontWeight: \"bold\",\n },\n },\n certificatesList: {\n border: \"1px solid #E2E2E2\",\n borderRadius: 4,\n color: \"#616161\",\n textTransform: \"lowercase\",\n overflowY: \"scroll\",\n maxHeight: 145,\n marginBottom: 10,\n },\n certificatesListItem: {\n padding: \"0px 16px\",\n borderBottom: \"1px solid #E2E2E2\",\n \"& div\": {\n minWidth: 0,\n },\n \"& svg\": {\n fontSize: 12,\n marginRight: 10,\n opacity: 0.5,\n },\n \"& span\": {\n fontSize: 12,\n },\n },\n certificateExpiring: {\n color: \"orange\",\n \"& .label\": {\n fontWeight: \"bold\",\n },\n },\n certificateExpired: {\n color: \"red\",\n \"& .label\": {\n fontWeight: \"bold\",\n },\n },\n });\n\ninterface ITLSCertificate {\n classes: any;\n certificateInfo: ICertificateInfo;\n onDelete: any;\n}\n\nconst TLSCertificate = ({\n classes,\n certificateInfo,\n onDelete = () => {},\n}: ITLSCertificate) => {\n const certificates = certificateInfo.domains || [];\n\n const expiry = DateTime.fromISO(certificateInfo.expiry);\n const now = DateTime.utc();\n // Expose error on Tenant if certificate is near expiration or expired\n let daysToExpiry: number = 0;\n let daysToExpiryHuman: string = \"\";\n let certificateExpiration: string = \"\";\n if (expiry) {\n let durationToExpiry = expiry.diff(now);\n daysToExpiry = durationToExpiry.as(\"days\");\n daysToExpiryHuman = durationToExpiry\n .minus(Duration.fromObject({ days: 1 }))\n .shiftTo(\"days\")\n .toHuman({ listStyle: \"long\", maximumFractionDigits: 0 });\n if (daysToExpiry >= 10 && daysToExpiry < 30) {\n certificateExpiration = classes.certificateExpiring;\n }\n if (daysToExpiry < 10) {\n certificateExpiration = classes.certificateExpired;\n if (daysToExpiry < 2) {\n daysToExpiryHuman = durationToExpiry\n .minus(Duration.fromObject({ minutes: 1 }))\n .shiftTo(\"hours\", \"minutes\")\n .toHuman({ listStyle: \"long\", maximumFractionDigits: 0 });\n if (durationToExpiry.as(\"minutes\") <= 1) {\n daysToExpiryHuman = \"EXPIRED\";\n }\n }\n }\n }\n\n return (\n \n \n \n \n \n \n {certificateInfo.name}\n \n \n \n  \n Expiry: \n {expiry.toFormat(\"yyyy/MM/dd\")}\n \n \n \n  \n Expires in: \n {daysToExpiryHuman}\n \n \n
\n \n {`${certificates.length} Domain (s):`}\n \n \n {certificates.map((dom, index) => (\n \n \n \n \n \n \n ))}\n \n
\n \n }\n onDelete={onDelete}\n />\n );\n};\n\nexport default withStyles(styles)(TLSCertificate);\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Box } from \"@mui/material\";\nimport { CertificateIcon } from \"mds\";\nimport { useParams } from \"react-router-dom\";\nimport { AppState } from \"../../../../store\";\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string;\n}) => {\n return (\n \n {icon}{\" \"}\n
\n {description}\n
\n \n );\n};\nconst TLSHelpBox = () => {\n const params = useParams();\n const tenantNameParam = params.tenantName || \"\";\n const tenantNamespaceParam = params.tenantNamespace || \"\";\n const namespace = useSelector((state: AppState) => {\n var defaultNamespace = \"\";\n if (tenantNamespaceParam !== \"\") {\n return tenantNamespaceParam;\n }\n if (state.createTenant.fields.nameTenant.namespace !== \"\") {\n return state.createTenant.fields.nameTenant.namespace;\n }\n return defaultNamespace;\n });\n\n const tenantName = useSelector((state: AppState) => {\n var defaultTenantName = \"\";\n if (tenantNameParam !== \"\") {\n return tenantNameParam;\n }\n\n if (state.createTenant.fields.nameTenant.tenantName !== \"\") {\n return state.createTenant.fields.nameTenant.tenantName;\n }\n return defaultTenantName;\n });\n\n return (\n \n \n }\n description={`TLS Certificates Warning`}\n />\n \n Automatic certificate generation is not enabled.\n
\n
\n If you wish to continue only with custom certificates make sure\n they are valid for the following internode hostnames, i.e.:\n
\n
\n \n minio.{namespace}\n
\n minio.{namespace}.svc\n
\n minio.{namespace}.svc.<cluster domain>\n
\n *.{tenantName}-hl.{namespace}.svc.<cluster domain>\n
\n *.{namespace}.svc.<cluster domain>\n \n
\n Replace <tenant-name>,{\" \"}\n <namespace> and\n <cluster domain> with the actual values for your\n MinIO tenant.\n
\n
\n You can learn more at our{\" \"}\n \n documentation\n \n .\n
\n \n \n );\n};\n\nexport default TLSHelpBox;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FormSwitchWrapper from \"../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport SelectWrapper from \"../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport { Grid, SelectChangeEvent } from \"@mui/material\";\nimport { useDispatch } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fsGroupChangePolicyType } from \"./types\";\n\ninterface IEditSecurityContextProps {\n classes: any;\n runAsUser: string;\n runAsGroup: string;\n fsGroup: string;\n fsGroupChangePolicy: fsGroupChangePolicyType;\n runAsNonRoot: boolean;\n setRunAsUser: any;\n setRunAsGroup: any;\n setFSGroup: any;\n setRunAsNonRoot: any;\n setFSGroupChangePolicy: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n configSectionItem: {\n marginRight: 15,\n marginBottom: 15,\n \"& .multiContainer\": {\n border: \"1px solid red\",\n },\n },\n });\n\nconst SecurityContextSelector = ({\n classes,\n runAsGroup,\n runAsUser,\n fsGroup,\n fsGroupChangePolicy,\n runAsNonRoot,\n setRunAsUser,\n setRunAsGroup,\n setFSGroup,\n setRunAsNonRoot,\n setFSGroupChangePolicy,\n}: IEditSecurityContextProps) => {\n const dispatch = useDispatch();\n return (\n \n
\n Security Context\n\n \n
\n
\n ) => {\n dispatch(setRunAsUser(e.target.value));\n }}\n label=\"Run As User\"\n value={runAsUser}\n required\n min=\"0\"\n />\n
\n
\n ) => {\n dispatch(setRunAsGroup(e.target.value));\n }}\n label=\"Run As Group\"\n value={runAsGroup}\n required\n min=\"0\"\n />\n
\n
\n
\n \n
\n
\n ) => {\n dispatch(setFSGroup(e.target.value));\n }}\n label=\"FsGroup\"\n value={fsGroup}\n required\n min=\"0\"\n />\n
\n\n
\n ) => {\n dispatch(setFSGroupChangePolicy(e.target.value));\n }}\n value={fsGroupChangePolicy}\n options={[\n {\n label: \"Always\",\n value: \"Always\",\n },\n {\n label: \"OnRootMismatch\",\n value: \"OnRootMismatch\",\n },\n ]}\n />\n
\n
\n
\n \n
\n {\n dispatch(setRunAsNonRoot(!runAsNonRoot));\n }}\n label={\"Do not run as Root\"}\n />\n
\n
\n
\n
\n );\n};\n\nexport default withStyles(styles)(SecurityContextSelector);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { connect, useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport { DialogContentText, IconButton } from \"@mui/material\";\nimport { AddIcon, Button, ConfirmModalIcon, Loader, RemoveIcon } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n fsGroupChangePolicyType,\n ICertificateInfo,\n ITenantSecurityResponse,\n} from \"../types\";\nimport {\n containerForHeader,\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n spacingUtils,\n tenantDetailsStyles,\n wizardCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\n\nimport { KeyPair } from \"../ListTenants/utils\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport FileSelector from \"../../Common/FormComponents/FileSelector/FileSelector\";\nimport api from \"../../../../common/api\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport TLSCertificate from \"../../Common/TLSCertificate/TLSCertificate\";\nimport SecurityContextSelector from \"../securityContextSelector\";\nimport {\n setFSGroup,\n setFSGroupChangePolicy,\n setRunAsGroup,\n setRunAsNonRoot,\n setRunAsUser,\n} from \"../tenantSecurityContextSlice\";\nimport TLSHelpBox from \"../HelpBox/TLSHelpBox\";\nimport FormHr from \"../../Common/FormHr\";\n\ninterface ITenantSecurity {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n ...spacingUtils,\n minioCertificateRows: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n borderBottom: \"1px solid #EAEAEA\",\n \"&:last-child\": {\n borderBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n flex: 1,\n },\n },\n minioCACertsRow: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n\n borderBottom: \"1px solid #EAEAEA\",\n \"&:last-child\": {\n borderBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n flex: 1,\n\n \"& div label\": {\n minWidth: 50,\n },\n },\n },\n rowActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n \"@media (max-width: 900px)\": {\n flex: 1,\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n loaderAlign: {\n textAlign: \"center\",\n },\n fileItem: {\n marginRight: 10,\n display: \"flex\",\n \"& div label\": {\n minWidth: 50,\n },\n\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n ...containerForHeader,\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst TenantSecurity = ({ classes }: ITenantSecurity) => {\n const dispatch = useAppDispatch();\n\n const tenant = useSelector((state: AppState) => state.tenants.tenantInfo);\n const loadingTenant = useSelector(\n (state: AppState) => state.tenants.loadingTenant,\n );\n\n const [isSending, setIsSending] = useState(false);\n const [dialogOpen, setDialogOpen] = useState(false);\n const [enableTLS, setEnableTLS] = useState(false);\n const [enableAutoCert, setEnableAutoCert] = useState(false);\n const [enableCustomCerts, setEnableCustomCerts] = useState(false);\n const [certificatesToBeRemoved, setCertificatesToBeRemoved] = useState<\n string[]\n >([]);\n // MinIO certificates\n const [minioServerCertificates, setMinioServerCertificates] = useState<\n KeyPair[]\n >([\n {\n id: Date.now().toString(),\n key: \"\",\n cert: \"\",\n encoded_key: \"\",\n encoded_cert: \"\",\n },\n ]);\n const [minioClientCertificates, setMinioClientCertificates] = useState<\n KeyPair[]\n >([\n {\n id: Date.now().toString(),\n key: \"\",\n cert: \"\",\n encoded_key: \"\",\n encoded_cert: \"\",\n },\n ]);\n const [minioCaCertificates, setMinioCaCertificates] = useState([\n {\n id: Date.now().toString(),\n key: \"\",\n cert: \"\",\n encoded_key: \"\",\n encoded_cert: \"\",\n },\n ]);\n const [minioServerCertificateSecrets, setMinioServerCertificateSecrets] =\n useState([]);\n const [minioClientCertificateSecrets, setMinioClientCertificateSecrets] =\n useState([]);\n const [minioTLSCaCertificateSecrets, setMinioTLSCaCertificateSecrets] =\n useState([]);\n\n const runAsGroup = useSelector(\n (state: AppState) => state.editTenantSecurityContext.runAsGroup,\n );\n const runAsUser = useSelector(\n (state: AppState) => state.editTenantSecurityContext.runAsUser,\n );\n const fsGroup = useSelector(\n (state: AppState) => state.editTenantSecurityContext.fsGroup,\n );\n const runAsNonRoot = useSelector(\n (state: AppState) => state.editTenantSecurityContext.runAsNonRoot,\n );\n const fsGroupChangePolicy = useSelector(\n (state: AppState) => state.editTenantSecurityContext.fsGroupChangePolicy,\n );\n\n const getTenantSecurityInfo = useCallback(() => {\n api\n .invoke(\n \"GET\",\n `/api/v1/namespaces/${tenant?.namespace}/tenants/${tenant?.name}/security`,\n )\n .then((res: ITenantSecurityResponse) => {\n setEnableAutoCert(res.autoCert);\n setEnableTLS(res.autoCert);\n if (\n res.customCertificates.minio ||\n res.customCertificates.client ||\n res.customCertificates.minioCAs\n ) {\n setEnableCustomCerts(true);\n setEnableTLS(true);\n }\n setMinioServerCertificateSecrets(res.customCertificates.minio || []);\n setMinioClientCertificateSecrets(res.customCertificates.client || []);\n setMinioTLSCaCertificateSecrets(res.customCertificates.minioCAs || []);\n dispatch(setRunAsGroup(res.securityContext.runAsGroup));\n dispatch(setRunAsUser(res.securityContext.runAsUser));\n dispatch(setFSGroup(res.securityContext.fsGroup!));\n dispatch(setRunAsNonRoot(res.securityContext.runAsNonRoot));\n dispatch(\n setFSGroupChangePolicy(\n res.securityContext.fsGroupChangePolicy as fsGroupChangePolicyType,\n ),\n );\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n });\n }, [tenant, dispatch]);\n\n useEffect(() => {\n if (tenant) {\n getTenantSecurityInfo();\n }\n }, [tenant, getTenantSecurityInfo]);\n\n const updateTenantSecurity = () => {\n setIsSending(true);\n let payload = {\n autoCert: enableAutoCert,\n customCertificates: {},\n securityContext: {\n runAsGroup: runAsGroup,\n runAsUser: runAsUser,\n runAsNonRoot: runAsNonRoot,\n fsGroup: fsGroup,\n fsGroupChangePolicy: fsGroupChangePolicy,\n },\n };\n if (enableCustomCerts) {\n payload[\"customCertificates\"] = {\n secretsToBeDeleted: certificatesToBeRemoved,\n minioServerCertificates: minioServerCertificates\n .map((keyPair: KeyPair) => ({\n crt: keyPair.encoded_cert,\n key: keyPair.encoded_key,\n }))\n .filter((cert: any) => cert.crt && cert.key),\n minioClientCertificates: minioClientCertificates\n .map((keyPair: KeyPair) => ({\n crt: keyPair.encoded_cert,\n key: keyPair.encoded_key,\n }))\n .filter((cert: any) => cert.crt && cert.key),\n minioCAsCertificates: minioCaCertificates\n .map((keyPair: KeyPair) => keyPair.encoded_cert)\n .filter((cert: any) => cert),\n };\n } else {\n payload[\"customCertificates\"] = {\n secretsToBeDeleted: [\n ...minioServerCertificateSecrets.map((cert) => cert.name),\n ...minioClientCertificateSecrets.map((cert) => cert.name),\n ...minioTLSCaCertificateSecrets.map((cert) => cert.name),\n ],\n minioServerCertificates: [],\n minioClientCertificates: [],\n minioCAsCertificates: [],\n };\n }\n api\n .invoke(\n \"POST\",\n `/api/v1/namespaces/${tenant?.namespace}/tenants/${tenant?.name}/security`,\n payload,\n )\n .then(() => {\n setIsSending(false);\n // Close confirmation modal\n setDialogOpen(false);\n // Refresh Information and reset forms\n setMinioServerCertificates([\n {\n cert: \"\",\n encoded_cert: \"\",\n encoded_key: \"\",\n id: Date.now().toString(),\n key: \"\",\n },\n ]);\n setMinioClientCertificates([\n {\n cert: \"\",\n encoded_cert: \"\",\n encoded_key: \"\",\n id: Date.now().toString(),\n key: \"\",\n },\n ]);\n setMinioCaCertificates([\n {\n cert: \"\",\n encoded_cert: \"\",\n encoded_key: \"\",\n id: Date.now().toString(),\n key: \"\",\n },\n ]);\n getTenantSecurityInfo();\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setIsSending(false);\n });\n };\n\n const removeCertificate = (certificateInfo: ICertificateInfo) => {\n // TLS certificate secrets can be referenced MinIO, Console or KES, we need to remove the secret from all list and update\n // the arrays\n // Add certificate to the global list of secrets to be removed\n setCertificatesToBeRemoved([\n ...certificatesToBeRemoved,\n certificateInfo.name,\n ]);\n\n // Update MinIO server TLS certificate secrets\n const updatedMinioServerCertificateSecrets =\n minioServerCertificateSecrets.filter(\n (certificateSecret) => certificateSecret.name !== certificateInfo.name,\n );\n // Update MinIO client TLS certificate secrets\n const updatedMinioClientCertificateSecrets =\n minioClientCertificateSecrets.filter(\n (certificateSecret) => certificateSecret.name !== certificateInfo.name,\n );\n const updatedMinIOTLSCaCertificateSecrets =\n minioTLSCaCertificateSecrets.filter(\n (certificateSecret) => certificateSecret.name !== certificateInfo.name,\n );\n setMinioServerCertificateSecrets(updatedMinioServerCertificateSecrets);\n setMinioClientCertificateSecrets(updatedMinioClientCertificateSecrets);\n setMinioTLSCaCertificateSecrets(updatedMinIOTLSCaCertificateSecrets);\n };\n\n const addFileToKeyPair = (\n type: string,\n id: string,\n key: string,\n fileName: string,\n value: string,\n ) => {\n let certificates = minioServerCertificates;\n let updateCertificates: any = () => {};\n\n switch (type) {\n case \"minio\": {\n certificates = minioServerCertificates;\n updateCertificates = setMinioServerCertificates;\n break;\n }\n case \"client\": {\n certificates = minioClientCertificates;\n updateCertificates = setMinioClientCertificates;\n break;\n }\n case \"minioCAs\": {\n certificates = minioCaCertificates;\n updateCertificates = setMinioCaCertificates;\n break;\n }\n default:\n }\n\n const NCertList = certificates.map((item: KeyPair) => {\n if (item.id === id) {\n return {\n ...item,\n [key]: fileName,\n [`encoded_${key}`]: value,\n };\n }\n return item;\n });\n updateCertificates(NCertList);\n };\n\n const deleteKeyPair = (type: string, id: string) => {\n let certificates = minioServerCertificates;\n let updateCertificates: any = () => {};\n\n switch (type) {\n case \"minio\": {\n certificates = minioServerCertificates;\n updateCertificates = setMinioServerCertificates;\n break;\n }\n case \"client\": {\n certificates = minioClientCertificates;\n updateCertificates = setMinioClientCertificates;\n break;\n }\n case \"minioCAs\": {\n certificates = minioCaCertificates;\n updateCertificates = setMinioCaCertificates;\n break;\n }\n default:\n }\n\n if (certificates.length > 1) {\n const cleanCertsList = certificates.filter(\n (item: KeyPair) => item.id !== id,\n );\n updateCertificates(cleanCertsList);\n }\n };\n\n const addKeyPair = (type: string) => {\n let certificates = minioServerCertificates;\n let updateCertificates: any = () => {};\n\n switch (type) {\n case \"minio\": {\n certificates = minioServerCertificates;\n updateCertificates = setMinioServerCertificates;\n break;\n }\n case \"client\": {\n certificates = minioClientCertificates;\n updateCertificates = setMinioClientCertificates;\n break;\n }\n case \"minioCAs\": {\n certificates = minioCaCertificates;\n updateCertificates = setMinioCaCertificates;\n break;\n }\n default:\n }\n const updatedCertificates = [\n ...certificates,\n {\n id: Date.now().toString(),\n key: \"\",\n cert: \"\",\n encoded_key: \"\",\n encoded_cert: \"\",\n },\n ];\n updateCertificates(updatedCertificates);\n };\n\n return (\n \n }\n isLoading={isSending}\n onClose={() => setDialogOpen(false)}\n isOpen={dialogOpen}\n onConfirm={updateTenantSecurity}\n confirmationContent={\n \n Are you sure you want to save the changes and restart the service?\n \n }\n />\n {loadingTenant ? (\n
\n \n
\n ) : (\n \n \n

Security

\n \n
\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n setEnableTLS(checked);\n }}\n label={\"TLS\"}\n description={\n \"Securing all the traffic using TLS. This is required for Encryption Configuration\"\n }\n />\n \n {enableTLS && (\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n setEnableAutoCert(checked);\n }}\n label={\"AutoCert\"}\n description={\n \"The internode certificates will be generated and managed by MinIO Operator\"\n }\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n setEnableCustomCerts(checked);\n }}\n label={\"Custom Certificates\"}\n description={\"Certificates used to terminated TLS at MinIO\"}\n />\n \n\n {enableCustomCerts && (\n \n {!enableAutoCert && (\n \n \n \n )}\n \n
MinIO Server Certificates
\n
\n \n {minioServerCertificateSecrets.map(\n (certificateInfo: ICertificateInfo) => (\n removeCertificate(certificateInfo)}\n />\n ),\n )}\n \n \n {minioServerCertificates.map((keyPair, index) => (\n \n \n \n addFileToKeyPair(\n \"minio\",\n keyPair.id,\n \"cert\",\n fileName,\n encodedValue,\n )\n }\n accept=\".cer,.crt,.cert,.pem\"\n id=\"tlsCert\"\n name=\"tlsCert\"\n label=\"Cert\"\n value={keyPair.cert}\n />\n \n addFileToKeyPair(\n \"minio\",\n keyPair.id,\n \"key\",\n fileName,\n encodedValue,\n )\n }\n accept=\".key,.pem\"\n id=\"tlsKey\"\n name=\"tlsKey\"\n label=\"Key\"\n value={keyPair.key}\n />\n \n \n
\n addKeyPair(\"minio\")}\n disabled={\n index !== minioServerCertificates.length - 1\n }\n >\n \n \n
\n
\n \n deleteKeyPair(\"minio\", keyPair.id)\n }\n disabled={minioServerCertificates.length <= 1}\n >\n \n \n
\n
\n
\n ))}\n
\n\n \n
MinIO Client Certificates
\n
\n \n {minioClientCertificateSecrets.map(\n (certificateInfo: ICertificateInfo) => (\n removeCertificate(certificateInfo)}\n />\n ),\n )}\n \n \n {minioClientCertificates.map((keyPair, index) => (\n \n \n \n addFileToKeyPair(\n \"client\",\n keyPair.id,\n \"cert\",\n fileName,\n encodedValue,\n )\n }\n accept=\".cer,.crt,.cert,.pem\"\n id=\"tlsCert\"\n name=\"tlsCert\"\n label=\"Cert\"\n value={keyPair.cert}\n />\n \n addFileToKeyPair(\n \"client\",\n keyPair.id,\n \"key\",\n fileName,\n encodedValue,\n )\n }\n accept=\".key,.pem\"\n id=\"tlsKey\"\n name=\"tlsKey\"\n label=\"Key\"\n value={keyPair.key}\n />\n \n \n
\n addKeyPair(\"client\")}\n disabled={\n index !== minioClientCertificates.length - 1\n }\n >\n \n \n
\n
\n \n deleteKeyPair(\"client\", keyPair.id)\n }\n disabled={minioClientCertificates.length <= 1}\n >\n \n \n
\n
\n
\n ))}\n
\n\n \n
MinIO CA Certificates
\n
\n \n {minioTLSCaCertificateSecrets.map(\n (certificateInfo: ICertificateInfo) => (\n removeCertificate(certificateInfo)}\n />\n ),\n )}\n \n \n {minioCaCertificates.map((keyPair: KeyPair, index) => (\n \n \n \n addFileToKeyPair(\n \"minioCAs\",\n keyPair.id,\n \"cert\",\n fileName,\n encodedValue,\n )\n }\n accept=\".cer,.crt,.cert,.pem\"\n id=\"tlsCert\"\n name=\"tlsCert\"\n label=\"Cert\"\n value={keyPair.cert}\n />\n \n \n
\n
\n addKeyPair(\"minioCAs\")}\n disabled={\n index !== minioCaCertificates.length - 1\n }\n >\n \n \n
\n
\n \n deleteKeyPair(\"minioCAs\", keyPair.id)\n }\n disabled={minioCaCertificates.length <= 1}\n >\n \n \n
\n
\n
\n
\n ))}\n \n \n )}\n \n )}\n \n

Security Context

\n \n
\n \n dispatch(setFSGroup(value))}\n setRunAsUser={(value: string) => dispatch(setRunAsUser(value))}\n setRunAsGroup={(value: string) =>\n dispatch(setRunAsGroup(value))\n }\n setRunAsNonRoot={(value: boolean) =>\n dispatch(setRunAsNonRoot(value))\n }\n setFSGroupChangePolicy={(value: fsGroupChangePolicyType) =>\n dispatch(setFSGroupChangePolicy(value))\n }\n />\n \n \n setDialogOpen(true)}\n label={\"Save\"}\n />\n \n \n \n )}\n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n loadingTenant: state.tenants.loadingTenant,\n selectedTenant: state.tenants.currentTenant,\n tenant: state.tenants.tenantInfo,\n});\n\nconst connector = connect(mapState, null);\n\nexport default withStyles(styles)(connector(TenantSecurity));\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorBlock: {\n color: theme.palette?.error.main || \"#C83B51\",\n },\n });\n\ninterface IErrorBlockProps {\n classes: any;\n errorMessage: string;\n withBreak?: boolean;\n}\n\nconst ErrorBlock = ({\n classes,\n errorMessage,\n withBreak = true,\n}: IErrorBlockProps) => {\n return (\n \n {withBreak &&
}\n \n {errorMessage}\n \n
\n );\n};\n\nexport default withStyles(styles)(ErrorBlock);\n"],"names":["withStyles","theme","createStyles","_objectSpread","fieldBasic","tooltipHelper","valueString","maxWidth","whiteSpace","overflow","textOverflow","marginTop","fileInputField","margin","flexFlow","fileInputStyles","inputLabel","fontWeight","textBoxContainer","border","paddingLeft","_ref","label","classes","onChange","id","name","_ref$disabled","disabled","_ref$tooltip","tooltip","required","_ref$error","error","_ref$accept","accept","_ref$value","value","_useState","useState","_useState2","_slicedToArray","showFileSelector","setShowSelector","_jsx","React","children","_jsxs","Grid","item","xs","className","concat","fieldBottom","fieldContainer","errorInField","InputLabel","htmlFor","fieldLabelError","tooltipContainer","Tooltip","title","placement","HelpIcon","type","e","fileName","get","evt","callback","file","target","files","reader","FileReader","readAsDataURL","onload","fileBase64","result","fileArray","toString","split","length","fileProcess","data","IconButton","color","component","onClick","disableRipple","disableFocusRipple","size","CancelIcon","ErrorBlock","errorMessage","fileReselect","AttachFileIcon","FormHr","styled","_templateObject","_taggedTemplateLiteral","certificateIcon","float","paddingTop","paddingRight","certificateInfo","certificateWrapper","height","userSelect","borderRadius","padding","certificateExpiry","display","alignItems","flexWrap","marginBottom","certificateDomains","certificatesList","textTransform","overflowY","maxHeight","certificatesListItem","borderBottom","minWidth","fontSize","marginRight","opacity","certificateExpiring","certificateExpired","_ref$onDelete","onDelete","certificates","domains","expiry","DateTime","fromISO","now","utc","daysToExpiry","daysToExpiryHuman","certificateExpiration","durationToExpiry","diff","as","minus","Duration","fromObject","days","shiftTo","toHuman","listStyle","maximumFractionDigits","minutes","Chip","variant","Container","CertificateIcon","Typography","gutterBottom","Box","EventBusyIcon","toFormat","AccessTimeIcon","Divider","List","map","dom","index","ListItem","ListItemAvatar","LanguageIcon","ListItemText","primary","FeatureItem","icon","description","sx","width","style","fontStyle","params","useParams","tenantNameParam","tenantName","tenantNamespaceParam","tenantNamespace","namespace","useSelector","state","createTenant","fields","nameTenant","flex","href","rel","configSectionItem","runAsGroup","runAsUser","fsGroup","fsGroupChangePolicy","runAsNonRoot","setRunAsUser","setRunAsGroup","setFSGroup","setRunAsNonRoot","setFSGroupChangePolicy","dispatch","useDispatch","Fragment","fieldGroup","fieldSpaceTop","descriptionText","multiContainerStackNarrow","InputBoxWrapper","min","SelectWrapper","options","multiContainer","FormSwitchWrapper","checked","connector","connect","loadingTenant","tenants","selectedTenant","currentTenant","tenant","tenantInfo","tenantDetailsStyles","spacingUtils","minioCertificateRows","justifyContent","minioCACertsRow","rowActions","overlayAction","marginLeft","background","loaderAlign","textAlign","fileItem","containerForHeader","createTenantCommon","formFieldStyles","modalBasic","wizardCommon","useAppDispatch","isSending","setIsSending","_useState3","_useState4","dialogOpen","setDialogOpen","_useState5","_useState6","enableTLS","setEnableTLS","_useState7","_useState8","enableAutoCert","setEnableAutoCert","_useState9","_useState10","enableCustomCerts","setEnableCustomCerts","_useState11","_useState12","certificatesToBeRemoved","setCertificatesToBeRemoved","_useState13","Date","key","cert","encoded_key","encoded_cert","_useState14","minioServerCertificates","setMinioServerCertificates","_useState15","_useState16","minioClientCertificates","setMinioClientCertificates","_useState17","_useState18","minioCaCertificates","setMinioCaCertificates","_useState19","_useState20","minioServerCertificateSecrets","setMinioServerCertificateSecrets","_useState21","_useState22","minioClientCertificateSecrets","setMinioClientCertificateSecrets","_useState23","_useState24","minioTLSCaCertificateSecrets","setMinioTLSCaCertificateSecrets","editTenantSecurityContext","getTenantSecurityInfo","useCallback","api","invoke","then","res","autoCert","customCertificates","minio","client","minioCAs","securityContext","catch","err","setErrorSnackMessage","useEffect","removeCertificate","_toConsumableArray","updatedMinioServerCertificateSecrets","filter","certificateSecret","updatedMinioClientCertificateSecrets","updatedMinIOTLSCaCertificateSecrets","addFileToKeyPair","updateCertificates","_objectSpread2","_defineProperty","deleteKeyPair","addKeyPair","ConfirmDialog","confirmText","cancelText","titleIcon","ConfirmModalIcon","isLoading","onClose","isOpen","onConfirm","payload","secretsToBeDeleted","keyPair","crt","minioCAsCertificates","confirmationContent","DialogContentText","Loader","container","spacing","sectionTitle","formFieldRow","TLSHelpBox","TLSCertificate","FileSelector","encodedValue","AddIcon","RemoveIcon","SecurityContextSelector","Button","_theme$palette","errorBlock","palette","main","_ref$withBreak","withBreak"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/367.2251aaba.chunk.js b/web-app/build/static/js/367.2251aaba.chunk.js deleted file mode 100644 index 2c412ef884a..00000000000 --- a/web-app/build/static/js/367.2251aaba.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[367],{92217:function(e,n,i){var l=i(1413),t=i(72791),o=i(61889),r=i(30829),a=i(96040),s=i(64554),d=i(11135),c=i(25787),u=i(75952),v=i(23814),m=i(78029),p=i.n(m),x=i(9534),g=i(27454),Z=i(80184);n.Z=(0,c.Z)((function(e){return(0,d.Z)((0,l.Z)({},v.YI))}))((function(e){var n=e.value,i=e.label,l=void 0===i?"":i,d=e.tooltip,c=void 0===d?"":d,v=e.mode,m=void 0===v?"json":v,h=e.classes,f=e.onBeforeChange,y=(e.readOnly,e.editorHeight),_=void 0===y?"250px":y;return(0,Z.jsxs)(t.Fragment,{children:[(0,Z.jsx)(o.ZP,{item:!0,xs:12,sx:{marginBottom:"10px"},children:(0,Z.jsxs)(r.Z,{className:h.inputLabel,children:[(0,Z.jsx)("span",{children:l}),""!==c&&(0,Z.jsx)("div",{className:h.tooltipContainer,children:(0,Z.jsx)(a.Z,{title:c,placement:"top-start",children:(0,Z.jsx)("div",{className:h.tooltip,children:(0,Z.jsx)(u.byK,{})})})})]})}),(0,Z.jsx)(o.ZP,{item:!0,xs:12,style:{maxHeight:_,overflow:"auto",border:"1px solid #eaeaea"},children:(0,Z.jsx)(x.Z,{value:n,language:m,onChange:function(e){f(null,null,e.target.value)},id:"code_wrapper",padding:15,style:{fontSize:12,backgroundColor:"#fefefe",fontFamily:"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace",minHeight:_||"initial",color:"#000000"}})}),(0,Z.jsx)(o.ZP,{item:!0,xs:12,sx:{background:"#f7f7f7",border:"1px solid #eaeaea",borderTop:0},children:(0,Z.jsx)(s.Z,{sx:{display:"flex",alignItems:"center",padding:"2px",paddingRight:"5px",justifyContent:"flex-end","& button":{height:"26px",width:"26px",padding:"2px"," .min-icon":{marginLeft:"0"}}},children:(0,Z.jsx)(g.Z,{tooltip:"Copy to Clipboard",children:(0,Z.jsx)(p(),{text:n,children:(0,Z.jsx)(u.zxk,{type:"button",id:"copy-code-mirror",icon:(0,Z.jsx)(u.TIy,{}),color:"primary",variant:"regular"})})})})})]})}))},54639:function(e,n,i){i.d(n,{Z:function(){return y}});var l=i(29439),t=i(1413),o=i(72791),r=i(26181),a=i.n(r),s=i(61889),d=i(30829),c=i(96040),u=i(13400),v=i(99663),m=i(86711),p=i(11135),x=i(25787),g=i(23814),Z=i(75952),h=i(22512),f=i(80184),y=(0,x.Z)((function(e){return(0,p.Z)((0,t.Z)((0,t.Z)((0,t.Z)((0,t.Z)({},g.YI),g.Hr),{},{valueString:{maxWidth:350,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:2},fileInputField:{margin:"13px 0","@media (max-width: 900px)":{flexFlow:"column"}}},g.bV),{},{inputLabel:(0,t.Z)((0,t.Z)({},g.YI.inputLabel),{},{fontWeight:"normal"}),textBoxContainer:(0,t.Z)((0,t.Z)({},g.YI.textBoxContainer),{},{maxWidth:"100%",border:"1px solid #eaeaea",paddingLeft:"15px"})}))}))((function(e){var n=e.label,i=e.classes,t=e.onChange,r=e.id,p=e.name,x=e.disabled,g=void 0!==x&&x,y=e.tooltip,_=void 0===y?"":y,j=e.required,k=e.error,b=void 0===k?"":k,C=e.accept,S=void 0===C?"":C,w=e.value,K=void 0===w?"":w,P=(0,o.useState)(!1),N=(0,l.Z)(P,2),I=N[0],A=N[1];return(0,f.jsx)(o.Fragment,{children:(0,f.jsxs)(s.ZP,{item:!0,xs:12,className:"".concat(i.fileInputField," ").concat(i.fieldBottom," ").concat(i.fieldContainer," ").concat(""!==b?i.errorInField:""),children:[""!==n&&(0,f.jsxs)(d.Z,{htmlFor:r,className:"".concat(""!==b?i.fieldLabelError:""," ").concat(i.inputLabel),children:[(0,f.jsxs)("span",{children:[n,j?"*":""]}),""!==_&&(0,f.jsx)("div",{className:i.tooltipContainer,children:(0,f.jsx)(c.Z,{title:_,placement:"top-start",children:(0,f.jsx)("div",{className:i.tooltip,children:(0,f.jsx)(Z.byK,{})})})})]}),I||""===K?(0,f.jsxs)("div",{className:i.textBoxContainer,children:[(0,f.jsx)("input",{type:"file",name:p,onChange:function(e){var n=a()(e,"target.files[0].name","");!function(e,n){var i=e.target.files[0],l=new FileReader;l.readAsDataURL(i),l.onload=function(){var e=l.result;if(e){var i=e.toString().split("base64,");2===i.length&&n(i[1])}}}(e,(function(e){t(e,n)}))},accept:S,required:j,disabled:g,className:i.fileInputField}),""!==K&&(0,f.jsx)(u.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){A(!1)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,f.jsx)(m.Z,{})}),""!==b&&(0,f.jsx)(h.Z,{errorMessage:b})]}):(0,f.jsxs)("div",{className:i.fileReselect,children:[(0,f.jsx)("div",{className:i.valueString,children:K}),(0,f.jsx)(u.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){A(!0)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,f.jsx)(v.Z,{})})]})]})})}))},13871:function(e,n,i){var l,t=i(30168),o=(0,i(26088).Z)("hr")(l||(l=(0,t.Z)(["\n border-top: 0;\n border-left: 0;\n border-right: 0;\n border-color: #999999;\n background-color: transparent;\n"])));n.Z=o},80666:function(e,n,i){i(72791);var l=i(99779),t=i(11135),o=i(25787),r=i(90983),a=i(81918),s=i(89164),d=i(61889),c=i(20890),u=i(64554),v=i(94721),m=i(90493),p=i(84852),x=i(20653),g=i(49900),Z=i(52502),h=i(69212),f=i(75952),y=i(80184);n.Z=(0,o.Z)((function(e){return(0,t.Z)({certificateIcon:{float:"left",paddingTop:"5px !important",paddingRight:"10px !important"},certificateInfo:{float:"right"},certificateWrapper:{height:"auto",margin:5,border:"1px solid #E2E2E2",userSelect:"text",borderRadius:4,"& h6":{fontWeight:"bold"},"& div":{padding:0}},certificateExpiry:{color:"#616161",display:"flex",alignItems:"center",flexWrap:"wrap",marginBottom:5,"& .label":{fontWeight:"bold"}},certificateDomains:{color:"#616161","& .label":{fontWeight:"bold"}},certificatesList:{border:"1px solid #E2E2E2",borderRadius:4,color:"#616161",textTransform:"lowercase",overflowY:"scroll",maxHeight:145,marginBottom:10},certificatesListItem:{padding:"0px 16px",borderBottom:"1px solid #E2E2E2","& div":{minWidth:0},"& svg":{fontSize:12,marginRight:10,opacity:.5},"& span":{fontSize:12}},certificateExpiring:{color:"orange","& .label":{fontWeight:"bold"}},certificateExpired:{color:"red","& .label":{fontWeight:"bold"}}})}))((function(e){var n=e.classes,i=e.certificateInfo,t=e.onDelete,o=void 0===t?function(){}:t,_=i.domains||[],j=l.ou.fromISO(i.expiry),k=l.ou.utc(),b=0,C="",S="";if(j){var w=j.diff(k);b=w.as("days"),C=w.minus(l.nL.fromObject({days:1})).shiftTo("days").toHuman({listStyle:"long",maximumFractionDigits:0}),b>=10&&b<30&&(S=n.certificateExpiring),b<10&&(S=n.certificateExpired,b<2&&(C=w.minus(l.nL.fromObject({minutes:1})).shiftTo("hours","minutes").toHuman({listStyle:"long",maximumFractionDigits:0}),w.as("minutes")<=1&&(C="EXPIRED")))}return(0,y.jsx)(a.Z,{variant:"outlined",color:"primary",className:n.certificateWrapper,label:(0,y.jsxs)(s.Z,{children:[(0,y.jsx)(d.ZP,{item:!0,xs:1,className:n.certificateIcon,children:(0,y.jsx)(f.Baz,{})}),(0,y.jsxs)(d.ZP,{item:!0,xs:11,className:n.certificateInfo,children:[(0,y.jsx)(c.Z,{variant:"subtitle1",display:"block",gutterBottom:!0,children:i.name}),(0,y.jsxs)(u.Z,{className:n.certificateExpiry,children:[(0,y.jsx)(Z.Z,{color:"inherit",fontSize:"small"}),"\xa0",(0,y.jsx)("span",{className:"label",children:"Expiry:\xa0"}),(0,y.jsx)("span",{children:j.toFormat("yyyy/MM/dd")})]}),(0,y.jsxs)(u.Z,{className:n.certificateExpiry,children:[(0,y.jsx)(h.Z,{color:"inherit",fontSize:"small"}),"\xa0",(0,y.jsx)("span",{className:"label",children:"Expires in:\xa0"}),(0,y.jsx)("span",{className:S,children:C})]}),(0,y.jsx)(v.Z,{}),(0,y.jsx)("br",{}),(0,y.jsx)(u.Z,{className:n.certificateDomains,children:(0,y.jsx)("span",{className:"label",children:"".concat(_.length," Domain (s):")})}),(0,y.jsx)(m.Z,{className:n.certificatesList,children:_.map((function(e,i){return(0,y.jsxs)(p.ZP,{className:n.certificatesListItem,children:[(0,y.jsx)(x.Z,{children:(0,y.jsx)(r.Z,{})}),(0,y.jsx)(g.Z,{primary:e})]},"".concat(e,"-").concat(i))}))})]})]}),onDelete:o},i.name)}))},7032:function(e,n,i){i.r(n),i.d(n,{default:function(){return F}});var l=i(93433),t=i(29439),o=i(1413),r=i(75952),a=i(11135),s=i(25787),d=i(23814),c=i(72791),u=i(78687),v=i(41320),m=i(81207),p=i(37516),x=i(61889),g=i(54639),Z=i(21435),h=i(83679),f=i(51691),y=i(20165),_=i(3579),j=i(84741),k=i(40968),b=i(40306),C=i(80666),S=i(87995),w=i(25228),K=i(43896),P=i(92217),N=i(13871),I=i(80184),A=function(e){var n=e.items,i=void 0===n?[]:n,l=e.title,t=void 0===l?"":l;return null!==i&&void 0!==i&&i.length?(0,I.jsxs)(c.Fragment,{children:[(0,I.jsx)("div",{style:{fontSize:"0.83em",fontWeight:"bold"},children:t}),(0,I.jsx)("div",{style:{display:"flex",gap:"2px",flexFlow:"column",marginLeft:"8px"},children:i.map((function(e){return(0,I.jsxs)("span",{style:{fontSize:"12px"},children:["- ",e]})}))})]}):null},R=function(e){var n=e.policies,i=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object.keys(e).map((function(n){var i=e[n]||{};return{name:n||"",identities:i.identities||[],paths:i.paths||[],allow:i.allow||[],deny:i.deny||[]}}))}(void 0===n?{}:n);return i.length?(0,I.jsxs)(x.ZP,{xs:12,marginBottom:"5px",children:[(0,I.jsx)("h4",{children:"Policies"}),(0,I.jsx)(r.xuv,{withBorders:!0,sx:{maxHeight:"200px",overflow:"auto",padding:0},children:i.map((function(e){return(0,I.jsxs)(r.xuv,{withBorders:!0,sx:{display:"flex",flexFlow:"column",gap:"2px",borderLeft:0,borderRight:0,borderTop:0},children:[(0,I.jsxs)("div",{children:[(0,I.jsx)("b",{style:{fontSize:"0.83em",fontWeight:"bold"},children:"Policy Name:"})," ",e.name]}),(0,I.jsx)(A,{title:"Allow",items:null===e||void 0===e?void 0:e.allow}),(0,I.jsx)(A,{title:"Deny",items:null===e||void 0===e?void 0:e.deny}),(0,I.jsx)(A,{title:"Paths",items:null===e||void 0===e?void 0:e.paths}),(0,I.jsx)(A,{title:"Identities",items:null===e||void 0===e?void 0:e.identities})]})}))})]}):null},F=(0,s.Z)((function(e){return(0,a.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},d.oZ),d.bK),d.Bz),d.QV),d.DF),d.oO),d.AK),{},{warningBlock:{color:"red",fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}}}))}))((function(e){var n,i,a,s,d,A,F,E,z,G,q,D,T,M,V,B,W,L,H,O,U,Y,Q,X,J,$,ee,ne,ie,le,te,oe,re=e.classes,ae=(0,v.TL)(),se=(0,u.v9)((function(e){return e.tenants.tenantInfo})),de=(0,c.useState)(0),ce=(0,t.Z)(de,2),ue=ce[0],ve=ce[1],me=(0,c.useState)(""),pe=(0,t.Z)(me,2),xe=pe[0],ge=pe[1],Ze=(0,c.useState)(!1),he=(0,t.Z)(Ze,2),fe=he[0],ye=he[1],_e=(0,c.useState)("vault"),je=(0,t.Z)(_e,2),ke=je[0],be=je[1],Ce=(0,c.useState)("1"),Se=(0,t.Z)(Ce,2),we=Se[0],Ke=Se[1],Pe=(0,c.useState)(""),Ne=(0,t.Z)(Pe,2),Ie=Ne[0],Ae=Ne[1],Re=(0,c.useState)(!1),Fe=(0,t.Z)(Re,2),Ee=Fe[0],ze=Fe[1],Ge=(0,c.useState)({fsGroup:"1000",fsGroupChangePolicy:"Always",runAsGroup:"1000",runAsNonRoot:!0,runAsUser:"1000"}),qe=(0,t.Z)(Ge,2),De=qe[0],Te=qe[1],Me=(0,c.useState)([]),Ve=(0,t.Z)(Me,2),Be=Ve[0],We=Ve[1],Le=(0,c.useState)(null),He=(0,t.Z)(Le,2),Oe=He[0],Ue=He[1],Ye=(0,c.useState)(null),Qe=(0,t.Z)(Ye,2),Xe=Qe[0],Je=Qe[1],$e=(0,c.useState)(null),en=(0,t.Z)($e,2),nn=en[0],ln=en[1],tn=(0,c.useState)(null),on=(0,t.Z)(tn,2),rn=on[0],an=on[1],sn=(0,c.useState)(null),dn=(0,t.Z)(sn,2),cn=dn[0],un=dn[1],vn=(0,c.useState)(!1),mn=(0,t.Z)(vn,2),pn=mn[0],xn=mn[1],gn=(0,c.useState)(!1),Zn=(0,t.Z)(gn,2),hn=Zn[0],fn=Zn[1],yn=(0,c.useState)(null),_n=(0,t.Z)(yn,2),jn=_n[0],kn=_n[1],bn=(0,c.useState)(null),Cn=(0,t.Z)(bn,2),Sn=Cn[0],wn=Cn[1],Kn=(0,c.useState)(null),Pn=(0,t.Z)(Kn,2),Nn=Pn[0],In=Pn[1],An=(0,c.useState)([]),Rn=(0,t.Z)(An,2),Fn=Rn[0],En=Rn[1],zn=(0,c.useState)(!1),Gn=(0,t.Z)(zn,2),qn=Gn[0],Dn=Gn[1],Tn=(0,c.useState)(!1),Mn=(0,t.Z)(Tn,2),Vn=Mn[0],Bn=Mn[1],Wn=(0,c.useState)(!1),Ln=(0,t.Z)(Wn,2),Hn=Ln[0],On=Ln[1],Un=(0,c.useState)(null),Yn=(0,t.Z)(Un,2),Qn=Yn[0],Xn=Yn[1],Jn=(0,c.useState)(null),$n=(0,t.Z)(Jn,2),ei=$n[0],ni=$n[1],ii=(0,c.useState)(null),li=(0,t.Z)(ii,2),ti=li[0],oi=li[1],ri=(0,c.useState)(null),ai=(0,t.Z)(ri,2),si=ai[0],di=ai[1],ci=(0,c.useState)(null),ui=(0,t.Z)(ci,2),vi=ui[0],mi=ui[1],pi=(0,c.useState)({}),xi=(0,t.Z)(pi,2),gi=xi[0],Zi=xi[1],hi=function(e){Zi((0,j.h)(gi,e))},fi=(0,c.useState)(!1),yi=(0,t.Z)(fi,2),_i=yi[0],ji=yi[1];(0,c.useEffect)((function(){var e=[];if(fe){var n,i,t,o,r,a,s,d,c,u,v,m,p,x,g,Z,h,f,y,_,j,b,C,S,w,K,P,N;if(e=[{fieldKey:"replicas",required:!0,value:we,customValidation:parseInt(we)<1,customValidationMessage:"Replicas needs to be 1 or greater"},{fieldKey:"kes_securityContext_runAsUser",required:!0,value:De.runAsUser,customValidation:""===De.runAsUser||parseInt(De.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"kes_securityContext_runAsGroup",required:!0,value:De.runAsGroup,customValidation:""===De.runAsGroup||parseInt(De.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"kes_securityContext_fsGroup",required:!0,value:De.fsGroup,customValidation:""===De.fsGroup||parseInt(De.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}],pn&&(e=[].concat((0,l.Z)(e),[{fieldKey:"serverKey",required:!1,value:(null===si||void 0===si?void 0:si.encoded_key)||""},{fieldKey:"serverCert",required:!1,value:(null===si||void 0===si?void 0:si.encoded_cert)||""},{fieldKey:"clientKey",required:!1,value:(null===Nn||void 0===Nn?void 0:Nn.encoded_key)||""},{fieldKey:"clientCert",required:!1,value:(null===Nn||void 0===Nn?void 0:Nn.encoded_cert)||""}])),"vault"===ke)e=[].concat((0,l.Z)(e),[{fieldKey:"vault_endpoint",required:!0,value:null===Oe||void 0===Oe?void 0:Oe.endpoint},{fieldKey:"vault_id",required:!0,value:null===Oe||void 0===Oe||null===(n=Oe.approle)||void 0===n?void 0:n.id},{fieldKey:"vault_secret",required:!0,value:null===Oe||void 0===Oe||null===(i=Oe.approle)||void 0===i?void 0:i.secret},{fieldKey:"vault_ping",required:!1,value:null===Oe||void 0===Oe||null===(t=Oe.status)||void 0===t?void 0:t.ping,customValidation:parseInt(null===Oe||void 0===Oe||null===(o=Oe.status)||void 0===o?void 0:o.ping)<0,customValidationMessage:"Value needs to be 0 or greater"},{fieldKey:"vault_retry",required:!1,value:null===Oe||void 0===Oe||null===(r=Oe.approle)||void 0===r?void 0:r.retry,customValidation:parseInt(null===Oe||void 0===Oe||null===(a=Oe.approle)||void 0===a?void 0:a.retry)<0,customValidationMessage:"Value needs to be 0 or greater"}]);if("aws"===ke)e=[].concat((0,l.Z)(e),[{fieldKey:"aws_endpoint",required:!0,value:null===Xe||void 0===Xe||null===(s=Xe.secretsmanager)||void 0===s?void 0:s.endpoint},{fieldKey:"aws_region",required:!0,value:null===Xe||void 0===Xe||null===(d=Xe.secretsmanager)||void 0===d?void 0:d.region},{fieldKey:"aws_accessKey",required:!0,value:null===Xe||void 0===Xe||null===(c=Xe.secretsmanager)||void 0===c||null===(u=c.credentials)||void 0===u?void 0:u.accesskey},{fieldKey:"aws_secretKey",required:!0,value:null===Xe||void 0===Xe||null===(v=Xe.secretsmanager)||void 0===v||null===(m=v.credentials)||void 0===m?void 0:m.secretkey}]);if("gemalto"===ke)e=[].concat((0,l.Z)(e),[{fieldKey:"gemalto_endpoint",required:!0,value:null===nn||void 0===nn||null===(p=nn.keysecure)||void 0===p?void 0:p.endpoint},{fieldKey:"gemalto_token",required:!0,value:null===nn||void 0===nn||null===(x=nn.keysecure)||void 0===x||null===(g=x.credentials)||void 0===g?void 0:g.token},{fieldKey:"gemalto_domain",required:!0,value:null===nn||void 0===nn||null===(Z=nn.keysecure)||void 0===Z||null===(h=Z.credentials)||void 0===h?void 0:h.domain},{fieldKey:"gemalto_retry",required:!1,value:null===nn||void 0===nn||null===(f=nn.keysecure)||void 0===f||null===(y=f.credentials)||void 0===y?void 0:y.retry,customValidation:parseInt(null===nn||void 0===nn||null===(_=nn.keysecure)||void 0===_||null===(j=_.credentials)||void 0===j?void 0:j.retry)<0,customValidationMessage:"Value needs to be 0 or greater"}]);if("azure"===ke)e=[].concat((0,l.Z)(e),[{fieldKey:"azure_endpoint",required:!0,value:null===rn||void 0===rn||null===(b=rn.keyvault)||void 0===b?void 0:b.endpoint},{fieldKey:"azure_tenant_id",required:!0,value:null===rn||void 0===rn||null===(C=rn.keyvault)||void 0===C||null===(S=C.credentials)||void 0===S?void 0:S.tenant_id},{fieldKey:"azure_client_id",required:!0,value:null===rn||void 0===rn||null===(w=rn.keyvault)||void 0===w||null===(K=w.credentials)||void 0===K?void 0:K.client_id},{fieldKey:"azure_client_secret",required:!0,value:null===rn||void 0===rn||null===(P=rn.keyvault)||void 0===P||null===(N=P.credentials)||void 0===N?void 0:N.client_secret}])}var I=(0,k.R)(e);Bn(0===Object.keys(I).length),Zi(I)}),[pn,fe,ke,null===si||void 0===si?void 0:si.encoded_key,null===si||void 0===si?void 0:si.encoded_cert,null===Nn||void 0===Nn?void 0:Nn.encoded_key,null===Nn||void 0===Nn?void 0:Nn.encoded_cert,null===ti||void 0===ti?void 0:ti.encoded_key,null===ti||void 0===ti?void 0:ti.encoded_cert,null===vi||void 0===vi?void 0:vi.encoded_key,null===vi||void 0===vi?void 0:vi.encoded_cert,De,Oe,Xe,nn,rn,cn,we]);var ki=function(){!Ee&&null!==se&&void 0!==se&&se.namespace&&null!==se&&void 0!==se&&se.name&&(ze(!0),m.Z.invoke("GET","/api/v1/namespaces/".concat(null===se||void 0===se?void 0:se.namespace,"/tenants/").concat(null===se||void 0===se?void 0:se.name,"/encryption")).then((function(e){ge(e.raw),e.policies&&We(e.policies),e.vault?(be("vault"),Ue(e.vault)):e.aws?(be("aws"),Je(e.aws)):e.gemalto?(be("gemalto"),ln(e.gemalto)):e.gcp?(be("gcp"),un(e.gcp)):e.azure&&(be("azure"),an(e.azure)),ye(!0),Ae(e.image),Ke(e.replicas),e.securityContext&&Te(e.securityContext),(e.server_tls||e.minio_mtls||e.kms_mtls)&&xn(!0),e.server_tls&&kn(e.server_tls),e.minio_mtls&&wn(e.minio_mtls),e.kms_mtls&&(Xn(e.kms_mtls.crt),ni(e.kms_mtls.ca)),ze(!1)})).catch((function(e){console.error(e),ze(!1)})))};(0,c.useEffect)((function(){ki()}),[se]);var bi=function(e){En([].concat((0,l.Z)(Fn),[e.name])),e.name===(null===jn||void 0===jn?void 0:jn.name)&&kn(null),e.name===(null===Sn||void 0===Sn?void 0:Sn.name)&&wn(null),e.name===(null===Qn||void 0===Qn?void 0:Qn.name)&&Xn(null),e.name===(null===ei||void 0===ei?void 0:ei.name)&&ni(null)};return(0,I.jsxs)(c.Fragment,{children:[_i&&(0,I.jsx)(b.Z,{isOpen:_i,title:fe?"Enable encryption at rest for tenant?":"Disable encryption at rest for tenant?",confirmText:fe?"Enable":"Disable",cancelText:"Cancel",onClose:function(){return ji(!1)},onConfirm:function(){var e,n,i,l,t,r,a,s,d,c,u,v,p,x,g,Z,h,f,y,_,j,k,b,C,w,K,P,N,I,A,R,F,E,z,G,q,D,T;if(fe){var M={};switch(ke){case"gemalto":M={gemalto:{keysecure:{endpoint:(null===nn||void 0===nn||null===(e=nn.keysecure)||void 0===e?void 0:e.endpoint)||"",credentials:{token:(null===nn||void 0===nn||null===(n=nn.keysecure)||void 0===n||null===(i=n.credentials)||void 0===i?void 0:i.token)||"",domain:(null===nn||void 0===nn||null===(l=nn.keysecure)||void 0===l||null===(t=l.credentials)||void 0===t?void 0:t.domain)||"",retry:parseInt(null===nn||void 0===nn||null===(r=nn.keysecure)||void 0===r||null===(a=r.credentials)||void 0===a?void 0:a.retry)}}}};break;case"aws":M={aws:{secretsmanager:{endpoint:(null===Xe||void 0===Xe||null===(s=Xe.secretsmanager)||void 0===s?void 0:s.endpoint)||"",region:(null===Xe||void 0===Xe||null===(d=Xe.secretsmanager)||void 0===d?void 0:d.region)||"",kmskey:(null===Xe||void 0===Xe||null===(c=Xe.secretsmanager)||void 0===c?void 0:c.kmskey)||"",credentials:{accesskey:(null===Xe||void 0===Xe||null===(u=Xe.secretsmanager)||void 0===u||null===(v=u.credentials)||void 0===v?void 0:v.accesskey)||"",secretkey:(null===Xe||void 0===Xe||null===(p=Xe.secretsmanager)||void 0===p||null===(x=p.credentials)||void 0===x?void 0:x.secretkey)||"",token:(null===Xe||void 0===Xe||null===(g=Xe.secretsmanager)||void 0===g||null===(Z=g.credentials)||void 0===Z?void 0:Z.token)||""}}}};break;case"azure":M={azure:{keyvault:{endpoint:(null===rn||void 0===rn||null===(h=rn.keyvault)||void 0===h?void 0:h.endpoint)||"",credentials:{tenant_id:(null===rn||void 0===rn||null===(f=rn.keyvault)||void 0===f||null===(y=f.credentials)||void 0===y?void 0:y.tenant_id)||"",client_id:(null===rn||void 0===rn||null===(_=rn.keyvault)||void 0===_||null===(j=_.credentials)||void 0===j?void 0:j.client_id)||"",client_secret:(null===rn||void 0===rn||null===(k=rn.keyvault)||void 0===k||null===(b=k.credentials)||void 0===b?void 0:b.client_secret)||""}}}};break;case"gcp":M={gcp:{secretmanager:{project_id:(null===cn||void 0===cn||null===(C=cn.secretmanager)||void 0===C?void 0:C.project_id)||"",endpoint:(null===cn||void 0===cn||null===(w=cn.secretmanager)||void 0===w?void 0:w.endpoint)||"",credentials:{client_email:(null===cn||void 0===cn||null===(K=cn.secretmanager)||void 0===K||null===(P=K.credentials)||void 0===P?void 0:P.client_email)||"",client_id:(null===cn||void 0===cn||null===(N=cn.secretmanager)||void 0===N||null===(I=N.credentials)||void 0===I?void 0:I.client_id)||"",private_key_id:(null===cn||void 0===cn||null===(A=cn.secretmanager)||void 0===A||null===(R=A.credentials)||void 0===R?void 0:R.private_key_id)||"",private_key:(null===cn||void 0===cn||null===(F=cn.secretmanager)||void 0===F||null===(E=F.credentials)||void 0===E?void 0:E.private_key)||""}}}};break;case"vault":M={vault:{endpoint:(null===Oe||void 0===Oe?void 0:Oe.endpoint)||"",engine:(null===Oe||void 0===Oe?void 0:Oe.engine)||"",namespace:(null===Oe||void 0===Oe?void 0:Oe.namespace)||"",prefix:(null===Oe||void 0===Oe?void 0:Oe.prefix)||"",approle:{engine:(null===Oe||void 0===Oe||null===(z=Oe.approle)||void 0===z?void 0:z.engine)||"",id:(null===Oe||void 0===Oe||null===(G=Oe.approle)||void 0===G?void 0:G.id)||"",secret:(null===Oe||void 0===Oe||null===(q=Oe.approle)||void 0===q?void 0:q.secret)||"",retry:parseInt(null===Oe||void 0===Oe||null===(D=Oe.approle)||void 0===D?void 0:D.retry)},status:{ping:parseInt(null===Oe||void 0===Oe||null===(T=Oe.status)||void 0===T?void 0:T.ping)}}}}var V={},B={},W={};null!==Nn&&void 0!==Nn&&Nn.encoded_key&&null!==Nn&&void 0!==Nn&&Nn.encoded_cert&&(B={minio_mtls:{key:null===Nn||void 0===Nn?void 0:Nn.encoded_key,crt:null===Nn||void 0===Nn?void 0:Nn.encoded_cert}}),null!==si&&void 0!==si&&si.encoded_key&&null!==si&&void 0!==si&&si.encoded_cert&&(V={server_tls:{key:null===si||void 0===si?void 0:si.encoded_key,crt:null===si||void 0===si?void 0:si.encoded_cert}});var L=null,H=null;null!==ti&&void 0!==ti&&ti.encoded_key&&null!==ti&&void 0!==ti&&ti.encoded_cert&&(L={key:null===ti||void 0===ti?void 0:ti.encoded_key,crt:null===ti||void 0===ti?void 0:ti.encoded_cert}),null!==vi&&void 0!==vi&&vi.encoded_cert&&(H={ca:null===vi||void 0===vi?void 0:vi.encoded_cert}),(L||H)&&(W={kms_mtls:(0,o.Z)((0,o.Z)({},L),H)});var O=(0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)({raw:ue?xe:"",secretsToBeDeleted:Fn||[],replicas:we,securityContext:De,image:Ie},B),V),W),M);hn||(fn(!0),m.Z.invoke("PUT","/api/v1/namespaces/".concat(null===se||void 0===se?void 0:se.namespace,"/tenants/").concat(null===se||void 0===se?void 0:se.name,"/encryption"),O).then((function(){ji(!1),fn(!1),ki()})).catch((function(e){fn(!1),ae((0,S.Ih)(e))})))}else hn||(fn(!0),m.Z.invoke("DELETE","/api/v1/namespaces/".concat(null===se||void 0===se?void 0:se.namespace,"/tenants/").concat(null===se||void 0===se?void 0:se.name,"/encryption"),{}).then((function(){ji(!1),fn(!1),ki()})).catch((function(e){fn(!1),ae((0,S.Ih)(e))})))},confirmationContent:(0,I.jsxs)(f.Z,{children:[fe?"Data will be encrypted using and external KMS":"Current encrypted information will not be accessible",fe&&(0,I.jsxs)("div",{className:re.warningBlock,children:[(0,I.jsx)(r.e6P,{}),(0,I.jsx)("span",{children:"The content of the KES config secret will be overwritten."})]})]})}),(0,I.jsxs)(x.ZP,{container:!0,spacing:1,children:[(0,I.jsx)(x.ZP,{item:!0,xs:!0,children:(0,I.jsx)(r.NZf,{children:"Encryption"})}),(0,I.jsx)(x.ZP,{item:!0,xs:4,justifyContent:"end",textAlign:"right",children:(0,I.jsx)(p.Z,{label:"",indicatorLabels:["Enabled","Disabled"],checked:fe,value:"tenant_encryption",id:"tenant-encryption",name:"tenant-encryption",onChange:function(){ye(!fe)},description:""})}),(0,I.jsx)(x.ZP,{xs:12,children:(0,I.jsx)(N.Z,{})}),fe&&(0,I.jsxs)(c.Fragment,{children:[(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsxs)(w.Z,{value:ue,onChange:function(e,n){ve(n)},indicatorColor:"primary",textColor:"primary","aria-label":"cluster-tabs",variant:"scrollable",scrollButtons:"auto",children:[(0,I.jsx)(K.Z,{id:"kms-options",label:"Options"}),(0,I.jsx)(K.Z,{id:"kms-raw-configuration",label:"Raw Edit"})]})}),ue?(0,I.jsx)(c.Fragment,{children:(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsx)(P.Z,{value:xe,mode:"yaml",onBeforeChange:function(e,n,i){ge(i)},editorHeight:"550px"})})}):(0,I.jsxs)(c.Fragment,{children:[(0,I.jsx)(R,{policies:Be}),(0,I.jsx)(x.ZP,{item:!0,xs:12,className:re.encryptionTypeOptions,children:(0,I.jsx)(h.Z,{currentSelection:ke,id:"encryptionType",name:"encryptionType",label:"KMS",onChange:function(e){be(e.target.value)},selectorOptions:[{label:"Vault",value:"vault"},{label:"AWS",value:"aws"},{label:"Gemalto",value:"gemalto"},{label:"GCP",value:"gcp"},{label:"Azure",value:"azure"}]})}),"vault"===ke&&(0,I.jsxs)(c.Fragment,{children:[(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsx)(Z.Z,{id:"vault_endpoint",name:"vault_endpoint",onChange:function(e){return Ue((0,o.Z)((0,o.Z)({},Oe),{},{endpoint:e.target.value}))},label:"Endpoint",tooltip:"Endpoint is the Hashicorp Vault endpoint",value:(null===Oe||void 0===Oe?void 0:Oe.endpoint)||"",error:gi.vault_ping||"",required:!0})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsx)(Z.Z,{id:"vault_engine",name:"vault_engine",onChange:function(e){return Ue((0,o.Z)((0,o.Z)({},Oe),{},{engine:e.target.value}))},label:"Engine",tooltip:"Engine is the Hashicorp Vault K/V engine path. If empty, defaults to 'kv'",value:(null===Oe||void 0===Oe?void 0:Oe.engine)||""})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsx)(Z.Z,{id:"vault_namespace",name:"vault_namespace",onChange:function(e){return Ue((0,o.Z)((0,o.Z)({},Oe),{},{namespace:e.target.value}))},label:"Namespace",tooltip:"Namespace is an optional Hashicorp Vault namespace. An empty namespace means no particular namespace is used.",value:(null===Oe||void 0===Oe?void 0:Oe.namespace)||""})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsx)(Z.Z,{id:"vault_prefix",name:"vault_prefix",onChange:function(e){return Ue((0,o.Z)((0,o.Z)({},Oe),{},{prefix:e.target.value}))},label:"Prefix",tooltip:"Prefix is an optional prefix / directory within the K/V engine. If empty, keys will be stored at the K/V engine top level",value:(null===Oe||void 0===Oe?void 0:Oe.prefix)||""})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsx)(r.NZf,{children:"App Role"})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsxs)("fieldset",{className:re.fieldGroup,children:[(0,I.jsx)("legend",{className:re.descriptionText,children:"App Role"}),(0,I.jsx)(x.ZP,{item:!0,xs:12,className:re.formFieldRow,children:(0,I.jsx)(Z.Z,{id:"vault_approle_engine",name:"vault_approle_engine",onChange:function(e){return Ue((0,o.Z)((0,o.Z)({},Oe),{},{approle:(0,o.Z)((0,o.Z)({},null===Oe||void 0===Oe?void 0:Oe.approle),{},{engine:e.target.value})}))},label:"Engine",tooltip:"AppRoleEngine is the AppRole authentication engine path. If empty, defaults to 'approle'",value:(null===Oe||void 0===Oe||null===(n=Oe.approle)||void 0===n?void 0:n.engine)||""})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,className:re.formFieldRow,children:(0,I.jsx)(Z.Z,{type:qn?"text":"password",id:"vault_id",name:"vault_id",onChange:function(e){return Ue((0,o.Z)((0,o.Z)({},Oe),{},{approle:(0,o.Z)((0,o.Z)({},null===Oe||void 0===Oe?void 0:Oe.approle),{},{id:e.target.value})}))},label:"AppRole ID",tooltip:"AppRoleSecret is the AppRole access secret for authenticating to Hashicorp Vault via the AppRole method",value:(null===Oe||void 0===Oe||null===(i=Oe.approle)||void 0===i?void 0:i.id)||"",required:!0,error:gi.vault_id||"",overlayIcon:qn?(0,I.jsx)(y.Z,{}):(0,I.jsx)(_.Z,{}),overlayAction:function(){return Dn(!qn)}})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,className:re.formFieldRow,children:(0,I.jsx)(Z.Z,{type:Hn?"text":"password",id:"vault_secret",name:"vault_secret",onChange:function(e){return Ue((0,o.Z)((0,o.Z)({},Oe),{},{approle:(0,o.Z)((0,o.Z)({},null===Oe||void 0===Oe?void 0:Oe.approle),{},{secret:e.target.value})}))},label:"AppRole Secret",tooltip:"AppRoleSecret is the AppRole access secret for authenticating to Hashicorp Vault via the AppRole method",value:(null===Oe||void 0===Oe||null===(a=Oe.approle)||void 0===a?void 0:a.secret)||"",required:!0,error:gi.vault_secret||"",overlayIcon:Hn?(0,I.jsx)(y.Z,{}):(0,I.jsx)(_.Z,{}),overlayAction:function(){return On(!Hn)}})}),(0,I.jsx)(x.ZP,{xs:12,className:re.formFieldRow,children:(0,I.jsx)(Z.Z,{type:"number",min:"0",id:"vault_retry",name:"vault_retry",onChange:function(e){return Ue((0,o.Z)((0,o.Z)({},Oe),{},{approle:(0,o.Z)((0,o.Z)({},null===Oe||void 0===Oe?void 0:Oe.approle),{},{retry:e.target.value})}))},label:"Retry (Seconds)",error:gi.vault_retry||"",value:(null===Oe||void 0===Oe||null===(s=Oe.approle)||void 0===s?void 0:s.retry)||""})})]})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,className:re.formFieldRow,style:{marginTop:15},children:(0,I.jsxs)("fieldset",{className:re.fieldGroup,children:[(0,I.jsx)("legend",{className:re.descriptionText,children:"Status"}),(0,I.jsx)(Z.Z,{type:"number",min:"0",id:"vault_ping",name:"vault_ping",onChange:function(e){return Ue((0,o.Z)((0,o.Z)({},Oe),{},{status:(0,o.Z)((0,o.Z)({},null===Oe||void 0===Oe?void 0:Oe.status),{},{ping:e.target.value})}))},label:"Ping (Seconds)",tooltip:"controls how often to Vault health status is checked. If not set, defaults to 10s",error:gi.vault_ping||"",value:(null===Oe||void 0===Oe||null===(d=Oe.status)||void 0===d?void 0:d.ping)||""})]})})]}),"azure"===ke&&(0,I.jsxs)(c.Fragment,{children:[(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsx)(Z.Z,{id:"azure_endpoint",name:"azure_endpoint",onChange:function(e){return an((0,o.Z)((0,o.Z)({},rn),{},{keyvault:(0,o.Z)((0,o.Z)({},null===rn||void 0===rn?void 0:rn.keyvault),{},{endpoint:e.target.value})}))},label:"Endpoint",tooltip:"Endpoint is the Azure KeyVault endpoint",error:gi.azure_endpoint||"",value:(null===rn||void 0===rn||null===(A=rn.keyvault)||void 0===A?void 0:A.endpoint)||""})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsxs)("fieldset",{className:re.fieldGroup,children:[(0,I.jsx)("legend",{className:re.descriptionText,children:"Credentials"}),(0,I.jsx)(x.ZP,{item:!0,xs:12,className:re.formFieldRow,children:(0,I.jsx)(Z.Z,{id:"azure_tenant_id",name:"azure_tenant_id",onChange:function(e){var n;return an((0,o.Z)((0,o.Z)({},rn),{},{keyvault:(0,o.Z)((0,o.Z)({},null===rn||void 0===rn?void 0:rn.keyvault),{},{credentials:(0,o.Z)((0,o.Z)({},null===rn||void 0===rn||null===(n=rn.keyvault)||void 0===n?void 0:n.credentials),{},{tenant_id:e.target.value})})}))},label:"Tenant ID",tooltip:"TenantID is the ID of the Azure KeyVault tenant",value:(null===rn||void 0===rn||null===(F=rn.keyvault)||void 0===F||null===(E=F.credentials)||void 0===E?void 0:E.tenant_id)||"",error:gi.azure_tenant_id||""})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,className:re.formFieldRow,children:(0,I.jsx)(Z.Z,{id:"azure_client_id",name:"azure_client_id",onChange:function(e){var n;return an((0,o.Z)((0,o.Z)({},rn),{},{keyvault:(0,o.Z)((0,o.Z)({},null===rn||void 0===rn?void 0:rn.keyvault),{},{credentials:(0,o.Z)((0,o.Z)({},null===rn||void 0===rn||null===(n=rn.keyvault)||void 0===n?void 0:n.credentials),{},{client_id:e.target.value})})}))},label:"Client ID",tooltip:"ClientID is the ID of the client accessing Azure KeyVault",value:(null===rn||void 0===rn||null===(z=rn.keyvault)||void 0===z||null===(G=z.credentials)||void 0===G?void 0:G.client_id)||"",error:gi.azure_client_id||""})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,className:re.formFieldRow,children:(0,I.jsx)(Z.Z,{id:"azure_client_secret",name:"azure_client_secret",onChange:function(e){var n;return an((0,o.Z)((0,o.Z)({},rn),{},{keyvault:(0,o.Z)((0,o.Z)({},null===rn||void 0===rn?void 0:rn.keyvault),{},{credentials:(0,o.Z)((0,o.Z)({},null===rn||void 0===rn||null===(n=rn.keyvault)||void 0===n?void 0:n.credentials),{},{client_secret:e.target.value})})}))},label:"Client Secret",tooltip:"ClientSecret is the client secret accessing the Azure KeyVault",value:(null===rn||void 0===rn||null===(q=rn.keyvault)||void 0===q||null===(D=q.credentials)||void 0===D?void 0:D.client_secret)||"",error:gi.azure_client_secret||""})})]})})]}),"gcp"===ke&&(0,I.jsxs)(c.Fragment,{children:[(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsx)(Z.Z,{id:"gcp_project_id",name:"gcp_project_id",onChange:function(e){return un((0,o.Z)((0,o.Z)({},cn),{},{secretmanager:(0,o.Z)((0,o.Z)({},null===cn||void 0===cn?void 0:cn.secretmanager),{},{project_id:e.target.value})}))},label:"Project ID",tooltip:"ProjectID is the GCP project ID",value:(null===cn||void 0===cn?void 0:cn.secretmanager.project_id)||""})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsx)(Z.Z,{id:"gcp_endpoint",name:"gcp_endpoint",onChange:function(e){return un((0,o.Z)((0,o.Z)({},cn),{},{secretmanager:(0,o.Z)((0,o.Z)({},null===cn||void 0===cn?void 0:cn.secretmanager),{},{endpoint:e.target.value})}))},label:"Endpoint",tooltip:"Endpoint is the GCP project ID. If empty defaults to: secretmanager.googleapis.com:443",value:(null===cn||void 0===cn?void 0:cn.secretmanager.endpoint)||""})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsxs)("fieldset",{className:re.fieldGroup,children:[(0,I.jsx)("legend",{className:re.descriptionText,children:"Credentials"}),(0,I.jsx)(x.ZP,{item:!0,xs:12,className:re.formFieldRow,children:(0,I.jsx)(Z.Z,{id:"gcp_client_email",name:"gcp_client_email",onChange:function(e){return un((0,o.Z)((0,o.Z)({},cn),{},{secretmanager:(0,o.Z)((0,o.Z)({},null===cn||void 0===cn?void 0:cn.secretmanager),{},{credentials:(0,o.Z)((0,o.Z)({},null===cn||void 0===cn?void 0:cn.secretmanager.credentials),{},{client_email:e.target.value})})}))},label:"Client Email",tooltip:"Is the Client email of the GCP service account used to access the SecretManager",value:(null===cn||void 0===cn||null===(T=cn.secretmanager.credentials)||void 0===T?void 0:T.client_email)||""})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,className:re.formFieldRow,children:(0,I.jsx)(Z.Z,{id:"gcp_client_id",name:"gcp_client_id",onChange:function(e){return un((0,o.Z)((0,o.Z)({},cn),{},{secretmanager:(0,o.Z)((0,o.Z)({},null===cn||void 0===cn?void 0:cn.secretmanager),{},{credentials:(0,o.Z)((0,o.Z)({},null===cn||void 0===cn?void 0:cn.secretmanager.credentials),{},{client_id:e.target.value})})}))},label:"Client ID",tooltip:"Is the Client ID of the GCP service account used to access the SecretManager",value:(null===cn||void 0===cn||null===(M=cn.secretmanager.credentials)||void 0===M?void 0:M.client_id)||""})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,className:re.formFieldRow,children:(0,I.jsx)(Z.Z,{id:"gcp_private_key_id",name:"gcp_private_key_id",onChange:function(e){return un((0,o.Z)((0,o.Z)({},cn),{},{secretmanager:(0,o.Z)((0,o.Z)({},null===cn||void 0===cn?void 0:cn.secretmanager),{},{credentials:(0,o.Z)((0,o.Z)({},null===cn||void 0===cn?void 0:cn.secretmanager.credentials),{},{private_key_id:e.target.value})})}))},label:"Private Key ID",tooltip:"Is the private key ID of the GCP service account used to access the SecretManager",value:(null===cn||void 0===cn||null===(V=cn.secretmanager.credentials)||void 0===V?void 0:V.private_key_id)||""})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,className:re.formFieldRow,children:(0,I.jsx)(Z.Z,{id:"gcp_private_key",name:"gcp_private_key",onChange:function(e){return un((0,o.Z)((0,o.Z)({},cn),{},{secretmanager:(0,o.Z)((0,o.Z)({},null===cn||void 0===cn?void 0:cn.secretmanager),{},{credentials:(0,o.Z)((0,o.Z)({},null===cn||void 0===cn?void 0:cn.secretmanager.credentials),{},{private_key:e.target.value})})}))},label:"Private Key",tooltip:"Is the private key of the GCP service account used to access the SecretManager",value:(null===cn||void 0===cn||null===(B=cn.secretmanager.credentials)||void 0===B?void 0:B.private_key)||""})})]})})]}),"aws"===ke&&(0,I.jsxs)(c.Fragment,{children:[(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsx)(Z.Z,{id:"aws_endpoint",name:"aws_endpoint",onChange:function(e){return Je((0,o.Z)((0,o.Z)({},Xe),{},{secretsmanager:(0,o.Z)((0,o.Z)({},null===Xe||void 0===Xe?void 0:Xe.secretsmanager),{},{endpoint:e.target.value})}))},label:"Endpoint",tooltip:"Endpoint is the AWS SecretsManager endpoint. AWS SecretsManager endpoints have the following schema: secrestmanager[-fips]..amanzonaws.com",value:(null===Xe||void 0===Xe||null===(W=Xe.secretsmanager)||void 0===W?void 0:W.endpoint)||"",required:!0,error:gi.aws_endpoint||""})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsx)(Z.Z,{id:"aws_region",name:"aws_region",onChange:function(e){return Je((0,o.Z)((0,o.Z)({},Xe),{},{secretsmanager:(0,o.Z)((0,o.Z)({},null===Xe||void 0===Xe?void 0:Xe.secretsmanager),{},{region:e.target.value})}))},label:"Region",tooltip:"Region is the AWS region the SecretsManager is located",value:(null===Xe||void 0===Xe||null===(L=Xe.secretsmanager)||void 0===L?void 0:L.region)||"",error:gi.aws_region||"",required:!0})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsx)(Z.Z,{id:"aws_kmsKey",name:"aws_kmsKey",onChange:function(e){return Je((0,o.Z)((0,o.Z)({},Xe),{},{secretsmanager:(0,o.Z)((0,o.Z)({},null===Xe||void 0===Xe?void 0:Xe.secretsmanager),{},{kmskey:e.target.value})}))},label:"KMS Key",tooltip:"KMSKey is the AWS-KMS key ID (CMK-ID) used to en/decrypt secrets managed by the SecretsManager. If empty, the default AWS KMS key is used",value:(null===Xe||void 0===Xe||null===(H=Xe.secretsmanager)||void 0===H?void 0:H.kmskey)||""})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsxs)("fieldset",{className:re.fieldGroup,children:[(0,I.jsx)("legend",{className:re.descriptionText,children:"Credentials"}),(0,I.jsx)(x.ZP,{item:!0,xs:12,className:re.formFieldRow,children:(0,I.jsx)(Z.Z,{id:"aws_accessKey",name:"aws_accessKey",onChange:function(e){var n;return Je((0,o.Z)((0,o.Z)({},Xe),{},{secretsmanager:(0,o.Z)((0,o.Z)({},null===Xe||void 0===Xe?void 0:Xe.secretsmanager),{},{credentials:(0,o.Z)((0,o.Z)({},null===Xe||void 0===Xe||null===(n=Xe.secretsmanager)||void 0===n?void 0:n.credentials),{},{accesskey:e.target.value})})}))},label:"Access Key",tooltip:"AccessKey is the access key for authenticating to AWS",value:(null===Xe||void 0===Xe||null===(O=Xe.secretsmanager)||void 0===O||null===(U=O.credentials)||void 0===U?void 0:U.accesskey)||"",error:gi.aws_accessKey||"",required:!0})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,className:re.formFieldRow,children:(0,I.jsx)(Z.Z,{id:"aws_secretKey",name:"aws_secretKey",onChange:function(e){var n;return Je((0,o.Z)((0,o.Z)({},Xe),{},{secretsmanager:(0,o.Z)((0,o.Z)({},null===Xe||void 0===Xe?void 0:Xe.secretsmanager),{},{credentials:(0,o.Z)((0,o.Z)({},null===Xe||void 0===Xe||null===(n=Xe.secretsmanager)||void 0===n?void 0:n.credentials),{},{secretkey:e.target.value})})}))},label:"Secret Key",tooltip:"SecretKey is the secret key for authenticating to AWS",value:(null===Xe||void 0===Xe||null===(Y=Xe.secretsmanager)||void 0===Y||null===(Q=Y.credentials)||void 0===Q?void 0:Q.secretkey)||"",error:gi.aws_secretKey||"",required:!0})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,className:re.formFieldRow,children:(0,I.jsx)(Z.Z,{id:"aws_token",name:"aws_token",onChange:function(e){var n;return Je((0,o.Z)((0,o.Z)({},Xe),{},{secretsmanager:(0,o.Z)((0,o.Z)({},null===Xe||void 0===Xe?void 0:Xe.secretsmanager),{},{credentials:(0,o.Z)((0,o.Z)({},null===Xe||void 0===Xe||null===(n=Xe.secretsmanager)||void 0===n?void 0:n.credentials),{},{token:e.target.value})})}))},label:"Token",tooltip:"SessionToken is an optional session token for authenticating to AWS when using STS",value:(null===Xe||void 0===Xe||null===(X=Xe.secretsmanager)||void 0===X||null===(J=X.credentials)||void 0===J?void 0:J.token)||""})})]})})]}),"gemalto"===ke&&(0,I.jsxs)(c.Fragment,{children:[(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsx)(Z.Z,{id:"gemalto_endpoint",name:"gemalto_endpoint",onChange:function(e){return ln((0,o.Z)((0,o.Z)({},nn),{},{keysecure:(0,o.Z)((0,o.Z)({},null===nn||void 0===nn?void 0:nn.keysecure),{},{endpoint:e.target.value})}))},label:"Endpoint",tooltip:"Endpoint is the endpoint to the KeySecure server",value:(null===nn||void 0===nn||null===($=nn.keysecure)||void 0===$?void 0:$.endpoint)||"",error:gi.gemalto_endpoint||"",required:!0})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,I.jsxs)("fieldset",{className:re.fieldGroup,children:[(0,I.jsx)("legend",{className:re.descriptionText,children:"Credentials"}),(0,I.jsx)(x.ZP,{item:!0,xs:12,className:re.formFieldRow,children:(0,I.jsx)(Z.Z,{id:"gemalto_token",name:"gemalto_token",onChange:function(e){var n;return ln((0,o.Z)((0,o.Z)({},nn),{},{keysecure:(0,o.Z)((0,o.Z)({},null===nn||void 0===nn?void 0:nn.keysecure),{},{credentials:(0,o.Z)((0,o.Z)({},null===nn||void 0===nn||null===(n=nn.keysecure)||void 0===n?void 0:n.credentials),{},{token:e.target.value})})}))},label:"Token",tooltip:"Token is the refresh authentication token to access the KeySecure server",value:(null===nn||void 0===nn||null===(ee=nn.keysecure)||void 0===ee||null===(ne=ee.credentials)||void 0===ne?void 0:ne.token)||"",error:gi.gemalto_token||"",required:!0})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,className:re.formFieldRow,children:(0,I.jsx)(Z.Z,{id:"gemalto_domain",name:"gemalto_domain",onChange:function(e){var n;return ln((0,o.Z)((0,o.Z)({},nn),{},{keysecure:(0,o.Z)((0,o.Z)({},null===nn||void 0===nn?void 0:nn.keysecure),{},{credentials:(0,o.Z)((0,o.Z)({},null===nn||void 0===nn||null===(n=nn.keysecure)||void 0===n?void 0:n.credentials),{},{domain:e.target.value})})}))},label:"Domain",tooltip:"Domain is the isolated namespace within the KeySecure server. If empty, defaults to the top-level / root domain",value:(null===nn||void 0===nn||null===(ie=nn.keysecure)||void 0===ie||null===(le=ie.credentials)||void 0===le?void 0:le.domain)||"",error:gi.gemalto_domain||"",required:!0})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,className:re.formFieldRow,children:(0,I.jsx)(Z.Z,{type:"number",min:"0",id:"gemalto_retry",name:"gemalto_retry",onChange:function(e){var n;return ln((0,o.Z)((0,o.Z)({},nn),{},{keysecure:(0,o.Z)((0,o.Z)({},null===nn||void 0===nn?void 0:nn.keysecure),{},{credentials:(0,o.Z)((0,o.Z)({},null===nn||void 0===nn||null===(n=nn.keysecure)||void 0===n?void 0:n.credentials),{},{retry:e.target.value})})}))},label:"Retry (seconds)",value:(null===nn||void 0===nn||null===(te=nn.keysecure)||void 0===te||null===(oe=te.credentials)||void 0===oe?void 0:oe.retry)||"",error:gi.gemalto_retry||""})})]})})]})]}),(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsx)(r.NZf,{children:"Additional Configuration for KES"})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsx)(p.Z,{value:"enableCustomCertsForKES",id:"enableCustomCertsForKES",name:"enableCustomCertsForKES",checked:pn,onChange:function(){return xn(!pn)},label:"Custom Certificates"})}),pn&&(0,I.jsxs)(c.Fragment,{children:[(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsxs)("fieldset",{className:re.fieldGroup,children:[(0,I.jsx)("legend",{className:re.descriptionText,children:"Encryption server certificates"}),jn?(0,I.jsx)(C.Z,{certificateInfo:jn,onDelete:function(){return bi(jn)}}):(0,I.jsxs)(c.Fragment,{children:[(0,I.jsx)(g.Z,{onChange:function(e,n){di({encoded_key:e||"",id:(null===si||void 0===si?void 0:si.id)||"",key:n||"",cert:(null===si||void 0===si?void 0:si.cert)||"",encoded_cert:(null===si||void 0===si?void 0:si.encoded_cert)||""}),hi("serverKey")},accept:".key,.pem",id:"serverKey",name:"serverKey",label:"Key",value:null===si||void 0===si?void 0:si.key}),(0,I.jsx)(g.Z,{onChange:function(e,n){di({encoded_key:(null===si||void 0===si?void 0:si.encoded_key)||"",id:(null===si||void 0===si?void 0:si.id)||"",key:(null===si||void 0===si?void 0:si.key)||"",cert:n||"",encoded_cert:e||""}),hi("serverCert")},accept:".cer,.crt,.cert,.pem",id:"serverCert",name:"serverCert",label:"Cert",value:null===si||void 0===si?void 0:si.cert})]})]})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsxs)("fieldset",{className:re.fieldGroup,children:[(0,I.jsx)("legend",{className:re.descriptionText,children:"MinIO mTLS certificates (connection between MinIO and the Encryption server)"}),Sn?(0,I.jsx)(C.Z,{certificateInfo:Sn,onDelete:function(){return bi(Sn)}}):(0,I.jsxs)(c.Fragment,{children:[(0,I.jsx)(g.Z,{onChange:function(e,n){In({encoded_key:e||"",id:(null===Nn||void 0===Nn?void 0:Nn.id)||"",key:n||"",cert:(null===Nn||void 0===Nn?void 0:Nn.cert)||"",encoded_cert:(null===Nn||void 0===Nn?void 0:Nn.encoded_cert)||""}),hi("clientKey")},accept:".key,.pem",id:"clientKey",name:"clientKey",label:"Key",value:null===Nn||void 0===Nn?void 0:Nn.key}),(0,I.jsx)(g.Z,{onChange:function(e,n){In({encoded_key:(null===Nn||void 0===Nn?void 0:Nn.encoded_key)||"",id:(null===Nn||void 0===Nn?void 0:Nn.id)||"",key:(null===Nn||void 0===Nn?void 0:Nn.key)||"",cert:n||"",encoded_cert:e||""}),hi("clientCert")},accept:".cer,.crt,.cert,.pem",id:"clientCert",name:"clientCert",label:"Cert",value:null===Nn||void 0===Nn?void 0:Nn.cert})]})]})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsxs)("fieldset",{className:re.fieldGroup,children:[(0,I.jsx)("legend",{className:re.descriptionText,children:"KMS mTLS certificates (connection between the Encryption server and the KMS)"}),Qn?(0,I.jsx)(C.Z,{certificateInfo:Qn,onDelete:function(){return bi(Qn)}}):(0,I.jsxs)(c.Fragment,{children:[(0,I.jsx)(g.Z,{onChange:function(e,n){oi({encoded_key:e||"",id:(null===ti||void 0===ti?void 0:ti.id)||"",key:n||"",cert:(null===ti||void 0===ti?void 0:ti.cert)||"",encoded_cert:(null===ti||void 0===ti?void 0:ti.encoded_cert)||""})},accept:".key,.pem",id:"kms_mtls_key",name:"kms_mtls_key",label:"Key",value:null===ti||void 0===ti?void 0:ti.key}),(0,I.jsx)(g.Z,{onChange:function(e,n){return oi({encoded_key:(null===ti||void 0===ti?void 0:ti.encoded_key)||"",id:(null===ti||void 0===ti?void 0:ti.id)||"",key:(null===ti||void 0===ti?void 0:ti.key)||"",cert:n||"",encoded_cert:e||""})},accept:".cer,.crt,.cert,.pem",id:"kms_mtls_cert",name:"kms_mtls_cert",label:"Cert",value:(null===ti||void 0===ti?void 0:ti.cert)||""})]}),ei?(0,I.jsx)(C.Z,{certificateInfo:ei,onDelete:function(){return bi(ei)}}):(0,I.jsx)(g.Z,{onChange:function(e,n){return mi({encoded_key:(null===vi||void 0===vi?void 0:vi.encoded_key)||"",id:(null===vi||void 0===vi?void 0:vi.id)||"",key:(null===vi||void 0===vi?void 0:vi.key)||"",cert:n||"",encoded_cert:e||""})},accept:".cer,.crt,.cert,.pem",id:"kms_mtls_ca",name:"kms_mtls_ca",label:"CA",value:(null===vi||void 0===vi?void 0:vi.cert)||""})]})})]}),(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsx)(Z.Z,{type:"text",id:"image",name:"image",onChange:function(e){return Ae(e.target.value)},label:"Image",tooltip:"KES container image",placeholder:"minio/kes:2023-08-19T17-27-47Z",value:Ie})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsx)(Z.Z,{type:"number",min:"1",id:"replicas",name:"replicas",onChange:function(e){return Ke(e.target.value)},label:"Replicas",tooltip:"Numer of KES pod replicas",value:we,required:!0,error:gi.replicas||""})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsx)(r.NZf,{children:"SecurityContext for KES"})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsxs)("div",{className:"".concat(re.multiContainer," ").concat(re.responsiveContainer),children:[(0,I.jsx)("div",{className:"".concat(re.formFieldRow," ").concat(re.rightSpacer),children:(0,I.jsx)(Z.Z,{type:"number",id:"kes_securityContext_runAsUser",name:"kes_securityContext_runAsUser",onChange:function(e){Te((0,o.Z)((0,o.Z)({},De),{},{runAsUser:e.target.value}))},label:"Run As User",value:De.runAsUser,required:!0,error:gi.kes_securityContext_runAsUser||"",min:"0"})}),(0,I.jsx)("div",{className:"".concat(re.formFieldRow," ").concat(re.rightSpacer),children:(0,I.jsx)(Z.Z,{type:"number",id:"kes_securityContext_runAsGroup",name:"kes_securityContext_runAsGroup",onChange:function(e){Te((0,o.Z)((0,o.Z)({},De),{},{runAsGroup:e.target.value}))},label:"Run As Group",value:De.runAsGroup,required:!0,error:gi.kes_securityContext_runAsGroup||"",min:"0"})}),(0,I.jsx)("div",{className:"".concat(re.formFieldRow," ").concat(re.rightSpacer),children:(0,I.jsx)(Z.Z,{type:"number",id:"kes_securityContext_fsGroup",name:"kes_securityContext_fsGroup",onChange:function(e){Te((0,o.Z)((0,o.Z)({},De),{},{fsGroup:e.target.value}))},label:"FsGroup",value:De.fsGroup,required:!0,error:gi.kes_securityContext_fsGroup||"",min:"0"})})]})}),(0,I.jsx)(x.ZP,{item:!0,xs:12,children:(0,I.jsx)(p.Z,{value:"kesSecurityContextRunAsNonRoot",id:"kes_securityContext_runAsNonRoot",name:"kes_securityContext_runAsNonRoot",checked:De.runAsNonRoot,onChange:function(e){var n=e.target.checked;Te((0,o.Z)((0,o.Z)({},De),{},{runAsNonRoot:n}))},label:"Do not run as Root"})})]}),(0,I.jsx)(x.ZP,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:(0,I.jsx)(r.zxk,{id:"save-encryption",type:"submit",variant:"callAction",disabled:!Vn,onClick:function(){return ji(!0)},label:"Save"})})]})]})}))},22512:function(e,n,i){var l=i(72791),t=i(20890),o=i(11135),r=i(25787),a=i(80184);n.Z=(0,r.Z)((function(e){var n;return(0,o.Z)({errorBlock:{color:(null===(n=e.palette)||void 0===n?void 0:n.error.main)||"#C83B51"}})}))((function(e){var n=e.classes,i=e.errorMessage,o=e.withBreak,r=void 0===o||o;return(0,a.jsxs)(l.Fragment,{children:[r&&(0,a.jsx)("br",{}),(0,a.jsx)(t.Z,{component:"p",variant:"body1",className:n.errorBlock,children:i})]})}))}}]); -//# sourceMappingURL=367.2251aaba.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/367.2251aaba.chunk.js.map b/web-app/build/static/js/367.2251aaba.chunk.js.map deleted file mode 100644 index 55743ad0535..00000000000 --- a/web-app/build/static/js/367.2251aaba.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/367.2251aaba.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper.tsx","screens/Console/Common/FormComponents/FileSelector/FileSelector.tsx","screens/Console/Common/FormComponents/FileSelector/utils.ts","screens/Console/Common/FormHr.tsx","screens/Console/Common/TLSCertificate/TLSCertificate.tsx","screens/Console/Tenants/TenantDetails/KMSPolicyInfo.tsx","screens/Console/Tenants/TenantDetails/TenantEncryption.tsx","screens/shared/ErrorBlock.tsx"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Box, InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Button, CopyIcon, HelpIcon } from \"mds\";\nimport { fieldBasic } from \"../common/styleLibrary\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport CodeEditor from \"@uiw/react-textarea-code-editor\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n classes: any;\n onChange?: (editor: any, data: any, value: string) => any;\n onBeforeChange: (editor: any, data: any, value: string) => any;\n readOnly?: boolean;\n editorHeight?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n });\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n classes,\n onBeforeChange,\n readOnly = false,\n editorHeight = \"250px\",\n}: ICodeWrapper) => {\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n
\n\n \n {\n onBeforeChange(null, null, evn.target.value);\n }}\n id={\"code_wrapper\"}\n padding={15}\n style={{\n fontSize: 12,\n backgroundColor: \"#fefefe\",\n fontFamily:\n \"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace\",\n minHeight: editorHeight || \"initial\",\n color: \"#000000\",\n }}\n />\n \n \n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n \n
\n );\n};\n\nexport default withStyles(styles)(CodeMirrorWrapper);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport get from \"lodash/get\";\nimport { Grid, InputLabel, Tooltip } from \"@mui/material\";\nimport IconButton from \"@mui/material/IconButton\";\nimport AttachFileIcon from \"@mui/icons-material/AttachFile\";\nimport CancelIcon from \"@mui/icons-material/Cancel\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n fileInputStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { fileProcess } from \"./utils\";\nimport { HelpIcon } from \"mds\";\nimport ErrorBlock from \"../../../../shared/ErrorBlock\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: string, i: string) => void;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n required?: boolean;\n error?: string;\n accept?: string;\n value?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n valueString: {\n maxWidth: 350,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n marginTop: 2,\n },\n fileInputField: {\n margin: \"13px 0\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n ...fileInputStyles,\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n textBoxContainer: {\n ...fieldBasic.textBoxContainer,\n maxWidth: \"100%\",\n border: \"1px solid #eaeaea\",\n paddingLeft: \"15px\",\n },\n });\n\nconst FileSelector = ({\n label,\n classes,\n onChange,\n id,\n name,\n disabled = false,\n tooltip = \"\",\n required,\n error = \"\",\n accept = \"\",\n value = \"\",\n}: InputBoxProps) => {\n const [showFileSelector, setShowSelector] = useState(false);\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n {showFileSelector || value === \"\" ? (\n
\n {\n const fileName = get(e, \"target.files[0].name\", \"\");\n fileProcess(e, (data: any) => {\n onChange(data, fileName);\n });\n }}\n accept={accept}\n required={required}\n disabled={disabled}\n className={classes.fileInputField}\n />\n\n {value !== \"\" && (\n {\n setShowSelector(false);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n )}\n\n {error !== \"\" && }\n
\n ) : (\n
\n
{value}
\n {\n setShowSelector(true);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n
\n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(FileSelector);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const fileProcess = (evt: any, callback: any) => {\n const file = evt.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n // reader.readAsDataURL(file) output will be something like: data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSU\n // we care only about the actual base64 part (everything after \"data:application/x-x509-ca-cert;base64,\")\n const fileBase64 = reader.result;\n if (fileBase64) {\n const fileArray = fileBase64.toString().split(\"base64,\");\n\n if (fileArray.length === 2) {\n callback(fileArray[1]);\n }\n }\n };\n};\n","// This file is part of MinIO Operator\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport styled from \"@emotion/styled\";\n\nconst FormHr = styled(\"hr\")`\n border-top: 0;\n border-left: 0;\n border-right: 0;\n border-color: #999999;\n background-color: transparent;\n`;\n\nexport default FormHr;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { DateTime, Duration } from \"luxon\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { ICertificateInfo } from \"../../Tenants/types\";\nimport LanguageIcon from \"@mui/icons-material/Language\";\nimport Chip from \"@mui/material/Chip\";\nimport {\n Box,\n Container,\n Divider,\n Grid,\n List,\n ListItem,\n ListItemAvatar,\n ListItemText,\n Typography,\n} from \"@mui/material\";\nimport EventBusyIcon from \"@mui/icons-material/EventBusy\";\nimport AccessTimeIcon from \"@mui/icons-material/AccessTime\";\nimport { CertificateIcon } from \"mds\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n certificateIcon: {\n float: \"left\",\n paddingTop: \"5px !important\",\n paddingRight: \"10px !important\",\n },\n certificateInfo: { float: \"right\" },\n certificateWrapper: {\n height: \"auto\",\n margin: 5,\n border: \"1px solid #E2E2E2\",\n userSelect: \"text\",\n borderRadius: 4,\n \"& h6\": {\n fontWeight: \"bold\",\n },\n \"& div\": {\n padding: 0,\n },\n },\n certificateExpiry: {\n color: \"#616161\",\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n marginBottom: 5,\n \"& .label\": {\n fontWeight: \"bold\",\n },\n },\n certificateDomains: {\n color: \"#616161\",\n \"& .label\": {\n fontWeight: \"bold\",\n },\n },\n certificatesList: {\n border: \"1px solid #E2E2E2\",\n borderRadius: 4,\n color: \"#616161\",\n textTransform: \"lowercase\",\n overflowY: \"scroll\",\n maxHeight: 145,\n marginBottom: 10,\n },\n certificatesListItem: {\n padding: \"0px 16px\",\n borderBottom: \"1px solid #E2E2E2\",\n \"& div\": {\n minWidth: 0,\n },\n \"& svg\": {\n fontSize: 12,\n marginRight: 10,\n opacity: 0.5,\n },\n \"& span\": {\n fontSize: 12,\n },\n },\n certificateExpiring: {\n color: \"orange\",\n \"& .label\": {\n fontWeight: \"bold\",\n },\n },\n certificateExpired: {\n color: \"red\",\n \"& .label\": {\n fontWeight: \"bold\",\n },\n },\n });\n\ninterface ITLSCertificate {\n classes: any;\n certificateInfo: ICertificateInfo;\n onDelete: any;\n}\n\nconst TLSCertificate = ({\n classes,\n certificateInfo,\n onDelete = () => {},\n}: ITLSCertificate) => {\n const certificates = certificateInfo.domains || [];\n\n const expiry = DateTime.fromISO(certificateInfo.expiry);\n const now = DateTime.utc();\n // Expose error on Tenant if certificate is near expiration or expired\n let daysToExpiry: number = 0;\n let daysToExpiryHuman: string = \"\";\n let certificateExpiration: string = \"\";\n if (expiry) {\n let durationToExpiry = expiry.diff(now);\n daysToExpiry = durationToExpiry.as(\"days\");\n daysToExpiryHuman = durationToExpiry\n .minus(Duration.fromObject({ days: 1 }))\n .shiftTo(\"days\")\n .toHuman({ listStyle: \"long\", maximumFractionDigits: 0 });\n if (daysToExpiry >= 10 && daysToExpiry < 30) {\n certificateExpiration = classes.certificateExpiring;\n }\n if (daysToExpiry < 10) {\n certificateExpiration = classes.certificateExpired;\n if (daysToExpiry < 2) {\n daysToExpiryHuman = durationToExpiry\n .minus(Duration.fromObject({ minutes: 1 }))\n .shiftTo(\"hours\", \"minutes\")\n .toHuman({ listStyle: \"long\", maximumFractionDigits: 0 });\n if (durationToExpiry.as(\"minutes\") <= 1) {\n daysToExpiryHuman = \"EXPIRED\";\n }\n }\n }\n }\n\n return (\n \n \n \n \n \n \n {certificateInfo.name}\n \n \n \n  \n Expiry: \n {expiry.toFormat(\"yyyy/MM/dd\")}\n \n \n \n  \n Expires in: \n {daysToExpiryHuman}\n \n \n
\n \n {`${certificates.length} Domain (s):`}\n \n \n {certificates.map((dom, index) => (\n \n \n \n \n \n \n ))}\n \n
\n \n }\n onDelete={onDelete}\n />\n );\n};\n\nexport default withStyles(styles)(TLSCertificate);\n","// This file is part of MinIO Operator\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Box } from \"mds\";\n\nconst getPolicyData = (policies: Record = {}) => {\n const policyNames = Object.keys(policies);\n return policyNames.map((polName: string) => {\n const policyConfig = policies[polName] || {};\n return {\n name: polName || \"\",\n identities: policyConfig.identities || [],\n // v1 specific\n paths: policyConfig.paths || [],\n // v2 specific\n allow: policyConfig.allow || [],\n deny: policyConfig.deny || [],\n };\n });\n};\n\nconst PolicyItem = ({\n items = [],\n title = \"\",\n}: {\n items: string[];\n title: string;\n}) => {\n return items?.length ? (\n \n \n {title}\n \n \n {items.map((iTxt: string) => {\n return - {iTxt};\n })}\n \n \n ) : null;\n};\n\nconst KMSPolicyInfo = ({\n policies = {},\n}: {\n policies: Record;\n}) => {\n const fmtPolicies = getPolicyData(policies);\n return fmtPolicies.length ? (\n \n

Policies

\n \n {fmtPolicies.map((pConf: Record) => {\n return (\n \n
\n \n Policy Name:\n {\" \"}\n {pConf.name}\n
\n \n \n \n \n \n );\n })}\n \n
\n ) : null;\n};\n\nexport default KMSPolicyInfo;\n","// This file is part of MinIO Operator\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { ICertificateInfo, ITenantEncryptionResponse } from \"../types\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button, WarnIcon, SectionTitle } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n containerForHeader,\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n spacingUtils,\n tenantDetailsStyles,\n wizardCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport api from \"../../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\n\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport FileSelector from \"../../Common/FormComponents/FileSelector/FileSelector\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport RadioGroupSelector from \"../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport { DialogContentText } from \"@mui/material\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { KeyPair } from \"../ListTenants/utils\";\nimport { clearValidationError } from \"../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../utils/validationFunctions\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport TLSCertificate from \"../../Common/TLSCertificate/TLSCertificate\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport Tabs from \"@mui/material/Tabs\";\nimport Tab from \"@mui/material/Tab\";\nimport CodeMirrorWrapper from \"../../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport FormHr from \"../../Common/FormHr\";\nimport { SecurityContext } from \"../../../../api/operatorApi\";\nimport KMSPolicyInfo from \"./KMSPolicyInfo\";\n\ninterface ITenantEncryption {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n ...spacingUtils,\n ...containerForHeader,\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n warningBlock: {\n color: \"red\",\n fontSize: \".85rem\",\n margin: \".5rem 0 .5rem 0\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg \": {\n marginRight: \".3rem\",\n height: 16,\n width: 16,\n },\n },\n });\n\nconst TenantEncryption = ({ classes }: ITenantEncryption) => {\n const dispatch = useAppDispatch();\n\n const tenant = useSelector((state: AppState) => state.tenants.tenantInfo);\n const [editRawConfiguration, setEditRawConfiguration] = useState(0);\n const [encryptionRawConfiguration, setEncryptionRawConfiguration] =\n useState(\"\");\n const [encryptionEnabled, setEncryptionEnabled] = useState(false);\n const [encryptionType, setEncryptionType] = useState(\"vault\");\n const [replicas, setReplicas] = useState(\"1\");\n const [image, setImage] = useState(\"\");\n const [refreshEncryptionInfo, setRefreshEncryptionInfo] =\n useState(false);\n const [securityContext, setSecurityContext] = useState({\n fsGroup: \"1000\",\n fsGroupChangePolicy: \"Always\",\n runAsGroup: \"1000\",\n runAsNonRoot: true,\n runAsUser: \"1000\",\n });\n const [policies, setPolicies] = useState([]);\n const [vaultConfiguration, setVaultConfiguration] = useState(null);\n const [awsConfiguration, setAWSConfiguration] = useState(null);\n const [gemaltoConfiguration, setGemaltoConfiguration] = useState(null);\n const [azureConfiguration, setAzureConfiguration] = useState(null);\n const [gcpConfiguration, setGCPConfiguration] = useState(null);\n const [enabledCustomCertificates, setEnabledCustomCertificates] =\n useState(false);\n const [updatingEncryption, setUpdatingEncryption] = useState(false);\n const [kesServerTLSCertificateSecret, setKesServerTLSCertificateSecret] =\n useState(null);\n const [minioMTLSCertificateSecret, setMinioMTLSCertificateSecret] =\n useState(null);\n const [minioMTLSCertificate, setMinioMTLSCertificate] =\n useState(null);\n const [certificatesToBeRemoved, setCertificatesToBeRemoved] = useState<\n string[]\n >([]);\n const [showVaultAppRoleID, setShowVaultAppRoleID] = useState(false);\n const [isFormValid, setIsFormValid] = useState(false);\n const [showVaultAppRoleSecret, setShowVaultAppRoleSecret] =\n useState(false);\n const [kmsMTLSCertificateSecret, setKmsMTLSCertificateSecret] =\n useState(null);\n const [kmsCACertificateSecret, setKMSCACertificateSecret] =\n useState(null);\n const [kmsMTLSCertificate, setKmsMTLSCertificate] = useState(\n null,\n );\n const [kesServerCertificate, setKESServerCertificate] =\n useState(null);\n const [kmsCACertificate, setKmsCACertificate] = useState(\n null,\n );\n const [validationErrors, setValidationErrors] = useState({});\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n const [confirmOpen, setConfirmOpen] = useState(false);\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (encryptionEnabled) {\n encryptionValidation = [\n {\n fieldKey: \"replicas\",\n required: true,\n value: replicas,\n customValidation: parseInt(replicas) < 1,\n customValidationMessage: \"Replicas needs to be 1 or greater\",\n },\n {\n fieldKey: \"kes_securityContext_runAsUser\",\n required: true,\n value: securityContext.runAsUser,\n customValidation:\n securityContext.runAsUser === \"\" ||\n parseInt(securityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"kes_securityContext_runAsGroup\",\n required: true,\n value: securityContext.runAsGroup,\n customValidation:\n securityContext.runAsGroup === \"\" ||\n parseInt(securityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"kes_securityContext_fsGroup\",\n required: true,\n value: securityContext.fsGroup!,\n customValidation:\n securityContext.fsGroup === \"\" ||\n parseInt(securityContext.fsGroup!) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n\n if (enabledCustomCertificates) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"serverKey\",\n required: false,\n value: kesServerCertificate?.encoded_key || \"\",\n },\n {\n fieldKey: \"serverCert\",\n required: false,\n value: kesServerCertificate?.encoded_cert || \"\",\n },\n {\n fieldKey: \"clientKey\",\n required: false,\n value: minioMTLSCertificate?.encoded_key || \"\",\n },\n {\n fieldKey: \"clientCert\",\n required: false,\n value: minioMTLSCertificate?.encoded_cert || \"\",\n },\n ];\n }\n\n if (encryptionType === \"vault\") {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"vault_endpoint\",\n required: true,\n value: vaultConfiguration?.endpoint,\n },\n {\n fieldKey: \"vault_id\",\n required: true,\n value: vaultConfiguration?.approle?.id,\n },\n {\n fieldKey: \"vault_secret\",\n required: true,\n value: vaultConfiguration?.approle?.secret,\n },\n {\n fieldKey: \"vault_ping\",\n required: false,\n value: vaultConfiguration?.status?.ping,\n customValidation: parseInt(vaultConfiguration?.status?.ping) < 0,\n customValidationMessage: \"Value needs to be 0 or greater\",\n },\n {\n fieldKey: \"vault_retry\",\n required: false,\n value: vaultConfiguration?.approle?.retry,\n customValidation: parseInt(vaultConfiguration?.approle?.retry) < 0,\n customValidationMessage: \"Value needs to be 0 or greater\",\n },\n ];\n }\n\n if (encryptionType === \"aws\") {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"aws_endpoint\",\n required: true,\n value: awsConfiguration?.secretsmanager?.endpoint,\n },\n {\n fieldKey: \"aws_region\",\n required: true,\n value: awsConfiguration?.secretsmanager?.region,\n },\n {\n fieldKey: \"aws_accessKey\",\n required: true,\n value: awsConfiguration?.secretsmanager?.credentials?.accesskey,\n },\n {\n fieldKey: \"aws_secretKey\",\n required: true,\n value: awsConfiguration?.secretsmanager?.credentials?.secretkey,\n },\n ];\n }\n\n if (encryptionType === \"gemalto\") {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"gemalto_endpoint\",\n required: true,\n value: gemaltoConfiguration?.keysecure?.endpoint,\n },\n {\n fieldKey: \"gemalto_token\",\n required: true,\n value: gemaltoConfiguration?.keysecure?.credentials?.token,\n },\n {\n fieldKey: \"gemalto_domain\",\n required: true,\n value: gemaltoConfiguration?.keysecure?.credentials?.domain,\n },\n {\n fieldKey: \"gemalto_retry\",\n required: false,\n value: gemaltoConfiguration?.keysecure?.credentials?.retry,\n customValidation:\n parseInt(gemaltoConfiguration?.keysecure?.credentials?.retry) < 0,\n customValidationMessage: \"Value needs to be 0 or greater\",\n },\n ];\n }\n\n if (encryptionType === \"azure\") {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"azure_endpoint\",\n required: true,\n value: azureConfiguration?.keyvault?.endpoint,\n },\n {\n fieldKey: \"azure_tenant_id\",\n required: true,\n value: azureConfiguration?.keyvault?.credentials?.tenant_id,\n },\n {\n fieldKey: \"azure_client_id\",\n required: true,\n value: azureConfiguration?.keyvault?.credentials?.client_id,\n },\n {\n fieldKey: \"azure_client_secret\",\n required: true,\n value: azureConfiguration?.keyvault?.credentials?.client_secret,\n },\n ];\n }\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n\n setIsFormValid(Object.keys(commonVal).length === 0);\n\n setValidationErrors(commonVal);\n }, [\n enabledCustomCertificates,\n encryptionEnabled,\n encryptionType,\n kesServerCertificate?.encoded_key,\n kesServerCertificate?.encoded_cert,\n minioMTLSCertificate?.encoded_key,\n minioMTLSCertificate?.encoded_cert,\n kmsMTLSCertificate?.encoded_key,\n kmsMTLSCertificate?.encoded_cert,\n kmsCACertificate?.encoded_key,\n kmsCACertificate?.encoded_cert,\n securityContext,\n vaultConfiguration,\n awsConfiguration,\n gemaltoConfiguration,\n azureConfiguration,\n gcpConfiguration,\n replicas,\n ]);\n\n const fetchEncryptionInfo = () => {\n if (!refreshEncryptionInfo && tenant?.namespace && tenant?.name) {\n setRefreshEncryptionInfo(true);\n api\n .invoke(\n \"GET\",\n `/api/v1/namespaces/${tenant?.namespace}/tenants/${tenant?.name}/encryption`,\n )\n .then((resp: ITenantEncryptionResponse) => {\n setEncryptionRawConfiguration(resp.raw);\n if (resp.policies) {\n setPolicies(resp.policies);\n }\n if (resp.vault) {\n setEncryptionType(\"vault\");\n setVaultConfiguration(resp.vault);\n } else if (resp.aws) {\n setEncryptionType(\"aws\");\n setAWSConfiguration(resp.aws);\n } else if (resp.gemalto) {\n setEncryptionType(\"gemalto\");\n setGemaltoConfiguration(resp.gemalto);\n } else if (resp.gcp) {\n setEncryptionType(\"gcp\");\n setGCPConfiguration(resp.gcp);\n } else if (resp.azure) {\n setEncryptionType(\"azure\");\n setAzureConfiguration(resp.azure);\n }\n\n setEncryptionEnabled(true);\n setImage(resp.image);\n setReplicas(resp.replicas);\n if (resp.securityContext) {\n setSecurityContext(resp.securityContext);\n }\n if (resp.server_tls || resp.minio_mtls || resp.kms_mtls) {\n setEnabledCustomCertificates(true);\n }\n if (resp.server_tls) {\n setKesServerTLSCertificateSecret(resp.server_tls);\n }\n if (resp.minio_mtls) {\n setMinioMTLSCertificateSecret(resp.minio_mtls);\n }\n if (resp.kms_mtls) {\n setKmsMTLSCertificateSecret(resp.kms_mtls.crt);\n setKMSCACertificateSecret(resp.kms_mtls.ca);\n }\n setRefreshEncryptionInfo(false);\n })\n .catch((err: ErrorResponseHandler) => {\n console.error(err);\n setRefreshEncryptionInfo(false);\n });\n }\n };\n\n useEffect(() => {\n fetchEncryptionInfo();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tenant]);\n\n const removeCertificate = (certificateInfo: ICertificateInfo) => {\n setCertificatesToBeRemoved([\n ...certificatesToBeRemoved,\n certificateInfo.name,\n ]);\n if (certificateInfo.name === kesServerTLSCertificateSecret?.name) {\n setKesServerTLSCertificateSecret(null);\n }\n if (certificateInfo.name === minioMTLSCertificateSecret?.name) {\n setMinioMTLSCertificateSecret(null);\n }\n if (certificateInfo.name === kmsMTLSCertificateSecret?.name) {\n setKmsMTLSCertificateSecret(null);\n }\n if (certificateInfo.name === kmsCACertificateSecret?.name) {\n setKMSCACertificateSecret(null);\n }\n };\n\n const updateEncryptionConfiguration = () => {\n if (encryptionEnabled) {\n let insertEncrypt = {};\n switch (encryptionType) {\n case \"gemalto\":\n insertEncrypt = {\n gemalto: {\n keysecure: {\n endpoint: gemaltoConfiguration?.keysecure?.endpoint || \"\",\n credentials: {\n token:\n gemaltoConfiguration?.keysecure?.credentials?.token || \"\",\n domain:\n gemaltoConfiguration?.keysecure?.credentials?.domain || \"\",\n retry: parseInt(\n gemaltoConfiguration?.keysecure?.credentials?.retry,\n ),\n },\n },\n },\n };\n break;\n case \"aws\":\n insertEncrypt = {\n aws: {\n secretsmanager: {\n endpoint: awsConfiguration?.secretsmanager?.endpoint || \"\",\n region: awsConfiguration?.secretsmanager?.region || \"\",\n kmskey: awsConfiguration?.secretsmanager?.kmskey || \"\",\n credentials: {\n accesskey:\n awsConfiguration?.secretsmanager?.credentials?.accesskey ||\n \"\",\n secretkey:\n awsConfiguration?.secretsmanager?.credentials?.secretkey ||\n \"\",\n token:\n awsConfiguration?.secretsmanager?.credentials?.token || \"\",\n },\n },\n },\n };\n break;\n case \"azure\":\n insertEncrypt = {\n azure: {\n keyvault: {\n endpoint: azureConfiguration?.keyvault?.endpoint || \"\",\n credentials: {\n tenant_id:\n azureConfiguration?.keyvault?.credentials?.tenant_id || \"\",\n client_id:\n azureConfiguration?.keyvault?.credentials?.client_id || \"\",\n client_secret:\n azureConfiguration?.keyvault?.credentials?.client_secret ||\n \"\",\n },\n },\n },\n };\n break;\n case \"gcp\":\n insertEncrypt = {\n gcp: {\n secretmanager: {\n project_id: gcpConfiguration?.secretmanager?.project_id || \"\",\n endpoint: gcpConfiguration?.secretmanager?.endpoint || \"\",\n credentials: {\n client_email:\n gcpConfiguration?.secretmanager?.credentials\n ?.client_email || \"\",\n client_id:\n gcpConfiguration?.secretmanager?.credentials?.client_id ||\n \"\",\n private_key_id:\n gcpConfiguration?.secretmanager?.credentials\n ?.private_key_id || \"\",\n private_key:\n gcpConfiguration?.secretmanager?.credentials?.private_key ||\n \"\",\n },\n },\n },\n };\n break;\n case \"vault\":\n insertEncrypt = {\n vault: {\n endpoint: vaultConfiguration?.endpoint || \"\",\n engine: vaultConfiguration?.engine || \"\",\n namespace: vaultConfiguration?.namespace || \"\",\n prefix: vaultConfiguration?.prefix || \"\",\n approle: {\n engine: vaultConfiguration?.approle?.engine || \"\",\n id: vaultConfiguration?.approle?.id || \"\",\n secret: vaultConfiguration?.approle?.secret || \"\",\n retry: parseInt(vaultConfiguration?.approle?.retry),\n },\n status: {\n ping: parseInt(vaultConfiguration?.status?.ping),\n },\n },\n };\n break;\n }\n\n let encryptionServerKeyPair: any = {};\n let encryptionClientKeyPair: any = {};\n let encryptionKMSCertificates: any = {};\n\n // MinIO -> KES (mTLS certificates)\n if (\n minioMTLSCertificate?.encoded_key &&\n minioMTLSCertificate?.encoded_cert\n ) {\n encryptionClientKeyPair = {\n minio_mtls: {\n key: minioMTLSCertificate?.encoded_key,\n crt: minioMTLSCertificate?.encoded_cert,\n },\n };\n }\n\n // KES server certificates\n if (\n kesServerCertificate?.encoded_key &&\n kesServerCertificate?.encoded_cert\n ) {\n encryptionServerKeyPair = {\n server_tls: {\n key: kesServerCertificate?.encoded_key,\n crt: kesServerCertificate?.encoded_cert,\n },\n };\n }\n\n // KES -> KMS (mTLS certificates)\n let kmsMTLSKeyPair = null;\n let kmsCAInsert = null;\n if (kmsMTLSCertificate?.encoded_key && kmsMTLSCertificate?.encoded_cert) {\n kmsMTLSKeyPair = {\n key: kmsMTLSCertificate?.encoded_key,\n crt: kmsMTLSCertificate?.encoded_cert,\n };\n }\n if (kmsCACertificate?.encoded_cert) {\n kmsCAInsert = {\n ca: kmsCACertificate?.encoded_cert,\n };\n }\n if (kmsMTLSKeyPair || kmsCAInsert) {\n encryptionKMSCertificates = {\n kms_mtls: {\n ...kmsMTLSKeyPair,\n ...kmsCAInsert,\n },\n };\n }\n\n const dataSend = {\n raw: editRawConfiguration ? encryptionRawConfiguration : \"\",\n secretsToBeDeleted: certificatesToBeRemoved || [],\n replicas: replicas,\n securityContext: securityContext,\n image: image,\n ...encryptionClientKeyPair,\n ...encryptionServerKeyPair,\n ...encryptionKMSCertificates,\n ...insertEncrypt,\n };\n if (!updatingEncryption) {\n setUpdatingEncryption(true);\n api\n .invoke(\n \"PUT\",\n `/api/v1/namespaces/${tenant?.namespace}/tenants/${tenant?.name}/encryption`,\n dataSend,\n )\n .then(() => {\n setConfirmOpen(false);\n setUpdatingEncryption(false);\n fetchEncryptionInfo();\n })\n .catch((err: ErrorResponseHandler) => {\n setUpdatingEncryption(false);\n dispatch(setErrorSnackMessage(err));\n });\n }\n } else {\n if (!updatingEncryption) {\n setUpdatingEncryption(true);\n api\n .invoke(\n \"DELETE\",\n `/api/v1/namespaces/${tenant?.namespace}/tenants/${tenant?.name}/encryption`,\n {},\n )\n .then(() => {\n setConfirmOpen(false);\n setUpdatingEncryption(false);\n fetchEncryptionInfo();\n })\n .catch((err: ErrorResponseHandler) => {\n setUpdatingEncryption(false);\n dispatch(setErrorSnackMessage(err));\n });\n }\n }\n };\n\n return (\n \n {confirmOpen && (\n setConfirmOpen(false)}\n onConfirm={updateEncryptionConfiguration}\n confirmationContent={\n \n {encryptionEnabled\n ? \"Data will be encrypted using and external KMS\"\n : \"Current encrypted information will not be accessible\"}\n {encryptionEnabled && (\n
\n \n \n The content of the KES config secret will be overwritten.\n \n
\n )}\n
\n }\n />\n )}\n \n \n Encryption\n \n \n {\n setEncryptionEnabled(!encryptionEnabled);\n }}\n description=\"\"\n />\n \n \n \n \n {encryptionEnabled && (\n \n \n , newValue: number) => {\n setEditRawConfiguration(newValue);\n }}\n indicatorColor=\"primary\"\n textColor=\"primary\"\n aria-label=\"cluster-tabs\"\n variant=\"scrollable\"\n scrollButtons=\"auto\"\n >\n \n \n \n \n\n {editRawConfiguration ? (\n \n \n {\n setEncryptionRawConfiguration(value);\n }}\n editorHeight={\"550px\"}\n />\n \n \n ) : (\n \n \n \n {\n setEncryptionType(e.target.value);\n }}\n selectorOptions={[\n { label: \"Vault\", value: \"vault\" },\n { label: \"AWS\", value: \"aws\" },\n { label: \"Gemalto\", value: \"gemalto\" },\n { label: \"GCP\", value: \"gcp\" },\n { label: \"Azure\", value: \"azure\" },\n ]}\n />\n \n\n {encryptionType === \"vault\" && (\n \n \n ) =>\n setVaultConfiguration({\n ...vaultConfiguration,\n endpoint: e.target.value,\n })\n }\n label=\"Endpoint\"\n tooltip=\"Endpoint is the Hashicorp Vault endpoint\"\n value={vaultConfiguration?.endpoint || \"\"}\n error={validationErrors[\"vault_ping\"] || \"\"}\n required\n />\n \n \n ) =>\n setVaultConfiguration({\n ...vaultConfiguration,\n engine: e.target.value,\n })\n }\n label=\"Engine\"\n tooltip=\"Engine is the Hashicorp Vault K/V engine path. If empty, defaults to 'kv'\"\n value={vaultConfiguration?.engine || \"\"}\n />\n \n \n ) =>\n setVaultConfiguration({\n ...vaultConfiguration,\n namespace: e.target.value,\n })\n }\n label=\"Namespace\"\n tooltip=\"Namespace is an optional Hashicorp Vault namespace. An empty namespace means no particular namespace is used.\"\n value={vaultConfiguration?.namespace || \"\"}\n />\n \n \n ) =>\n setVaultConfiguration({\n ...vaultConfiguration,\n prefix: e.target.value,\n })\n }\n label=\"Prefix\"\n tooltip=\"Prefix is an optional prefix / directory within the K/V engine. If empty, keys will be stored at the K/V engine top level\"\n value={vaultConfiguration?.prefix || \"\"}\n />\n \n \n App Role\n \n \n
\n \n App Role\n \n \n ,\n ) =>\n setVaultConfiguration({\n ...vaultConfiguration,\n approle: {\n ...vaultConfiguration?.approle,\n engine: e.target.value,\n },\n })\n }\n label=\"Engine\"\n tooltip=\"AppRoleEngine is the AppRole authentication engine path. If empty, defaults to 'approle'\"\n value={vaultConfiguration?.approle?.engine || \"\"}\n />\n \n \n ,\n ) =>\n setVaultConfiguration({\n ...vaultConfiguration,\n approle: {\n ...vaultConfiguration?.approle,\n id: e.target.value,\n },\n })\n }\n label=\"AppRole ID\"\n tooltip=\"AppRoleSecret is the AppRole access secret for authenticating to Hashicorp Vault via the AppRole method\"\n value={vaultConfiguration?.approle?.id || \"\"}\n required\n error={validationErrors[\"vault_id\"] || \"\"}\n overlayIcon={\n showVaultAppRoleID ? (\n \n ) : (\n \n )\n }\n overlayAction={() =>\n setShowVaultAppRoleID(!showVaultAppRoleID)\n }\n />\n \n \n ,\n ) =>\n setVaultConfiguration({\n ...vaultConfiguration,\n approle: {\n ...vaultConfiguration?.approle,\n secret: e.target.value,\n },\n })\n }\n label=\"AppRole Secret\"\n tooltip=\"AppRoleSecret is the AppRole access secret for authenticating to Hashicorp Vault via the AppRole method\"\n value={vaultConfiguration?.approle?.secret || \"\"}\n required\n error={validationErrors[\"vault_secret\"] || \"\"}\n overlayIcon={\n showVaultAppRoleSecret ? (\n \n ) : (\n \n )\n }\n overlayAction={() =>\n setShowVaultAppRoleSecret(!showVaultAppRoleSecret)\n }\n />\n \n \n ,\n ) =>\n setVaultConfiguration({\n ...vaultConfiguration,\n approle: {\n ...vaultConfiguration?.approle,\n retry: e.target.value,\n },\n })\n }\n label=\"Retry (Seconds)\"\n error={validationErrors[\"vault_retry\"] || \"\"}\n value={vaultConfiguration?.approle?.retry || \"\"}\n />\n \n
\n
\n \n
\n \n Status\n \n ) =>\n setVaultConfiguration({\n ...vaultConfiguration,\n status: {\n ...vaultConfiguration?.status,\n ping: e.target.value,\n },\n })\n }\n label=\"Ping (Seconds)\"\n tooltip=\"controls how often to Vault health status is checked. If not set, defaults to 10s\"\n error={validationErrors[\"vault_ping\"] || \"\"}\n value={vaultConfiguration?.status?.ping || \"\"}\n />\n
\n
\n \n )}\n {encryptionType === \"azure\" && (\n \n \n ) =>\n setAzureConfiguration({\n ...azureConfiguration,\n keyvault: {\n ...azureConfiguration?.keyvault,\n endpoint: e.target.value,\n },\n })\n }\n label=\"Endpoint\"\n tooltip=\"Endpoint is the Azure KeyVault endpoint\"\n error={validationErrors[\"azure_endpoint\"] || \"\"}\n value={azureConfiguration?.keyvault?.endpoint || \"\"}\n />\n \n \n
\n \n Credentials\n \n \n ,\n ) =>\n setAzureConfiguration({\n ...azureConfiguration,\n keyvault: {\n ...azureConfiguration?.keyvault,\n credentials: {\n ...azureConfiguration?.keyvault\n ?.credentials,\n tenant_id: e.target.value,\n },\n },\n })\n }\n label=\"Tenant ID\"\n tooltip=\"TenantID is the ID of the Azure KeyVault tenant\"\n value={\n azureConfiguration?.keyvault?.credentials\n ?.tenant_id || \"\"\n }\n error={validationErrors[\"azure_tenant_id\"] || \"\"}\n />\n \n \n ,\n ) =>\n setAzureConfiguration({\n ...azureConfiguration,\n keyvault: {\n ...azureConfiguration?.keyvault,\n credentials: {\n ...azureConfiguration?.keyvault\n ?.credentials,\n client_id: e.target.value,\n },\n },\n })\n }\n label=\"Client ID\"\n tooltip=\"ClientID is the ID of the client accessing Azure KeyVault\"\n value={\n azureConfiguration?.keyvault?.credentials\n ?.client_id || \"\"\n }\n error={validationErrors[\"azure_client_id\"] || \"\"}\n />\n \n \n ,\n ) =>\n setAzureConfiguration({\n ...azureConfiguration,\n keyvault: {\n ...azureConfiguration?.keyvault,\n credentials: {\n ...azureConfiguration?.keyvault\n ?.credentials,\n client_secret: e.target.value,\n },\n },\n })\n }\n label=\"Client Secret\"\n tooltip=\"ClientSecret is the client secret accessing the Azure KeyVault\"\n value={\n azureConfiguration?.keyvault?.credentials\n ?.client_secret || \"\"\n }\n error={\n validationErrors[\"azure_client_secret\"] || \"\"\n }\n />\n \n
\n
\n
\n )}\n {encryptionType === \"gcp\" && (\n \n \n ) =>\n setGCPConfiguration({\n ...gcpConfiguration,\n secretmanager: {\n ...gcpConfiguration?.secretmanager,\n project_id: e.target.value,\n },\n })\n }\n label=\"Project ID\"\n tooltip=\"ProjectID is the GCP project ID\"\n value={gcpConfiguration?.secretmanager.project_id || \"\"}\n />\n \n \n ) =>\n setGCPConfiguration({\n ...gcpConfiguration,\n secretmanager: {\n ...gcpConfiguration?.secretmanager,\n endpoint: e.target.value,\n },\n })\n }\n label=\"Endpoint\"\n tooltip=\"Endpoint is the GCP project ID. If empty defaults to: secretmanager.googleapis.com:443\"\n value={gcpConfiguration?.secretmanager.endpoint || \"\"}\n />\n \n \n
\n \n Credentials\n \n \n ,\n ) =>\n setGCPConfiguration({\n ...gcpConfiguration,\n secretmanager: {\n ...gcpConfiguration?.secretmanager,\n credentials: {\n ...gcpConfiguration?.secretmanager\n .credentials,\n client_email: e.target.value,\n },\n },\n })\n }\n label=\"Client Email\"\n tooltip=\"Is the Client email of the GCP service account used to access the SecretManager\"\n value={\n gcpConfiguration?.secretmanager.credentials\n ?.client_email || \"\"\n }\n />\n \n \n ,\n ) =>\n setGCPConfiguration({\n ...gcpConfiguration,\n secretmanager: {\n ...gcpConfiguration?.secretmanager,\n credentials: {\n ...gcpConfiguration?.secretmanager\n .credentials,\n client_id: e.target.value,\n },\n },\n })\n }\n label=\"Client ID\"\n tooltip=\"Is the Client ID of the GCP service account used to access the SecretManager\"\n value={\n gcpConfiguration?.secretmanager.credentials\n ?.client_id || \"\"\n }\n />\n \n \n ,\n ) =>\n setGCPConfiguration({\n ...gcpConfiguration,\n secretmanager: {\n ...gcpConfiguration?.secretmanager,\n credentials: {\n ...gcpConfiguration?.secretmanager\n .credentials,\n private_key_id: e.target.value,\n },\n },\n })\n }\n label=\"Private Key ID\"\n tooltip=\"Is the private key ID of the GCP service account used to access the SecretManager\"\n value={\n gcpConfiguration?.secretmanager.credentials\n ?.private_key_id || \"\"\n }\n />\n \n \n ,\n ) =>\n setGCPConfiguration({\n ...gcpConfiguration,\n secretmanager: {\n ...gcpConfiguration?.secretmanager,\n credentials: {\n ...gcpConfiguration?.secretmanager\n .credentials,\n private_key: e.target.value,\n },\n },\n })\n }\n label=\"Private Key\"\n tooltip=\"Is the private key of the GCP service account used to access the SecretManager\"\n value={\n gcpConfiguration?.secretmanager.credentials\n ?.private_key || \"\"\n }\n />\n \n
\n
\n
\n )}\n {encryptionType === \"aws\" && (\n \n \n ) =>\n setAWSConfiguration({\n ...awsConfiguration,\n secretsmanager: {\n ...awsConfiguration?.secretsmanager,\n endpoint: e.target.value,\n },\n })\n }\n label=\"Endpoint\"\n tooltip=\"Endpoint is the AWS SecretsManager endpoint. AWS SecretsManager endpoints have the following schema: secrestmanager[-fips]..amanzonaws.com\"\n value={awsConfiguration?.secretsmanager?.endpoint || \"\"}\n required\n error={validationErrors[\"aws_endpoint\"] || \"\"}\n />\n \n \n ) =>\n setAWSConfiguration({\n ...awsConfiguration,\n secretsmanager: {\n ...awsConfiguration?.secretsmanager,\n region: e.target.value,\n },\n })\n }\n label=\"Region\"\n tooltip=\"Region is the AWS region the SecretsManager is located\"\n value={awsConfiguration?.secretsmanager?.region || \"\"}\n error={validationErrors[\"aws_region\"] || \"\"}\n required\n />\n \n \n ) =>\n setAWSConfiguration({\n ...awsConfiguration,\n secretsmanager: {\n ...awsConfiguration?.secretsmanager,\n kmskey: e.target.value,\n },\n })\n }\n label=\"KMS Key\"\n tooltip=\"KMSKey is the AWS-KMS key ID (CMK-ID) used to en/decrypt secrets managed by the SecretsManager. If empty, the default AWS KMS key is used\"\n value={awsConfiguration?.secretsmanager?.kmskey || \"\"}\n />\n \n \n
\n \n Credentials\n \n \n ,\n ) =>\n setAWSConfiguration({\n ...awsConfiguration,\n secretsmanager: {\n ...awsConfiguration?.secretsmanager,\n credentials: {\n ...awsConfiguration?.secretsmanager\n ?.credentials,\n accesskey: e.target.value,\n },\n },\n })\n }\n label=\"Access Key\"\n tooltip=\"AccessKey is the access key for authenticating to AWS\"\n value={\n awsConfiguration?.secretsmanager?.credentials\n ?.accesskey || \"\"\n }\n error={validationErrors[\"aws_accessKey\"] || \"\"}\n required\n />\n \n \n ,\n ) =>\n setAWSConfiguration({\n ...awsConfiguration,\n secretsmanager: {\n ...awsConfiguration?.secretsmanager,\n credentials: {\n ...awsConfiguration?.secretsmanager\n ?.credentials,\n secretkey: e.target.value,\n },\n },\n })\n }\n label=\"Secret Key\"\n tooltip=\"SecretKey is the secret key for authenticating to AWS\"\n value={\n awsConfiguration?.secretsmanager?.credentials\n ?.secretkey || \"\"\n }\n error={validationErrors[\"aws_secretKey\"] || \"\"}\n required\n />\n \n \n ,\n ) =>\n setAWSConfiguration({\n ...awsConfiguration,\n secretsmanager: {\n ...awsConfiguration?.secretsmanager,\n credentials: {\n ...awsConfiguration?.secretsmanager\n ?.credentials,\n token: e.target.value,\n },\n },\n })\n }\n label=\"Token\"\n tooltip=\"SessionToken is an optional session token for authenticating to AWS when using STS\"\n value={\n awsConfiguration?.secretsmanager?.credentials\n ?.token || \"\"\n }\n />\n \n
\n
\n
\n )}\n {encryptionType === \"gemalto\" && (\n \n \n ) =>\n setGemaltoConfiguration({\n ...gemaltoConfiguration,\n keysecure: {\n ...gemaltoConfiguration?.keysecure,\n endpoint: e.target.value,\n },\n })\n }\n label=\"Endpoint\"\n tooltip=\"Endpoint is the endpoint to the KeySecure server\"\n value={gemaltoConfiguration?.keysecure?.endpoint || \"\"}\n error={validationErrors[\"gemalto_endpoint\"] || \"\"}\n required\n />\n \n \n
\n \n Credentials\n \n \n ,\n ) =>\n setGemaltoConfiguration({\n ...gemaltoConfiguration,\n keysecure: {\n ...gemaltoConfiguration?.keysecure,\n credentials: {\n ...gemaltoConfiguration?.keysecure\n ?.credentials,\n token: e.target.value,\n },\n },\n })\n }\n label=\"Token\"\n tooltip=\"Token is the refresh authentication token to access the KeySecure server\"\n value={\n gemaltoConfiguration?.keysecure?.credentials\n ?.token || \"\"\n }\n error={validationErrors[\"gemalto_token\"] || \"\"}\n required\n />\n \n \n ,\n ) =>\n setGemaltoConfiguration({\n ...gemaltoConfiguration,\n keysecure: {\n ...gemaltoConfiguration?.keysecure,\n credentials: {\n ...gemaltoConfiguration?.keysecure\n ?.credentials,\n domain: e.target.value,\n },\n },\n })\n }\n label=\"Domain\"\n tooltip=\"Domain is the isolated namespace within the KeySecure server. If empty, defaults to the top-level / root domain\"\n value={\n gemaltoConfiguration?.keysecure?.credentials\n ?.domain || \"\"\n }\n error={validationErrors[\"gemalto_domain\"] || \"\"}\n required\n />\n \n \n ,\n ) =>\n setGemaltoConfiguration({\n ...gemaltoConfiguration,\n keysecure: {\n ...gemaltoConfiguration?.keysecure,\n credentials: {\n ...gemaltoConfiguration?.keysecure\n ?.credentials,\n retry: e.target.value,\n },\n },\n })\n }\n label=\"Retry (seconds)\"\n value={\n gemaltoConfiguration?.keysecure?.credentials\n ?.retry || \"\"\n }\n error={validationErrors[\"gemalto_retry\"] || \"\"}\n />\n \n
\n \n
\n )}\n \n )}\n\n \n Additional Configuration for KES\n \n \n \n setEnabledCustomCertificates(!enabledCustomCertificates)\n }\n label={\"Custom Certificates\"}\n />\n \n {enabledCustomCertificates && (\n \n \n
\n \n Encryption server certificates\n \n {kesServerTLSCertificateSecret ? (\n \n removeCertificate(kesServerTLSCertificateSecret)\n }\n />\n ) : (\n \n {\n setKESServerCertificate({\n encoded_key: encodedValue || \"\",\n id: kesServerCertificate?.id || \"\",\n key: fileName || \"\",\n cert: kesServerCertificate?.cert || \"\",\n encoded_cert:\n kesServerCertificate?.encoded_cert || \"\",\n });\n cleanValidation(\"serverKey\");\n }}\n accept=\".key,.pem\"\n id=\"serverKey\"\n name=\"serverKey\"\n label=\"Key\"\n value={kesServerCertificate?.key}\n />\n {\n setKESServerCertificate({\n encoded_key:\n kesServerCertificate?.encoded_key || \"\",\n id: kesServerCertificate?.id || \"\",\n key: kesServerCertificate?.key || \"\",\n cert: fileName || \"\",\n encoded_cert: encodedValue || \"\",\n });\n cleanValidation(\"serverCert\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"serverCert\"\n name=\"serverCert\"\n label=\"Cert\"\n value={kesServerCertificate?.cert}\n />\n \n )}\n
\n
\n \n
\n \n MinIO mTLS certificates (connection between MinIO and the\n Encryption server)\n \n {minioMTLSCertificateSecret ? (\n \n removeCertificate(minioMTLSCertificateSecret)\n }\n />\n ) : (\n \n {\n setMinioMTLSCertificate({\n encoded_key: encodedValue || \"\",\n id: minioMTLSCertificate?.id || \"\",\n key: fileName || \"\",\n cert: minioMTLSCertificate?.cert || \"\",\n encoded_cert:\n minioMTLSCertificate?.encoded_cert || \"\",\n });\n cleanValidation(\"clientKey\");\n }}\n accept=\".key,.pem\"\n id=\"clientKey\"\n name=\"clientKey\"\n label=\"Key\"\n value={minioMTLSCertificate?.key}\n />\n {\n setMinioMTLSCertificate({\n encoded_key:\n minioMTLSCertificate?.encoded_key || \"\",\n id: minioMTLSCertificate?.id || \"\",\n key: minioMTLSCertificate?.key || \"\",\n cert: fileName || \"\",\n encoded_cert: encodedValue || \"\",\n });\n cleanValidation(\"clientCert\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"clientCert\"\n name=\"clientCert\"\n label=\"Cert\"\n value={minioMTLSCertificate?.cert}\n />\n \n )}\n
\n
\n \n
\n \n KMS mTLS certificates (connection between the Encryption\n server and the KMS)\n \n {kmsMTLSCertificateSecret ? (\n \n removeCertificate(kmsMTLSCertificateSecret)\n }\n />\n ) : (\n \n {\n setKmsMTLSCertificate({\n encoded_key: encodedValue || \"\",\n id: kmsMTLSCertificate?.id || \"\",\n key: fileName || \"\",\n cert: kmsMTLSCertificate?.cert || \"\",\n encoded_cert:\n kmsMTLSCertificate?.encoded_cert || \"\",\n });\n }}\n accept=\".key,.pem\"\n id=\"kms_mtls_key\"\n name=\"kms_mtls_key\"\n label=\"Key\"\n value={kmsMTLSCertificate?.key}\n />\n \n setKmsMTLSCertificate({\n encoded_key:\n kmsMTLSCertificate?.encoded_key || \"\",\n id: kmsMTLSCertificate?.id || \"\",\n key: kmsMTLSCertificate?.key || \"\",\n cert: fileName || \"\",\n encoded_cert: encodedValue || \"\",\n })\n }\n accept=\".cer,.crt,.cert,.pem\"\n id=\"kms_mtls_cert\"\n name=\"kms_mtls_cert\"\n label=\"Cert\"\n value={kmsMTLSCertificate?.cert || \"\"}\n />\n \n )}\n {kmsCACertificateSecret ? (\n \n removeCertificate(kmsCACertificateSecret)\n }\n />\n ) : (\n \n setKmsCACertificate({\n encoded_key: kmsCACertificate?.encoded_key || \"\",\n id: kmsCACertificate?.id || \"\",\n key: kmsCACertificate?.key || \"\",\n cert: fileName || \"\",\n encoded_cert: encodedValue || \"\",\n })\n }\n accept=\".cer,.crt,.cert,.pem\"\n id=\"kms_mtls_ca\"\n name=\"kms_mtls_ca\"\n label=\"CA\"\n value={kmsCACertificate?.cert || \"\"}\n />\n )}\n
\n
\n
\n )}\n \n ) =>\n setImage(e.target.value)\n }\n label=\"Image\"\n tooltip=\"KES container image\"\n placeholder=\"minio/kes:2023-08-19T17-27-47Z\"\n value={image}\n />\n \n \n ) =>\n setReplicas(e.target.value)\n }\n label=\"Replicas\"\n tooltip=\"Numer of KES pod replicas\"\n value={replicas}\n required\n error={validationErrors[\"replicas\"] || \"\"}\n />\n \n \n SecurityContext for KES\n \n \n \n \n ) => {\n setSecurityContext({\n ...securityContext,\n runAsUser: e.target.value,\n });\n }}\n label=\"Run As User\"\n value={securityContext.runAsUser}\n required\n error={\n validationErrors[\"kes_securityContext_runAsUser\"] || \"\"\n }\n min=\"0\"\n />\n \n \n ) => {\n setSecurityContext({\n ...securityContext,\n runAsGroup: e.target.value,\n });\n }}\n label=\"Run As Group\"\n value={securityContext.runAsGroup}\n required\n error={\n validationErrors[\"kes_securityContext_runAsGroup\"] || \"\"\n }\n min=\"0\"\n />\n \n \n ) => {\n setSecurityContext({\n ...securityContext,\n fsGroup: e.target.value,\n });\n }}\n label=\"FsGroup\"\n value={securityContext.fsGroup!}\n required\n error={\n validationErrors[\"kes_securityContext_fsGroup\"] || \"\"\n }\n min=\"0\"\n />\n \n \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n setSecurityContext({\n ...securityContext,\n runAsNonRoot: checked,\n });\n }}\n label={\"Do not run as Root\"}\n />\n \n \n )}\n \n setConfirmOpen(true)}\n label={\"Save\"}\n />\n \n \n
\n );\n};\n\nexport default withStyles(styles)(TenantEncryption);\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorBlock: {\n color: theme.palette?.error.main || \"#C83B51\",\n },\n });\n\ninterface IErrorBlockProps {\n classes: any;\n errorMessage: string;\n withBreak?: boolean;\n}\n\nconst ErrorBlock = ({\n classes,\n errorMessage,\n withBreak = true,\n}: IErrorBlockProps) => {\n return (\n \n {withBreak &&
}\n \n {errorMessage}\n \n
\n );\n};\n\nexport default withStyles(styles)(ErrorBlock);\n"],"names":["withStyles","theme","createStyles","_objectSpread","fieldBasic","_ref","value","_ref$label","label","_ref$tooltip","tooltip","_ref$mode","mode","classes","onBeforeChange","_ref$editorHeight","readOnly","editorHeight","_jsxs","React","children","_jsx","Grid","item","xs","sx","marginBottom","InputLabel","className","inputLabel","tooltipContainer","Tooltip","title","placement","HelpIcon","style","maxHeight","overflow","border","CodeEditor","language","onChange","evn","target","id","padding","fontSize","backgroundColor","fontFamily","minHeight","color","background","borderTop","Box","display","alignItems","paddingRight","justifyContent","height","width","marginLeft","TooltipWrapper","CopyToClipboard","text","Button","type","icon","CopyIcon","variant","tooltipHelper","valueString","maxWidth","whiteSpace","textOverflow","marginTop","fileInputField","margin","flexFlow","fileInputStyles","fontWeight","textBoxContainer","paddingLeft","name","_ref$disabled","disabled","required","_ref$error","error","_ref$accept","accept","_ref$value","_useState","useState","_useState2","_slicedToArray","showFileSelector","setShowSelector","concat","fieldBottom","fieldContainer","errorInField","htmlFor","fieldLabelError","e","fileName","get","evt","callback","file","files","reader","FileReader","readAsDataURL","onload","fileBase64","result","fileArray","toString","split","length","fileProcess","data","IconButton","component","onClick","disableRipple","disableFocusRipple","size","CancelIcon","ErrorBlock","errorMessage","fileReselect","AttachFileIcon","FormHr","styled","_templateObject","_taggedTemplateLiteral","certificateIcon","float","paddingTop","certificateInfo","certificateWrapper","userSelect","borderRadius","certificateExpiry","flexWrap","certificateDomains","certificatesList","textTransform","overflowY","certificatesListItem","borderBottom","minWidth","marginRight","opacity","certificateExpiring","certificateExpired","_ref$onDelete","onDelete","certificates","domains","expiry","DateTime","fromISO","now","utc","daysToExpiry","daysToExpiryHuman","certificateExpiration","durationToExpiry","diff","as","minus","Duration","fromObject","days","shiftTo","toHuman","listStyle","maximumFractionDigits","minutes","Chip","Container","CertificateIcon","Typography","gutterBottom","EventBusyIcon","toFormat","AccessTimeIcon","Divider","List","map","dom","index","ListItem","ListItemAvatar","LanguageIcon","ListItemText","primary","PolicyItem","_ref$items","items","_ref$title","Fragment","gap","iTxt","_ref2","_ref2$policies","policies","fmtPolicies","arguments","undefined","Object","keys","polName","policyConfig","identities","paths","allow","deny","getPolicyData","withBorders","pConf","borderLeft","borderRight","tenantDetailsStyles","spacingUtils","containerForHeader","createTenantCommon","formFieldStyles","modalBasic","wizardCommon","warningBlock","_vaultConfiguration$a9","_vaultConfiguration$a10","_vaultConfiguration$a11","_vaultConfiguration$a12","_vaultConfiguration$s4","_azureConfiguration$k15","_azureConfiguration$k17","_azureConfiguration$k18","_azureConfiguration$k20","_azureConfiguration$k21","_azureConfiguration$k23","_azureConfiguration$k24","_gcpConfiguration$sec11","_gcpConfiguration$sec12","_gcpConfiguration$sec13","_gcpConfiguration$sec14","_awsConfiguration$sec16","_awsConfiguration$sec17","_awsConfiguration$sec18","_awsConfiguration$sec20","_awsConfiguration$sec21","_awsConfiguration$sec23","_awsConfiguration$sec24","_awsConfiguration$sec26","_awsConfiguration$sec27","_gemaltoConfiguration17","_gemaltoConfiguration19","_gemaltoConfiguration20","_gemaltoConfiguration22","_gemaltoConfiguration23","_gemaltoConfiguration25","_gemaltoConfiguration26","dispatch","useAppDispatch","tenant","useSelector","state","tenants","tenantInfo","editRawConfiguration","setEditRawConfiguration","_useState3","_useState4","encryptionRawConfiguration","setEncryptionRawConfiguration","_useState5","_useState6","encryptionEnabled","setEncryptionEnabled","_useState7","_useState8","encryptionType","setEncryptionType","_useState9","_useState10","replicas","setReplicas","_useState11","_useState12","image","setImage","_useState13","_useState14","refreshEncryptionInfo","setRefreshEncryptionInfo","_useState15","fsGroup","fsGroupChangePolicy","runAsGroup","runAsNonRoot","runAsUser","_useState16","securityContext","setSecurityContext","_useState17","_useState18","setPolicies","_useState19","_useState20","vaultConfiguration","setVaultConfiguration","_useState21","_useState22","awsConfiguration","setAWSConfiguration","_useState23","_useState24","gemaltoConfiguration","setGemaltoConfiguration","_useState25","_useState26","azureConfiguration","setAzureConfiguration","_useState27","_useState28","gcpConfiguration","setGCPConfiguration","_useState29","_useState30","enabledCustomCertificates","setEnabledCustomCertificates","_useState31","_useState32","updatingEncryption","setUpdatingEncryption","_useState33","_useState34","kesServerTLSCertificateSecret","setKesServerTLSCertificateSecret","_useState35","_useState36","minioMTLSCertificateSecret","setMinioMTLSCertificateSecret","_useState37","_useState38","minioMTLSCertificate","setMinioMTLSCertificate","_useState39","_useState40","certificatesToBeRemoved","setCertificatesToBeRemoved","_useState41","_useState42","showVaultAppRoleID","setShowVaultAppRoleID","_useState43","_useState44","isFormValid","setIsFormValid","_useState45","_useState46","showVaultAppRoleSecret","setShowVaultAppRoleSecret","_useState47","_useState48","kmsMTLSCertificateSecret","setKmsMTLSCertificateSecret","_useState49","_useState50","kmsCACertificateSecret","setKMSCACertificateSecret","_useState51","_useState52","kmsMTLSCertificate","setKmsMTLSCertificate","_useState53","_useState54","kesServerCertificate","setKESServerCertificate","_useState55","_useState56","kmsCACertificate","setKmsCACertificate","_useState57","_useState58","validationErrors","setValidationErrors","cleanValidation","fieldName","clearValidationError","_useState59","_useState60","confirmOpen","setConfirmOpen","useEffect","encryptionValidation","_vaultConfiguration$a","_vaultConfiguration$a2","_vaultConfiguration$s","_vaultConfiguration$s2","_vaultConfiguration$a3","_vaultConfiguration$a4","_awsConfiguration$sec","_awsConfiguration$sec2","_awsConfiguration$sec3","_awsConfiguration$sec4","_awsConfiguration$sec5","_awsConfiguration$sec6","_gemaltoConfiguration","_gemaltoConfiguration2","_gemaltoConfiguration3","_gemaltoConfiguration4","_gemaltoConfiguration5","_gemaltoConfiguration6","_gemaltoConfiguration7","_gemaltoConfiguration8","_gemaltoConfiguration9","_azureConfiguration$k","_azureConfiguration$k2","_azureConfiguration$k3","_azureConfiguration$k4","_azureConfiguration$k5","_azureConfiguration$k6","_azureConfiguration$k7","fieldKey","customValidation","parseInt","customValidationMessage","_toConsumableArray","encoded_key","encoded_cert","endpoint","approle","secret","status","ping","retry","secretsmanager","region","credentials","accesskey","secretkey","keysecure","token","domain","keyvault","tenant_id","client_id","client_secret","commonVal","commonFormValidation","fetchEncryptionInfo","namespace","api","invoke","then","resp","raw","vault","aws","gemalto","gcp","azure","server_tls","minio_mtls","kms_mtls","crt","ca","catch","err","console","removeCertificate","ConfirmDialog","isOpen","confirmText","cancelText","onClose","onConfirm","_gemaltoConfiguration10","_gemaltoConfiguration11","_gemaltoConfiguration12","_gemaltoConfiguration13","_gemaltoConfiguration14","_gemaltoConfiguration15","_gemaltoConfiguration16","_awsConfiguration$sec7","_awsConfiguration$sec8","_awsConfiguration$sec9","_awsConfiguration$sec10","_awsConfiguration$sec11","_awsConfiguration$sec12","_awsConfiguration$sec13","_awsConfiguration$sec14","_awsConfiguration$sec15","_azureConfiguration$k8","_azureConfiguration$k9","_azureConfiguration$k10","_azureConfiguration$k11","_azureConfiguration$k12","_azureConfiguration$k13","_azureConfiguration$k14","_gcpConfiguration$sec","_gcpConfiguration$sec2","_gcpConfiguration$sec3","_gcpConfiguration$sec4","_gcpConfiguration$sec5","_gcpConfiguration$sec6","_gcpConfiguration$sec7","_gcpConfiguration$sec8","_gcpConfiguration$sec9","_gcpConfiguration$sec10","_vaultConfiguration$a5","_vaultConfiguration$a6","_vaultConfiguration$a7","_vaultConfiguration$a8","_vaultConfiguration$s3","insertEncrypt","kmskey","secretmanager","project_id","client_email","private_key_id","private_key","engine","prefix","encryptionServerKeyPair","encryptionClientKeyPair","encryptionKMSCertificates","key","kmsMTLSKeyPair","kmsCAInsert","dataSend","secretsToBeDeleted","setErrorSnackMessage","confirmationContent","DialogContentText","WarnIcon","container","spacing","SectionTitle","textAlign","FormSwitchWrapper","indicatorLabels","checked","description","Tabs","newValue","indicatorColor","textColor","scrollButtons","Tab","CodeMirrorWrapper","editor","KMSPolicyInfo","encryptionTypeOptions","RadioGroupSelector","currentSelection","selectorOptions","InputBoxWrapper","fieldGroup","descriptionText","formFieldRow","overlayIcon","VisibilityOffIcon","RemoveRedEyeIcon","overlayAction","min","_azureConfiguration$k16","_azureConfiguration$k19","_azureConfiguration$k22","_awsConfiguration$sec19","_awsConfiguration$sec22","_awsConfiguration$sec25","_gemaltoConfiguration18","_gemaltoConfiguration21","_gemaltoConfiguration24","TLSCertificate","FileSelector","encodedValue","cert","placeholder","multiContainer","responsiveContainer","rightSpacer","_theme$palette","errorBlock","palette","main","_ref$withBreak","withBreak"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/367.ca5c7e28.chunk.js b/web-app/build/static/js/367.ca5c7e28.chunk.js new file mode 100644 index 00000000000..461db224951 --- /dev/null +++ b/web-app/build/static/js/367.ca5c7e28.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[367],{92217:(e,l,i)=>{i.d(l,{Z:()=>h});var n=i(72791),t=i(61889),a=i(30829),o=i(96040),r=i(64554),s=i(11135),d=i(25787),c=i(75952),u=i(23814),v=i(78029),m=i.n(v),p=i(14910),x=i(27454),g=i(80184);const h=(0,d.Z)((e=>(0,s.Z)({...u.YI})))((e=>{let{value:l,label:i="",tooltip:s="",mode:d="json",classes:u,onBeforeChange:v,readOnly:h=!1,editorHeight:y="250px"}=e;return(0,g.jsxs)(n.Fragment,{children:[(0,g.jsx)(t.ZP,{item:!0,xs:12,sx:{marginBottom:"10px"},children:(0,g.jsxs)(a.Z,{className:u.inputLabel,children:[(0,g.jsx)("span",{children:i}),""!==s&&(0,g.jsx)("div",{className:u.tooltipContainer,children:(0,g.jsx)(o.Z,{title:s,placement:"top-start",children:(0,g.jsx)("div",{className:u.tooltip,children:(0,g.jsx)(c.byK,{})})})})]})}),(0,g.jsx)(t.ZP,{item:!0,xs:12,style:{maxHeight:y,overflow:"auto",border:"1px solid #eaeaea"},children:(0,g.jsx)(p.Z,{value:l,language:d,onChange:e=>{v(null,null,e.target.value)},id:"code_wrapper",padding:15,style:{fontSize:12,backgroundColor:"#fefefe",fontFamily:"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace",minHeight:y||"initial",color:"#000000"}})}),(0,g.jsx)(t.ZP,{item:!0,xs:12,sx:{background:"#f7f7f7",border:"1px solid #eaeaea",borderTop:0},children:(0,g.jsx)(r.Z,{sx:{display:"flex",alignItems:"center",padding:"2px",paddingRight:"5px",justifyContent:"flex-end","& button":{height:"26px",width:"26px",padding:"2px"," .min-icon":{marginLeft:"0"}}},children:(0,g.jsx)(x.Z,{tooltip:"Copy to Clipboard",children:(0,g.jsx)(m(),{text:l,children:(0,g.jsx)(c.zxk,{type:"button",id:"copy-code-mirror",icon:(0,g.jsx)(c.TIy,{}),color:"primary",variant:"regular"})})})})})]})}))},54639:(e,l,i)=>{i.d(l,{Z:()=>y});var n=i(72791),t=i(26181),a=i.n(t),o=i(61889),r=i(30829),s=i(96040),d=i(13400),c=i(99663),u=i(86711),v=i(11135),m=i(25787),p=i(23814);var x=i(75952),g=i(22512),h=i(80184);const y=(0,m.Z)((e=>(0,v.Z)({...p.YI,...p.Hr,valueString:{maxWidth:350,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:2},fileInputField:{margin:"13px 0","@media (max-width: 900px)":{flexFlow:"column"}},...p.bV,inputLabel:{...p.YI.inputLabel,fontWeight:"normal"},textBoxContainer:{...p.YI.textBoxContainer,maxWidth:"100%",border:"1px solid #eaeaea",paddingLeft:"15px"}})))((e=>{let{label:l,classes:i,onChange:t,id:v,name:m,disabled:p=!1,tooltip:y="",required:_,error:f="",accept:j="",value:k=""}=e;const[Z,b]=(0,n.useState)(!1);return(0,h.jsx)(n.Fragment,{children:(0,h.jsxs)(o.ZP,{item:!0,xs:12,className:"".concat(i.fileInputField," ").concat(i.fieldBottom," ").concat(i.fieldContainer," ").concat(""!==f?i.errorInField:""),children:[""!==l&&(0,h.jsxs)(r.Z,{htmlFor:v,className:"".concat(""!==f?i.fieldLabelError:""," ").concat(i.inputLabel),children:[(0,h.jsxs)("span",{children:[l,_?"*":""]}),""!==y&&(0,h.jsx)("div",{className:i.tooltipContainer,children:(0,h.jsx)(s.Z,{title:y,placement:"top-start",children:(0,h.jsx)("div",{className:i.tooltip,children:(0,h.jsx)(x.byK,{})})})})]}),Z||""===k?(0,h.jsxs)("div",{className:i.textBoxContainer,children:[(0,h.jsx)("input",{type:"file",name:m,onChange:e=>{const l=a()(e,"target.files[0].name","");((e,l)=>{const i=e.target.files[0],n=new FileReader;n.readAsDataURL(i),n.onload=()=>{const e=n.result;if(e){const i=e.toString().split("base64,");2===i.length&&l(i[1])}}})(e,(e=>{t(e,l)}))},accept:j,required:_,disabled:p,className:i.fileInputField}),""!==k&&(0,h.jsx)(d.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:()=>{b(!1)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,h.jsx)(u.Z,{})}),""!==f&&(0,h.jsx)(g.Z,{errorMessage:f})]}):(0,h.jsxs)("div",{className:i.fileReselect,children:[(0,h.jsx)("div",{className:i.valueString,children:k}),(0,h.jsx)(d.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:()=>{b(!0)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,h.jsx)(c.Z,{})})]})]})})}))},13871:(e,l,i)=>{i.d(l,{Z:()=>a});var n,t=i(30168);const a=(0,i(26088).Z)("hr")(n||(n=(0,t.Z)(["\n border-top: 0;\n border-left: 0;\n border-right: 0;\n border-color: #999999;\n background-color: transparent;\n"])))},80666:(e,l,i)=>{i.d(l,{Z:()=>j});i(72791);var n=i(99779),t=i(11135),a=i(25787),o=i(90983),r=i(81918),s=i(89164),d=i(61889),c=i(20890),u=i(64554),v=i(94721),m=i(90493),p=i(84852),x=i(20653),g=i(49900),h=i(52502),y=i(69212),_=i(75952),f=i(80184);const j=(0,a.Z)((e=>(0,t.Z)({certificateIcon:{float:"left",paddingTop:"5px !important",paddingRight:"10px !important"},certificateInfo:{float:"right"},certificateWrapper:{height:"auto",margin:5,border:"1px solid #E2E2E2",userSelect:"text",borderRadius:4,"& h6":{fontWeight:"bold"},"& div":{padding:0}},certificateExpiry:{color:"#616161",display:"flex",alignItems:"center",flexWrap:"wrap",marginBottom:5,"& .label":{fontWeight:"bold"}},certificateDomains:{color:"#616161","& .label":{fontWeight:"bold"}},certificatesList:{border:"1px solid #E2E2E2",borderRadius:4,color:"#616161",textTransform:"lowercase",overflowY:"scroll",maxHeight:145,marginBottom:10},certificatesListItem:{padding:"0px 16px",borderBottom:"1px solid #E2E2E2","& div":{minWidth:0},"& svg":{fontSize:12,marginRight:10,opacity:.5},"& span":{fontSize:12}},certificateExpiring:{color:"orange","& .label":{fontWeight:"bold"}},certificateExpired:{color:"red","& .label":{fontWeight:"bold"}}})))((e=>{let{classes:l,certificateInfo:i,onDelete:t=(()=>{})}=e;const a=i.domains||[],j=n.ou.fromISO(i.expiry),k=n.ou.utc();let Z=0,b="",C="";if(j){let e=j.diff(k);Z=e.as("days"),b=e.minus(n.nL.fromObject({days:1})).shiftTo("days").toHuman({listStyle:"long",maximumFractionDigits:0}),Z>=10&&Z<30&&(C=l.certificateExpiring),Z<10&&(C=l.certificateExpired,Z<2&&(b=e.minus(n.nL.fromObject({minutes:1})).shiftTo("hours","minutes").toHuman({listStyle:"long",maximumFractionDigits:0}),e.as("minutes")<=1&&(b="EXPIRED")))}return(0,f.jsx)(r.Z,{variant:"outlined",color:"primary",className:l.certificateWrapper,label:(0,f.jsxs)(s.Z,{children:[(0,f.jsx)(d.ZP,{item:!0,xs:1,className:l.certificateIcon,children:(0,f.jsx)(_.Baz,{})}),(0,f.jsxs)(d.ZP,{item:!0,xs:11,className:l.certificateInfo,children:[(0,f.jsx)(c.Z,{variant:"subtitle1",display:"block",gutterBottom:!0,children:i.name}),(0,f.jsxs)(u.Z,{className:l.certificateExpiry,children:[(0,f.jsx)(h.Z,{color:"inherit",fontSize:"small"}),"\xa0",(0,f.jsx)("span",{className:"label",children:"Expiry:\xa0"}),(0,f.jsx)("span",{children:j.toFormat("yyyy/MM/dd")})]}),(0,f.jsxs)(u.Z,{className:l.certificateExpiry,children:[(0,f.jsx)(y.Z,{color:"inherit",fontSize:"small"}),"\xa0",(0,f.jsx)("span",{className:"label",children:"Expires in:\xa0"}),(0,f.jsx)("span",{className:C,children:b})]}),(0,f.jsx)(v.Z,{}),(0,f.jsx)("br",{}),(0,f.jsx)(u.Z,{className:l.certificateDomains,children:(0,f.jsx)("span",{className:"label",children:"".concat(a.length," Domain (s):")})}),(0,f.jsx)(m.Z,{className:l.certificatesList,children:a.map(((e,i)=>(0,f.jsxs)(p.ZP,{className:l.certificatesListItem,children:[(0,f.jsx)(x.Z,{children:(0,f.jsx)(o.Z,{})}),(0,f.jsx)(g.Z,{primary:e})]},"".concat(e,"-").concat(i))))})]})]}),onDelete:t},i.name)}))},7032:(e,l,i)=>{i.r(l),i.d(l,{default:()=>I});var n=i(75952),t=i(11135),a=i(25787),o=i(23814),r=i(72791),s=i(78687),d=i(41320),c=i(81207),u=i(37516),v=i(61889),m=i(54639),p=i(21435),x=i(83679),g=i(51691),h=i(20165),y=i(3579),_=i(84741),f=i(40968),j=i(40306),k=i(80666),Z=i(87995),b=i(25228),C=i(43896),S=i(92217),w=i(13871),K=i(80184);const P=e=>{let{items:l=[],title:i=""}=e;return null!==l&&void 0!==l&&l.length?(0,K.jsxs)(r.Fragment,{children:[(0,K.jsx)("div",{style:{fontSize:"0.83em",fontWeight:"bold"},children:i}),(0,K.jsx)("div",{style:{display:"flex",gap:"2px",flexFlow:"column",marginLeft:"8px"},children:l.map((e=>(0,K.jsxs)("span",{style:{fontSize:"12px"},children:["- ",e]})))})]}):null},N=e=>{let{policies:l={}}=e;const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object.keys(e).map((l=>{const i=e[l]||{};return{name:l||"",identities:i.identities||[],paths:i.paths||[],allow:i.allow||[],deny:i.deny||[]}}))}(l);return i.length?(0,K.jsxs)(v.ZP,{xs:12,marginBottom:"5px",children:[(0,K.jsx)("h4",{children:"Policies"}),(0,K.jsx)(n.xuv,{withBorders:!0,sx:{maxHeight:"200px",overflow:"auto",padding:0},children:i.map((e=>(0,K.jsxs)(n.xuv,{withBorders:!0,sx:{display:"flex",flexFlow:"column",gap:"2px",borderLeft:0,borderRight:0,borderTop:0},children:[(0,K.jsxs)("div",{children:[(0,K.jsx)("b",{style:{fontSize:"0.83em",fontWeight:"bold"},children:"Policy Name:"})," ",e.name]}),(0,K.jsx)(P,{title:"Allow",items:null===e||void 0===e?void 0:e.allow}),(0,K.jsx)(P,{title:"Deny",items:null===e||void 0===e?void 0:e.deny}),(0,K.jsx)(P,{title:"Paths",items:null===e||void 0===e?void 0:e.paths}),(0,K.jsx)(P,{title:"Identities",items:null===e||void 0===e?void 0:e.identities})]})))})]}):null},I=(0,a.Z)((e=>(0,t.Z)({...o.oZ,...o.bK,...o.Bz,...o.QV,...o.DF,...o.oO,...o.AK,warningBlock:{color:"red",fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}}})))((e=>{var l,i,t,a,o,P,I,A,R,F,E,z,G,q,D,T,M,V,B,W,L,H,O,U,Y,Q,X,J,$,ee,le,ie;let{classes:ne}=e;const te=(0,d.TL)(),ae=(0,s.v9)((e=>e.tenants.tenantInfo)),[oe,re]=(0,r.useState)(0),[se,de]=(0,r.useState)(""),[ce,ue]=(0,r.useState)(!1),[ve,me]=(0,r.useState)("vault"),[pe,xe]=(0,r.useState)("1"),[ge,he]=(0,r.useState)(""),[ye,_e]=(0,r.useState)(!1),[fe,je]=(0,r.useState)({fsGroup:"1000",fsGroupChangePolicy:"Always",runAsGroup:"1000",runAsNonRoot:!0,runAsUser:"1000"}),[ke,Ze]=(0,r.useState)([]),[be,Ce]=(0,r.useState)(null),[Se,we]=(0,r.useState)(null),[Ke,Pe]=(0,r.useState)(null),[Ne,Ie]=(0,r.useState)(null),[Ae,Re]=(0,r.useState)(null),[Fe,Ee]=(0,r.useState)(!1),[ze,Ge]=(0,r.useState)(!1),[qe,De]=(0,r.useState)(null),[Te,Me]=(0,r.useState)(null),[Ve,Be]=(0,r.useState)(null),[We,Le]=(0,r.useState)([]),[He,Oe]=(0,r.useState)(!1),[Ue,Ye]=(0,r.useState)(!1),[Qe,Xe]=(0,r.useState)(!1),[Je,$e]=(0,r.useState)(null),[el,ll]=(0,r.useState)(null),[il,nl]=(0,r.useState)(null),[tl,al]=(0,r.useState)(null),[ol,rl]=(0,r.useState)(null),[sl,dl]=(0,r.useState)({}),cl=e=>{dl((0,_.h)(sl,e))},[ul,vl]=(0,r.useState)(!1);(0,r.useEffect)((()=>{let e=[];if(ce){var l,i,n,t,a,o,r,s,d,c,u,v,m,p,x,g,h,y,_,j,k,Z,b,C,S,w,K,P;if(e=[{fieldKey:"replicas",required:!0,value:pe,customValidation:parseInt(pe)<1,customValidationMessage:"Replicas needs to be 1 or greater"},{fieldKey:"kes_securityContext_runAsUser",required:!0,value:fe.runAsUser,customValidation:""===fe.runAsUser||parseInt(fe.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"kes_securityContext_runAsGroup",required:!0,value:fe.runAsGroup,customValidation:""===fe.runAsGroup||parseInt(fe.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"kes_securityContext_fsGroup",required:!0,value:fe.fsGroup,customValidation:""===fe.fsGroup||parseInt(fe.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}],Fe&&(e=[...e,{fieldKey:"serverKey",required:!1,value:(null===tl||void 0===tl?void 0:tl.encoded_key)||""},{fieldKey:"serverCert",required:!1,value:(null===tl||void 0===tl?void 0:tl.encoded_cert)||""},{fieldKey:"clientKey",required:!1,value:(null===Ve||void 0===Ve?void 0:Ve.encoded_key)||""},{fieldKey:"clientCert",required:!1,value:(null===Ve||void 0===Ve?void 0:Ve.encoded_cert)||""}]),"vault"===ve)e=[...e,{fieldKey:"vault_endpoint",required:!0,value:null===be||void 0===be?void 0:be.endpoint},{fieldKey:"vault_id",required:!0,value:null===be||void 0===be||null===(l=be.approle)||void 0===l?void 0:l.id},{fieldKey:"vault_secret",required:!0,value:null===be||void 0===be||null===(i=be.approle)||void 0===i?void 0:i.secret},{fieldKey:"vault_ping",required:!1,value:null===be||void 0===be||null===(n=be.status)||void 0===n?void 0:n.ping,customValidation:parseInt(null===be||void 0===be||null===(t=be.status)||void 0===t?void 0:t.ping)<0,customValidationMessage:"Value needs to be 0 or greater"},{fieldKey:"vault_retry",required:!1,value:null===be||void 0===be||null===(a=be.approle)||void 0===a?void 0:a.retry,customValidation:parseInt(null===be||void 0===be||null===(o=be.approle)||void 0===o?void 0:o.retry)<0,customValidationMessage:"Value needs to be 0 or greater"}];if("aws"===ve)e=[...e,{fieldKey:"aws_endpoint",required:!0,value:null===Se||void 0===Se||null===(r=Se.secretsmanager)||void 0===r?void 0:r.endpoint},{fieldKey:"aws_region",required:!0,value:null===Se||void 0===Se||null===(s=Se.secretsmanager)||void 0===s?void 0:s.region},{fieldKey:"aws_accessKey",required:!0,value:null===Se||void 0===Se||null===(d=Se.secretsmanager)||void 0===d||null===(c=d.credentials)||void 0===c?void 0:c.accesskey},{fieldKey:"aws_secretKey",required:!0,value:null===Se||void 0===Se||null===(u=Se.secretsmanager)||void 0===u||null===(v=u.credentials)||void 0===v?void 0:v.secretkey}];if("gemalto"===ve)e=[...e,{fieldKey:"gemalto_endpoint",required:!0,value:null===Ke||void 0===Ke||null===(m=Ke.keysecure)||void 0===m?void 0:m.endpoint},{fieldKey:"gemalto_token",required:!0,value:null===Ke||void 0===Ke||null===(p=Ke.keysecure)||void 0===p||null===(x=p.credentials)||void 0===x?void 0:x.token},{fieldKey:"gemalto_domain",required:!0,value:null===Ke||void 0===Ke||null===(g=Ke.keysecure)||void 0===g||null===(h=g.credentials)||void 0===h?void 0:h.domain},{fieldKey:"gemalto_retry",required:!1,value:null===Ke||void 0===Ke||null===(y=Ke.keysecure)||void 0===y||null===(_=y.credentials)||void 0===_?void 0:_.retry,customValidation:parseInt(null===Ke||void 0===Ke||null===(j=Ke.keysecure)||void 0===j||null===(k=j.credentials)||void 0===k?void 0:k.retry)<0,customValidationMessage:"Value needs to be 0 or greater"}];if("azure"===ve)e=[...e,{fieldKey:"azure_endpoint",required:!0,value:null===Ne||void 0===Ne||null===(Z=Ne.keyvault)||void 0===Z?void 0:Z.endpoint},{fieldKey:"azure_tenant_id",required:!0,value:null===Ne||void 0===Ne||null===(b=Ne.keyvault)||void 0===b||null===(C=b.credentials)||void 0===C?void 0:C.tenant_id},{fieldKey:"azure_client_id",required:!0,value:null===Ne||void 0===Ne||null===(S=Ne.keyvault)||void 0===S||null===(w=S.credentials)||void 0===w?void 0:w.client_id},{fieldKey:"azure_client_secret",required:!0,value:null===Ne||void 0===Ne||null===(K=Ne.keyvault)||void 0===K||null===(P=K.credentials)||void 0===P?void 0:P.client_secret}]}const N=(0,f.R)(e);Ye(0===Object.keys(N).length),dl(N)}),[Fe,ce,ve,null===tl||void 0===tl?void 0:tl.encoded_key,null===tl||void 0===tl?void 0:tl.encoded_cert,null===Ve||void 0===Ve?void 0:Ve.encoded_key,null===Ve||void 0===Ve?void 0:Ve.encoded_cert,null===il||void 0===il?void 0:il.encoded_key,null===il||void 0===il?void 0:il.encoded_cert,null===ol||void 0===ol?void 0:ol.encoded_key,null===ol||void 0===ol?void 0:ol.encoded_cert,fe,be,Se,Ke,Ne,Ae,pe]);const ml=()=>{!ye&&null!==ae&&void 0!==ae&&ae.namespace&&null!==ae&&void 0!==ae&&ae.name&&(_e(!0),c.Z.invoke("GET","/api/v1/namespaces/".concat(null===ae||void 0===ae?void 0:ae.namespace,"/tenants/").concat(null===ae||void 0===ae?void 0:ae.name,"/encryption")).then((e=>{de(e.raw),e.policies&&Ze(e.policies),e.vault?(me("vault"),Ce(e.vault)):e.aws?(me("aws"),we(e.aws)):e.gemalto?(me("gemalto"),Pe(e.gemalto)):e.gcp?(me("gcp"),Re(e.gcp)):e.azure&&(me("azure"),Ie(e.azure)),ue(!0),he(e.image),xe(e.replicas),e.securityContext&&je(e.securityContext),(e.server_tls||e.minio_mtls||e.kms_mtls)&&Ee(!0),e.server_tls&&De(e.server_tls),e.minio_mtls&&Me(e.minio_mtls),e.kms_mtls&&($e(e.kms_mtls.crt),ll(e.kms_mtls.ca)),_e(!1)})).catch((e=>{console.error(e),_e(!1)})))};(0,r.useEffect)((()=>{ml()}),[ae]);const pl=e=>{Le([...We,e.name]),e.name===(null===qe||void 0===qe?void 0:qe.name)&&De(null),e.name===(null===Te||void 0===Te?void 0:Te.name)&&Me(null),e.name===(null===Je||void 0===Je?void 0:Je.name)&&$e(null),e.name===(null===el||void 0===el?void 0:el.name)&&ll(null)};return(0,K.jsxs)(r.Fragment,{children:[ul&&(0,K.jsx)(j.Z,{isOpen:ul,title:ce?"Enable encryption at rest for tenant?":"Disable encryption at rest for tenant?",confirmText:ce?"Enable":"Disable",cancelText:"Cancel",onClose:()=>vl(!1),onConfirm:()=>{var e,l,i,n,t,a,o,r,s,d,u,v,m,p,x,g,h,y,_,f,j,k,b,C,S,w,K,P,N,I,A,R,F,E,z,G,q,D;if(ce){let T={};switch(ve){case"gemalto":T={gemalto:{keysecure:{endpoint:(null===Ke||void 0===Ke||null===(e=Ke.keysecure)||void 0===e?void 0:e.endpoint)||"",credentials:{token:(null===Ke||void 0===Ke||null===(l=Ke.keysecure)||void 0===l||null===(i=l.credentials)||void 0===i?void 0:i.token)||"",domain:(null===Ke||void 0===Ke||null===(n=Ke.keysecure)||void 0===n||null===(t=n.credentials)||void 0===t?void 0:t.domain)||"",retry:parseInt(null===Ke||void 0===Ke||null===(a=Ke.keysecure)||void 0===a||null===(o=a.credentials)||void 0===o?void 0:o.retry)}}}};break;case"aws":T={aws:{secretsmanager:{endpoint:(null===Se||void 0===Se||null===(r=Se.secretsmanager)||void 0===r?void 0:r.endpoint)||"",region:(null===Se||void 0===Se||null===(s=Se.secretsmanager)||void 0===s?void 0:s.region)||"",kmskey:(null===Se||void 0===Se||null===(d=Se.secretsmanager)||void 0===d?void 0:d.kmskey)||"",credentials:{accesskey:(null===Se||void 0===Se||null===(u=Se.secretsmanager)||void 0===u||null===(v=u.credentials)||void 0===v?void 0:v.accesskey)||"",secretkey:(null===Se||void 0===Se||null===(m=Se.secretsmanager)||void 0===m||null===(p=m.credentials)||void 0===p?void 0:p.secretkey)||"",token:(null===Se||void 0===Se||null===(x=Se.secretsmanager)||void 0===x||null===(g=x.credentials)||void 0===g?void 0:g.token)||""}}}};break;case"azure":T={azure:{keyvault:{endpoint:(null===Ne||void 0===Ne||null===(h=Ne.keyvault)||void 0===h?void 0:h.endpoint)||"",credentials:{tenant_id:(null===Ne||void 0===Ne||null===(y=Ne.keyvault)||void 0===y||null===(_=y.credentials)||void 0===_?void 0:_.tenant_id)||"",client_id:(null===Ne||void 0===Ne||null===(f=Ne.keyvault)||void 0===f||null===(j=f.credentials)||void 0===j?void 0:j.client_id)||"",client_secret:(null===Ne||void 0===Ne||null===(k=Ne.keyvault)||void 0===k||null===(b=k.credentials)||void 0===b?void 0:b.client_secret)||""}}}};break;case"gcp":T={gcp:{secretmanager:{project_id:(null===Ae||void 0===Ae||null===(C=Ae.secretmanager)||void 0===C?void 0:C.project_id)||"",endpoint:(null===Ae||void 0===Ae||null===(S=Ae.secretmanager)||void 0===S?void 0:S.endpoint)||"",credentials:{client_email:(null===Ae||void 0===Ae||null===(w=Ae.secretmanager)||void 0===w||null===(K=w.credentials)||void 0===K?void 0:K.client_email)||"",client_id:(null===Ae||void 0===Ae||null===(P=Ae.secretmanager)||void 0===P||null===(N=P.credentials)||void 0===N?void 0:N.client_id)||"",private_key_id:(null===Ae||void 0===Ae||null===(I=Ae.secretmanager)||void 0===I||null===(A=I.credentials)||void 0===A?void 0:A.private_key_id)||"",private_key:(null===Ae||void 0===Ae||null===(R=Ae.secretmanager)||void 0===R||null===(F=R.credentials)||void 0===F?void 0:F.private_key)||""}}}};break;case"vault":T={vault:{endpoint:(null===be||void 0===be?void 0:be.endpoint)||"",engine:(null===be||void 0===be?void 0:be.engine)||"",namespace:(null===be||void 0===be?void 0:be.namespace)||"",prefix:(null===be||void 0===be?void 0:be.prefix)||"",approle:{engine:(null===be||void 0===be||null===(E=be.approle)||void 0===E?void 0:E.engine)||"",id:(null===be||void 0===be||null===(z=be.approle)||void 0===z?void 0:z.id)||"",secret:(null===be||void 0===be||null===(G=be.approle)||void 0===G?void 0:G.secret)||"",retry:parseInt(null===be||void 0===be||null===(q=be.approle)||void 0===q?void 0:q.retry)},status:{ping:parseInt(null===be||void 0===be||null===(D=be.status)||void 0===D?void 0:D.ping)}}}}let M={},V={},B={};null!==Ve&&void 0!==Ve&&Ve.encoded_key&&null!==Ve&&void 0!==Ve&&Ve.encoded_cert&&(V={minio_mtls:{key:null===Ve||void 0===Ve?void 0:Ve.encoded_key,crt:null===Ve||void 0===Ve?void 0:Ve.encoded_cert}}),null!==tl&&void 0!==tl&&tl.encoded_key&&null!==tl&&void 0!==tl&&tl.encoded_cert&&(M={server_tls:{key:null===tl||void 0===tl?void 0:tl.encoded_key,crt:null===tl||void 0===tl?void 0:tl.encoded_cert}});let W=null,L=null;null!==il&&void 0!==il&&il.encoded_key&&null!==il&&void 0!==il&&il.encoded_cert&&(W={key:null===il||void 0===il?void 0:il.encoded_key,crt:null===il||void 0===il?void 0:il.encoded_cert}),null!==ol&&void 0!==ol&&ol.encoded_cert&&(L={ca:null===ol||void 0===ol?void 0:ol.encoded_cert}),(W||L)&&(B={kms_mtls:{...W,...L}});const H={raw:oe?se:"",secretsToBeDeleted:We||[],replicas:pe,securityContext:fe,image:ge,...V,...M,...B,...T};ze||(Ge(!0),c.Z.invoke("PUT","/api/v1/namespaces/".concat(null===ae||void 0===ae?void 0:ae.namespace,"/tenants/").concat(null===ae||void 0===ae?void 0:ae.name,"/encryption"),H).then((()=>{vl(!1),Ge(!1),ml()})).catch((e=>{Ge(!1),te((0,Z.Ih)(e))})))}else ze||(Ge(!0),c.Z.invoke("DELETE","/api/v1/namespaces/".concat(null===ae||void 0===ae?void 0:ae.namespace,"/tenants/").concat(null===ae||void 0===ae?void 0:ae.name,"/encryption"),{}).then((()=>{vl(!1),Ge(!1),ml()})).catch((e=>{Ge(!1),te((0,Z.Ih)(e))})))},confirmationContent:(0,K.jsxs)(g.Z,{children:[ce?"Data will be encrypted using and external KMS":"Current encrypted information will not be accessible",ce&&(0,K.jsxs)("div",{className:ne.warningBlock,children:[(0,K.jsx)(n.e6P,{}),(0,K.jsx)("span",{children:"The content of the KES config secret will be overwritten."})]})]})}),(0,K.jsxs)(v.ZP,{container:!0,spacing:1,children:[(0,K.jsx)(v.ZP,{item:!0,xs:!0,children:(0,K.jsx)(n.NZf,{children:"Encryption"})}),(0,K.jsx)(v.ZP,{item:!0,xs:4,justifyContent:"end",textAlign:"right",children:(0,K.jsx)(u.Z,{label:"",indicatorLabels:["Enabled","Disabled"],checked:ce,value:"tenant_encryption",id:"tenant-encryption",name:"tenant-encryption",onChange:()=>{ue(!ce)},description:""})}),(0,K.jsx)(v.ZP,{xs:12,children:(0,K.jsx)(w.Z,{})}),ce&&(0,K.jsxs)(r.Fragment,{children:[(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsxs)(b.Z,{value:oe,onChange:(e,l)=>{re(l)},indicatorColor:"primary",textColor:"primary","aria-label":"cluster-tabs",variant:"scrollable",scrollButtons:"auto",children:[(0,K.jsx)(C.Z,{id:"kms-options",label:"Options"}),(0,K.jsx)(C.Z,{id:"kms-raw-configuration",label:"Raw Edit"})]})}),oe?(0,K.jsx)(r.Fragment,{children:(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsx)(S.Z,{value:se,mode:"yaml",onBeforeChange:(e,l,i)=>{de(i)},editorHeight:"550px"})})}):(0,K.jsxs)(r.Fragment,{children:[(0,K.jsx)(N,{policies:ke}),(0,K.jsx)(v.ZP,{item:!0,xs:12,className:ne.encryptionTypeOptions,children:(0,K.jsx)(x.Z,{currentSelection:ve,id:"encryptionType",name:"encryptionType",label:"KMS",onChange:e=>{me(e.target.value)},selectorOptions:[{label:"Vault",value:"vault"},{label:"AWS",value:"aws"},{label:"Gemalto",value:"gemalto"},{label:"GCP",value:"gcp"},{label:"Azure",value:"azure"}]})}),"vault"===ve&&(0,K.jsxs)(r.Fragment,{children:[(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsx)(p.Z,{id:"vault_endpoint",name:"vault_endpoint",onChange:e=>Ce({...be,endpoint:e.target.value}),label:"Endpoint",tooltip:"Endpoint is the Hashicorp Vault endpoint",value:(null===be||void 0===be?void 0:be.endpoint)||"",error:sl.vault_ping||"",required:!0})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsx)(p.Z,{id:"vault_engine",name:"vault_engine",onChange:e=>Ce({...be,engine:e.target.value}),label:"Engine",tooltip:"Engine is the Hashicorp Vault K/V engine path. If empty, defaults to 'kv'",value:(null===be||void 0===be?void 0:be.engine)||""})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsx)(p.Z,{id:"vault_namespace",name:"vault_namespace",onChange:e=>Ce({...be,namespace:e.target.value}),label:"Namespace",tooltip:"Namespace is an optional Hashicorp Vault namespace. An empty namespace means no particular namespace is used.",value:(null===be||void 0===be?void 0:be.namespace)||""})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsx)(p.Z,{id:"vault_prefix",name:"vault_prefix",onChange:e=>Ce({...be,prefix:e.target.value}),label:"Prefix",tooltip:"Prefix is an optional prefix / directory within the K/V engine. If empty, keys will be stored at the K/V engine top level",value:(null===be||void 0===be?void 0:be.prefix)||""})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsx)(n.NZf,{children:"App Role"})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsxs)("fieldset",{className:ne.fieldGroup,children:[(0,K.jsx)("legend",{className:ne.descriptionText,children:"App Role"}),(0,K.jsx)(v.ZP,{item:!0,xs:12,className:ne.formFieldRow,children:(0,K.jsx)(p.Z,{id:"vault_approle_engine",name:"vault_approle_engine",onChange:e=>Ce({...be,approle:{...null===be||void 0===be?void 0:be.approle,engine:e.target.value}}),label:"Engine",tooltip:"AppRoleEngine is the AppRole authentication engine path. If empty, defaults to 'approle'",value:(null===be||void 0===be||null===(l=be.approle)||void 0===l?void 0:l.engine)||""})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,className:ne.formFieldRow,children:(0,K.jsx)(p.Z,{type:He?"text":"password",id:"vault_id",name:"vault_id",onChange:e=>Ce({...be,approle:{...null===be||void 0===be?void 0:be.approle,id:e.target.value}}),label:"AppRole ID",tooltip:"AppRoleSecret is the AppRole access secret for authenticating to Hashicorp Vault via the AppRole method",value:(null===be||void 0===be||null===(i=be.approle)||void 0===i?void 0:i.id)||"",required:!0,error:sl.vault_id||"",overlayIcon:He?(0,K.jsx)(h.Z,{}):(0,K.jsx)(y.Z,{}),overlayAction:()=>Oe(!He)})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,className:ne.formFieldRow,children:(0,K.jsx)(p.Z,{type:Qe?"text":"password",id:"vault_secret",name:"vault_secret",onChange:e=>Ce({...be,approle:{...null===be||void 0===be?void 0:be.approle,secret:e.target.value}}),label:"AppRole Secret",tooltip:"AppRoleSecret is the AppRole access secret for authenticating to Hashicorp Vault via the AppRole method",value:(null===be||void 0===be||null===(t=be.approle)||void 0===t?void 0:t.secret)||"",required:!0,error:sl.vault_secret||"",overlayIcon:Qe?(0,K.jsx)(h.Z,{}):(0,K.jsx)(y.Z,{}),overlayAction:()=>Xe(!Qe)})}),(0,K.jsx)(v.ZP,{xs:12,className:ne.formFieldRow,children:(0,K.jsx)(p.Z,{type:"number",min:"0",id:"vault_retry",name:"vault_retry",onChange:e=>Ce({...be,approle:{...null===be||void 0===be?void 0:be.approle,retry:e.target.value}}),label:"Retry (Seconds)",error:sl.vault_retry||"",value:(null===be||void 0===be||null===(a=be.approle)||void 0===a?void 0:a.retry)||""})})]})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,className:ne.formFieldRow,style:{marginTop:15},children:(0,K.jsxs)("fieldset",{className:ne.fieldGroup,children:[(0,K.jsx)("legend",{className:ne.descriptionText,children:"Status"}),(0,K.jsx)(p.Z,{type:"number",min:"0",id:"vault_ping",name:"vault_ping",onChange:e=>Ce({...be,status:{...null===be||void 0===be?void 0:be.status,ping:e.target.value}}),label:"Ping (Seconds)",tooltip:"controls how often to Vault health status is checked. If not set, defaults to 10s",error:sl.vault_ping||"",value:(null===be||void 0===be||null===(o=be.status)||void 0===o?void 0:o.ping)||""})]})})]}),"azure"===ve&&(0,K.jsxs)(r.Fragment,{children:[(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsx)(p.Z,{id:"azure_endpoint",name:"azure_endpoint",onChange:e=>Ie({...Ne,keyvault:{...null===Ne||void 0===Ne?void 0:Ne.keyvault,endpoint:e.target.value}}),label:"Endpoint",tooltip:"Endpoint is the Azure KeyVault endpoint",error:sl.azure_endpoint||"",value:(null===Ne||void 0===Ne||null===(P=Ne.keyvault)||void 0===P?void 0:P.endpoint)||""})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsxs)("fieldset",{className:ne.fieldGroup,children:[(0,K.jsx)("legend",{className:ne.descriptionText,children:"Credentials"}),(0,K.jsx)(v.ZP,{item:!0,xs:12,className:ne.formFieldRow,children:(0,K.jsx)(p.Z,{id:"azure_tenant_id",name:"azure_tenant_id",onChange:e=>{var l;return Ie({...Ne,keyvault:{...null===Ne||void 0===Ne?void 0:Ne.keyvault,credentials:{...null===Ne||void 0===Ne||null===(l=Ne.keyvault)||void 0===l?void 0:l.credentials,tenant_id:e.target.value}}})},label:"Tenant ID",tooltip:"TenantID is the ID of the Azure KeyVault tenant",value:(null===Ne||void 0===Ne||null===(I=Ne.keyvault)||void 0===I||null===(A=I.credentials)||void 0===A?void 0:A.tenant_id)||"",error:sl.azure_tenant_id||""})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,className:ne.formFieldRow,children:(0,K.jsx)(p.Z,{id:"azure_client_id",name:"azure_client_id",onChange:e=>{var l;return Ie({...Ne,keyvault:{...null===Ne||void 0===Ne?void 0:Ne.keyvault,credentials:{...null===Ne||void 0===Ne||null===(l=Ne.keyvault)||void 0===l?void 0:l.credentials,client_id:e.target.value}}})},label:"Client ID",tooltip:"ClientID is the ID of the client accessing Azure KeyVault",value:(null===Ne||void 0===Ne||null===(R=Ne.keyvault)||void 0===R||null===(F=R.credentials)||void 0===F?void 0:F.client_id)||"",error:sl.azure_client_id||""})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,className:ne.formFieldRow,children:(0,K.jsx)(p.Z,{id:"azure_client_secret",name:"azure_client_secret",onChange:e=>{var l;return Ie({...Ne,keyvault:{...null===Ne||void 0===Ne?void 0:Ne.keyvault,credentials:{...null===Ne||void 0===Ne||null===(l=Ne.keyvault)||void 0===l?void 0:l.credentials,client_secret:e.target.value}}})},label:"Client Secret",tooltip:"ClientSecret is the client secret accessing the Azure KeyVault",value:(null===Ne||void 0===Ne||null===(E=Ne.keyvault)||void 0===E||null===(z=E.credentials)||void 0===z?void 0:z.client_secret)||"",error:sl.azure_client_secret||""})})]})})]}),"gcp"===ve&&(0,K.jsxs)(r.Fragment,{children:[(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsx)(p.Z,{id:"gcp_project_id",name:"gcp_project_id",onChange:e=>Re({...Ae,secretmanager:{...null===Ae||void 0===Ae?void 0:Ae.secretmanager,project_id:e.target.value}}),label:"Project ID",tooltip:"ProjectID is the GCP project ID",value:(null===Ae||void 0===Ae?void 0:Ae.secretmanager.project_id)||""})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsx)(p.Z,{id:"gcp_endpoint",name:"gcp_endpoint",onChange:e=>Re({...Ae,secretmanager:{...null===Ae||void 0===Ae?void 0:Ae.secretmanager,endpoint:e.target.value}}),label:"Endpoint",tooltip:"Endpoint is the GCP project ID. If empty defaults to: secretmanager.googleapis.com:443",value:(null===Ae||void 0===Ae?void 0:Ae.secretmanager.endpoint)||""})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsxs)("fieldset",{className:ne.fieldGroup,children:[(0,K.jsx)("legend",{className:ne.descriptionText,children:"Credentials"}),(0,K.jsx)(v.ZP,{item:!0,xs:12,className:ne.formFieldRow,children:(0,K.jsx)(p.Z,{id:"gcp_client_email",name:"gcp_client_email",onChange:e=>Re({...Ae,secretmanager:{...null===Ae||void 0===Ae?void 0:Ae.secretmanager,credentials:{...null===Ae||void 0===Ae?void 0:Ae.secretmanager.credentials,client_email:e.target.value}}}),label:"Client Email",tooltip:"Is the Client email of the GCP service account used to access the SecretManager",value:(null===Ae||void 0===Ae||null===(G=Ae.secretmanager.credentials)||void 0===G?void 0:G.client_email)||""})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,className:ne.formFieldRow,children:(0,K.jsx)(p.Z,{id:"gcp_client_id",name:"gcp_client_id",onChange:e=>Re({...Ae,secretmanager:{...null===Ae||void 0===Ae?void 0:Ae.secretmanager,credentials:{...null===Ae||void 0===Ae?void 0:Ae.secretmanager.credentials,client_id:e.target.value}}}),label:"Client ID",tooltip:"Is the Client ID of the GCP service account used to access the SecretManager",value:(null===Ae||void 0===Ae||null===(q=Ae.secretmanager.credentials)||void 0===q?void 0:q.client_id)||""})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,className:ne.formFieldRow,children:(0,K.jsx)(p.Z,{id:"gcp_private_key_id",name:"gcp_private_key_id",onChange:e=>Re({...Ae,secretmanager:{...null===Ae||void 0===Ae?void 0:Ae.secretmanager,credentials:{...null===Ae||void 0===Ae?void 0:Ae.secretmanager.credentials,private_key_id:e.target.value}}}),label:"Private Key ID",tooltip:"Is the private key ID of the GCP service account used to access the SecretManager",value:(null===Ae||void 0===Ae||null===(D=Ae.secretmanager.credentials)||void 0===D?void 0:D.private_key_id)||""})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,className:ne.formFieldRow,children:(0,K.jsx)(p.Z,{id:"gcp_private_key",name:"gcp_private_key",onChange:e=>Re({...Ae,secretmanager:{...null===Ae||void 0===Ae?void 0:Ae.secretmanager,credentials:{...null===Ae||void 0===Ae?void 0:Ae.secretmanager.credentials,private_key:e.target.value}}}),label:"Private Key",tooltip:"Is the private key of the GCP service account used to access the SecretManager",value:(null===Ae||void 0===Ae||null===(T=Ae.secretmanager.credentials)||void 0===T?void 0:T.private_key)||""})})]})})]}),"aws"===ve&&(0,K.jsxs)(r.Fragment,{children:[(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsx)(p.Z,{id:"aws_endpoint",name:"aws_endpoint",onChange:e=>we({...Se,secretsmanager:{...null===Se||void 0===Se?void 0:Se.secretsmanager,endpoint:e.target.value}}),label:"Endpoint",tooltip:"Endpoint is the AWS SecretsManager endpoint. AWS SecretsManager endpoints have the following schema: secrestmanager[-fips]..amanzonaws.com",value:(null===Se||void 0===Se||null===(M=Se.secretsmanager)||void 0===M?void 0:M.endpoint)||"",required:!0,error:sl.aws_endpoint||""})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsx)(p.Z,{id:"aws_region",name:"aws_region",onChange:e=>we({...Se,secretsmanager:{...null===Se||void 0===Se?void 0:Se.secretsmanager,region:e.target.value}}),label:"Region",tooltip:"Region is the AWS region the SecretsManager is located",value:(null===Se||void 0===Se||null===(V=Se.secretsmanager)||void 0===V?void 0:V.region)||"",error:sl.aws_region||"",required:!0})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsx)(p.Z,{id:"aws_kmsKey",name:"aws_kmsKey",onChange:e=>we({...Se,secretsmanager:{...null===Se||void 0===Se?void 0:Se.secretsmanager,kmskey:e.target.value}}),label:"KMS Key",tooltip:"KMSKey is the AWS-KMS key ID (CMK-ID) used to en/decrypt secrets managed by the SecretsManager. If empty, the default AWS KMS key is used",value:(null===Se||void 0===Se||null===(B=Se.secretsmanager)||void 0===B?void 0:B.kmskey)||""})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsxs)("fieldset",{className:ne.fieldGroup,children:[(0,K.jsx)("legend",{className:ne.descriptionText,children:"Credentials"}),(0,K.jsx)(v.ZP,{item:!0,xs:12,className:ne.formFieldRow,children:(0,K.jsx)(p.Z,{id:"aws_accessKey",name:"aws_accessKey",onChange:e=>{var l;return we({...Se,secretsmanager:{...null===Se||void 0===Se?void 0:Se.secretsmanager,credentials:{...null===Se||void 0===Se||null===(l=Se.secretsmanager)||void 0===l?void 0:l.credentials,accesskey:e.target.value}}})},label:"Access Key",tooltip:"AccessKey is the access key for authenticating to AWS",value:(null===Se||void 0===Se||null===(W=Se.secretsmanager)||void 0===W||null===(L=W.credentials)||void 0===L?void 0:L.accesskey)||"",error:sl.aws_accessKey||"",required:!0})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,className:ne.formFieldRow,children:(0,K.jsx)(p.Z,{id:"aws_secretKey",name:"aws_secretKey",onChange:e=>{var l;return we({...Se,secretsmanager:{...null===Se||void 0===Se?void 0:Se.secretsmanager,credentials:{...null===Se||void 0===Se||null===(l=Se.secretsmanager)||void 0===l?void 0:l.credentials,secretkey:e.target.value}}})},label:"Secret Key",tooltip:"SecretKey is the secret key for authenticating to AWS",value:(null===Se||void 0===Se||null===(H=Se.secretsmanager)||void 0===H||null===(O=H.credentials)||void 0===O?void 0:O.secretkey)||"",error:sl.aws_secretKey||"",required:!0})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,className:ne.formFieldRow,children:(0,K.jsx)(p.Z,{id:"aws_token",name:"aws_token",onChange:e=>{var l;return we({...Se,secretsmanager:{...null===Se||void 0===Se?void 0:Se.secretsmanager,credentials:{...null===Se||void 0===Se||null===(l=Se.secretsmanager)||void 0===l?void 0:l.credentials,token:e.target.value}}})},label:"Token",tooltip:"SessionToken is an optional session token for authenticating to AWS when using STS",value:(null===Se||void 0===Se||null===(U=Se.secretsmanager)||void 0===U||null===(Y=U.credentials)||void 0===Y?void 0:Y.token)||""})})]})})]}),"gemalto"===ve&&(0,K.jsxs)(r.Fragment,{children:[(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsx)(p.Z,{id:"gemalto_endpoint",name:"gemalto_endpoint",onChange:e=>Pe({...Ke,keysecure:{...null===Ke||void 0===Ke?void 0:Ke.keysecure,endpoint:e.target.value}}),label:"Endpoint",tooltip:"Endpoint is the endpoint to the KeySecure server",value:(null===Ke||void 0===Ke||null===(Q=Ke.keysecure)||void 0===Q?void 0:Q.endpoint)||"",error:sl.gemalto_endpoint||"",required:!0})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,K.jsxs)("fieldset",{className:ne.fieldGroup,children:[(0,K.jsx)("legend",{className:ne.descriptionText,children:"Credentials"}),(0,K.jsx)(v.ZP,{item:!0,xs:12,className:ne.formFieldRow,children:(0,K.jsx)(p.Z,{id:"gemalto_token",name:"gemalto_token",onChange:e=>{var l;return Pe({...Ke,keysecure:{...null===Ke||void 0===Ke?void 0:Ke.keysecure,credentials:{...null===Ke||void 0===Ke||null===(l=Ke.keysecure)||void 0===l?void 0:l.credentials,token:e.target.value}}})},label:"Token",tooltip:"Token is the refresh authentication token to access the KeySecure server",value:(null===Ke||void 0===Ke||null===(X=Ke.keysecure)||void 0===X||null===(J=X.credentials)||void 0===J?void 0:J.token)||"",error:sl.gemalto_token||"",required:!0})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,className:ne.formFieldRow,children:(0,K.jsx)(p.Z,{id:"gemalto_domain",name:"gemalto_domain",onChange:e=>{var l;return Pe({...Ke,keysecure:{...null===Ke||void 0===Ke?void 0:Ke.keysecure,credentials:{...null===Ke||void 0===Ke||null===(l=Ke.keysecure)||void 0===l?void 0:l.credentials,domain:e.target.value}}})},label:"Domain",tooltip:"Domain is the isolated namespace within the KeySecure server. If empty, defaults to the top-level / root domain",value:(null===Ke||void 0===Ke||null===($=Ke.keysecure)||void 0===$||null===(ee=$.credentials)||void 0===ee?void 0:ee.domain)||"",error:sl.gemalto_domain||"",required:!0})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,className:ne.formFieldRow,children:(0,K.jsx)(p.Z,{type:"number",min:"0",id:"gemalto_retry",name:"gemalto_retry",onChange:e=>{var l;return Pe({...Ke,keysecure:{...null===Ke||void 0===Ke?void 0:Ke.keysecure,credentials:{...null===Ke||void 0===Ke||null===(l=Ke.keysecure)||void 0===l?void 0:l.credentials,retry:e.target.value}}})},label:"Retry (seconds)",value:(null===Ke||void 0===Ke||null===(le=Ke.keysecure)||void 0===le||null===(ie=le.credentials)||void 0===ie?void 0:ie.retry)||"",error:sl.gemalto_retry||""})})]})})]})]}),(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsx)(n.NZf,{children:"Additional Configuration for KES"})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsx)(u.Z,{value:"enableCustomCertsForKES",id:"enableCustomCertsForKES",name:"enableCustomCertsForKES",checked:Fe,onChange:()=>Ee(!Fe),label:"Custom Certificates"})}),Fe&&(0,K.jsxs)(r.Fragment,{children:[(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsxs)("fieldset",{className:ne.fieldGroup,children:[(0,K.jsx)("legend",{className:ne.descriptionText,children:"Encryption server certificates"}),qe?(0,K.jsx)(k.Z,{certificateInfo:qe,onDelete:()=>pl(qe)}):(0,K.jsxs)(r.Fragment,{children:[(0,K.jsx)(m.Z,{onChange:(e,l)=>{al({encoded_key:e||"",id:(null===tl||void 0===tl?void 0:tl.id)||"",key:l||"",cert:(null===tl||void 0===tl?void 0:tl.cert)||"",encoded_cert:(null===tl||void 0===tl?void 0:tl.encoded_cert)||""}),cl("serverKey")},accept:".key,.pem",id:"serverKey",name:"serverKey",label:"Key",value:null===tl||void 0===tl?void 0:tl.key}),(0,K.jsx)(m.Z,{onChange:(e,l)=>{al({encoded_key:(null===tl||void 0===tl?void 0:tl.encoded_key)||"",id:(null===tl||void 0===tl?void 0:tl.id)||"",key:(null===tl||void 0===tl?void 0:tl.key)||"",cert:l||"",encoded_cert:e||""}),cl("serverCert")},accept:".cer,.crt,.cert,.pem",id:"serverCert",name:"serverCert",label:"Cert",value:null===tl||void 0===tl?void 0:tl.cert})]})]})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsxs)("fieldset",{className:ne.fieldGroup,children:[(0,K.jsx)("legend",{className:ne.descriptionText,children:"MinIO mTLS certificates (connection between MinIO and the Encryption server)"}),Te?(0,K.jsx)(k.Z,{certificateInfo:Te,onDelete:()=>pl(Te)}):(0,K.jsxs)(r.Fragment,{children:[(0,K.jsx)(m.Z,{onChange:(e,l)=>{Be({encoded_key:e||"",id:(null===Ve||void 0===Ve?void 0:Ve.id)||"",key:l||"",cert:(null===Ve||void 0===Ve?void 0:Ve.cert)||"",encoded_cert:(null===Ve||void 0===Ve?void 0:Ve.encoded_cert)||""}),cl("clientKey")},accept:".key,.pem",id:"clientKey",name:"clientKey",label:"Key",value:null===Ve||void 0===Ve?void 0:Ve.key}),(0,K.jsx)(m.Z,{onChange:(e,l)=>{Be({encoded_key:(null===Ve||void 0===Ve?void 0:Ve.encoded_key)||"",id:(null===Ve||void 0===Ve?void 0:Ve.id)||"",key:(null===Ve||void 0===Ve?void 0:Ve.key)||"",cert:l||"",encoded_cert:e||""}),cl("clientCert")},accept:".cer,.crt,.cert,.pem",id:"clientCert",name:"clientCert",label:"Cert",value:null===Ve||void 0===Ve?void 0:Ve.cert})]})]})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsxs)("fieldset",{className:ne.fieldGroup,children:[(0,K.jsx)("legend",{className:ne.descriptionText,children:"KMS mTLS certificates (connection between the Encryption server and the KMS)"}),Je?(0,K.jsx)(k.Z,{certificateInfo:Je,onDelete:()=>pl(Je)}):(0,K.jsxs)(r.Fragment,{children:[(0,K.jsx)(m.Z,{onChange:(e,l)=>{nl({encoded_key:e||"",id:(null===il||void 0===il?void 0:il.id)||"",key:l||"",cert:(null===il||void 0===il?void 0:il.cert)||"",encoded_cert:(null===il||void 0===il?void 0:il.encoded_cert)||""})},accept:".key,.pem",id:"kms_mtls_key",name:"kms_mtls_key",label:"Key",value:null===il||void 0===il?void 0:il.key}),(0,K.jsx)(m.Z,{onChange:(e,l)=>nl({encoded_key:(null===il||void 0===il?void 0:il.encoded_key)||"",id:(null===il||void 0===il?void 0:il.id)||"",key:(null===il||void 0===il?void 0:il.key)||"",cert:l||"",encoded_cert:e||""}),accept:".cer,.crt,.cert,.pem",id:"kms_mtls_cert",name:"kms_mtls_cert",label:"Cert",value:(null===il||void 0===il?void 0:il.cert)||""})]}),el?(0,K.jsx)(k.Z,{certificateInfo:el,onDelete:()=>pl(el)}):(0,K.jsx)(m.Z,{onChange:(e,l)=>rl({encoded_key:(null===ol||void 0===ol?void 0:ol.encoded_key)||"",id:(null===ol||void 0===ol?void 0:ol.id)||"",key:(null===ol||void 0===ol?void 0:ol.key)||"",cert:l||"",encoded_cert:e||""}),accept:".cer,.crt,.cert,.pem",id:"kms_mtls_ca",name:"kms_mtls_ca",label:"CA",value:(null===ol||void 0===ol?void 0:ol.cert)||""})]})})]}),(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsx)(p.Z,{type:"text",id:"image",name:"image",onChange:e=>he(e.target.value),label:"Image",tooltip:"KES container image",placeholder:"minio/kes:2023-10-03T00-48-37Z",value:ge})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsx)(p.Z,{type:"number",min:"1",id:"replicas",name:"replicas",onChange:e=>xe(e.target.value),label:"Replicas",tooltip:"Numer of KES pod replicas",value:pe,required:!0,error:sl.replicas||""})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsx)(n.NZf,{children:"SecurityContext for KES"})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsxs)("div",{className:"".concat(ne.multiContainer," ").concat(ne.responsiveContainer),children:[(0,K.jsx)("div",{className:"".concat(ne.formFieldRow," ").concat(ne.rightSpacer),children:(0,K.jsx)(p.Z,{type:"number",id:"kes_securityContext_runAsUser",name:"kes_securityContext_runAsUser",onChange:e=>{je({...fe,runAsUser:e.target.value})},label:"Run As User",value:fe.runAsUser,required:!0,error:sl.kes_securityContext_runAsUser||"",min:"0"})}),(0,K.jsx)("div",{className:"".concat(ne.formFieldRow," ").concat(ne.rightSpacer),children:(0,K.jsx)(p.Z,{type:"number",id:"kes_securityContext_runAsGroup",name:"kes_securityContext_runAsGroup",onChange:e=>{je({...fe,runAsGroup:e.target.value})},label:"Run As Group",value:fe.runAsGroup,required:!0,error:sl.kes_securityContext_runAsGroup||"",min:"0"})}),(0,K.jsx)("div",{className:"".concat(ne.formFieldRow," ").concat(ne.rightSpacer),children:(0,K.jsx)(p.Z,{type:"number",id:"kes_securityContext_fsGroup",name:"kes_securityContext_fsGroup",onChange:e=>{je({...fe,fsGroup:e.target.value})},label:"FsGroup",value:fe.fsGroup,required:!0,error:sl.kes_securityContext_fsGroup||"",min:"0"})})]})}),(0,K.jsx)(v.ZP,{item:!0,xs:12,children:(0,K.jsx)(u.Z,{value:"kesSecurityContextRunAsNonRoot",id:"kes_securityContext_runAsNonRoot",name:"kes_securityContext_runAsNonRoot",checked:fe.runAsNonRoot,onChange:e=>{const l=e.target.checked;je({...fe,runAsNonRoot:l})},label:"Do not run as Root"})})]}),(0,K.jsx)(v.ZP,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:(0,K.jsx)(n.zxk,{id:"save-encryption",type:"submit",variant:"callAction",disabled:!Ue,onClick:()=>vl(!0),label:"Save"})})]})]})}))},22512:(e,l,i)=>{i.d(l,{Z:()=>s});var n=i(72791),t=i(20890),a=i(11135),o=i(25787),r=i(80184);const s=(0,o.Z)((e=>{var l;return(0,a.Z)({errorBlock:{color:(null===(l=e.palette)||void 0===l?void 0:l.error.main)||"#C83B51"}})}))((e=>{let{classes:l,errorMessage:i,withBreak:a=!0}=e;return(0,r.jsxs)(n.Fragment,{children:[a&&(0,r.jsx)("br",{}),(0,r.jsx)(t.Z,{component:"p",variant:"body1",className:l.errorBlock,children:i})]})}))}}]); +//# sourceMappingURL=367.ca5c7e28.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/367.ca5c7e28.chunk.js.map b/web-app/build/static/js/367.ca5c7e28.chunk.js.map new file mode 100644 index 00000000000..7726e9f0a30 --- /dev/null +++ b/web-app/build/static/js/367.ca5c7e28.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/367.ca5c7e28.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper.tsx","screens/Console/Common/FormComponents/FileSelector/FileSelector.tsx","screens/Console/Common/FormComponents/FileSelector/utils.ts","screens/Console/Common/FormHr.tsx","screens/Console/Common/TLSCertificate/TLSCertificate.tsx","screens/Console/Tenants/TenantDetails/KMSPolicyInfo.tsx","screens/Console/Tenants/TenantDetails/TenantEncryption.tsx","screens/shared/ErrorBlock.tsx"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Box, InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Button, CopyIcon, HelpIcon } from \"mds\";\nimport { fieldBasic } from \"../common/styleLibrary\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport CodeEditor from \"@uiw/react-textarea-code-editor\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n classes: any;\n onChange?: (editor: any, data: any, value: string) => any;\n onBeforeChange: (editor: any, data: any, value: string) => any;\n readOnly?: boolean;\n editorHeight?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n });\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n classes,\n onBeforeChange,\n readOnly = false,\n editorHeight = \"250px\",\n}: ICodeWrapper) => {\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n
\n\n \n {\n onBeforeChange(null, null, evn.target.value);\n }}\n id={\"code_wrapper\"}\n padding={15}\n style={{\n fontSize: 12,\n backgroundColor: \"#fefefe\",\n fontFamily:\n \"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace\",\n minHeight: editorHeight || \"initial\",\n color: \"#000000\",\n }}\n />\n \n \n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n \n
\n );\n};\n\nexport default withStyles(styles)(CodeMirrorWrapper);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport get from \"lodash/get\";\nimport { Grid, InputLabel, Tooltip } from \"@mui/material\";\nimport IconButton from \"@mui/material/IconButton\";\nimport AttachFileIcon from \"@mui/icons-material/AttachFile\";\nimport CancelIcon from \"@mui/icons-material/Cancel\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n fileInputStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { fileProcess } from \"./utils\";\nimport { HelpIcon } from \"mds\";\nimport ErrorBlock from \"../../../../shared/ErrorBlock\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: string, i: string) => void;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n required?: boolean;\n error?: string;\n accept?: string;\n value?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n valueString: {\n maxWidth: 350,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n marginTop: 2,\n },\n fileInputField: {\n margin: \"13px 0\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n ...fileInputStyles,\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n textBoxContainer: {\n ...fieldBasic.textBoxContainer,\n maxWidth: \"100%\",\n border: \"1px solid #eaeaea\",\n paddingLeft: \"15px\",\n },\n });\n\nconst FileSelector = ({\n label,\n classes,\n onChange,\n id,\n name,\n disabled = false,\n tooltip = \"\",\n required,\n error = \"\",\n accept = \"\",\n value = \"\",\n}: InputBoxProps) => {\n const [showFileSelector, setShowSelector] = useState(false);\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n {showFileSelector || value === \"\" ? (\n
\n {\n const fileName = get(e, \"target.files[0].name\", \"\");\n fileProcess(e, (data: any) => {\n onChange(data, fileName);\n });\n }}\n accept={accept}\n required={required}\n disabled={disabled}\n className={classes.fileInputField}\n />\n\n {value !== \"\" && (\n {\n setShowSelector(false);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n )}\n\n {error !== \"\" && }\n
\n ) : (\n
\n
{value}
\n {\n setShowSelector(true);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n
\n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(FileSelector);\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const fileProcess = (evt: any, callback: any) => {\n const file = evt.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n // reader.readAsDataURL(file) output will be something like: data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSU\n // we care only about the actual base64 part (everything after \"data:application/x-x509-ca-cert;base64,\")\n const fileBase64 = reader.result;\n if (fileBase64) {\n const fileArray = fileBase64.toString().split(\"base64,\");\n\n if (fileArray.length === 2) {\n callback(fileArray[1]);\n }\n }\n };\n};\n","// This file is part of MinIO Operator\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport styled from \"@emotion/styled\";\n\nconst FormHr = styled(\"hr\")`\n border-top: 0;\n border-left: 0;\n border-right: 0;\n border-color: #999999;\n background-color: transparent;\n`;\n\nexport default FormHr;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { DateTime, Duration } from \"luxon\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { ICertificateInfo } from \"../../Tenants/types\";\nimport LanguageIcon from \"@mui/icons-material/Language\";\nimport Chip from \"@mui/material/Chip\";\nimport {\n Box,\n Container,\n Divider,\n Grid,\n List,\n ListItem,\n ListItemAvatar,\n ListItemText,\n Typography,\n} from \"@mui/material\";\nimport EventBusyIcon from \"@mui/icons-material/EventBusy\";\nimport AccessTimeIcon from \"@mui/icons-material/AccessTime\";\nimport { CertificateIcon } from \"mds\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n certificateIcon: {\n float: \"left\",\n paddingTop: \"5px !important\",\n paddingRight: \"10px !important\",\n },\n certificateInfo: { float: \"right\" },\n certificateWrapper: {\n height: \"auto\",\n margin: 5,\n border: \"1px solid #E2E2E2\",\n userSelect: \"text\",\n borderRadius: 4,\n \"& h6\": {\n fontWeight: \"bold\",\n },\n \"& div\": {\n padding: 0,\n },\n },\n certificateExpiry: {\n color: \"#616161\",\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n marginBottom: 5,\n \"& .label\": {\n fontWeight: \"bold\",\n },\n },\n certificateDomains: {\n color: \"#616161\",\n \"& .label\": {\n fontWeight: \"bold\",\n },\n },\n certificatesList: {\n border: \"1px solid #E2E2E2\",\n borderRadius: 4,\n color: \"#616161\",\n textTransform: \"lowercase\",\n overflowY: \"scroll\",\n maxHeight: 145,\n marginBottom: 10,\n },\n certificatesListItem: {\n padding: \"0px 16px\",\n borderBottom: \"1px solid #E2E2E2\",\n \"& div\": {\n minWidth: 0,\n },\n \"& svg\": {\n fontSize: 12,\n marginRight: 10,\n opacity: 0.5,\n },\n \"& span\": {\n fontSize: 12,\n },\n },\n certificateExpiring: {\n color: \"orange\",\n \"& .label\": {\n fontWeight: \"bold\",\n },\n },\n certificateExpired: {\n color: \"red\",\n \"& .label\": {\n fontWeight: \"bold\",\n },\n },\n });\n\ninterface ITLSCertificate {\n classes: any;\n certificateInfo: ICertificateInfo;\n onDelete: any;\n}\n\nconst TLSCertificate = ({\n classes,\n certificateInfo,\n onDelete = () => {},\n}: ITLSCertificate) => {\n const certificates = certificateInfo.domains || [];\n\n const expiry = DateTime.fromISO(certificateInfo.expiry);\n const now = DateTime.utc();\n // Expose error on Tenant if certificate is near expiration or expired\n let daysToExpiry: number = 0;\n let daysToExpiryHuman: string = \"\";\n let certificateExpiration: string = \"\";\n if (expiry) {\n let durationToExpiry = expiry.diff(now);\n daysToExpiry = durationToExpiry.as(\"days\");\n daysToExpiryHuman = durationToExpiry\n .minus(Duration.fromObject({ days: 1 }))\n .shiftTo(\"days\")\n .toHuman({ listStyle: \"long\", maximumFractionDigits: 0 });\n if (daysToExpiry >= 10 && daysToExpiry < 30) {\n certificateExpiration = classes.certificateExpiring;\n }\n if (daysToExpiry < 10) {\n certificateExpiration = classes.certificateExpired;\n if (daysToExpiry < 2) {\n daysToExpiryHuman = durationToExpiry\n .minus(Duration.fromObject({ minutes: 1 }))\n .shiftTo(\"hours\", \"minutes\")\n .toHuman({ listStyle: \"long\", maximumFractionDigits: 0 });\n if (durationToExpiry.as(\"minutes\") <= 1) {\n daysToExpiryHuman = \"EXPIRED\";\n }\n }\n }\n }\n\n return (\n \n \n \n \n \n \n {certificateInfo.name}\n \n \n \n  \n Expiry: \n {expiry.toFormat(\"yyyy/MM/dd\")}\n \n \n \n  \n Expires in: \n {daysToExpiryHuman}\n \n \n
\n \n {`${certificates.length} Domain (s):`}\n \n \n {certificates.map((dom, index) => (\n \n \n \n \n \n \n ))}\n \n
\n \n }\n onDelete={onDelete}\n />\n );\n};\n\nexport default withStyles(styles)(TLSCertificate);\n","// This file is part of MinIO Operator\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Box } from \"mds\";\n\nconst getPolicyData = (policies: Record = {}) => {\n const policyNames = Object.keys(policies);\n return policyNames.map((polName: string) => {\n const policyConfig = policies[polName] || {};\n return {\n name: polName || \"\",\n identities: policyConfig.identities || [],\n // v1 specific\n paths: policyConfig.paths || [],\n // v2 specific\n allow: policyConfig.allow || [],\n deny: policyConfig.deny || [],\n };\n });\n};\n\nconst PolicyItem = ({\n items = [],\n title = \"\",\n}: {\n items: string[];\n title: string;\n}) => {\n return items?.length ? (\n \n \n {title}\n \n \n {items.map((iTxt: string) => {\n return - {iTxt};\n })}\n \n \n ) : null;\n};\n\nconst KMSPolicyInfo = ({\n policies = {},\n}: {\n policies: Record;\n}) => {\n const fmtPolicies = getPolicyData(policies);\n return fmtPolicies.length ? (\n \n

Policies

\n \n {fmtPolicies.map((pConf: Record) => {\n return (\n \n
\n \n Policy Name:\n {\" \"}\n {pConf.name}\n
\n \n \n \n \n \n );\n })}\n \n
\n ) : null;\n};\n\nexport default KMSPolicyInfo;\n","// This file is part of MinIO Operator\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { ICertificateInfo, ITenantEncryptionResponse } from \"../types\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button, WarnIcon, SectionTitle } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n containerForHeader,\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n spacingUtils,\n tenantDetailsStyles,\n wizardCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport api from \"../../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\n\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport FileSelector from \"../../Common/FormComponents/FileSelector/FileSelector\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport RadioGroupSelector from \"../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport { DialogContentText } from \"@mui/material\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { KeyPair } from \"../ListTenants/utils\";\nimport { clearValidationError } from \"../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../utils/validationFunctions\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport TLSCertificate from \"../../Common/TLSCertificate/TLSCertificate\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport Tabs from \"@mui/material/Tabs\";\nimport Tab from \"@mui/material/Tab\";\nimport CodeMirrorWrapper from \"../../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport FormHr from \"../../Common/FormHr\";\nimport { SecurityContext } from \"../../../../api/operatorApi\";\nimport KMSPolicyInfo from \"./KMSPolicyInfo\";\n\ninterface ITenantEncryption {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n ...spacingUtils,\n ...containerForHeader,\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n warningBlock: {\n color: \"red\",\n fontSize: \".85rem\",\n margin: \".5rem 0 .5rem 0\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg \": {\n marginRight: \".3rem\",\n height: 16,\n width: 16,\n },\n },\n });\n\nconst TenantEncryption = ({ classes }: ITenantEncryption) => {\n const dispatch = useAppDispatch();\n\n const tenant = useSelector((state: AppState) => state.tenants.tenantInfo);\n const [editRawConfiguration, setEditRawConfiguration] = useState(0);\n const [encryptionRawConfiguration, setEncryptionRawConfiguration] =\n useState(\"\");\n const [encryptionEnabled, setEncryptionEnabled] = useState(false);\n const [encryptionType, setEncryptionType] = useState(\"vault\");\n const [replicas, setReplicas] = useState(\"1\");\n const [image, setImage] = useState(\"\");\n const [refreshEncryptionInfo, setRefreshEncryptionInfo] =\n useState(false);\n const [securityContext, setSecurityContext] = useState({\n fsGroup: \"1000\",\n fsGroupChangePolicy: \"Always\",\n runAsGroup: \"1000\",\n runAsNonRoot: true,\n runAsUser: \"1000\",\n });\n const [policies, setPolicies] = useState([]);\n const [vaultConfiguration, setVaultConfiguration] = useState(null);\n const [awsConfiguration, setAWSConfiguration] = useState(null);\n const [gemaltoConfiguration, setGemaltoConfiguration] = useState(null);\n const [azureConfiguration, setAzureConfiguration] = useState(null);\n const [gcpConfiguration, setGCPConfiguration] = useState(null);\n const [enabledCustomCertificates, setEnabledCustomCertificates] =\n useState(false);\n const [updatingEncryption, setUpdatingEncryption] = useState(false);\n const [kesServerTLSCertificateSecret, setKesServerTLSCertificateSecret] =\n useState(null);\n const [minioMTLSCertificateSecret, setMinioMTLSCertificateSecret] =\n useState(null);\n const [minioMTLSCertificate, setMinioMTLSCertificate] =\n useState(null);\n const [certificatesToBeRemoved, setCertificatesToBeRemoved] = useState<\n string[]\n >([]);\n const [showVaultAppRoleID, setShowVaultAppRoleID] = useState(false);\n const [isFormValid, setIsFormValid] = useState(false);\n const [showVaultAppRoleSecret, setShowVaultAppRoleSecret] =\n useState(false);\n const [kmsMTLSCertificateSecret, setKmsMTLSCertificateSecret] =\n useState(null);\n const [kmsCACertificateSecret, setKMSCACertificateSecret] =\n useState(null);\n const [kmsMTLSCertificate, setKmsMTLSCertificate] = useState(\n null,\n );\n const [kesServerCertificate, setKESServerCertificate] =\n useState(null);\n const [kmsCACertificate, setKmsCACertificate] = useState(\n null,\n );\n const [validationErrors, setValidationErrors] = useState({});\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n const [confirmOpen, setConfirmOpen] = useState(false);\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (encryptionEnabled) {\n encryptionValidation = [\n {\n fieldKey: \"replicas\",\n required: true,\n value: replicas,\n customValidation: parseInt(replicas) < 1,\n customValidationMessage: \"Replicas needs to be 1 or greater\",\n },\n {\n fieldKey: \"kes_securityContext_runAsUser\",\n required: true,\n value: securityContext.runAsUser,\n customValidation:\n securityContext.runAsUser === \"\" ||\n parseInt(securityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"kes_securityContext_runAsGroup\",\n required: true,\n value: securityContext.runAsGroup,\n customValidation:\n securityContext.runAsGroup === \"\" ||\n parseInt(securityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"kes_securityContext_fsGroup\",\n required: true,\n value: securityContext.fsGroup!,\n customValidation:\n securityContext.fsGroup === \"\" ||\n parseInt(securityContext.fsGroup!) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n\n if (enabledCustomCertificates) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"serverKey\",\n required: false,\n value: kesServerCertificate?.encoded_key || \"\",\n },\n {\n fieldKey: \"serverCert\",\n required: false,\n value: kesServerCertificate?.encoded_cert || \"\",\n },\n {\n fieldKey: \"clientKey\",\n required: false,\n value: minioMTLSCertificate?.encoded_key || \"\",\n },\n {\n fieldKey: \"clientCert\",\n required: false,\n value: minioMTLSCertificate?.encoded_cert || \"\",\n },\n ];\n }\n\n if (encryptionType === \"vault\") {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"vault_endpoint\",\n required: true,\n value: vaultConfiguration?.endpoint,\n },\n {\n fieldKey: \"vault_id\",\n required: true,\n value: vaultConfiguration?.approle?.id,\n },\n {\n fieldKey: \"vault_secret\",\n required: true,\n value: vaultConfiguration?.approle?.secret,\n },\n {\n fieldKey: \"vault_ping\",\n required: false,\n value: vaultConfiguration?.status?.ping,\n customValidation: parseInt(vaultConfiguration?.status?.ping) < 0,\n customValidationMessage: \"Value needs to be 0 or greater\",\n },\n {\n fieldKey: \"vault_retry\",\n required: false,\n value: vaultConfiguration?.approle?.retry,\n customValidation: parseInt(vaultConfiguration?.approle?.retry) < 0,\n customValidationMessage: \"Value needs to be 0 or greater\",\n },\n ];\n }\n\n if (encryptionType === \"aws\") {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"aws_endpoint\",\n required: true,\n value: awsConfiguration?.secretsmanager?.endpoint,\n },\n {\n fieldKey: \"aws_region\",\n required: true,\n value: awsConfiguration?.secretsmanager?.region,\n },\n {\n fieldKey: \"aws_accessKey\",\n required: true,\n value: awsConfiguration?.secretsmanager?.credentials?.accesskey,\n },\n {\n fieldKey: \"aws_secretKey\",\n required: true,\n value: awsConfiguration?.secretsmanager?.credentials?.secretkey,\n },\n ];\n }\n\n if (encryptionType === \"gemalto\") {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"gemalto_endpoint\",\n required: true,\n value: gemaltoConfiguration?.keysecure?.endpoint,\n },\n {\n fieldKey: \"gemalto_token\",\n required: true,\n value: gemaltoConfiguration?.keysecure?.credentials?.token,\n },\n {\n fieldKey: \"gemalto_domain\",\n required: true,\n value: gemaltoConfiguration?.keysecure?.credentials?.domain,\n },\n {\n fieldKey: \"gemalto_retry\",\n required: false,\n value: gemaltoConfiguration?.keysecure?.credentials?.retry,\n customValidation:\n parseInt(gemaltoConfiguration?.keysecure?.credentials?.retry) < 0,\n customValidationMessage: \"Value needs to be 0 or greater\",\n },\n ];\n }\n\n if (encryptionType === \"azure\") {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"azure_endpoint\",\n required: true,\n value: azureConfiguration?.keyvault?.endpoint,\n },\n {\n fieldKey: \"azure_tenant_id\",\n required: true,\n value: azureConfiguration?.keyvault?.credentials?.tenant_id,\n },\n {\n fieldKey: \"azure_client_id\",\n required: true,\n value: azureConfiguration?.keyvault?.credentials?.client_id,\n },\n {\n fieldKey: \"azure_client_secret\",\n required: true,\n value: azureConfiguration?.keyvault?.credentials?.client_secret,\n },\n ];\n }\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n\n setIsFormValid(Object.keys(commonVal).length === 0);\n\n setValidationErrors(commonVal);\n }, [\n enabledCustomCertificates,\n encryptionEnabled,\n encryptionType,\n kesServerCertificate?.encoded_key,\n kesServerCertificate?.encoded_cert,\n minioMTLSCertificate?.encoded_key,\n minioMTLSCertificate?.encoded_cert,\n kmsMTLSCertificate?.encoded_key,\n kmsMTLSCertificate?.encoded_cert,\n kmsCACertificate?.encoded_key,\n kmsCACertificate?.encoded_cert,\n securityContext,\n vaultConfiguration,\n awsConfiguration,\n gemaltoConfiguration,\n azureConfiguration,\n gcpConfiguration,\n replicas,\n ]);\n\n const fetchEncryptionInfo = () => {\n if (!refreshEncryptionInfo && tenant?.namespace && tenant?.name) {\n setRefreshEncryptionInfo(true);\n api\n .invoke(\n \"GET\",\n `/api/v1/namespaces/${tenant?.namespace}/tenants/${tenant?.name}/encryption`,\n )\n .then((resp: ITenantEncryptionResponse) => {\n setEncryptionRawConfiguration(resp.raw);\n if (resp.policies) {\n setPolicies(resp.policies);\n }\n if (resp.vault) {\n setEncryptionType(\"vault\");\n setVaultConfiguration(resp.vault);\n } else if (resp.aws) {\n setEncryptionType(\"aws\");\n setAWSConfiguration(resp.aws);\n } else if (resp.gemalto) {\n setEncryptionType(\"gemalto\");\n setGemaltoConfiguration(resp.gemalto);\n } else if (resp.gcp) {\n setEncryptionType(\"gcp\");\n setGCPConfiguration(resp.gcp);\n } else if (resp.azure) {\n setEncryptionType(\"azure\");\n setAzureConfiguration(resp.azure);\n }\n\n setEncryptionEnabled(true);\n setImage(resp.image);\n setReplicas(resp.replicas);\n if (resp.securityContext) {\n setSecurityContext(resp.securityContext);\n }\n if (resp.server_tls || resp.minio_mtls || resp.kms_mtls) {\n setEnabledCustomCertificates(true);\n }\n if (resp.server_tls) {\n setKesServerTLSCertificateSecret(resp.server_tls);\n }\n if (resp.minio_mtls) {\n setMinioMTLSCertificateSecret(resp.minio_mtls);\n }\n if (resp.kms_mtls) {\n setKmsMTLSCertificateSecret(resp.kms_mtls.crt);\n setKMSCACertificateSecret(resp.kms_mtls.ca);\n }\n setRefreshEncryptionInfo(false);\n })\n .catch((err: ErrorResponseHandler) => {\n console.error(err);\n setRefreshEncryptionInfo(false);\n });\n }\n };\n\n useEffect(() => {\n fetchEncryptionInfo();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tenant]);\n\n const removeCertificate = (certificateInfo: ICertificateInfo) => {\n setCertificatesToBeRemoved([\n ...certificatesToBeRemoved,\n certificateInfo.name,\n ]);\n if (certificateInfo.name === kesServerTLSCertificateSecret?.name) {\n setKesServerTLSCertificateSecret(null);\n }\n if (certificateInfo.name === minioMTLSCertificateSecret?.name) {\n setMinioMTLSCertificateSecret(null);\n }\n if (certificateInfo.name === kmsMTLSCertificateSecret?.name) {\n setKmsMTLSCertificateSecret(null);\n }\n if (certificateInfo.name === kmsCACertificateSecret?.name) {\n setKMSCACertificateSecret(null);\n }\n };\n\n const updateEncryptionConfiguration = () => {\n if (encryptionEnabled) {\n let insertEncrypt = {};\n switch (encryptionType) {\n case \"gemalto\":\n insertEncrypt = {\n gemalto: {\n keysecure: {\n endpoint: gemaltoConfiguration?.keysecure?.endpoint || \"\",\n credentials: {\n token:\n gemaltoConfiguration?.keysecure?.credentials?.token || \"\",\n domain:\n gemaltoConfiguration?.keysecure?.credentials?.domain || \"\",\n retry: parseInt(\n gemaltoConfiguration?.keysecure?.credentials?.retry,\n ),\n },\n },\n },\n };\n break;\n case \"aws\":\n insertEncrypt = {\n aws: {\n secretsmanager: {\n endpoint: awsConfiguration?.secretsmanager?.endpoint || \"\",\n region: awsConfiguration?.secretsmanager?.region || \"\",\n kmskey: awsConfiguration?.secretsmanager?.kmskey || \"\",\n credentials: {\n accesskey:\n awsConfiguration?.secretsmanager?.credentials?.accesskey ||\n \"\",\n secretkey:\n awsConfiguration?.secretsmanager?.credentials?.secretkey ||\n \"\",\n token:\n awsConfiguration?.secretsmanager?.credentials?.token || \"\",\n },\n },\n },\n };\n break;\n case \"azure\":\n insertEncrypt = {\n azure: {\n keyvault: {\n endpoint: azureConfiguration?.keyvault?.endpoint || \"\",\n credentials: {\n tenant_id:\n azureConfiguration?.keyvault?.credentials?.tenant_id || \"\",\n client_id:\n azureConfiguration?.keyvault?.credentials?.client_id || \"\",\n client_secret:\n azureConfiguration?.keyvault?.credentials?.client_secret ||\n \"\",\n },\n },\n },\n };\n break;\n case \"gcp\":\n insertEncrypt = {\n gcp: {\n secretmanager: {\n project_id: gcpConfiguration?.secretmanager?.project_id || \"\",\n endpoint: gcpConfiguration?.secretmanager?.endpoint || \"\",\n credentials: {\n client_email:\n gcpConfiguration?.secretmanager?.credentials\n ?.client_email || \"\",\n client_id:\n gcpConfiguration?.secretmanager?.credentials?.client_id ||\n \"\",\n private_key_id:\n gcpConfiguration?.secretmanager?.credentials\n ?.private_key_id || \"\",\n private_key:\n gcpConfiguration?.secretmanager?.credentials?.private_key ||\n \"\",\n },\n },\n },\n };\n break;\n case \"vault\":\n insertEncrypt = {\n vault: {\n endpoint: vaultConfiguration?.endpoint || \"\",\n engine: vaultConfiguration?.engine || \"\",\n namespace: vaultConfiguration?.namespace || \"\",\n prefix: vaultConfiguration?.prefix || \"\",\n approle: {\n engine: vaultConfiguration?.approle?.engine || \"\",\n id: vaultConfiguration?.approle?.id || \"\",\n secret: vaultConfiguration?.approle?.secret || \"\",\n retry: parseInt(vaultConfiguration?.approle?.retry),\n },\n status: {\n ping: parseInt(vaultConfiguration?.status?.ping),\n },\n },\n };\n break;\n }\n\n let encryptionServerKeyPair: any = {};\n let encryptionClientKeyPair: any = {};\n let encryptionKMSCertificates: any = {};\n\n // MinIO -> KES (mTLS certificates)\n if (\n minioMTLSCertificate?.encoded_key &&\n minioMTLSCertificate?.encoded_cert\n ) {\n encryptionClientKeyPair = {\n minio_mtls: {\n key: minioMTLSCertificate?.encoded_key,\n crt: minioMTLSCertificate?.encoded_cert,\n },\n };\n }\n\n // KES server certificates\n if (\n kesServerCertificate?.encoded_key &&\n kesServerCertificate?.encoded_cert\n ) {\n encryptionServerKeyPair = {\n server_tls: {\n key: kesServerCertificate?.encoded_key,\n crt: kesServerCertificate?.encoded_cert,\n },\n };\n }\n\n // KES -> KMS (mTLS certificates)\n let kmsMTLSKeyPair = null;\n let kmsCAInsert = null;\n if (kmsMTLSCertificate?.encoded_key && kmsMTLSCertificate?.encoded_cert) {\n kmsMTLSKeyPair = {\n key: kmsMTLSCertificate?.encoded_key,\n crt: kmsMTLSCertificate?.encoded_cert,\n };\n }\n if (kmsCACertificate?.encoded_cert) {\n kmsCAInsert = {\n ca: kmsCACertificate?.encoded_cert,\n };\n }\n if (kmsMTLSKeyPair || kmsCAInsert) {\n encryptionKMSCertificates = {\n kms_mtls: {\n ...kmsMTLSKeyPair,\n ...kmsCAInsert,\n },\n };\n }\n\n const dataSend = {\n raw: editRawConfiguration ? encryptionRawConfiguration : \"\",\n secretsToBeDeleted: certificatesToBeRemoved || [],\n replicas: replicas,\n securityContext: securityContext,\n image: image,\n ...encryptionClientKeyPair,\n ...encryptionServerKeyPair,\n ...encryptionKMSCertificates,\n ...insertEncrypt,\n };\n if (!updatingEncryption) {\n setUpdatingEncryption(true);\n api\n .invoke(\n \"PUT\",\n `/api/v1/namespaces/${tenant?.namespace}/tenants/${tenant?.name}/encryption`,\n dataSend,\n )\n .then(() => {\n setConfirmOpen(false);\n setUpdatingEncryption(false);\n fetchEncryptionInfo();\n })\n .catch((err: ErrorResponseHandler) => {\n setUpdatingEncryption(false);\n dispatch(setErrorSnackMessage(err));\n });\n }\n } else {\n if (!updatingEncryption) {\n setUpdatingEncryption(true);\n api\n .invoke(\n \"DELETE\",\n `/api/v1/namespaces/${tenant?.namespace}/tenants/${tenant?.name}/encryption`,\n {},\n )\n .then(() => {\n setConfirmOpen(false);\n setUpdatingEncryption(false);\n fetchEncryptionInfo();\n })\n .catch((err: ErrorResponseHandler) => {\n setUpdatingEncryption(false);\n dispatch(setErrorSnackMessage(err));\n });\n }\n }\n };\n\n return (\n \n {confirmOpen && (\n setConfirmOpen(false)}\n onConfirm={updateEncryptionConfiguration}\n confirmationContent={\n \n {encryptionEnabled\n ? \"Data will be encrypted using and external KMS\"\n : \"Current encrypted information will not be accessible\"}\n {encryptionEnabled && (\n
\n \n \n The content of the KES config secret will be overwritten.\n \n
\n )}\n
\n }\n />\n )}\n \n \n Encryption\n \n \n {\n setEncryptionEnabled(!encryptionEnabled);\n }}\n description=\"\"\n />\n \n \n \n \n {encryptionEnabled && (\n \n \n , newValue: number) => {\n setEditRawConfiguration(newValue);\n }}\n indicatorColor=\"primary\"\n textColor=\"primary\"\n aria-label=\"cluster-tabs\"\n variant=\"scrollable\"\n scrollButtons=\"auto\"\n >\n \n \n \n \n\n {editRawConfiguration ? (\n \n \n {\n setEncryptionRawConfiguration(value);\n }}\n editorHeight={\"550px\"}\n />\n \n \n ) : (\n \n \n \n {\n setEncryptionType(e.target.value);\n }}\n selectorOptions={[\n { label: \"Vault\", value: \"vault\" },\n { label: \"AWS\", value: \"aws\" },\n { label: \"Gemalto\", value: \"gemalto\" },\n { label: \"GCP\", value: \"gcp\" },\n { label: \"Azure\", value: \"azure\" },\n ]}\n />\n \n\n {encryptionType === \"vault\" && (\n \n \n ) =>\n setVaultConfiguration({\n ...vaultConfiguration,\n endpoint: e.target.value,\n })\n }\n label=\"Endpoint\"\n tooltip=\"Endpoint is the Hashicorp Vault endpoint\"\n value={vaultConfiguration?.endpoint || \"\"}\n error={validationErrors[\"vault_ping\"] || \"\"}\n required\n />\n \n \n ) =>\n setVaultConfiguration({\n ...vaultConfiguration,\n engine: e.target.value,\n })\n }\n label=\"Engine\"\n tooltip=\"Engine is the Hashicorp Vault K/V engine path. If empty, defaults to 'kv'\"\n value={vaultConfiguration?.engine || \"\"}\n />\n \n \n ) =>\n setVaultConfiguration({\n ...vaultConfiguration,\n namespace: e.target.value,\n })\n }\n label=\"Namespace\"\n tooltip=\"Namespace is an optional Hashicorp Vault namespace. An empty namespace means no particular namespace is used.\"\n value={vaultConfiguration?.namespace || \"\"}\n />\n \n \n ) =>\n setVaultConfiguration({\n ...vaultConfiguration,\n prefix: e.target.value,\n })\n }\n label=\"Prefix\"\n tooltip=\"Prefix is an optional prefix / directory within the K/V engine. If empty, keys will be stored at the K/V engine top level\"\n value={vaultConfiguration?.prefix || \"\"}\n />\n \n \n App Role\n \n \n
\n \n App Role\n \n \n ,\n ) =>\n setVaultConfiguration({\n ...vaultConfiguration,\n approle: {\n ...vaultConfiguration?.approle,\n engine: e.target.value,\n },\n })\n }\n label=\"Engine\"\n tooltip=\"AppRoleEngine is the AppRole authentication engine path. If empty, defaults to 'approle'\"\n value={vaultConfiguration?.approle?.engine || \"\"}\n />\n \n \n ,\n ) =>\n setVaultConfiguration({\n ...vaultConfiguration,\n approle: {\n ...vaultConfiguration?.approle,\n id: e.target.value,\n },\n })\n }\n label=\"AppRole ID\"\n tooltip=\"AppRoleSecret is the AppRole access secret for authenticating to Hashicorp Vault via the AppRole method\"\n value={vaultConfiguration?.approle?.id || \"\"}\n required\n error={validationErrors[\"vault_id\"] || \"\"}\n overlayIcon={\n showVaultAppRoleID ? (\n \n ) : (\n \n )\n }\n overlayAction={() =>\n setShowVaultAppRoleID(!showVaultAppRoleID)\n }\n />\n \n \n ,\n ) =>\n setVaultConfiguration({\n ...vaultConfiguration,\n approle: {\n ...vaultConfiguration?.approle,\n secret: e.target.value,\n },\n })\n }\n label=\"AppRole Secret\"\n tooltip=\"AppRoleSecret is the AppRole access secret for authenticating to Hashicorp Vault via the AppRole method\"\n value={vaultConfiguration?.approle?.secret || \"\"}\n required\n error={validationErrors[\"vault_secret\"] || \"\"}\n overlayIcon={\n showVaultAppRoleSecret ? (\n \n ) : (\n \n )\n }\n overlayAction={() =>\n setShowVaultAppRoleSecret(!showVaultAppRoleSecret)\n }\n />\n \n \n ,\n ) =>\n setVaultConfiguration({\n ...vaultConfiguration,\n approle: {\n ...vaultConfiguration?.approle,\n retry: e.target.value,\n },\n })\n }\n label=\"Retry (Seconds)\"\n error={validationErrors[\"vault_retry\"] || \"\"}\n value={vaultConfiguration?.approle?.retry || \"\"}\n />\n \n
\n
\n \n
\n \n Status\n \n ) =>\n setVaultConfiguration({\n ...vaultConfiguration,\n status: {\n ...vaultConfiguration?.status,\n ping: e.target.value,\n },\n })\n }\n label=\"Ping (Seconds)\"\n tooltip=\"controls how often to Vault health status is checked. If not set, defaults to 10s\"\n error={validationErrors[\"vault_ping\"] || \"\"}\n value={vaultConfiguration?.status?.ping || \"\"}\n />\n
\n
\n \n )}\n {encryptionType === \"azure\" && (\n \n \n ) =>\n setAzureConfiguration({\n ...azureConfiguration,\n keyvault: {\n ...azureConfiguration?.keyvault,\n endpoint: e.target.value,\n },\n })\n }\n label=\"Endpoint\"\n tooltip=\"Endpoint is the Azure KeyVault endpoint\"\n error={validationErrors[\"azure_endpoint\"] || \"\"}\n value={azureConfiguration?.keyvault?.endpoint || \"\"}\n />\n \n \n
\n \n Credentials\n \n \n ,\n ) =>\n setAzureConfiguration({\n ...azureConfiguration,\n keyvault: {\n ...azureConfiguration?.keyvault,\n credentials: {\n ...azureConfiguration?.keyvault\n ?.credentials,\n tenant_id: e.target.value,\n },\n },\n })\n }\n label=\"Tenant ID\"\n tooltip=\"TenantID is the ID of the Azure KeyVault tenant\"\n value={\n azureConfiguration?.keyvault?.credentials\n ?.tenant_id || \"\"\n }\n error={validationErrors[\"azure_tenant_id\"] || \"\"}\n />\n \n \n ,\n ) =>\n setAzureConfiguration({\n ...azureConfiguration,\n keyvault: {\n ...azureConfiguration?.keyvault,\n credentials: {\n ...azureConfiguration?.keyvault\n ?.credentials,\n client_id: e.target.value,\n },\n },\n })\n }\n label=\"Client ID\"\n tooltip=\"ClientID is the ID of the client accessing Azure KeyVault\"\n value={\n azureConfiguration?.keyvault?.credentials\n ?.client_id || \"\"\n }\n error={validationErrors[\"azure_client_id\"] || \"\"}\n />\n \n \n ,\n ) =>\n setAzureConfiguration({\n ...azureConfiguration,\n keyvault: {\n ...azureConfiguration?.keyvault,\n credentials: {\n ...azureConfiguration?.keyvault\n ?.credentials,\n client_secret: e.target.value,\n },\n },\n })\n }\n label=\"Client Secret\"\n tooltip=\"ClientSecret is the client secret accessing the Azure KeyVault\"\n value={\n azureConfiguration?.keyvault?.credentials\n ?.client_secret || \"\"\n }\n error={\n validationErrors[\"azure_client_secret\"] || \"\"\n }\n />\n \n
\n
\n
\n )}\n {encryptionType === \"gcp\" && (\n \n \n ) =>\n setGCPConfiguration({\n ...gcpConfiguration,\n secretmanager: {\n ...gcpConfiguration?.secretmanager,\n project_id: e.target.value,\n },\n })\n }\n label=\"Project ID\"\n tooltip=\"ProjectID is the GCP project ID\"\n value={gcpConfiguration?.secretmanager.project_id || \"\"}\n />\n \n \n ) =>\n setGCPConfiguration({\n ...gcpConfiguration,\n secretmanager: {\n ...gcpConfiguration?.secretmanager,\n endpoint: e.target.value,\n },\n })\n }\n label=\"Endpoint\"\n tooltip=\"Endpoint is the GCP project ID. If empty defaults to: secretmanager.googleapis.com:443\"\n value={gcpConfiguration?.secretmanager.endpoint || \"\"}\n />\n \n \n
\n \n Credentials\n \n \n ,\n ) =>\n setGCPConfiguration({\n ...gcpConfiguration,\n secretmanager: {\n ...gcpConfiguration?.secretmanager,\n credentials: {\n ...gcpConfiguration?.secretmanager\n .credentials,\n client_email: e.target.value,\n },\n },\n })\n }\n label=\"Client Email\"\n tooltip=\"Is the Client email of the GCP service account used to access the SecretManager\"\n value={\n gcpConfiguration?.secretmanager.credentials\n ?.client_email || \"\"\n }\n />\n \n \n ,\n ) =>\n setGCPConfiguration({\n ...gcpConfiguration,\n secretmanager: {\n ...gcpConfiguration?.secretmanager,\n credentials: {\n ...gcpConfiguration?.secretmanager\n .credentials,\n client_id: e.target.value,\n },\n },\n })\n }\n label=\"Client ID\"\n tooltip=\"Is the Client ID of the GCP service account used to access the SecretManager\"\n value={\n gcpConfiguration?.secretmanager.credentials\n ?.client_id || \"\"\n }\n />\n \n \n ,\n ) =>\n setGCPConfiguration({\n ...gcpConfiguration,\n secretmanager: {\n ...gcpConfiguration?.secretmanager,\n credentials: {\n ...gcpConfiguration?.secretmanager\n .credentials,\n private_key_id: e.target.value,\n },\n },\n })\n }\n label=\"Private Key ID\"\n tooltip=\"Is the private key ID of the GCP service account used to access the SecretManager\"\n value={\n gcpConfiguration?.secretmanager.credentials\n ?.private_key_id || \"\"\n }\n />\n \n \n ,\n ) =>\n setGCPConfiguration({\n ...gcpConfiguration,\n secretmanager: {\n ...gcpConfiguration?.secretmanager,\n credentials: {\n ...gcpConfiguration?.secretmanager\n .credentials,\n private_key: e.target.value,\n },\n },\n })\n }\n label=\"Private Key\"\n tooltip=\"Is the private key of the GCP service account used to access the SecretManager\"\n value={\n gcpConfiguration?.secretmanager.credentials\n ?.private_key || \"\"\n }\n />\n \n
\n
\n
\n )}\n {encryptionType === \"aws\" && (\n \n \n ) =>\n setAWSConfiguration({\n ...awsConfiguration,\n secretsmanager: {\n ...awsConfiguration?.secretsmanager,\n endpoint: e.target.value,\n },\n })\n }\n label=\"Endpoint\"\n tooltip=\"Endpoint is the AWS SecretsManager endpoint. AWS SecretsManager endpoints have the following schema: secrestmanager[-fips]..amanzonaws.com\"\n value={awsConfiguration?.secretsmanager?.endpoint || \"\"}\n required\n error={validationErrors[\"aws_endpoint\"] || \"\"}\n />\n \n \n ) =>\n setAWSConfiguration({\n ...awsConfiguration,\n secretsmanager: {\n ...awsConfiguration?.secretsmanager,\n region: e.target.value,\n },\n })\n }\n label=\"Region\"\n tooltip=\"Region is the AWS region the SecretsManager is located\"\n value={awsConfiguration?.secretsmanager?.region || \"\"}\n error={validationErrors[\"aws_region\"] || \"\"}\n required\n />\n \n \n ) =>\n setAWSConfiguration({\n ...awsConfiguration,\n secretsmanager: {\n ...awsConfiguration?.secretsmanager,\n kmskey: e.target.value,\n },\n })\n }\n label=\"KMS Key\"\n tooltip=\"KMSKey is the AWS-KMS key ID (CMK-ID) used to en/decrypt secrets managed by the SecretsManager. If empty, the default AWS KMS key is used\"\n value={awsConfiguration?.secretsmanager?.kmskey || \"\"}\n />\n \n \n
\n \n Credentials\n \n \n ,\n ) =>\n setAWSConfiguration({\n ...awsConfiguration,\n secretsmanager: {\n ...awsConfiguration?.secretsmanager,\n credentials: {\n ...awsConfiguration?.secretsmanager\n ?.credentials,\n accesskey: e.target.value,\n },\n },\n })\n }\n label=\"Access Key\"\n tooltip=\"AccessKey is the access key for authenticating to AWS\"\n value={\n awsConfiguration?.secretsmanager?.credentials\n ?.accesskey || \"\"\n }\n error={validationErrors[\"aws_accessKey\"] || \"\"}\n required\n />\n \n \n ,\n ) =>\n setAWSConfiguration({\n ...awsConfiguration,\n secretsmanager: {\n ...awsConfiguration?.secretsmanager,\n credentials: {\n ...awsConfiguration?.secretsmanager\n ?.credentials,\n secretkey: e.target.value,\n },\n },\n })\n }\n label=\"Secret Key\"\n tooltip=\"SecretKey is the secret key for authenticating to AWS\"\n value={\n awsConfiguration?.secretsmanager?.credentials\n ?.secretkey || \"\"\n }\n error={validationErrors[\"aws_secretKey\"] || \"\"}\n required\n />\n \n \n ,\n ) =>\n setAWSConfiguration({\n ...awsConfiguration,\n secretsmanager: {\n ...awsConfiguration?.secretsmanager,\n credentials: {\n ...awsConfiguration?.secretsmanager\n ?.credentials,\n token: e.target.value,\n },\n },\n })\n }\n label=\"Token\"\n tooltip=\"SessionToken is an optional session token for authenticating to AWS when using STS\"\n value={\n awsConfiguration?.secretsmanager?.credentials\n ?.token || \"\"\n }\n />\n \n
\n
\n
\n )}\n {encryptionType === \"gemalto\" && (\n \n \n ) =>\n setGemaltoConfiguration({\n ...gemaltoConfiguration,\n keysecure: {\n ...gemaltoConfiguration?.keysecure,\n endpoint: e.target.value,\n },\n })\n }\n label=\"Endpoint\"\n tooltip=\"Endpoint is the endpoint to the KeySecure server\"\n value={gemaltoConfiguration?.keysecure?.endpoint || \"\"}\n error={validationErrors[\"gemalto_endpoint\"] || \"\"}\n required\n />\n \n \n
\n \n Credentials\n \n \n ,\n ) =>\n setGemaltoConfiguration({\n ...gemaltoConfiguration,\n keysecure: {\n ...gemaltoConfiguration?.keysecure,\n credentials: {\n ...gemaltoConfiguration?.keysecure\n ?.credentials,\n token: e.target.value,\n },\n },\n })\n }\n label=\"Token\"\n tooltip=\"Token is the refresh authentication token to access the KeySecure server\"\n value={\n gemaltoConfiguration?.keysecure?.credentials\n ?.token || \"\"\n }\n error={validationErrors[\"gemalto_token\"] || \"\"}\n required\n />\n \n \n ,\n ) =>\n setGemaltoConfiguration({\n ...gemaltoConfiguration,\n keysecure: {\n ...gemaltoConfiguration?.keysecure,\n credentials: {\n ...gemaltoConfiguration?.keysecure\n ?.credentials,\n domain: e.target.value,\n },\n },\n })\n }\n label=\"Domain\"\n tooltip=\"Domain is the isolated namespace within the KeySecure server. If empty, defaults to the top-level / root domain\"\n value={\n gemaltoConfiguration?.keysecure?.credentials\n ?.domain || \"\"\n }\n error={validationErrors[\"gemalto_domain\"] || \"\"}\n required\n />\n \n \n ,\n ) =>\n setGemaltoConfiguration({\n ...gemaltoConfiguration,\n keysecure: {\n ...gemaltoConfiguration?.keysecure,\n credentials: {\n ...gemaltoConfiguration?.keysecure\n ?.credentials,\n retry: e.target.value,\n },\n },\n })\n }\n label=\"Retry (seconds)\"\n value={\n gemaltoConfiguration?.keysecure?.credentials\n ?.retry || \"\"\n }\n error={validationErrors[\"gemalto_retry\"] || \"\"}\n />\n \n
\n \n
\n )}\n \n )}\n\n \n Additional Configuration for KES\n \n \n \n setEnabledCustomCertificates(!enabledCustomCertificates)\n }\n label={\"Custom Certificates\"}\n />\n \n {enabledCustomCertificates && (\n \n \n
\n \n Encryption server certificates\n \n {kesServerTLSCertificateSecret ? (\n \n removeCertificate(kesServerTLSCertificateSecret)\n }\n />\n ) : (\n \n {\n setKESServerCertificate({\n encoded_key: encodedValue || \"\",\n id: kesServerCertificate?.id || \"\",\n key: fileName || \"\",\n cert: kesServerCertificate?.cert || \"\",\n encoded_cert:\n kesServerCertificate?.encoded_cert || \"\",\n });\n cleanValidation(\"serverKey\");\n }}\n accept=\".key,.pem\"\n id=\"serverKey\"\n name=\"serverKey\"\n label=\"Key\"\n value={kesServerCertificate?.key}\n />\n {\n setKESServerCertificate({\n encoded_key:\n kesServerCertificate?.encoded_key || \"\",\n id: kesServerCertificate?.id || \"\",\n key: kesServerCertificate?.key || \"\",\n cert: fileName || \"\",\n encoded_cert: encodedValue || \"\",\n });\n cleanValidation(\"serverCert\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"serverCert\"\n name=\"serverCert\"\n label=\"Cert\"\n value={kesServerCertificate?.cert}\n />\n \n )}\n
\n
\n \n
\n \n MinIO mTLS certificates (connection between MinIO and the\n Encryption server)\n \n {minioMTLSCertificateSecret ? (\n \n removeCertificate(minioMTLSCertificateSecret)\n }\n />\n ) : (\n \n {\n setMinioMTLSCertificate({\n encoded_key: encodedValue || \"\",\n id: minioMTLSCertificate?.id || \"\",\n key: fileName || \"\",\n cert: minioMTLSCertificate?.cert || \"\",\n encoded_cert:\n minioMTLSCertificate?.encoded_cert || \"\",\n });\n cleanValidation(\"clientKey\");\n }}\n accept=\".key,.pem\"\n id=\"clientKey\"\n name=\"clientKey\"\n label=\"Key\"\n value={minioMTLSCertificate?.key}\n />\n {\n setMinioMTLSCertificate({\n encoded_key:\n minioMTLSCertificate?.encoded_key || \"\",\n id: minioMTLSCertificate?.id || \"\",\n key: minioMTLSCertificate?.key || \"\",\n cert: fileName || \"\",\n encoded_cert: encodedValue || \"\",\n });\n cleanValidation(\"clientCert\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"clientCert\"\n name=\"clientCert\"\n label=\"Cert\"\n value={minioMTLSCertificate?.cert}\n />\n \n )}\n
\n
\n \n
\n \n KMS mTLS certificates (connection between the Encryption\n server and the KMS)\n \n {kmsMTLSCertificateSecret ? (\n \n removeCertificate(kmsMTLSCertificateSecret)\n }\n />\n ) : (\n \n {\n setKmsMTLSCertificate({\n encoded_key: encodedValue || \"\",\n id: kmsMTLSCertificate?.id || \"\",\n key: fileName || \"\",\n cert: kmsMTLSCertificate?.cert || \"\",\n encoded_cert:\n kmsMTLSCertificate?.encoded_cert || \"\",\n });\n }}\n accept=\".key,.pem\"\n id=\"kms_mtls_key\"\n name=\"kms_mtls_key\"\n label=\"Key\"\n value={kmsMTLSCertificate?.key}\n />\n \n setKmsMTLSCertificate({\n encoded_key:\n kmsMTLSCertificate?.encoded_key || \"\",\n id: kmsMTLSCertificate?.id || \"\",\n key: kmsMTLSCertificate?.key || \"\",\n cert: fileName || \"\",\n encoded_cert: encodedValue || \"\",\n })\n }\n accept=\".cer,.crt,.cert,.pem\"\n id=\"kms_mtls_cert\"\n name=\"kms_mtls_cert\"\n label=\"Cert\"\n value={kmsMTLSCertificate?.cert || \"\"}\n />\n \n )}\n {kmsCACertificateSecret ? (\n \n removeCertificate(kmsCACertificateSecret)\n }\n />\n ) : (\n \n setKmsCACertificate({\n encoded_key: kmsCACertificate?.encoded_key || \"\",\n id: kmsCACertificate?.id || \"\",\n key: kmsCACertificate?.key || \"\",\n cert: fileName || \"\",\n encoded_cert: encodedValue || \"\",\n })\n }\n accept=\".cer,.crt,.cert,.pem\"\n id=\"kms_mtls_ca\"\n name=\"kms_mtls_ca\"\n label=\"CA\"\n value={kmsCACertificate?.cert || \"\"}\n />\n )}\n
\n
\n
\n )}\n \n ) =>\n setImage(e.target.value)\n }\n label=\"Image\"\n tooltip=\"KES container image\"\n placeholder=\"minio/kes:2023-10-03T00-48-37Z\"\n value={image}\n />\n \n \n ) =>\n setReplicas(e.target.value)\n }\n label=\"Replicas\"\n tooltip=\"Numer of KES pod replicas\"\n value={replicas}\n required\n error={validationErrors[\"replicas\"] || \"\"}\n />\n \n \n SecurityContext for KES\n \n \n \n \n ) => {\n setSecurityContext({\n ...securityContext,\n runAsUser: e.target.value,\n });\n }}\n label=\"Run As User\"\n value={securityContext.runAsUser}\n required\n error={\n validationErrors[\"kes_securityContext_runAsUser\"] || \"\"\n }\n min=\"0\"\n />\n \n \n ) => {\n setSecurityContext({\n ...securityContext,\n runAsGroup: e.target.value,\n });\n }}\n label=\"Run As Group\"\n value={securityContext.runAsGroup}\n required\n error={\n validationErrors[\"kes_securityContext_runAsGroup\"] || \"\"\n }\n min=\"0\"\n />\n \n \n ) => {\n setSecurityContext({\n ...securityContext,\n fsGroup: e.target.value,\n });\n }}\n label=\"FsGroup\"\n value={securityContext.fsGroup!}\n required\n error={\n validationErrors[\"kes_securityContext_fsGroup\"] || \"\"\n }\n min=\"0\"\n />\n \n \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n setSecurityContext({\n ...securityContext,\n runAsNonRoot: checked,\n });\n }}\n label={\"Do not run as Root\"}\n />\n \n \n )}\n \n setConfirmOpen(true)}\n label={\"Save\"}\n />\n \n \n
\n );\n};\n\nexport default withStyles(styles)(TenantEncryption);\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorBlock: {\n color: theme.palette?.error.main || \"#C83B51\",\n },\n });\n\ninterface IErrorBlockProps {\n classes: any;\n errorMessage: string;\n withBreak?: boolean;\n}\n\nconst ErrorBlock = ({\n classes,\n errorMessage,\n withBreak = true,\n}: IErrorBlockProps) => {\n return (\n \n {withBreak &&
}\n \n {errorMessage}\n \n
\n );\n};\n\nexport default withStyles(styles)(ErrorBlock);\n"],"names":["withStyles","theme","createStyles","fieldBasic","_ref","value","label","tooltip","mode","classes","onBeforeChange","readOnly","editorHeight","_jsxs","React","children","_jsx","Grid","item","xs","sx","marginBottom","InputLabel","className","inputLabel","tooltipContainer","Tooltip","title","placement","HelpIcon","style","maxHeight","overflow","border","CodeEditor","language","onChange","evn","target","id","padding","fontSize","backgroundColor","fontFamily","minHeight","color","background","borderTop","Box","display","alignItems","paddingRight","justifyContent","height","width","marginLeft","TooltipWrapper","CopyToClipboard","text","Button","type","icon","CopyIcon","variant","tooltipHelper","valueString","maxWidth","whiteSpace","textOverflow","marginTop","fileInputField","margin","flexFlow","fileInputStyles","fontWeight","textBoxContainer","paddingLeft","name","disabled","required","error","accept","showFileSelector","setShowSelector","useState","concat","fieldBottom","fieldContainer","errorInField","htmlFor","fieldLabelError","e","fileName","get","fileProcess","evt","callback","file","files","reader","FileReader","readAsDataURL","onload","fileBase64","result","fileArray","toString","split","length","data","IconButton","component","onClick","disableRipple","disableFocusRipple","size","CancelIcon","ErrorBlock","errorMessage","fileReselect","AttachFileIcon","styled","_templateObject","_taggedTemplateLiteral","certificateIcon","float","paddingTop","certificateInfo","certificateWrapper","userSelect","borderRadius","certificateExpiry","flexWrap","certificateDomains","certificatesList","textTransform","overflowY","certificatesListItem","borderBottom","minWidth","marginRight","opacity","certificateExpiring","certificateExpired","onDelete","certificates","domains","expiry","DateTime","fromISO","now","utc","daysToExpiry","daysToExpiryHuman","certificateExpiration","durationToExpiry","diff","as","minus","Duration","fromObject","days","shiftTo","toHuman","listStyle","maximumFractionDigits","minutes","Chip","Container","CertificateIcon","Typography","gutterBottom","EventBusyIcon","toFormat","AccessTimeIcon","Divider","List","map","dom","index","ListItem","ListItemAvatar","LanguageIcon","ListItemText","primary","PolicyItem","items","Fragment","gap","iTxt","_ref2","policies","fmtPolicies","arguments","undefined","Object","keys","polName","policyConfig","identities","paths","allow","deny","getPolicyData","withBorders","pConf","borderLeft","borderRight","tenantDetailsStyles","spacingUtils","containerForHeader","createTenantCommon","formFieldStyles","modalBasic","wizardCommon","warningBlock","_vaultConfiguration$a9","_vaultConfiguration$a10","_vaultConfiguration$a11","_vaultConfiguration$a12","_vaultConfiguration$s4","_azureConfiguration$k15","_azureConfiguration$k17","_azureConfiguration$k18","_azureConfiguration$k20","_azureConfiguration$k21","_azureConfiguration$k23","_azureConfiguration$k24","_gcpConfiguration$sec11","_gcpConfiguration$sec12","_gcpConfiguration$sec13","_gcpConfiguration$sec14","_awsConfiguration$sec16","_awsConfiguration$sec17","_awsConfiguration$sec18","_awsConfiguration$sec20","_awsConfiguration$sec21","_awsConfiguration$sec23","_awsConfiguration$sec24","_awsConfiguration$sec26","_awsConfiguration$sec27","_gemaltoConfiguration17","_gemaltoConfiguration19","_gemaltoConfiguration20","_gemaltoConfiguration22","_gemaltoConfiguration23","_gemaltoConfiguration25","_gemaltoConfiguration26","dispatch","useAppDispatch","tenant","useSelector","state","tenants","tenantInfo","editRawConfiguration","setEditRawConfiguration","encryptionRawConfiguration","setEncryptionRawConfiguration","encryptionEnabled","setEncryptionEnabled","encryptionType","setEncryptionType","replicas","setReplicas","image","setImage","refreshEncryptionInfo","setRefreshEncryptionInfo","securityContext","setSecurityContext","fsGroup","fsGroupChangePolicy","runAsGroup","runAsNonRoot","runAsUser","setPolicies","vaultConfiguration","setVaultConfiguration","awsConfiguration","setAWSConfiguration","gemaltoConfiguration","setGemaltoConfiguration","azureConfiguration","setAzureConfiguration","gcpConfiguration","setGCPConfiguration","enabledCustomCertificates","setEnabledCustomCertificates","updatingEncryption","setUpdatingEncryption","kesServerTLSCertificateSecret","setKesServerTLSCertificateSecret","minioMTLSCertificateSecret","setMinioMTLSCertificateSecret","minioMTLSCertificate","setMinioMTLSCertificate","certificatesToBeRemoved","setCertificatesToBeRemoved","showVaultAppRoleID","setShowVaultAppRoleID","isFormValid","setIsFormValid","showVaultAppRoleSecret","setShowVaultAppRoleSecret","kmsMTLSCertificateSecret","setKmsMTLSCertificateSecret","kmsCACertificateSecret","setKMSCACertificateSecret","kmsMTLSCertificate","setKmsMTLSCertificate","kesServerCertificate","setKESServerCertificate","kmsCACertificate","setKmsCACertificate","validationErrors","setValidationErrors","cleanValidation","fieldName","clearValidationError","confirmOpen","setConfirmOpen","useEffect","encryptionValidation","_vaultConfiguration$a","_vaultConfiguration$a2","_vaultConfiguration$s","_vaultConfiguration$s2","_vaultConfiguration$a3","_vaultConfiguration$a4","_awsConfiguration$sec","_awsConfiguration$sec2","_awsConfiguration$sec3","_awsConfiguration$sec4","_awsConfiguration$sec5","_awsConfiguration$sec6","_gemaltoConfiguration","_gemaltoConfiguration2","_gemaltoConfiguration3","_gemaltoConfiguration4","_gemaltoConfiguration5","_gemaltoConfiguration6","_gemaltoConfiguration7","_gemaltoConfiguration8","_gemaltoConfiguration9","_azureConfiguration$k","_azureConfiguration$k2","_azureConfiguration$k3","_azureConfiguration$k4","_azureConfiguration$k5","_azureConfiguration$k6","_azureConfiguration$k7","fieldKey","customValidation","parseInt","customValidationMessage","encoded_key","encoded_cert","endpoint","approle","secret","status","ping","retry","secretsmanager","region","credentials","accesskey","secretkey","keysecure","token","domain","keyvault","tenant_id","client_id","client_secret","commonVal","commonFormValidation","fetchEncryptionInfo","namespace","api","invoke","then","resp","raw","vault","aws","gemalto","gcp","azure","server_tls","minio_mtls","kms_mtls","crt","ca","catch","err","console","removeCertificate","ConfirmDialog","isOpen","confirmText","cancelText","onClose","onConfirm","updateEncryptionConfiguration","_gemaltoConfiguration10","_gemaltoConfiguration11","_gemaltoConfiguration12","_gemaltoConfiguration13","_gemaltoConfiguration14","_gemaltoConfiguration15","_gemaltoConfiguration16","_awsConfiguration$sec7","_awsConfiguration$sec8","_awsConfiguration$sec9","_awsConfiguration$sec10","_awsConfiguration$sec11","_awsConfiguration$sec12","_awsConfiguration$sec13","_awsConfiguration$sec14","_awsConfiguration$sec15","_azureConfiguration$k8","_azureConfiguration$k9","_azureConfiguration$k10","_azureConfiguration$k11","_azureConfiguration$k12","_azureConfiguration$k13","_azureConfiguration$k14","_gcpConfiguration$sec","_gcpConfiguration$sec2","_gcpConfiguration$sec3","_gcpConfiguration$sec4","_gcpConfiguration$sec5","_gcpConfiguration$sec6","_gcpConfiguration$sec7","_gcpConfiguration$sec8","_gcpConfiguration$sec9","_gcpConfiguration$sec10","_vaultConfiguration$a5","_vaultConfiguration$a6","_vaultConfiguration$a7","_vaultConfiguration$a8","_vaultConfiguration$s3","insertEncrypt","kmskey","secretmanager","project_id","client_email","private_key_id","private_key","engine","prefix","encryptionServerKeyPair","encryptionClientKeyPair","encryptionKMSCertificates","key","kmsMTLSKeyPair","kmsCAInsert","dataSend","secretsToBeDeleted","setErrorSnackMessage","confirmationContent","DialogContentText","WarnIcon","container","spacing","SectionTitle","textAlign","FormSwitchWrapper","indicatorLabels","checked","description","FormHr","Tabs","newValue","indicatorColor","textColor","scrollButtons","Tab","CodeMirrorWrapper","editor","KMSPolicyInfo","encryptionTypeOptions","RadioGroupSelector","currentSelection","selectorOptions","InputBoxWrapper","fieldGroup","descriptionText","formFieldRow","overlayIcon","VisibilityOffIcon","RemoveRedEyeIcon","overlayAction","min","_azureConfiguration$k16","_azureConfiguration$k19","_azureConfiguration$k22","_awsConfiguration$sec19","_awsConfiguration$sec22","_awsConfiguration$sec25","_gemaltoConfiguration18","_gemaltoConfiguration21","_gemaltoConfiguration24","TLSCertificate","FileSelector","encodedValue","cert","placeholder","multiContainer","responsiveContainer","rightSpacer","_theme$palette","errorBlock","palette","main","withBreak"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/379.56027397.chunk.js b/web-app/build/static/js/379.56027397.chunk.js deleted file mode 100644 index cc3781086e7..00000000000 --- a/web-app/build/static/js/379.56027397.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[379],{45902:function(e,n,s){var t=s(1413),l=(s(72791),s(36314)),o=s(80184);n.Z=function(e){var n=e.label,s=void 0===n?null:n,i=e.value,r=void 0===i?"-":i,a=e.orientation,u=void 0===a?"column":a,c=e.stkProps,d=void 0===c?{}:c,x=e.lblProps,v=void 0===x?{}:x,f=e.valProps,m=void 0===f?{}:f;return(0,o.jsxs)(l.Z,(0,t.Z)((0,t.Z)({direction:{xs:"column",sm:u}},d),{},{children:[(0,o.jsx)("label",(0,t.Z)((0,t.Z)({style:{marginRight:5,fontWeight:600}},v),{},{children:s})),(0,o.jsx)("label",(0,t.Z)((0,t.Z)({style:{marginRight:5,fontWeight:500}},m),{},{children:r}))]}))}},51379:function(e,n,s){s.r(n),s.d(n,{default:function(){return S}});var t=s(1413),l=s(72791),o=s(78687),i=s(57689),r=s(11135),a=s(25787),u=s(23814),c=s(61889),d=s(41320),x=s(29439),v=s(27391),f=s(63466),m=s(75952),j=s(3216),p=s(17238),h=s(27454),Z=s(72455),g=s(45248),y=s(80184),b=(0,Z.Z)((function(e){return(0,r.Z)((0,t.Z)((0,t.Z)((0,t.Z)((0,t.Z)({},u.oZ),u.OR),u.VX),u.Bz))})),C=function(e){var n=e.setPoolDetailsView,s=(0,d.TL)(),t=(0,i.s0)(),r=b(),a=(0,o.v9)((function(e){return e.tenants.loadingTenant})),u=(0,o.v9)((function(e){return e.tenants.tenantInfo})),Z=(0,l.useState)([]),C=(0,x.Z)(Z,2),A=C[0],P=C[1],N=(0,l.useState)(""),_=(0,x.Z)(N,2),F=_[0],k=_[1];(0,l.useEffect)((function(){if(u){var e=u.pools?u.pools:[];P(e)}}),[u]);var T=A.filter((function(e){var n;return!(null===(n=e.name)||void 0===n||!n.toLowerCase().includes(F.toLowerCase()))})),R=[{type:"view",onClick:function(e){s((0,p.Lm)(e.name)),n()}}];return(0,y.jsxs)(l.Fragment,{children:[(0,y.jsxs)(c.ZP,{item:!0,xs:12,className:r.actionsTray,children:[(0,y.jsx)(v.Z,{placeholder:"Filter",className:r.searchField,id:"search-resource",label:"",onChange:function(e){k(e.target.value)},InputProps:{disableUnderline:!0,startAdornment:(0,y.jsx)(f.Z,{position:"start",children:(0,y.jsx)(m.W1M,{})})},variant:"standard"}),(0,y.jsx)(h.Z,{tooltip:"Expand Tenant",children:(0,y.jsx)(m.zxk,{id:"expand-tenant",label:"Expand Tenant",onClick:function(){t("/namespaces/".concat((null===u||void 0===u?void 0:u.namespace)||"","/tenants/").concat((null===u||void 0===u?void 0:u.name)||"","/add-pool"))},icon:(0,y.jsx)(m.dtP,{}),variant:"callAction"})})]}),(0,y.jsx)(c.ZP,{item:!0,xs:12,className:r.tableBlock,children:(0,y.jsx)(j.Z,{itemActions:R,columns:[{label:"Name",elementKey:"name"},{label:"Total Capacity",elementKey:"capacity",renderFullObject:!0,renderFunction:function(e){return(0,g.l5)(e.volumes_per_server*e.servers*e.volume_configuration.size)}},{label:"Servers",elementKey:"servers"},{label:"Volumes/Server",elementKey:"volumes_per_server"}],isLoading:a,records:T,entityName:"Servers",idField:"name",customEmptyMessage:"No Pools found"})})]})},A=s(64554),P=s(45902),N=s(45987),_=s(36314),F=["children"],k=function(e){var n=e.children,s=void 0===n?null:n,l=(0,N.Z)(e,F);return(0,y.jsx)(_.Z,(0,t.Z)((0,t.Z)({direction:{xs:"column",sm:"row"},justifyContent:"space-between",margin:"5px 0 5px 0",spacing:{xs:1,sm:2,md:4}},l),{},{children:s}))},T={border:"#EAEAEA 1px solid",borderRadius:"3px",padding:"0px 20px",position:"relative"},R={display:"grid",gridTemplateColumns:{xs:"1fr",sm:"2fr 1fr"},gridAutoFlow:{xs:"dense",sm:"row"},gap:2,padding:"15px"},w=function(){var e,n,s,r,a,u,d,x,v,f,j,p=(0,i.s0)(),h=(0,o.v9)((function(e){return e.tenants.tenantInfo})),Z=(0,o.v9)((function(e){return e.tenants.selectedPool}));if(null===h)return(0,y.jsx)(l.Fragment,{});var b=(null===(e=h.pools)||void 0===e?void 0:e.find((function(e){return e.name===Z})))||null;if(null===b)return null;var C="None";b.affinity&&(C=b.affinity.nodeAffinity?"Node Selector":"Default (Pod Anti-Affinity)");var N=function(e){var n=e.title;return(0,y.jsx)(k,{sx:{borderBottom:"1px solid #eaeaea",margin:0,marginBottom:"20px"},children:(0,y.jsx)("h3",{children:n})})};return(0,y.jsx)(l.Fragment,{children:(0,y.jsxs)(c.ZP,{item:!0,xs:12,sx:(0,t.Z)({},T),children:[(0,y.jsx)("div",{style:{position:"absolute",right:20,top:18},children:(0,y.jsx)(m.zxk,{icon:(0,y.jsx)(m.Jpd,{}),onClick:function(){p("/namespaces/".concat((null===h||void 0===h?void 0:h.namespace)||"","/tenants/").concat((null===h||void 0===h?void 0:h.name)||"","/edit-pool"))},label:"Edit Pool",id:"editPool"})}),(0,y.jsx)(N,{title:"Pool Configuration"}),(0,y.jsxs)(A.Z,{sx:(0,t.Z)({},R),children:[(0,y.jsx)(P.Z,{label:"Pool Name",value:b.name}),(0,y.jsx)(P.Z,{label:"Total Volumes",value:b.volumes_per_server}),(0,y.jsx)(P.Z,{label:"Volumes per server",value:b.volumes_per_server}),(0,y.jsx)(P.Z,{label:"Capacity",value:(0,g.l5)(b.volumes_per_server*b.servers*b.volume_configuration.size)}),(0,y.jsx)(P.Z,{label:"Runtime Class Name",value:b.runtimeClassName})]}),(0,y.jsx)(N,{title:"Resources"}),(0,y.jsxs)(A.Z,{sx:(0,t.Z)({},R),children:[b.resources&&(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(P.Z,{label:"CPU",value:null===(n=b.resources)||void 0===n||null===(s=n.requests)||void 0===s?void 0:s.cpu}),(0,y.jsx)(P.Z,{label:"Memory",value:(0,g.l5)(null===(r=b.resources)||void 0===r||null===(a=r.requests)||void 0===a?void 0:a.memory)})]}),(0,y.jsx)(P.Z,{label:"Volume Size",value:(0,g.l5)(b.volume_configuration.size)}),(0,y.jsx)(P.Z,{label:"Storage Class Name",value:b.volume_configuration.storage_class_name})]}),b.securityContext&&(b.securityContext.runAsNonRoot||b.securityContext.runAsUser||b.securityContext.runAsGroup||b.securityContext.fsGroup)&&(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,{title:"Security Context"}),(0,y.jsxs)(A.Z,{children:[null!==b.securityContext.runAsNonRoot&&(0,y.jsx)(A.Z,{sx:(0,t.Z)({},R),children:(0,y.jsx)(P.Z,{label:"Run as Non Root",value:b.securityContext.runAsNonRoot?"Yes":"No"})}),(0,y.jsxs)(A.Z,{sx:(0,t.Z)((0,t.Z)({},R),{},{gridTemplateColumns:{xs:"1fr",sm:"2fr 1fr",md:"1fr 1fr 1fr"}}),children:[b.securityContext.runAsUser&&(0,y.jsx)(P.Z,{label:"Run as User",value:b.securityContext.runAsUser}),b.securityContext.runAsGroup&&(0,y.jsx)(P.Z,{label:"Run as Group",value:b.securityContext.runAsGroup}),b.securityContext.fsGroup&&(0,y.jsx)(P.Z,{label:"FsGroup",value:b.securityContext.fsGroup})]})]})]}),(0,y.jsx)(N,{title:"Affinity"}),(0,y.jsxs)(A.Z,{children:[(0,y.jsxs)(A.Z,{sx:(0,t.Z)({},R),children:[(0,y.jsx)(P.Z,{label:"Type",value:C}),null!==(u=b.affinity)&&void 0!==u&&u.nodeAffinity&&null!==(d=b.affinity)&&void 0!==d&&d.podAntiAffinity?(0,y.jsx)(P.Z,{label:"With Pod Anti affinity",value:"Yes"}):(0,y.jsx)("span",{})]}),(null===(x=b.affinity)||void 0===x?void 0:x.nodeAffinity)&&(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,{title:"Labels"}),(0,y.jsx)("ul",{children:null===(v=b.affinity)||void 0===v||null===(f=v.nodeAffinity)||void 0===f||null===(j=f.requiredDuringSchedulingIgnoredDuringExecution)||void 0===j?void 0:j.nodeSelectorTerms.map((function(e){var n;return null===(n=e.matchExpressions)||void 0===n?void 0:n.map((function(e){var n;return(0,y.jsxs)("li",{children:[e.key," - ",null===(n=e.values)||void 0===n?void 0:n.join(", ")]})}))}))})]})]}),b.tolerations&&b.tolerations.length>0&&(0,y.jsxs)(l.Fragment,{children:[(0,y.jsx)(N,{title:"Tolerations"}),(0,y.jsx)(A.Z,{children:(0,y.jsx)("ul",{children:b.tolerations.map((function(e){var n,s;return(0,y.jsx)("li",{children:"Equal"===e.operator?(0,y.jsxs)(l.Fragment,{children:["If ",(0,y.jsx)("strong",{children:e.key})," is equal to"," ",(0,y.jsx)("strong",{children:e.value})," then"," ",(0,y.jsx)("strong",{children:e.effect})," after"," ",(0,y.jsx)("strong",{children:(null===(n=e.tolerationSeconds)||void 0===n?void 0:n.seconds)||0})," ","seconds"]}):(0,y.jsxs)(l.Fragment,{children:["If ",(0,y.jsx)("strong",{children:e.key})," exists then"," ",(0,y.jsx)("strong",{children:e.effect})," after"," ",(0,y.jsx)("strong",{children:(null===(s=e.tolerationSeconds)||void 0===s?void 0:s.seconds)||0})," ","seconds"]})})}))})})]})]})})},S=(0,a.Z)((function(e){return(0,r.Z)((0,t.Z)((0,t.Z)((0,t.Z)((0,t.Z)({},u.oZ),u.OR),u.VX),u.Bz))}))((function(e){var n=e.classes,s=(0,d.TL)(),t=(0,i.s0)(),r=(0,i.TH)().pathname,a=void 0===r?"":r,u=(0,o.v9)((function(e){return e.tenants.selectedPool})),x=(0,o.v9)((function(e){return e.tenants.poolDetailsOpen}));return(0,y.jsxs)(l.Fragment,{children:[x&&(0,y.jsx)(c.ZP,{item:!0,xs:12,children:(0,y.jsx)(m.hbI,{label:"Pools list",onClick:function(){t(a),s((0,p.AH)(!1))}})}),(0,y.jsx)("h1",{className:n.sectionTitle,children:x?"Pool Details - ".concat(u||""):"Pools"}),(0,y.jsx)(c.ZP,{container:!0,children:x?(0,y.jsx)(w,{}):(0,y.jsx)(C,{setPoolDetailsView:function(){s((0,p.AH)(!0))}})})]})}))}}]); -//# sourceMappingURL=379.56027397.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/379.56027397.chunk.js.map b/web-app/build/static/js/379.56027397.chunk.js.map deleted file mode 100644 index 9a6b8517682..00000000000 --- a/web-app/build/static/js/379.56027397.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/379.56027397.chunk.js","mappings":"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","sources":["screens/Console/Common/UsageBarWrapper/LabelValuePair.tsx","screens/Console/Tenants/TenantDetails/Pools/Details/PoolsListing.tsx","screens/Console/Common/UsageBarWrapper/StackRow.tsx","screens/Console/Tenants/TenantDetails/Pools/Details/PoolDetails.tsx","screens/Console/Tenants/TenantDetails/PoolsSummary.tsx"],"sourcesContent":["import React from \"react\";\nimport { Stack } from \"@mui/material\";\n\ntype LabelValuePairProps = {\n label?: any;\n value?: any;\n orientation?: any;\n stkProps?: any;\n lblProps?: any;\n valProps?: any;\n};\n\nconst LabelValuePair = ({\n label = null,\n value = \"-\",\n orientation = \"column\",\n stkProps = {},\n lblProps = {},\n valProps = {},\n}: LabelValuePairProps) => {\n return (\n \n \n \n \n );\n};\n\nexport default LabelValuePair;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router-dom\";\nimport Grid from \"@mui/material/Grid\";\nimport { TextField } from \"@mui/material\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport { AddIcon, Button, SearchIcon } from \"mds\";\nimport TableWrapper from \"../../../../Common/TableWrapper/TableWrapper\";\nimport { Theme } from \"@mui/material/styles\";\nimport {\n actionsTray,\n containerForHeader,\n tableStyles,\n tenantDetailsStyles,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { setSelectedPool } from \"../../../tenantsSlice\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\nimport { Pool } from \"../../../../../../api/operatorApi\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { niceBytesInt } from \"../../../../../../common/utils\";\n\ninterface IPoolsSummary {\n setPoolDetailsView: () => void;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n ...actionsTray,\n ...tableStyles,\n ...containerForHeader,\n }),\n);\n\nconst PoolsListing = ({ setPoolDetailsView }: IPoolsSummary) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const classes = useStyles();\n\n const loadingTenant = useSelector(\n (state: AppState) => state.tenants.loadingTenant,\n );\n const tenant = useSelector((state: AppState) => state.tenants.tenantInfo);\n\n const [pools, setPools] = useState([]);\n const [filter, setFilter] = useState(\"\");\n\n useEffect(() => {\n if (tenant) {\n const resPools = !tenant.pools ? [] : tenant.pools;\n setPools(resPools);\n }\n }, [tenant]);\n\n const filteredPools = pools.filter((pool) => {\n if (pool.name?.toLowerCase().includes(filter.toLowerCase())) {\n return true;\n }\n\n return false;\n });\n\n const listActions = [\n {\n type: \"view\",\n onClick: (selectedValue: Pool) => {\n dispatch(setSelectedPool(selectedValue.name!));\n setPoolDetailsView();\n },\n },\n ];\n\n return (\n \n \n {\n setFilter(event.target.value);\n }}\n InputProps={{\n disableUnderline: true,\n startAdornment: (\n \n \n \n ),\n }}\n variant=\"standard\"\n />\n\n \n {\n navigate(\n `/namespaces/${tenant?.namespace || \"\"}/tenants/${\n tenant?.name || \"\"\n }/add-pool`,\n );\n }}\n icon={}\n variant={\"callAction\"}\n />\n \n \n \n \n niceBytesInt(\n x.volumes_per_server *\n x.servers *\n x.volume_configuration.size,\n ),\n },\n { label: \"Servers\", elementKey: \"servers\" },\n { label: \"Volumes/Server\", elementKey: \"volumes_per_server\" },\n ]}\n isLoading={loadingTenant}\n records={filteredPools}\n entityName=\"Servers\"\n idField=\"name\"\n customEmptyMessage=\"No Pools found\"\n />\n \n \n );\n};\n\nexport default PoolsListing;\n","import React from \"react\";\nimport { Stack } from \"@mui/material\";\n\nconst StackRow = ({\n children = null,\n ...restProps\n}: {\n children?: any;\n [x: string]: any;\n}) => {\n return (\n \n {children}\n \n );\n};\nexport default StackRow;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router-dom\";\nimport { AppState } from \"../../../../../../store\";\nimport { Box } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport LabelValuePair from \"../../../../Common/UsageBarWrapper/LabelValuePair\";\nimport { niceBytesInt } from \"../../../../../../common/utils\";\nimport StackRow from \"../../../../Common/UsageBarWrapper/StackRow\";\nimport { Button, EditTenantIcon } from \"mds\";\nimport { NodeSelectorTerm } from \"../../../../../../api/operatorApi\";\n\nconst stylingLayout = {\n border: \"#EAEAEA 1px solid\",\n borderRadius: \"3px\",\n padding: \"0px 20px\",\n position: \"relative\",\n};\n\nconst twoColCssGridLayoutConfig = {\n display: \"grid\",\n gridTemplateColumns: { xs: \"1fr\", sm: \"2fr 1fr\" },\n gridAutoFlow: { xs: \"dense\", sm: \"row\" },\n gap: 2,\n padding: \"15px\",\n};\n\nconst PoolDetails = () => {\n const navigate = useNavigate();\n\n const tenant = useSelector((state: AppState) => state.tenants.tenantInfo);\n const selectedPool = useSelector(\n (state: AppState) => state.tenants.selectedPool,\n );\n if (tenant === null) {\n return ;\n }\n\n const poolInformation =\n tenant.pools?.find((pool) => pool.name === selectedPool) || null;\n\n if (poolInformation === null) {\n return null;\n }\n\n let affinityType = \"None\";\n\n if (poolInformation.affinity) {\n if (poolInformation.affinity.nodeAffinity) {\n affinityType = \"Node Selector\";\n } else {\n affinityType = \"Default (Pod Anti-Affinity)\";\n }\n }\n\n const HeaderSection = ({ title }: { title: string }) => {\n return (\n \n

{title}

\n \n );\n };\n\n return (\n \n \n
\n }\n onClick={() => {\n navigate(\n `/namespaces/${tenant?.namespace || \"\"}/tenants/${\n tenant?.name || \"\"\n }/edit-pool`,\n );\n }}\n label={\"Edit Pool\"}\n id={\"editPool\"}\n />\n
\n \n \n \n \n \n \n \n \n \n \n {poolInformation.resources && (\n \n \n \n \n )}\n \n \n \n {poolInformation.securityContext &&\n (poolInformation.securityContext.runAsNonRoot ||\n poolInformation.securityContext.runAsUser ||\n poolInformation.securityContext.runAsGroup ||\n poolInformation.securityContext.fsGroup) && (\n \n \n \n {poolInformation.securityContext.runAsNonRoot !== null && (\n \n \n \n )}\n \n {poolInformation.securityContext.runAsUser && (\n \n )}\n {poolInformation.securityContext.runAsGroup && (\n \n )}\n {poolInformation.securityContext.fsGroup && (\n \n )}\n \n \n \n )}\n \n \n \n \n {poolInformation.affinity?.nodeAffinity &&\n poolInformation.affinity?.podAntiAffinity ? (\n \n ) : (\n \n )}\n \n {poolInformation.affinity?.nodeAffinity && (\n \n \n
    \n {poolInformation.affinity?.nodeAffinity?.requiredDuringSchedulingIgnoredDuringExecution?.nodeSelectorTerms.map(\n (term: NodeSelectorTerm) => {\n return term.matchExpressions?.map((trm) => {\n return (\n
  • \n {trm.key} - {trm.values?.join(\", \")}\n
  • \n );\n });\n },\n )}\n
\n
\n )}\n
\n {poolInformation.tolerations &&\n poolInformation.tolerations.length > 0 && (\n \n \n \n
    \n {poolInformation.tolerations.map((tolItem) => {\n return (\n
  • \n {tolItem.operator === \"Equal\" ? (\n \n If {tolItem.key} is equal to{\" \"}\n {tolItem.value} then{\" \"}\n {tolItem.effect} after{\" \"}\n \n {tolItem.tolerationSeconds?.seconds || 0}\n {\" \"}\n seconds\n \n ) : (\n \n If {tolItem.key} exists then{\" \"}\n {tolItem.effect} after{\" \"}\n \n {tolItem.tolerationSeconds?.seconds || 0}\n {\" \"}\n seconds\n \n )}\n
  • \n );\n })}\n
\n
\n
\n )}\n
\n
\n );\n};\n\nexport default PoolDetails;\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n actionsTray,\n containerForHeader,\n tableStyles,\n tenantDetailsStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport Grid from \"@mui/material/Grid\";\n\nimport { AppState, useAppDispatch } from \"../../../../store\";\n\nimport PoolsListing from \"./Pools/Details/PoolsListing\";\nimport PoolDetails from \"./Pools/Details/PoolDetails\";\n\nimport { setOpenPoolDetails } from \"../tenantsSlice\";\nimport { BackLink } from \"mds\";\n\ninterface IPoolsSummary {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n ...actionsTray,\n ...tableStyles,\n ...containerForHeader,\n });\n\nconst PoolsSummary = ({ classes }: IPoolsSummary) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const { pathname = \"\" } = useLocation();\n\n const selectedPool = useSelector(\n (state: AppState) => state.tenants.selectedPool,\n );\n const poolDetailsOpen = useSelector(\n (state: AppState) => state.tenants.poolDetailsOpen,\n );\n\n return (\n \n {poolDetailsOpen && (\n \n {\n navigate(pathname);\n dispatch(setOpenPoolDetails(false));\n }}\n />\n \n )}\n

\n {poolDetailsOpen ? `Pool Details - ${selectedPool || \"\"}` : \"Pools\"}\n

\n \n {poolDetailsOpen ? (\n \n ) : (\n {\n dispatch(setOpenPoolDetails(true));\n }}\n />\n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(PoolsSummary);\n"],"names":["_ref","_ref$label","label","_ref$value","value","_ref$orientation","orientation","_ref$stkProps","stkProps","_ref$lblProps","lblProps","_ref$valProps","valProps","_jsxs","Stack","_objectSpread","direction","xs","sm","children","_jsx","style","marginRight","fontWeight","useStyles","makeStyles","theme","createStyles","tenantDetailsStyles","actionsTray","tableStyles","containerForHeader","setPoolDetailsView","dispatch","useAppDispatch","navigate","useNavigate","classes","loadingTenant","useSelector","state","tenants","tenant","tenantInfo","_useState","useState","_useState2","_slicedToArray","pools","setPools","_useState3","_useState4","filter","setFilter","useEffect","resPools","filteredPools","pool","_pool$name","name","toLowerCase","includes","listActions","type","onClick","selectedValue","setSelectedPool","Fragment","Grid","item","className","TextField","placeholder","searchField","id","onChange","event","target","InputProps","disableUnderline","startAdornment","InputAdornment","position","SearchIcon","variant","TooltipWrapper","tooltip","Button","concat","namespace","icon","AddIcon","tableBlock","TableWrapper","itemActions","columns","elementKey","renderFullObject","renderFunction","x","niceBytesInt","volumes_per_server","servers","volume_configuration","size","isLoading","records","entityName","idField","customEmptyMessage","_ref$children","restProps","_objectWithoutProperties","_excluded","justifyContent","margin","spacing","md","stylingLayout","border","borderRadius","padding","twoColCssGridLayoutConfig","display","gridTemplateColumns","gridAutoFlow","gap","_tenant$pools","_poolInformation$reso","_poolInformation$reso2","_poolInformation$reso3","_poolInformation$reso4","_poolInformation$affi","_poolInformation$affi2","_poolInformation$affi3","_poolInformation$affi4","_poolInformation$affi5","_poolInformation$affi6","selectedPool","poolInformation","find","affinityType","affinity","nodeAffinity","HeaderSection","title","StackRow","sx","borderBottom","marginBottom","right","top","EditTenantIcon","Box","LabelValuePair","runtimeClassName","resources","requests","cpu","memory","storage_class_name","securityContext","runAsNonRoot","runAsUser","runAsGroup","fsGroup","podAntiAffinity","requiredDuringSchedulingIgnoredDuringExecution","nodeSelectorTerms","map","term","_term$matchExpression","matchExpressions","trm","_trm$values","key","values","join","tolerations","length","tolItem","_tolItem$tolerationSe","_tolItem$tolerationSe2","operator","effect","tolerationSeconds","seconds","withStyles","_useLocation$pathname","useLocation","pathname","poolDetailsOpen","BackLink","setOpenPoolDetails","sectionTitle","container","PoolDetails","PoolsListing"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/379.568a6c2b.chunk.js b/web-app/build/static/js/379.568a6c2b.chunk.js new file mode 100644 index 00000000000..e7ffdf79fb5 --- /dev/null +++ b/web-app/build/static/js/379.568a6c2b.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[379],{45902:(e,s,n)=>{n.d(s,{Z:()=>o});n(72791);var l=n(36314),t=n(80184);const o=e=>{let{label:s=null,value:n="-",orientation:o="column",stkProps:r={},lblProps:i={},valProps:a={}}=e;return(0,t.jsxs)(l.Z,{direction:{xs:"column",sm:o},...r,children:[(0,t.jsx)("label",{style:{marginRight:5,fontWeight:600},...i,children:s}),(0,t.jsx)("label",{style:{marginRight:5,fontWeight:500},...a,children:n})]})}},51379:(e,s,n)=>{n.r(s),n.d(s,{default:()=>k});var l=n(72791),t=n(78687),o=n(57689),r=n(11135),i=n(25787),a=n(23814),u=n(61889),d=n(41320),c=n(27391),x=n(63466),m=n(75952),v=n(3216),j=n(17238),p=n(27454),f=n(72455),h=n(45248),g=n(80184);const y=(0,f.Z)((e=>(0,r.Z)({...a.oZ,...a.OR,...a.VX,...a.Bz}))),b=e=>{let{setPoolDetailsView:s}=e;const n=(0,d.TL)(),r=(0,o.s0)(),i=y(),a=(0,t.v9)((e=>e.tenants.loadingTenant)),f=(0,t.v9)((e=>e.tenants.tenantInfo)),[b,Z]=(0,l.useState)([]),[C,A]=(0,l.useState)("");(0,l.useEffect)((()=>{if(f){const e=f.pools?f.pools:[];Z(e)}}),[f]);const P=b.filter((e=>{var s;return!(null===(s=e.name)||void 0===s||!s.toLowerCase().includes(C.toLowerCase()))})),N=[{type:"view",onClick:e=>{n((0,j.Lm)(e.name)),s()}}];return(0,g.jsxs)(l.Fragment,{children:[(0,g.jsxs)(u.ZP,{item:!0,xs:12,className:i.actionsTray,children:[(0,g.jsx)(c.Z,{placeholder:"Filter",className:i.searchField,id:"search-resource",label:"",onChange:e=>{A(e.target.value)},InputProps:{disableUnderline:!0,startAdornment:(0,g.jsx)(x.Z,{position:"start",children:(0,g.jsx)(m.W1M,{})})},variant:"standard"}),(0,g.jsx)(p.Z,{tooltip:"Expand Tenant",children:(0,g.jsx)(m.zxk,{id:"expand-tenant",label:"Expand Tenant",onClick:()=>{r("/namespaces/".concat((null===f||void 0===f?void 0:f.namespace)||"","/tenants/").concat((null===f||void 0===f?void 0:f.name)||"","/add-pool"))},icon:(0,g.jsx)(m.dtP,{}),variant:"callAction"})})]}),(0,g.jsx)(u.ZP,{item:!0,xs:12,className:i.tableBlock,children:(0,g.jsx)(v.Z,{itemActions:N,columns:[{label:"Name",elementKey:"name"},{label:"Total Capacity",elementKey:"capacity",renderFullObject:!0,renderFunction:e=>(0,h.l5)(e.volumes_per_server*e.servers*e.volume_configuration.size)},{label:"Servers",elementKey:"servers"},{label:"Volumes/Server",elementKey:"volumes_per_server"}],isLoading:a,records:P,entityName:"Servers",idField:"name",customEmptyMessage:"No Pools found"})})]})};var Z=n(64554),C=n(45902),A=n(36314);const P=e=>{let{children:s=null,...n}=e;return(0,g.jsx)(A.Z,{direction:{xs:"column",sm:"row"},justifyContent:"space-between",margin:"5px 0 5px 0",spacing:{xs:1,sm:2,md:4},...n,children:s})},N={border:"#EAEAEA 1px solid",borderRadius:"3px",padding:"0px 20px",position:"relative"},_={display:"grid",gridTemplateColumns:{xs:"1fr",sm:"2fr 1fr"},gridAutoFlow:{xs:"dense",sm:"row"},gap:2,padding:"15px"},F=()=>{var e,s,n,r,i,a,d,c,x,v,j;const p=(0,o.s0)(),f=(0,t.v9)((e=>e.tenants.tenantInfo)),y=(0,t.v9)((e=>e.tenants.selectedPool));if(null===f)return(0,g.jsx)(l.Fragment,{});const b=(null===(e=f.pools)||void 0===e?void 0:e.find((e=>e.name===y)))||null;if(null===b)return null;let A="None";b.affinity&&(A=b.affinity.nodeAffinity?"Node Selector":"Default (Pod Anti-Affinity)");const F=e=>{let{title:s}=e;return(0,g.jsx)(P,{sx:{borderBottom:"1px solid #eaeaea",margin:0,marginBottom:"20px"},children:(0,g.jsx)("h3",{children:s})})};return(0,g.jsx)(l.Fragment,{children:(0,g.jsxs)(u.ZP,{item:!0,xs:12,sx:{...N},children:[(0,g.jsx)("div",{style:{position:"absolute",right:20,top:18},children:(0,g.jsx)(m.zxk,{icon:(0,g.jsx)(m.Jpd,{}),onClick:()=>{p("/namespaces/".concat((null===f||void 0===f?void 0:f.namespace)||"","/tenants/").concat((null===f||void 0===f?void 0:f.name)||"","/edit-pool"))},label:"Edit Pool",id:"editPool"})}),(0,g.jsx)(F,{title:"Pool Configuration"}),(0,g.jsxs)(Z.Z,{sx:{..._},children:[(0,g.jsx)(C.Z,{label:"Pool Name",value:b.name}),(0,g.jsx)(C.Z,{label:"Total Volumes",value:b.volumes_per_server}),(0,g.jsx)(C.Z,{label:"Volumes per server",value:b.volumes_per_server}),(0,g.jsx)(C.Z,{label:"Capacity",value:(0,h.l5)(b.volumes_per_server*b.servers*b.volume_configuration.size)}),(0,g.jsx)(C.Z,{label:"Runtime Class Name",value:b.runtimeClassName})]}),(0,g.jsx)(F,{title:"Resources"}),(0,g.jsxs)(Z.Z,{sx:{..._},children:[b.resources&&(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(C.Z,{label:"CPU",value:null===(s=b.resources)||void 0===s||null===(n=s.requests)||void 0===n?void 0:n.cpu}),(0,g.jsx)(C.Z,{label:"Memory",value:(0,h.l5)(null===(r=b.resources)||void 0===r||null===(i=r.requests)||void 0===i?void 0:i.memory)})]}),(0,g.jsx)(C.Z,{label:"Volume Size",value:(0,h.l5)(b.volume_configuration.size)}),(0,g.jsx)(C.Z,{label:"Storage Class Name",value:b.volume_configuration.storage_class_name})]}),b.securityContext&&(b.securityContext.runAsNonRoot||b.securityContext.runAsUser||b.securityContext.runAsGroup||b.securityContext.fsGroup)&&(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(F,{title:"Security Context"}),(0,g.jsxs)(Z.Z,{children:[null!==b.securityContext.runAsNonRoot&&(0,g.jsx)(Z.Z,{sx:{..._},children:(0,g.jsx)(C.Z,{label:"Run as Non Root",value:b.securityContext.runAsNonRoot?"Yes":"No"})}),(0,g.jsxs)(Z.Z,{sx:{..._,gridTemplateColumns:{xs:"1fr",sm:"2fr 1fr",md:"1fr 1fr 1fr"}},children:[b.securityContext.runAsUser&&(0,g.jsx)(C.Z,{label:"Run as User",value:b.securityContext.runAsUser}),b.securityContext.runAsGroup&&(0,g.jsx)(C.Z,{label:"Run as Group",value:b.securityContext.runAsGroup}),b.securityContext.fsGroup&&(0,g.jsx)(C.Z,{label:"FsGroup",value:b.securityContext.fsGroup})]})]})]}),(0,g.jsx)(F,{title:"Affinity"}),(0,g.jsxs)(Z.Z,{children:[(0,g.jsxs)(Z.Z,{sx:{..._},children:[(0,g.jsx)(C.Z,{label:"Type",value:A}),null!==(a=b.affinity)&&void 0!==a&&a.nodeAffinity&&null!==(d=b.affinity)&&void 0!==d&&d.podAntiAffinity?(0,g.jsx)(C.Z,{label:"With Pod Anti affinity",value:"Yes"}):(0,g.jsx)("span",{})]}),(null===(c=b.affinity)||void 0===c?void 0:c.nodeAffinity)&&(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(F,{title:"Labels"}),(0,g.jsx)("ul",{children:null===(x=b.affinity)||void 0===x||null===(v=x.nodeAffinity)||void 0===v||null===(j=v.requiredDuringSchedulingIgnoredDuringExecution)||void 0===j?void 0:j.nodeSelectorTerms.map((e=>{var s;return null===(s=e.matchExpressions)||void 0===s?void 0:s.map((e=>{var s;return(0,g.jsxs)("li",{children:[e.key," - ",null===(s=e.values)||void 0===s?void 0:s.join(", ")]})}))}))})]})]}),b.tolerations&&b.tolerations.length>0&&(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(F,{title:"Tolerations"}),(0,g.jsx)(Z.Z,{children:(0,g.jsx)("ul",{children:b.tolerations.map((e=>{var s,n;return(0,g.jsx)("li",{children:"Equal"===e.operator?(0,g.jsxs)(l.Fragment,{children:["If ",(0,g.jsx)("strong",{children:e.key})," is equal to"," ",(0,g.jsx)("strong",{children:e.value})," then"," ",(0,g.jsx)("strong",{children:e.effect})," after"," ",(0,g.jsx)("strong",{children:(null===(s=e.tolerationSeconds)||void 0===s?void 0:s.seconds)||0})," ","seconds"]}):(0,g.jsxs)(l.Fragment,{children:["If ",(0,g.jsx)("strong",{children:e.key})," exists then"," ",(0,g.jsx)("strong",{children:e.effect})," after"," ",(0,g.jsx)("strong",{children:(null===(n=e.tolerationSeconds)||void 0===n?void 0:n.seconds)||0})," ","seconds"]})})}))})})]})]})})},k=(0,i.Z)((e=>(0,r.Z)({...a.oZ,...a.OR,...a.VX,...a.Bz})))((e=>{let{classes:s}=e;const n=(0,d.TL)(),r=(0,o.s0)(),{pathname:i=""}=(0,o.TH)(),a=(0,t.v9)((e=>e.tenants.selectedPool)),c=(0,t.v9)((e=>e.tenants.poolDetailsOpen));return(0,g.jsxs)(l.Fragment,{children:[c&&(0,g.jsx)(u.ZP,{item:!0,xs:12,children:(0,g.jsx)(m.hbI,{label:"Pools list",onClick:()=>{r(i),n((0,j.AH)(!1))}})}),(0,g.jsx)("h1",{className:s.sectionTitle,children:c?"Pool Details - ".concat(a||""):"Pools"}),(0,g.jsx)(u.ZP,{container:!0,children:c?(0,g.jsx)(F,{}):(0,g.jsx)(b,{setPoolDetailsView:()=>{n((0,j.AH)(!0))}})})]})}))}}]); +//# sourceMappingURL=379.568a6c2b.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/379.568a6c2b.chunk.js.map b/web-app/build/static/js/379.568a6c2b.chunk.js.map new file mode 100644 index 00000000000..02d2940e8fb --- /dev/null +++ b/web-app/build/static/js/379.568a6c2b.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/379.568a6c2b.chunk.js","mappings":"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","sources":["screens/Console/Common/UsageBarWrapper/LabelValuePair.tsx","screens/Console/Tenants/TenantDetails/Pools/Details/PoolsListing.tsx","screens/Console/Common/UsageBarWrapper/StackRow.tsx","screens/Console/Tenants/TenantDetails/Pools/Details/PoolDetails.tsx","screens/Console/Tenants/TenantDetails/PoolsSummary.tsx"],"sourcesContent":["import React from \"react\";\nimport { Stack } from \"@mui/material\";\n\ntype LabelValuePairProps = {\n label?: any;\n value?: any;\n orientation?: any;\n stkProps?: any;\n lblProps?: any;\n valProps?: any;\n};\n\nconst LabelValuePair = ({\n label = null,\n value = \"-\",\n orientation = \"column\",\n stkProps = {},\n lblProps = {},\n valProps = {},\n}: LabelValuePairProps) => {\n return (\n \n \n \n \n );\n};\n\nexport default LabelValuePair;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router-dom\";\nimport Grid from \"@mui/material/Grid\";\nimport { TextField } from \"@mui/material\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport { AddIcon, Button, SearchIcon } from \"mds\";\nimport TableWrapper from \"../../../../Common/TableWrapper/TableWrapper\";\nimport { Theme } from \"@mui/material/styles\";\nimport {\n actionsTray,\n containerForHeader,\n tableStyles,\n tenantDetailsStyles,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { setSelectedPool } from \"../../../tenantsSlice\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\nimport { Pool } from \"../../../../../../api/operatorApi\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { niceBytesInt } from \"../../../../../../common/utils\";\n\ninterface IPoolsSummary {\n setPoolDetailsView: () => void;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n ...actionsTray,\n ...tableStyles,\n ...containerForHeader,\n }),\n);\n\nconst PoolsListing = ({ setPoolDetailsView }: IPoolsSummary) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const classes = useStyles();\n\n const loadingTenant = useSelector(\n (state: AppState) => state.tenants.loadingTenant,\n );\n const tenant = useSelector((state: AppState) => state.tenants.tenantInfo);\n\n const [pools, setPools] = useState([]);\n const [filter, setFilter] = useState(\"\");\n\n useEffect(() => {\n if (tenant) {\n const resPools = !tenant.pools ? [] : tenant.pools;\n setPools(resPools);\n }\n }, [tenant]);\n\n const filteredPools = pools.filter((pool) => {\n if (pool.name?.toLowerCase().includes(filter.toLowerCase())) {\n return true;\n }\n\n return false;\n });\n\n const listActions = [\n {\n type: \"view\",\n onClick: (selectedValue: Pool) => {\n dispatch(setSelectedPool(selectedValue.name!));\n setPoolDetailsView();\n },\n },\n ];\n\n return (\n \n \n {\n setFilter(event.target.value);\n }}\n InputProps={{\n disableUnderline: true,\n startAdornment: (\n \n \n \n ),\n }}\n variant=\"standard\"\n />\n\n \n {\n navigate(\n `/namespaces/${tenant?.namespace || \"\"}/tenants/${\n tenant?.name || \"\"\n }/add-pool`,\n );\n }}\n icon={}\n variant={\"callAction\"}\n />\n \n \n \n \n niceBytesInt(\n x.volumes_per_server *\n x.servers *\n x.volume_configuration.size,\n ),\n },\n { label: \"Servers\", elementKey: \"servers\" },\n { label: \"Volumes/Server\", elementKey: \"volumes_per_server\" },\n ]}\n isLoading={loadingTenant}\n records={filteredPools}\n entityName=\"Servers\"\n idField=\"name\"\n customEmptyMessage=\"No Pools found\"\n />\n \n \n );\n};\n\nexport default PoolsListing;\n","import React from \"react\";\nimport { Stack } from \"@mui/material\";\n\nconst StackRow = ({\n children = null,\n ...restProps\n}: {\n children?: any;\n [x: string]: any;\n}) => {\n return (\n \n {children}\n \n );\n};\nexport default StackRow;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router-dom\";\nimport { AppState } from \"../../../../../../store\";\nimport { Box } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport LabelValuePair from \"../../../../Common/UsageBarWrapper/LabelValuePair\";\nimport { niceBytesInt } from \"../../../../../../common/utils\";\nimport StackRow from \"../../../../Common/UsageBarWrapper/StackRow\";\nimport { Button, EditTenantIcon } from \"mds\";\nimport { NodeSelectorTerm } from \"../../../../../../api/operatorApi\";\n\nconst stylingLayout = {\n border: \"#EAEAEA 1px solid\",\n borderRadius: \"3px\",\n padding: \"0px 20px\",\n position: \"relative\",\n};\n\nconst twoColCssGridLayoutConfig = {\n display: \"grid\",\n gridTemplateColumns: { xs: \"1fr\", sm: \"2fr 1fr\" },\n gridAutoFlow: { xs: \"dense\", sm: \"row\" },\n gap: 2,\n padding: \"15px\",\n};\n\nconst PoolDetails = () => {\n const navigate = useNavigate();\n\n const tenant = useSelector((state: AppState) => state.tenants.tenantInfo);\n const selectedPool = useSelector(\n (state: AppState) => state.tenants.selectedPool,\n );\n if (tenant === null) {\n return ;\n }\n\n const poolInformation =\n tenant.pools?.find((pool) => pool.name === selectedPool) || null;\n\n if (poolInformation === null) {\n return null;\n }\n\n let affinityType = \"None\";\n\n if (poolInformation.affinity) {\n if (poolInformation.affinity.nodeAffinity) {\n affinityType = \"Node Selector\";\n } else {\n affinityType = \"Default (Pod Anti-Affinity)\";\n }\n }\n\n const HeaderSection = ({ title }: { title: string }) => {\n return (\n \n

{title}

\n \n );\n };\n\n return (\n \n \n
\n }\n onClick={() => {\n navigate(\n `/namespaces/${tenant?.namespace || \"\"}/tenants/${\n tenant?.name || \"\"\n }/edit-pool`,\n );\n }}\n label={\"Edit Pool\"}\n id={\"editPool\"}\n />\n
\n \n \n \n \n \n \n \n \n \n \n {poolInformation.resources && (\n \n \n \n \n )}\n \n \n \n {poolInformation.securityContext &&\n (poolInformation.securityContext.runAsNonRoot ||\n poolInformation.securityContext.runAsUser ||\n poolInformation.securityContext.runAsGroup ||\n poolInformation.securityContext.fsGroup) && (\n \n \n \n {poolInformation.securityContext.runAsNonRoot !== null && (\n \n \n \n )}\n \n {poolInformation.securityContext.runAsUser && (\n \n )}\n {poolInformation.securityContext.runAsGroup && (\n \n )}\n {poolInformation.securityContext.fsGroup && (\n \n )}\n \n \n \n )}\n \n \n \n \n {poolInformation.affinity?.nodeAffinity &&\n poolInformation.affinity?.podAntiAffinity ? (\n \n ) : (\n \n )}\n \n {poolInformation.affinity?.nodeAffinity && (\n \n \n
    \n {poolInformation.affinity?.nodeAffinity?.requiredDuringSchedulingIgnoredDuringExecution?.nodeSelectorTerms.map(\n (term: NodeSelectorTerm) => {\n return term.matchExpressions?.map((trm) => {\n return (\n
  • \n {trm.key} - {trm.values?.join(\", \")}\n
  • \n );\n });\n },\n )}\n
\n
\n )}\n
\n {poolInformation.tolerations &&\n poolInformation.tolerations.length > 0 && (\n \n \n \n
    \n {poolInformation.tolerations.map((tolItem) => {\n return (\n
  • \n {tolItem.operator === \"Equal\" ? (\n \n If {tolItem.key} is equal to{\" \"}\n {tolItem.value} then{\" \"}\n {tolItem.effect} after{\" \"}\n \n {tolItem.tolerationSeconds?.seconds || 0}\n {\" \"}\n seconds\n \n ) : (\n \n If {tolItem.key} exists then{\" \"}\n {tolItem.effect} after{\" \"}\n \n {tolItem.tolerationSeconds?.seconds || 0}\n {\" \"}\n seconds\n \n )}\n
  • \n );\n })}\n
\n
\n
\n )}\n
\n
\n );\n};\n\nexport default PoolDetails;\n","// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n actionsTray,\n containerForHeader,\n tableStyles,\n tenantDetailsStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport Grid from \"@mui/material/Grid\";\n\nimport { AppState, useAppDispatch } from \"../../../../store\";\n\nimport PoolsListing from \"./Pools/Details/PoolsListing\";\nimport PoolDetails from \"./Pools/Details/PoolDetails\";\n\nimport { setOpenPoolDetails } from \"../tenantsSlice\";\nimport { BackLink } from \"mds\";\n\ninterface IPoolsSummary {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n ...actionsTray,\n ...tableStyles,\n ...containerForHeader,\n });\n\nconst PoolsSummary = ({ classes }: IPoolsSummary) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const { pathname = \"\" } = useLocation();\n\n const selectedPool = useSelector(\n (state: AppState) => state.tenants.selectedPool,\n );\n const poolDetailsOpen = useSelector(\n (state: AppState) => state.tenants.poolDetailsOpen,\n );\n\n return (\n \n {poolDetailsOpen && (\n \n {\n navigate(pathname);\n dispatch(setOpenPoolDetails(false));\n }}\n />\n \n )}\n

\n {poolDetailsOpen ? `Pool Details - ${selectedPool || \"\"}` : \"Pools\"}\n

\n \n {poolDetailsOpen ? (\n \n ) : (\n {\n dispatch(setOpenPoolDetails(true));\n }}\n />\n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(PoolsSummary);\n"],"names":["_ref","label","value","orientation","stkProps","lblProps","valProps","_jsxs","Stack","direction","xs","sm","children","_jsx","style","marginRight","fontWeight","useStyles","makeStyles","theme","createStyles","tenantDetailsStyles","actionsTray","tableStyles","containerForHeader","setPoolDetailsView","dispatch","useAppDispatch","navigate","useNavigate","classes","loadingTenant","useSelector","state","tenants","tenant","tenantInfo","pools","setPools","useState","filter","setFilter","useEffect","resPools","filteredPools","pool","_pool$name","name","toLowerCase","includes","listActions","type","onClick","selectedValue","setSelectedPool","Fragment","Grid","item","className","TextField","placeholder","searchField","id","onChange","event","target","InputProps","disableUnderline","startAdornment","InputAdornment","position","SearchIcon","variant","TooltipWrapper","tooltip","Button","concat","namespace","icon","AddIcon","tableBlock","TableWrapper","itemActions","columns","elementKey","renderFullObject","renderFunction","x","niceBytesInt","volumes_per_server","servers","volume_configuration","size","isLoading","records","entityName","idField","customEmptyMessage","restProps","justifyContent","margin","spacing","md","stylingLayout","border","borderRadius","padding","twoColCssGridLayoutConfig","display","gridTemplateColumns","gridAutoFlow","gap","PoolDetails","_tenant$pools","_poolInformation$reso","_poolInformation$reso2","_poolInformation$reso3","_poolInformation$reso4","_poolInformation$affi","_poolInformation$affi2","_poolInformation$affi3","_poolInformation$affi4","_poolInformation$affi5","_poolInformation$affi6","selectedPool","poolInformation","find","affinityType","affinity","nodeAffinity","HeaderSection","title","StackRow","sx","borderBottom","marginBottom","right","top","EditTenantIcon","Box","LabelValuePair","runtimeClassName","resources","requests","cpu","memory","storage_class_name","securityContext","runAsNonRoot","runAsUser","runAsGroup","fsGroup","podAntiAffinity","requiredDuringSchedulingIgnoredDuringExecution","nodeSelectorTerms","map","term","_term$matchExpression","matchExpressions","trm","_trm$values","key","values","join","tolerations","length","tolItem","_tolItem$tolerationSe","_tolItem$tolerationSe2","operator","effect","tolerationSeconds","seconds","withStyles","pathname","useLocation","poolDetailsOpen","BackLink","setOpenPoolDetails","sectionTitle","container","PoolsListing"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/405.5df626d3.chunk.js b/web-app/build/static/js/405.5df626d3.chunk.js deleted file mode 100644 index ce2539d6075..00000000000 --- a/web-app/build/static/js/405.5df626d3.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[405],{13871:function(e,n,t){var a,i=t(30168),s=(0,t(26088).Z)("hr")(a||(a=(0,i.Z)(["\n border-top: 0;\n border-left: 0;\n border-right: 0;\n border-color: #999999;\n background-color: transparent;\n"])));n.Z=s},96405:function(e,n,t){t.r(n);var a=t(93433),i=t(29439),s=t(1413),o=t(72791),l=t(78687),r=t(37516),c=t(51691),d=t(13400),u=t(42419),v=t(75952),f=t(11135),x=t(25787),h=t(61889),m=t(23814),p=t(21435),Z=t(41320),g=t(87995),j=t(81207),b=t(40306),y=t(45248),k=t(13871),C=t(80184),w=(0,l.$j)((function(e){return{loadingTenant:e.tenants.loadingTenant,selectedTenant:e.tenants.currentTenant,tenant:e.tenants.tenantInfo}}),null);n.default=(0,x.Z)((function(e){return(0,f.Z)((0,s.Z)((0,s.Z)((0,s.Z)((0,s.Z)((0,s.Z)((0,s.Z)((0,s.Z)({},m.oZ),m.bK),{},{envVarRow:{display:"flex",alignItems:"center",justifyContent:"flex-start","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1,"& div label":{minWidth:50}}},rowActions:{display:"flex",justifyContent:"flex-end","@media (max-width: 900px)":{flex:1}},overlayAction:{marginLeft:10,"& svg":{width:15,height:15,maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},loaderAlign:{textAlign:"center"},fileItem:{marginRight:10,display:"flex","& div label":{minWidth:50},"@media (max-width: 900px)":{flexFlow:"column"}}},m.Bz),m.QV),m.DF),m.oO),m.AK))}))(w((function(e){var n=e.classes,t=(0,Z.TL)(),s=(0,l.v9)((function(e){return e.tenants.tenantInfo})),f=(0,l.v9)((function(e){return e.tenants.loadingTenant})),x=(0,o.useState)(!1),m=(0,i.Z)(x,2),w=m[0],A=m[1],_=(0,o.useState)(!1),T=(0,i.Z)(_,2),P=T[0],S=T[1],I=(0,o.useState)([]),N=(0,i.Z)(I,2),E=N[0],V=N[1],F=(0,o.useState)([]),R=(0,i.Z)(F,2),z=R[0],L=R[1],H=(0,o.useState)(!1),K=(0,i.Z)(H,2),B=K[0],D=K[1],G=(0,o.useCallback)((function(){j.Z.invoke("GET","/api/v1/namespaces/".concat(null===s||void 0===s?void 0:s.namespace,"/tenants/").concat(null===s||void 0===s?void 0:s.name,"/configuration")).then((function(e){e.environmentVariables&&(V(e.environmentVariables),D(e.sftpExposed))})).catch((function(e){t((0,g.Ih)(e))}))}),[s,t]);(0,o.useEffect)((function(){s&&G()}),[s,G]);return(0,C.jsxs)(o.Fragment,{children:[(0,C.jsx)(b.Z,{title:"Save and Restart",confirmText:"Restart",cancelText:"Cancel",titleIcon:(0,C.jsx)(v.EjK,{}),isLoading:w,onClose:function(){return S(!1)},isOpen:P,onConfirm:function(){A(!0);var e={environmentVariables:E.filter((function(e){return""!==e.key})),keysToBeDeleted:z,sftpExposed:B};j.Z.invoke("PATCH","/api/v1/namespaces/".concat(null===s||void 0===s?void 0:s.namespace,"/tenants/").concat(null===s||void 0===s?void 0:s.name,"/configuration"),e).then((function(){A(!1),S(!1),G()})).catch((function(e){t((0,g.Ih)(e)),A(!1)}))},confirmationContent:(0,C.jsx)(c.Z,{children:"Are you sure you want to save the changes and restart the service?"})}),f?(0,C.jsx)("div",{className:n.loaderAlign,children:(0,C.jsx)(v.aNw,{})}):(0,C.jsxs)(h.ZP,{container:!0,spacing:1,children:[(0,C.jsxs)(h.ZP,{item:!0,xs:12,children:[(0,C.jsx)("h1",{className:n.sectionTitle,children:"Configuration"}),(0,C.jsx)(k.Z,{})]}),(0,C.jsx)(h.ZP,{container:!0,spacing:1,children:E.map((function(e,t){return(0,C.jsxs)(h.ZP,{item:!0,xs:12,className:"".concat(n.formFieldRow," ").concat(n.envVarRow),children:[(0,C.jsx)(h.ZP,{item:!0,xs:5,className:n.fileItem,children:(0,C.jsx)(p.Z,{id:"env_var_key",name:"env_var_key",label:"Key",value:e.key,onChange:function(e){var n=(0,a.Z)(E);V(n.map((function(n,a){return a===t?{key:e.target.value,value:n.value}:n})))},index:t},"env_var_key_".concat(t.toString()))}),(0,C.jsx)(h.ZP,{item:!0,xs:5,className:n.fileItem,children:(0,C.jsx)(p.Z,{id:"env_var_value",name:"env_var_value",label:"Value",value:e.value,onChange:function(e){var n=(0,a.Z)(E);V(n.map((function(n,a){return a===t?{key:n.key,value:e.target.value}:n})))},index:t,type:y.Gq[e.key]&&y.Gq[e.key].secret?"password":"text"},"env_var_value_".concat(t.toString()))}),(0,C.jsxs)(h.ZP,{item:!0,xs:2,className:n.rowActions,children:[(0,C.jsx)("div",{className:n.overlayAction,children:(0,C.jsx)(d.Z,{size:"small",onClick:function(){var e=(0,a.Z)(E);e.push({key:"",value:""}),V(e)},disabled:t!==E.length-1,children:(0,C.jsx)(u.Z,{})})}),(0,C.jsx)("div",{className:n.overlayAction,children:(0,C.jsx)(d.Z,{size:"small",onClick:function(){var n=E.filter((function(e,n){return n!==t}));V(n),L([].concat((0,a.Z)(z),[e.key]))},disabled:E.length<=1,children:(0,C.jsx)(v.HFL,{})})})]})]},"tenant-envVar-".concat(t.toString()))}))}),(0,C.jsx)(h.ZP,{container:!0,spacing:1,children:(0,C.jsx)(h.ZP,{item:!0,xs:12,justifyContent:"end",textAlign:"right",className:n.configSectionItem,children:(0,C.jsx)(r.Z,{label:"SFTP",indicatorLabels:["Enabled","Disabled"],checked:B,value:"expose_sftp",id:"expose-sftp",name:"expose-sftp",onChange:function(){D(!B)},description:""})})}),(0,C.jsx)(h.ZP,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:(0,C.jsx)(v.zxk,{id:"save-environment-variables",type:"submit",variant:"callAction",disabled:P||w,onClick:function(){return S(!0)},label:"Save"})})]})]})})))},42419:function(e,n,t){var a=t(64836);n.Z=void 0;var i=a(t(45649)),s=t(80184),o=(0,i.default)((0,s.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add");n.Z=o}}]); -//# sourceMappingURL=405.5df626d3.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/405.5df626d3.chunk.js.map b/web-app/build/static/js/405.5df626d3.chunk.js.map deleted file mode 100644 index f22066b8ee0..00000000000 --- a/web-app/build/static/js/405.5df626d3.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/405.5df626d3.chunk.js","mappings":"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","sources":["screens/Console/Common/FormHr.tsx","screens/Console/Tenants/TenantDetails/TenantConfiguration.tsx","../node_modules/@mui/icons-material/Add.js"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport styled from \"@emotion/styled\";\n\nconst FormHr = styled(\"hr\")`\n border-top: 0;\n border-left: 0;\n border-right: 0;\n border-color: #999999;\n background-color: transparent;\n`;\n\nexport default FormHr;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { connect, useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport { DialogContentText, IconButton } from \"@mui/material\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport { Button, ConfirmModalIcon, Loader, RemoveIcon } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n ITenantConfigurationRequest,\n ITenantConfigurationResponse,\n LabelKeyPair,\n} from \"../types\";\nimport {\n containerForHeader,\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n spacingUtils,\n tenantDetailsStyles,\n wizardCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport api from \"../../../../common/api\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { MinIOEnvVarsSettings } from \"../../../../common/utils\";\nimport FormHr from \"../../Common/FormHr\";\n\ninterface ITenantConfiguration {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n ...spacingUtils,\n envVarRow: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n \"&:last-child\": {\n borderBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n flex: 1,\n\n \"& div label\": {\n minWidth: 50,\n },\n },\n },\n rowActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n \"@media (max-width: 900px)\": {\n flex: 1,\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n width: 15,\n height: 15,\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n loaderAlign: {\n textAlign: \"center\",\n },\n fileItem: {\n marginRight: 10,\n display: \"flex\",\n \"& div label\": {\n minWidth: 50,\n },\n\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n ...containerForHeader,\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst TenantConfiguration = ({ classes }: ITenantConfiguration) => {\n const dispatch = useAppDispatch();\n\n const tenant = useSelector((state: AppState) => state.tenants.tenantInfo);\n const loadingTenant = useSelector(\n (state: AppState) => state.tenants.loadingTenant,\n );\n\n const [isSending, setIsSending] = useState(false);\n const [dialogOpen, setDialogOpen] = useState(false);\n const [envVars, setEnvVars] = useState([]);\n const [envVarsToBeDeleted, setEnvVarsToBeDeleted] = useState([]);\n const [sftpExposed, setSftpEnabled] = useState(false);\n\n const getTenantConfigurationInfo = useCallback(() => {\n api\n .invoke(\n \"GET\",\n `/api/v1/namespaces/${tenant?.namespace}/tenants/${tenant?.name}/configuration`,\n )\n .then((res: ITenantConfigurationResponse) => {\n if (res.environmentVariables) {\n setEnvVars(res.environmentVariables);\n setSftpEnabled(res.sftpExposed);\n }\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n });\n }, [tenant, dispatch]);\n\n useEffect(() => {\n if (tenant) {\n getTenantConfigurationInfo();\n }\n }, [tenant, getTenantConfigurationInfo]);\n\n const updateTenantConfiguration = () => {\n setIsSending(true);\n let payload: ITenantConfigurationRequest = {\n environmentVariables: envVars.filter((env) => env.key !== \"\"),\n keysToBeDeleted: envVarsToBeDeleted,\n sftpExposed: sftpExposed,\n };\n api\n .invoke(\n \"PATCH\",\n `/api/v1/namespaces/${tenant?.namespace}/tenants/${tenant?.name}/configuration`,\n payload,\n )\n .then(() => {\n setIsSending(false);\n setDialogOpen(false);\n getTenantConfigurationInfo();\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setIsSending(false);\n });\n };\n\n return (\n \n }\n isLoading={isSending}\n onClose={() => setDialogOpen(false)}\n isOpen={dialogOpen}\n onConfirm={updateTenantConfiguration}\n confirmationContent={\n \n Are you sure you want to save the changes and restart the service?\n \n }\n />\n {loadingTenant ? (\n
\n \n
\n ) : (\n \n \n

Configuration

\n \n
\n \n {envVars.map((envVar, index) => (\n \n \n ) => {\n const existingEnvVars = [...envVars];\n\n setEnvVars(\n existingEnvVars.map((keyPair, i) =>\n i === index\n ? { key: e.target.value, value: keyPair.value }\n : keyPair,\n ),\n );\n }}\n index={index}\n key={`env_var_key_${index.toString()}`}\n />\n \n \n ) => {\n const existingEnvVars = [...envVars];\n setEnvVars(\n existingEnvVars.map((keyPair, i) =>\n i === index\n ? { key: keyPair.key, value: e.target.value }\n : keyPair,\n ),\n );\n }}\n index={index}\n key={`env_var_value_${index.toString()}`}\n type={\n MinIOEnvVarsSettings[envVar.key] &&\n MinIOEnvVarsSettings[envVar.key].secret\n ? \"password\"\n : \"text\"\n }\n />\n \n \n
\n {\n const existingEnvVars = [...envVars];\n existingEnvVars.push({ key: \"\", value: \"\" });\n\n setEnvVars(existingEnvVars);\n }}\n disabled={index !== envVars.length - 1}\n >\n \n \n
\n
\n {\n const existingEnvVars = envVars.filter(\n (item, fIndex) => fIndex !== index,\n );\n setEnvVars(existingEnvVars);\n setEnvVarsToBeDeleted([\n ...envVarsToBeDeleted,\n envVar.key,\n ]);\n }}\n disabled={envVars.length <= 1}\n >\n \n \n
\n
\n
\n ))}\n
\n \n \n {\n setSftpEnabled(!sftpExposed);\n }}\n description=\"\"\n />\n \n \n \n setDialogOpen(true)}\n label={\"Save\"}\n />\n \n \n )}\n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n loadingTenant: state.tenants.loadingTenant,\n selectedTenant: state.tenants.currentTenant,\n tenant: state.tenants.tenantInfo,\n});\n\nconst connector = connect(mapState, null);\n\nexport default withStyles(styles)(connector(TenantConfiguration));\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"\n}), 'Add');\nexports.default = _default;"],"names":["FormHr","styled","_templateObject","_taggedTemplateLiteral","connector","connect","state","loadingTenant","tenants","selectedTenant","currentTenant","tenant","tenantInfo","withStyles","theme","createStyles","_objectSpread","tenantDetailsStyles","spacingUtils","envVarRow","display","alignItems","justifyContent","borderBottom","flex","minWidth","rowActions","overlayAction","marginLeft","width","height","maxWidth","maxHeight","background","loaderAlign","textAlign","fileItem","marginRight","flexFlow","containerForHeader","createTenantCommon","formFieldStyles","modalBasic","wizardCommon","_ref","classes","dispatch","useAppDispatch","useSelector","_useState","useState","_useState2","_slicedToArray","isSending","setIsSending","_useState3","_useState4","dialogOpen","setDialogOpen","_useState5","_useState6","envVars","setEnvVars","_useState7","_useState8","envVarsToBeDeleted","setEnvVarsToBeDeleted","_useState9","_useState10","sftpExposed","setSftpEnabled","getTenantConfigurationInfo","useCallback","api","invoke","concat","namespace","name","then","res","environmentVariables","catch","err","setErrorSnackMessage","useEffect","_jsxs","React","children","_jsx","ConfirmDialog","title","confirmText","cancelText","titleIcon","ConfirmModalIcon","isLoading","onClose","isOpen","onConfirm","payload","filter","env","key","keysToBeDeleted","confirmationContent","DialogContentText","className","Loader","Grid","container","spacing","item","xs","sectionTitle","map","envVar","index","formFieldRow","InputBoxWrapper","id","label","value","onChange","e","existingEnvVars","_toConsumableArray","keyPair","i","target","toString","type","MinIOEnvVarsSettings","secret","IconButton","size","onClick","push","disabled","length","AddIcon","fIndex","RemoveIcon","configSectionItem","FormSwitchWrapper","indicatorLabels","checked","description","sx","Button","variant","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/405.b9b2a85f.chunk.js b/web-app/build/static/js/405.b9b2a85f.chunk.js new file mode 100644 index 00000000000..bedca4f3004 --- /dev/null +++ b/web-app/build/static/js/405.b9b2a85f.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[405],{13871:(e,n,a)=>{a.d(n,{Z:()=>i});var t,s=a(30168);const i=(0,a(26088).Z)("hr")(t||(t=(0,s.Z)(["\n border-top: 0;\n border-left: 0;\n border-right: 0;\n border-color: #999999;\n background-color: transparent;\n"])))},96405:(e,n,a)=>{a.r(n),a.d(n,{default:()=>k});var t=a(72791),s=a(78687),i=a(37516),l=a(51691),o=a(13400),c=a(42419),r=a(75952),d=a(11135),v=a(25787),x=a(61889),h=a(23814),m=a(21435),u=a(41320),p=a(87995),f=a(81207),g=a(40306),j=a(45248),b=a(13871),y=a(80184);const Z=(0,s.$j)((e=>({loadingTenant:e.tenants.loadingTenant,selectedTenant:e.tenants.currentTenant,tenant:e.tenants.tenantInfo})),null),k=(0,v.Z)((e=>(0,d.Z)({...h.oZ,...h.bK,envVarRow:{display:"flex",alignItems:"center",justifyContent:"flex-start","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1,"& div label":{minWidth:50}}},rowActions:{display:"flex",justifyContent:"flex-end","@media (max-width: 900px)":{flex:1}},overlayAction:{marginLeft:10,"& svg":{width:15,height:15,maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},loaderAlign:{textAlign:"center"},fileItem:{marginRight:10,display:"flex","& div label":{minWidth:50},"@media (max-width: 900px)":{flexFlow:"column"}},...h.Bz,...h.QV,...h.DF,...h.oO,...h.AK})))(Z((e=>{let{classes:n}=e;const a=(0,u.TL)(),d=(0,s.v9)((e=>e.tenants.tenantInfo)),v=(0,s.v9)((e=>e.tenants.loadingTenant)),[h,Z]=(0,t.useState)(!1),[k,C]=(0,t.useState)(!1),[w,A]=(0,t.useState)([]),[_,T]=(0,t.useState)([]),[P,S]=(0,t.useState)(!1),I=(0,t.useCallback)((()=>{f.Z.invoke("GET","/api/v1/namespaces/".concat(null===d||void 0===d?void 0:d.namespace,"/tenants/").concat(null===d||void 0===d?void 0:d.name,"/configuration")).then((e=>{e.environmentVariables&&(A(e.environmentVariables),S(e.sftpExposed))})).catch((e=>{a((0,p.Ih)(e))}))}),[d,a]);(0,t.useEffect)((()=>{d&&I()}),[d,I]);return(0,y.jsxs)(t.Fragment,{children:[(0,y.jsx)(g.Z,{title:"Save and Restart",confirmText:"Restart",cancelText:"Cancel",titleIcon:(0,y.jsx)(r.EjK,{}),isLoading:h,onClose:()=>C(!1),isOpen:k,onConfirm:()=>{Z(!0);let e={environmentVariables:w.filter((e=>""!==e.key)),keysToBeDeleted:_,sftpExposed:P};f.Z.invoke("PATCH","/api/v1/namespaces/".concat(null===d||void 0===d?void 0:d.namespace,"/tenants/").concat(null===d||void 0===d?void 0:d.name,"/configuration"),e).then((()=>{Z(!1),C(!1),I()})).catch((e=>{a((0,p.Ih)(e)),Z(!1)}))},confirmationContent:(0,y.jsx)(l.Z,{children:"Are you sure you want to save the changes and restart the service?"})}),v?(0,y.jsx)("div",{className:n.loaderAlign,children:(0,y.jsx)(r.aNw,{})}):(0,y.jsxs)(x.ZP,{container:!0,spacing:1,children:[(0,y.jsxs)(x.ZP,{item:!0,xs:12,children:[(0,y.jsx)("h1",{className:n.sectionTitle,children:"Configuration"}),(0,y.jsx)(b.Z,{})]}),(0,y.jsx)(x.ZP,{container:!0,spacing:1,children:w.map(((e,a)=>(0,y.jsxs)(x.ZP,{item:!0,xs:12,className:"".concat(n.formFieldRow," ").concat(n.envVarRow),children:[(0,y.jsx)(x.ZP,{item:!0,xs:5,className:n.fileItem,children:(0,y.jsx)(m.Z,{id:"env_var_key",name:"env_var_key",label:"Key",value:e.key,onChange:e=>{const n=[...w];A(n.map(((n,t)=>t===a?{key:e.target.value,value:n.value}:n)))},index:a},"env_var_key_".concat(a.toString()))}),(0,y.jsx)(x.ZP,{item:!0,xs:5,className:n.fileItem,children:(0,y.jsx)(m.Z,{id:"env_var_value",name:"env_var_value",label:"Value",value:e.value,onChange:e=>{const n=[...w];A(n.map(((n,t)=>t===a?{key:n.key,value:e.target.value}:n)))},index:a,type:j.Gq[e.key]&&j.Gq[e.key].secret?"password":"text"},"env_var_value_".concat(a.toString()))}),(0,y.jsxs)(x.ZP,{item:!0,xs:2,className:n.rowActions,children:[(0,y.jsx)("div",{className:n.overlayAction,children:(0,y.jsx)(o.Z,{size:"small",onClick:()=>{const e=[...w];e.push({key:"",value:""}),A(e)},disabled:a!==w.length-1,children:(0,y.jsx)(c.Z,{})})}),(0,y.jsx)("div",{className:n.overlayAction,children:(0,y.jsx)(o.Z,{size:"small",onClick:()=>{const n=w.filter(((e,n)=>n!==a));A(n),T([..._,e.key])},disabled:w.length<=1,children:(0,y.jsx)(r.HFL,{})})})]})]},"tenant-envVar-".concat(a.toString()))))}),(0,y.jsx)(x.ZP,{container:!0,spacing:1,children:(0,y.jsx)(x.ZP,{item:!0,xs:12,justifyContent:"end",textAlign:"right",className:n.configSectionItem,children:(0,y.jsx)(i.Z,{label:"SFTP",indicatorLabels:["Enabled","Disabled"],checked:P,value:"expose_sftp",id:"expose-sftp",name:"expose-sftp",onChange:()=>{S(!P)},description:""})})}),(0,y.jsx)(x.ZP,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:(0,y.jsx)(r.zxk,{id:"save-environment-variables",type:"submit",variant:"callAction",disabled:k||h,onClick:()=>C(!0),label:"Save"})})]})]})})))},42419:(e,n,a)=>{var t=a(64836);n.Z=void 0;var s=t(a(45649)),i=a(80184),l=(0,s.default)((0,i.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add");n.Z=l}}]); +//# sourceMappingURL=405.b9b2a85f.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/405.b9b2a85f.chunk.js.map b/web-app/build/static/js/405.b9b2a85f.chunk.js.map new file mode 100644 index 00000000000..dd73a839465 --- /dev/null +++ b/web-app/build/static/js/405.b9b2a85f.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/405.b9b2a85f.chunk.js","mappings":"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","sources":["screens/Console/Common/FormHr.tsx","screens/Console/Tenants/TenantDetails/TenantConfiguration.tsx","../node_modules/@mui/icons-material/Add.js"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport styled from \"@emotion/styled\";\n\nconst FormHr = styled(\"hr\")`\n border-top: 0;\n border-left: 0;\n border-right: 0;\n border-color: #999999;\n background-color: transparent;\n`;\n\nexport default FormHr;\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { connect, useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport { DialogContentText, IconButton } from \"@mui/material\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport { Button, ConfirmModalIcon, Loader, RemoveIcon } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n ITenantConfigurationRequest,\n ITenantConfigurationResponse,\n LabelKeyPair,\n} from \"../types\";\nimport {\n containerForHeader,\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n spacingUtils,\n tenantDetailsStyles,\n wizardCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport api from \"../../../../common/api\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { MinIOEnvVarsSettings } from \"../../../../common/utils\";\nimport FormHr from \"../../Common/FormHr\";\n\ninterface ITenantConfiguration {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n ...spacingUtils,\n envVarRow: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n \"&:last-child\": {\n borderBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n flex: 1,\n\n \"& div label\": {\n minWidth: 50,\n },\n },\n },\n rowActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n \"@media (max-width: 900px)\": {\n flex: 1,\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n width: 15,\n height: 15,\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n loaderAlign: {\n textAlign: \"center\",\n },\n fileItem: {\n marginRight: 10,\n display: \"flex\",\n \"& div label\": {\n minWidth: 50,\n },\n\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n ...containerForHeader,\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst TenantConfiguration = ({ classes }: ITenantConfiguration) => {\n const dispatch = useAppDispatch();\n\n const tenant = useSelector((state: AppState) => state.tenants.tenantInfo);\n const loadingTenant = useSelector(\n (state: AppState) => state.tenants.loadingTenant,\n );\n\n const [isSending, setIsSending] = useState(false);\n const [dialogOpen, setDialogOpen] = useState(false);\n const [envVars, setEnvVars] = useState([]);\n const [envVarsToBeDeleted, setEnvVarsToBeDeleted] = useState([]);\n const [sftpExposed, setSftpEnabled] = useState(false);\n\n const getTenantConfigurationInfo = useCallback(() => {\n api\n .invoke(\n \"GET\",\n `/api/v1/namespaces/${tenant?.namespace}/tenants/${tenant?.name}/configuration`,\n )\n .then((res: ITenantConfigurationResponse) => {\n if (res.environmentVariables) {\n setEnvVars(res.environmentVariables);\n setSftpEnabled(res.sftpExposed);\n }\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n });\n }, [tenant, dispatch]);\n\n useEffect(() => {\n if (tenant) {\n getTenantConfigurationInfo();\n }\n }, [tenant, getTenantConfigurationInfo]);\n\n const updateTenantConfiguration = () => {\n setIsSending(true);\n let payload: ITenantConfigurationRequest = {\n environmentVariables: envVars.filter((env) => env.key !== \"\"),\n keysToBeDeleted: envVarsToBeDeleted,\n sftpExposed: sftpExposed,\n };\n api\n .invoke(\n \"PATCH\",\n `/api/v1/namespaces/${tenant?.namespace}/tenants/${tenant?.name}/configuration`,\n payload,\n )\n .then(() => {\n setIsSending(false);\n setDialogOpen(false);\n getTenantConfigurationInfo();\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setIsSending(false);\n });\n };\n\n return (\n \n }\n isLoading={isSending}\n onClose={() => setDialogOpen(false)}\n isOpen={dialogOpen}\n onConfirm={updateTenantConfiguration}\n confirmationContent={\n \n Are you sure you want to save the changes and restart the service?\n \n }\n />\n {loadingTenant ? (\n
\n \n
\n ) : (\n \n \n

Configuration

\n \n
\n \n {envVars.map((envVar, index) => (\n \n \n ) => {\n const existingEnvVars = [...envVars];\n\n setEnvVars(\n existingEnvVars.map((keyPair, i) =>\n i === index\n ? { key: e.target.value, value: keyPair.value }\n : keyPair,\n ),\n );\n }}\n index={index}\n key={`env_var_key_${index.toString()}`}\n />\n \n \n ) => {\n const existingEnvVars = [...envVars];\n setEnvVars(\n existingEnvVars.map((keyPair, i) =>\n i === index\n ? { key: keyPair.key, value: e.target.value }\n : keyPair,\n ),\n );\n }}\n index={index}\n key={`env_var_value_${index.toString()}`}\n type={\n MinIOEnvVarsSettings[envVar.key] &&\n MinIOEnvVarsSettings[envVar.key].secret\n ? \"password\"\n : \"text\"\n }\n />\n \n \n
\n {\n const existingEnvVars = [...envVars];\n existingEnvVars.push({ key: \"\", value: \"\" });\n\n setEnvVars(existingEnvVars);\n }}\n disabled={index !== envVars.length - 1}\n >\n \n \n
\n
\n {\n const existingEnvVars = envVars.filter(\n (item, fIndex) => fIndex !== index,\n );\n setEnvVars(existingEnvVars);\n setEnvVarsToBeDeleted([\n ...envVarsToBeDeleted,\n envVar.key,\n ]);\n }}\n disabled={envVars.length <= 1}\n >\n \n \n
\n
\n
\n ))}\n
\n \n \n {\n setSftpEnabled(!sftpExposed);\n }}\n description=\"\"\n />\n \n \n \n setDialogOpen(true)}\n label={\"Save\"}\n />\n \n \n )}\n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n loadingTenant: state.tenants.loadingTenant,\n selectedTenant: state.tenants.currentTenant,\n tenant: state.tenants.tenantInfo,\n});\n\nconst connector = connect(mapState, null);\n\nexport default withStyles(styles)(connector(TenantConfiguration));\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"\n}), 'Add');\nexports.default = _default;"],"names":["styled","_templateObject","_taggedTemplateLiteral","connector","connect","state","loadingTenant","tenants","selectedTenant","currentTenant","tenant","tenantInfo","withStyles","theme","createStyles","tenantDetailsStyles","spacingUtils","envVarRow","display","alignItems","justifyContent","borderBottom","flex","minWidth","rowActions","overlayAction","marginLeft","width","height","maxWidth","maxHeight","background","loaderAlign","textAlign","fileItem","marginRight","flexFlow","containerForHeader","createTenantCommon","formFieldStyles","modalBasic","wizardCommon","_ref","classes","dispatch","useAppDispatch","useSelector","isSending","setIsSending","useState","dialogOpen","setDialogOpen","envVars","setEnvVars","envVarsToBeDeleted","setEnvVarsToBeDeleted","sftpExposed","setSftpEnabled","getTenantConfigurationInfo","useCallback","api","invoke","concat","namespace","name","then","res","environmentVariables","catch","err","setErrorSnackMessage","useEffect","_jsxs","React","children","_jsx","ConfirmDialog","title","confirmText","cancelText","titleIcon","ConfirmModalIcon","isLoading","onClose","isOpen","onConfirm","updateTenantConfiguration","payload","filter","env","key","keysToBeDeleted","confirmationContent","DialogContentText","className","Loader","Grid","container","spacing","item","xs","sectionTitle","FormHr","map","envVar","index","formFieldRow","InputBoxWrapper","id","label","value","onChange","e","existingEnvVars","keyPair","i","target","toString","type","MinIOEnvVarsSettings","secret","IconButton","size","onClick","push","disabled","length","AddIcon","fIndex","RemoveIcon","configSectionItem","FormSwitchWrapper","indicatorLabels","checked","description","sx","Button","variant","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/411.8d65581b.chunk.js b/web-app/build/static/js/411.8d65581b.chunk.js new file mode 100644 index 00000000000..6fba2a4abda --- /dev/null +++ b/web-app/build/static/js/411.8d65581b.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[411],{43896:(e,t,o)=>{o.d(t,{Z:()=>w});var l=o(63366),r=o(87462),n=o(72791),i=o(28182),a=o(94419),s=o(23701),c=o(14036),d=o(31402),u=o(66934),p=o(75878),b=o(21217);function f(e){return(0,b.Z)("MuiTab",e)}const h=(0,p.Z)("MuiTab",["root","labelIcon","textColorInherit","textColorPrimary","textColorSecondary","selected","disabled","fullWidth","wrapped","iconWrapper"]);var m=o(80184);const v=["className","disabled","disableFocusRipple","fullWidth","icon","iconPosition","indicator","label","onChange","onClick","onFocus","selected","selectionFollowsFocus","textColor","value","wrapped"],S=(0,u.ZP)(s.Z,{name:"MuiTab",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,o.label&&o.icon&&t.labelIcon,t["textColor".concat((0,c.Z)(o.textColor))],o.fullWidth&&t.fullWidth,o.wrapped&&t.wrapped]}})((e=>{let{theme:t,ownerState:o}=e;return(0,r.Z)({},t.typography.button,{maxWidth:360,minWidth:90,position:"relative",minHeight:48,flexShrink:0,padding:"12px 16px",overflow:"hidden",whiteSpace:"normal",textAlign:"center"},o.label&&{flexDirection:"top"===o.iconPosition||"bottom"===o.iconPosition?"column":"row"},{lineHeight:1.25},o.icon&&o.label&&{minHeight:72,paddingTop:9,paddingBottom:9,["& > .".concat(h.iconWrapper)]:(0,r.Z)({},"top"===o.iconPosition&&{marginBottom:6},"bottom"===o.iconPosition&&{marginTop:6},"start"===o.iconPosition&&{marginRight:t.spacing(1)},"end"===o.iconPosition&&{marginLeft:t.spacing(1)})},"inherit"===o.textColor&&{color:"inherit",opacity:.6,["&.".concat(h.selected)]:{opacity:1},["&.".concat(h.disabled)]:{opacity:(t.vars||t).palette.action.disabledOpacity}},"primary"===o.textColor&&{color:(t.vars||t).palette.text.secondary,["&.".concat(h.selected)]:{color:(t.vars||t).palette.primary.main},["&.".concat(h.disabled)]:{color:(t.vars||t).palette.text.disabled}},"secondary"===o.textColor&&{color:(t.vars||t).palette.text.secondary,["&.".concat(h.selected)]:{color:(t.vars||t).palette.secondary.main},["&.".concat(h.disabled)]:{color:(t.vars||t).palette.text.disabled}},o.fullWidth&&{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:"none"},o.wrapped&&{fontSize:t.typography.pxToRem(12)})})),w=n.forwardRef((function(e,t){const o=(0,d.Z)({props:e,name:"MuiTab"}),{className:s,disabled:u=!1,disableFocusRipple:p=!1,fullWidth:b,icon:h,iconPosition:w="top",indicator:x,label:g,onChange:Z,onClick:C,onFocus:y,selected:B,selectionFollowsFocus:M,textColor:W="inherit",value:P,wrapped:E=!1}=o,R=(0,l.Z)(o,v),T=(0,r.Z)({},o,{disabled:u,disableFocusRipple:p,selected:B,icon:!!h,iconPosition:w,label:!!g,fullWidth:b,textColor:W,wrapped:E}),I=(e=>{const{classes:t,textColor:o,fullWidth:l,wrapped:r,icon:n,label:i,selected:s,disabled:d}=e,u={root:["root",n&&i&&"labelIcon","textColor".concat((0,c.Z)(o)),l&&"fullWidth",r&&"wrapped",s&&"selected",d&&"disabled"],iconWrapper:["iconWrapper"]};return(0,a.Z)(u,f,t)})(T),N=h&&g&&n.isValidElement(h)?n.cloneElement(h,{className:(0,i.Z)(I.iconWrapper,h.props.className)}):h;return(0,m.jsxs)(S,(0,r.Z)({focusRipple:!p,className:(0,i.Z)(I.root,s),ref:t,role:"tab","aria-selected":B,disabled:u,onClick:e=>{!B&&Z&&Z(e,P),C&&C(e)},onFocus:e=>{M&&!B&&Z&&Z(e,P),y&&y(e)},ownerState:T,tabIndex:B?0:-1},R,{children:["top"===w||"start"===w?(0,m.jsxs)(n.Fragment,{children:[N,g]}):(0,m.jsxs)(n.Fragment,{children:[g,N]}),x]}))}))},25228:(e,t,o)=>{o.d(t,{Z:()=>K});var l=o(63366),r=o(87462),n=o(72791),i=(o(57441),o(28182)),a=o(94419),s=o(21607),c=o(66934),d=o(31402),u=o(13967),p=o(83199);let b;function f(){if(b)return b;const e=document.createElement("div"),t=document.createElement("div");return t.style.width="10px",t.style.height="1px",e.appendChild(t),e.dir="rtl",e.style.fontSize="14px",e.style.width="4px",e.style.height="1px",e.style.position="absolute",e.style.top="-1000px",e.style.overflow="scroll",document.body.appendChild(e),b="reverse",e.scrollLeft>0?b="default":(e.scrollLeft=1,0===e.scrollLeft&&(b="negative")),document.body.removeChild(e),b}function h(e,t){const o=e.scrollLeft;if("rtl"!==t)return o;switch(f()){case"negative":return e.scrollWidth-e.clientWidth+o;case"reverse":return e.scrollWidth-e.clientWidth-o;default:return o}}function m(e){return(1+Math.sin(Math.PI*e-Math.PI/2))/2}var v=o(40162),S=o(17602),w=o(80184);const x=["onChange"],g={width:99,height:99,position:"absolute",top:-9999,overflow:"scroll"};var Z=o(76189);const C=(0,Z.Z)((0,w.jsx)("path",{d:"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"}),"KeyboardArrowLeft"),y=(0,Z.Z)((0,w.jsx)("path",{d:"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"}),"KeyboardArrowRight");var B=o(23701),M=o(75878),W=o(21217);function P(e){return(0,W.Z)("MuiTabScrollButton",e)}const E=(0,M.Z)("MuiTabScrollButton",["root","vertical","horizontal","disabled"]),R=["className","slots","slotProps","direction","orientation","disabled"],T=(0,c.ZP)(B.Z,{name:"MuiTabScrollButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,o.orientation&&t[o.orientation]]}})((e=>{let{ownerState:t}=e;return(0,r.Z)({width:40,flexShrink:0,opacity:.8,["&.".concat(E.disabled)]:{opacity:0}},"vertical"===t.orientation&&{width:"100%",height:40,"& svg":{transform:"rotate(".concat(t.isRtl?-90:90,"deg)")}})})),I=n.forwardRef((function(e,t){var o,n;const c=(0,d.Z)({props:e,name:"MuiTabScrollButton"}),{className:p,slots:b={},slotProps:f={},direction:h}=c,m=(0,l.Z)(c,R),v="rtl"===(0,u.Z)().direction,S=(0,r.Z)({isRtl:v},c),x=(e=>{const{classes:t,orientation:o,disabled:l}=e,r={root:["root",o,l&&"disabled"]};return(0,a.Z)(r,P,t)})(S),g=null!=(o=b.StartScrollButtonIcon)?o:C,Z=null!=(n=b.EndScrollButtonIcon)?n:y,B=(0,s.Z)({elementType:g,externalSlotProps:f.startScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:S}),M=(0,s.Z)({elementType:Z,externalSlotProps:f.endScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:S});return(0,w.jsx)(T,(0,r.Z)({component:"div",className:(0,i.Z)(x.root,p),ref:t,role:null,ownerState:S,tabIndex:null},m,{children:"left"===h?(0,w.jsx)(g,(0,r.Z)({},B)):(0,w.jsx)(Z,(0,r.Z)({},M))}))}));var N=o(89683);function k(e){return(0,W.Z)("MuiTabs",e)}const L=(0,M.Z)("MuiTabs",["root","vertical","flexContainer","flexContainerVertical","centered","scroller","fixed","scrollableX","scrollableY","hideScrollbar","scrollButtons","scrollButtonsHideMobile","indicator"]);var z=o(98301);const F=["aria-label","aria-labelledby","action","centered","children","className","component","allowScrollButtonsMobile","indicatorColor","onChange","orientation","ScrollButtonComponent","scrollButtons","selectionFollowsFocus","slots","slotProps","TabIndicatorProps","TabScrollButtonProps","textColor","value","variant","visibleScrollbar"],A=(e,t)=>e===t?e.firstChild:t&&t.nextElementSibling?t.nextElementSibling:e.firstChild,H=(e,t)=>e===t?e.lastChild:t&&t.previousElementSibling?t.previousElementSibling:e.lastChild,j=(e,t,o)=>{let l=!1,r=o(e,t);for(;r;){if(r===e.firstChild){if(l)return;l=!0}const t=r.disabled||"true"===r.getAttribute("aria-disabled");if(r.hasAttribute("tabindex")&&!t)return void r.focus();r=o(e,r)}},X=(0,c.ZP)("div",{name:"MuiTabs",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[{["& .".concat(L.scrollButtons)]:t.scrollButtons},{["& .".concat(L.scrollButtons)]:o.scrollButtonsHideMobile&&t.scrollButtonsHideMobile},t.root,o.vertical&&t.vertical]}})((e=>{let{ownerState:t,theme:o}=e;return(0,r.Z)({overflow:"hidden",minHeight:48,WebkitOverflowScrolling:"touch",display:"flex"},t.vertical&&{flexDirection:"column"},t.scrollButtonsHideMobile&&{["& .".concat(L.scrollButtons)]:{[o.breakpoints.down("sm")]:{display:"none"}}})})),Y=(0,c.ZP)("div",{name:"MuiTabs",slot:"Scroller",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.scroller,o.fixed&&t.fixed,o.hideScrollbar&&t.hideScrollbar,o.scrollableX&&t.scrollableX,o.scrollableY&&t.scrollableY]}})((e=>{let{ownerState:t}=e;return(0,r.Z)({position:"relative",display:"inline-block",flex:"1 1 auto",whiteSpace:"nowrap"},t.fixed&&{overflowX:"hidden",width:"100%"},t.hideScrollbar&&{scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}},t.scrollableX&&{overflowX:"auto",overflowY:"hidden"},t.scrollableY&&{overflowY:"auto",overflowX:"hidden"})})),D=(0,c.ZP)("div",{name:"MuiTabs",slot:"FlexContainer",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.flexContainer,o.vertical&&t.flexContainerVertical,o.centered&&t.centered]}})((e=>{let{ownerState:t}=e;return(0,r.Z)({display:"flex"},t.vertical&&{flexDirection:"column"},t.centered&&{justifyContent:"center"})})),V=(0,c.ZP)("span",{name:"MuiTabs",slot:"Indicator",overridesResolver:(e,t)=>t.indicator})((e=>{let{ownerState:t,theme:o}=e;return(0,r.Z)({position:"absolute",height:2,bottom:0,width:"100%",transition:o.transitions.create()},"primary"===t.indicatorColor&&{backgroundColor:(o.vars||o).palette.primary.main},"secondary"===t.indicatorColor&&{backgroundColor:(o.vars||o).palette.secondary.main},t.vertical&&{height:"100%",width:2,right:0})})),O=(0,c.ZP)((function(e){const{onChange:t}=e,o=(0,l.Z)(e,x),i=n.useRef(),a=n.useRef(null),s=()=>{i.current=a.current.offsetHeight-a.current.clientHeight};return(0,v.Z)((()=>{const e=(0,p.Z)((()=>{const e=i.current;s(),e!==i.current&&t(i.current)})),o=(0,S.Z)(a.current);return o.addEventListener("resize",e),()=>{e.clear(),o.removeEventListener("resize",e)}}),[t]),n.useEffect((()=>{s(),t(i.current)}),[t]),(0,w.jsx)("div",(0,r.Z)({style:g,ref:a},o))}),{name:"MuiTabs",slot:"ScrollbarSize"})({overflowX:"auto",overflowY:"hidden",scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}),q={};const K=n.forwardRef((function(e,t){const o=(0,d.Z)({props:e,name:"MuiTabs"}),c=(0,u.Z)(),b="rtl"===c.direction,{"aria-label":v,"aria-labelledby":x,action:g,centered:Z=!1,children:C,className:y,component:B="div",allowScrollButtonsMobile:M=!1,indicatorColor:W="primary",onChange:P,orientation:E="horizontal",ScrollButtonComponent:R=I,scrollButtons:T="auto",selectionFollowsFocus:L,slots:K={},slotProps:_={},TabIndicatorProps:G={},TabScrollButtonProps:U={},textColor:J="primary",value:Q,variant:$="standard",visibleScrollbar:ee=!1}=o,te=(0,l.Z)(o,F),oe="scrollable"===$,le="vertical"===E,re=le?"scrollTop":"scrollLeft",ne=le?"top":"left",ie=le?"bottom":"right",ae=le?"clientHeight":"clientWidth",se=le?"height":"width",ce=(0,r.Z)({},o,{component:B,allowScrollButtonsMobile:M,indicatorColor:W,orientation:E,vertical:le,scrollButtons:T,textColor:J,variant:$,visibleScrollbar:ee,fixed:!oe,hideScrollbar:oe&&!ee,scrollableX:oe&&!le,scrollableY:oe&&le,centered:Z&&!oe,scrollButtonsHideMobile:!M}),de=(e=>{const{vertical:t,fixed:o,hideScrollbar:l,scrollableX:r,scrollableY:n,centered:i,scrollButtonsHideMobile:s,classes:c}=e,d={root:["root",t&&"vertical"],scroller:["scroller",o&&"fixed",l&&"hideScrollbar",r&&"scrollableX",n&&"scrollableY"],flexContainer:["flexContainer",t&&"flexContainerVertical",i&&"centered"],indicator:["indicator"],scrollButtons:["scrollButtons",s&&"scrollButtonsHideMobile"],scrollableX:[r&&"scrollableX"],hideScrollbar:[l&&"hideScrollbar"]};return(0,a.Z)(d,k,c)})(ce),ue=(0,s.Z)({elementType:K.StartScrollButtonIcon,externalSlotProps:_.startScrollButtonIcon,ownerState:ce}),pe=(0,s.Z)({elementType:K.EndScrollButtonIcon,externalSlotProps:_.endScrollButtonIcon,ownerState:ce});const[be,fe]=n.useState(!1),[he,me]=n.useState(q),[ve,Se]=n.useState({start:!1,end:!1}),[we,xe]=n.useState({overflow:"hidden",scrollbarWidth:0}),ge=new Map,Ze=n.useRef(null),Ce=n.useRef(null),ye=()=>{const e=Ze.current;let t,o;if(e){const o=e.getBoundingClientRect();t={clientWidth:e.clientWidth,scrollLeft:e.scrollLeft,scrollTop:e.scrollTop,scrollLeftNormalized:h(e,c.direction),scrollWidth:e.scrollWidth,top:o.top,bottom:o.bottom,left:o.left,right:o.right}}if(e&&!1!==Q){const e=Ce.current.children;if(e.length>0){const t=e[ge.get(Q)];0,o=t?t.getBoundingClientRect():null}}return{tabsMeta:t,tabMeta:o}},Be=(0,N.Z)((()=>{const{tabsMeta:e,tabMeta:t}=ye();let o,l=0;if(le)o="top",t&&e&&(l=t.top-e.top+e.scrollTop);else if(o=b?"right":"left",t&&e){const r=b?e.scrollLeftNormalized+e.clientWidth-e.scrollWidth:e.scrollLeft;l=(b?-1:1)*(t[o]-e[o]+r)}const r={[o]:l,[se]:t?t[se]:0};if(isNaN(he[o])||isNaN(he[se]))me(r);else{const e=Math.abs(he[o]-r[o]),t=Math.abs(he[se]-r[se]);(e>=1||t>=1)&&me(r)}})),Me=function(e){let{animation:t=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t?function(e,t,o){let l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>{};const{ease:n=m,duration:i=300}=l;let a=null;const s=t[e];let c=!1;const d=()=>{c=!0},u=l=>{if(c)return void r(new Error("Animation cancelled"));null===a&&(a=l);const d=Math.min(1,(l-a)/i);t[e]=n(d)*(o-s)+s,d>=1?requestAnimationFrame((()=>{r(null)})):requestAnimationFrame(u)};s===o?r(new Error("Element already at target position")):requestAnimationFrame(u)}(re,Ze.current,e,{duration:c.transitions.duration.standard}):Ze.current[re]=e},We=e=>{let t=Ze.current[re];le?t+=e:(t+=e*(b?-1:1),t*=b&&"reverse"===f()?-1:1),Me(t)},Pe=()=>{const e=Ze.current[ae];let t=0;const o=Array.from(Ce.current.children);for(let l=0;le){0===l&&(t=e);break}t+=r[ae]}return t},Ee=()=>{We(-1*Pe())},Re=()=>{We(Pe())},Te=n.useCallback((e=>{xe({overflow:null,scrollbarWidth:e})}),[]),Ie=(0,N.Z)((e=>{const{tabsMeta:t,tabMeta:o}=ye();if(o&&t)if(o[ne]t[ie]){const l=t[re]+(o[ie]-t[ie]);Me(l,{animation:e})}})),Ne=(0,N.Z)((()=>{if(oe&&!1!==T){const{scrollTop:e,scrollHeight:t,clientHeight:o,scrollWidth:l,clientWidth:r}=Ze.current;let n,i;if(le)n=e>1,i=e1,i=b?e>1:e{const e=(0,p.Z)((()=>{Ze.current&&(Be(),Ne())})),t=(0,S.Z)(Ze.current);let o;return t.addEventListener("resize",e),"undefined"!==typeof ResizeObserver&&(o=new ResizeObserver(e),Array.from(Ce.current.children).forEach((e=>{o.observe(e)}))),()=>{e.clear(),t.removeEventListener("resize",e),o&&o.disconnect()}}),[Be,Ne]);const ke=n.useMemo((()=>(0,p.Z)((()=>{Ne()}))),[Ne]);n.useEffect((()=>()=>{ke.clear()}),[ke]),n.useEffect((()=>{fe(!0)}),[]),n.useEffect((()=>{Be(),Ne()})),n.useEffect((()=>{Ie(q!==he)}),[Ie,he]),n.useImperativeHandle(g,(()=>({updateIndicator:Be,updateScrollButtons:Ne})),[Be,Ne]);const Le=(0,w.jsx)(V,(0,r.Z)({},G,{className:(0,i.Z)(de.indicator,G.className),ownerState:ce,style:(0,r.Z)({},he,G.style)}));let ze=0;const Fe=n.Children.map(C,(e=>{if(!n.isValidElement(e))return null;const t=void 0===e.props.value?ze:e.props.value;ge.set(t,ze);const o=t===Q;return ze+=1,n.cloneElement(e,(0,r.Z)({fullWidth:"fullWidth"===$,indicator:o&&!be&&Le,selected:o,selectionFollowsFocus:L,onChange:P,textColor:J,value:t},1!==ze||!1!==Q||e.props.tabIndex?{}:{tabIndex:0}))})),Ae=(()=>{const e={};e.scrollbarSizeListener=oe?(0,w.jsx)(O,{onChange:Te,className:(0,i.Z)(de.scrollableX,de.hideScrollbar)}):null;const t=ve.start||ve.end,o=oe&&("auto"===T&&t||!0===T);return e.scrollButtonStart=o?(0,w.jsx)(R,(0,r.Z)({slots:{StartScrollButtonIcon:K.StartScrollButtonIcon},slotProps:{startScrollButtonIcon:ue},orientation:E,direction:b?"right":"left",onClick:Ee,disabled:!ve.start},U,{className:(0,i.Z)(de.scrollButtons,U.className)})):null,e.scrollButtonEnd=o?(0,w.jsx)(R,(0,r.Z)({slots:{EndScrollButtonIcon:K.EndScrollButtonIcon},slotProps:{endScrollButtonIcon:pe},orientation:E,direction:b?"left":"right",onClick:Re,disabled:!ve.end},U,{className:(0,i.Z)(de.scrollButtons,U.className)})):null,e})();return(0,w.jsxs)(X,(0,r.Z)({className:(0,i.Z)(de.root,y),ownerState:ce,ref:t,as:B},te,{children:[Ae.scrollButtonStart,Ae.scrollbarSizeListener,(0,w.jsxs)(Y,{className:de.scroller,ownerState:ce,style:{overflow:we.overflow,[le?"margin".concat(b?"Left":"Right"):"marginBottom"]:ee?void 0:-we.scrollbarWidth},ref:Ze,onScroll:ke,children:[(0,w.jsx)(D,{"aria-label":v,"aria-labelledby":x,"aria-orientation":"vertical"===E?"vertical":null,className:de.flexContainer,ownerState:ce,onKeyDown:e=>{const t=Ce.current,o=(0,z.Z)(t).activeElement;if("tab"!==o.getAttribute("role"))return;let l="horizontal"===E?"ArrowLeft":"ArrowUp",r="horizontal"===E?"ArrowRight":"ArrowDown";switch("horizontal"===E&&b&&(l="ArrowRight",r="ArrowLeft"),e.key){case l:e.preventDefault(),j(t,o,H);break;case r:e.preventDefault(),j(t,o,A);break;case"Home":e.preventDefault(),j(t,null,A);break;case"End":e.preventDefault(),j(t,null,H)}},ref:Ce,role:"tablist",children:Fe}),be&&Le]}),Ae.scrollButtonEnd]}))}))}}]); +//# sourceMappingURL=411.8d65581b.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/411.8d65581b.chunk.js.map b/web-app/build/static/js/411.8d65581b.chunk.js.map new file mode 100644 index 00000000000..e2036a71036 --- /dev/null +++ b/web-app/build/static/js/411.8d65581b.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/411.8d65581b.chunk.js","mappings":"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","sources":["../node_modules/@mui/material/Tab/tabClasses.js","../node_modules/@mui/material/Tab/Tab.js","../node_modules/@mui/utils/esm/scrollLeft.js","../node_modules/@mui/material/internal/animate.js","../node_modules/@mui/material/Tabs/ScrollbarSize.js","../node_modules/@mui/material/internal/svg-icons/KeyboardArrowLeft.js","../node_modules/@mui/material/internal/svg-icons/KeyboardArrowRight.js","../node_modules/@mui/material/TabScrollButton/tabScrollButtonClasses.js","../node_modules/@mui/material/TabScrollButton/TabScrollButton.js","../node_modules/@mui/material/Tabs/tabsClasses.js","../node_modules/@mui/material/Tabs/Tabs.js"],"sourcesContent":["import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTabUtilityClass(slot) {\n return generateUtilityClass('MuiTab', slot);\n}\nconst tabClasses = generateUtilityClasses('MuiTab', ['root', 'labelIcon', 'textColorInherit', 'textColorPrimary', 'textColorSecondary', 'selected', 'disabled', 'fullWidth', 'wrapped', 'iconWrapper']);\nexport default tabClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"disabled\", \"disableFocusRipple\", \"fullWidth\", \"icon\", \"iconPosition\", \"indicator\", \"label\", \"onChange\", \"onClick\", \"onFocus\", \"selected\", \"selectionFollowsFocus\", \"textColor\", \"value\", \"wrapped\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport unsupportedProp from '../utils/unsupportedProp';\nimport tabClasses, { getTabUtilityClass } from './tabClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n textColor,\n fullWidth,\n wrapped,\n icon,\n label,\n selected,\n disabled\n } = ownerState;\n const slots = {\n root: ['root', icon && label && 'labelIcon', `textColor${capitalize(textColor)}`, fullWidth && 'fullWidth', wrapped && 'wrapped', selected && 'selected', disabled && 'disabled'],\n iconWrapper: ['iconWrapper']\n };\n return composeClasses(slots, getTabUtilityClass, classes);\n};\nconst TabRoot = styled(ButtonBase, {\n name: 'MuiTab',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.label && ownerState.icon && styles.labelIcon, styles[`textColor${capitalize(ownerState.textColor)}`], ownerState.fullWidth && styles.fullWidth, ownerState.wrapped && styles.wrapped];\n }\n})(({\n theme,\n ownerState\n}) => _extends({}, theme.typography.button, {\n maxWidth: 360,\n minWidth: 90,\n position: 'relative',\n minHeight: 48,\n flexShrink: 0,\n padding: '12px 16px',\n overflow: 'hidden',\n whiteSpace: 'normal',\n textAlign: 'center'\n}, ownerState.label && {\n flexDirection: ownerState.iconPosition === 'top' || ownerState.iconPosition === 'bottom' ? 'column' : 'row'\n}, {\n lineHeight: 1.25\n}, ownerState.icon && ownerState.label && {\n minHeight: 72,\n paddingTop: 9,\n paddingBottom: 9,\n [`& > .${tabClasses.iconWrapper}`]: _extends({}, ownerState.iconPosition === 'top' && {\n marginBottom: 6\n }, ownerState.iconPosition === 'bottom' && {\n marginTop: 6\n }, ownerState.iconPosition === 'start' && {\n marginRight: theme.spacing(1)\n }, ownerState.iconPosition === 'end' && {\n marginLeft: theme.spacing(1)\n })\n}, ownerState.textColor === 'inherit' && {\n color: 'inherit',\n opacity: 0.6,\n // same opacity as theme.palette.text.secondary\n [`&.${tabClasses.selected}`]: {\n opacity: 1\n },\n [`&.${tabClasses.disabled}`]: {\n opacity: (theme.vars || theme).palette.action.disabledOpacity\n }\n}, ownerState.textColor === 'primary' && {\n color: (theme.vars || theme).palette.text.secondary,\n [`&.${tabClasses.selected}`]: {\n color: (theme.vars || theme).palette.primary.main\n },\n [`&.${tabClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n }\n}, ownerState.textColor === 'secondary' && {\n color: (theme.vars || theme).palette.text.secondary,\n [`&.${tabClasses.selected}`]: {\n color: (theme.vars || theme).palette.secondary.main\n },\n [`&.${tabClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n }\n}, ownerState.fullWidth && {\n flexShrink: 1,\n flexGrow: 1,\n flexBasis: 0,\n maxWidth: 'none'\n}, ownerState.wrapped && {\n fontSize: theme.typography.pxToRem(12)\n}));\nconst Tab = /*#__PURE__*/React.forwardRef(function Tab(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTab'\n });\n const {\n className,\n disabled = false,\n disableFocusRipple = false,\n // eslint-disable-next-line react/prop-types\n fullWidth,\n icon: iconProp,\n iconPosition = 'top',\n // eslint-disable-next-line react/prop-types\n indicator,\n label,\n onChange,\n onClick,\n onFocus,\n // eslint-disable-next-line react/prop-types\n selected,\n // eslint-disable-next-line react/prop-types\n selectionFollowsFocus,\n // eslint-disable-next-line react/prop-types\n textColor = 'inherit',\n value,\n wrapped = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n disabled,\n disableFocusRipple,\n selected,\n icon: !!iconProp,\n iconPosition,\n label: !!label,\n fullWidth,\n textColor,\n wrapped\n });\n const classes = useUtilityClasses(ownerState);\n const icon = iconProp && label && /*#__PURE__*/React.isValidElement(iconProp) ? /*#__PURE__*/React.cloneElement(iconProp, {\n className: clsx(classes.iconWrapper, iconProp.props.className)\n }) : iconProp;\n const handleClick = event => {\n if (!selected && onChange) {\n onChange(event, value);\n }\n if (onClick) {\n onClick(event);\n }\n };\n const handleFocus = event => {\n if (selectionFollowsFocus && !selected && onChange) {\n onChange(event, value);\n }\n if (onFocus) {\n onFocus(event);\n }\n };\n return /*#__PURE__*/_jsxs(TabRoot, _extends({\n focusRipple: !disableFocusRipple,\n className: clsx(classes.root, className),\n ref: ref,\n role: \"tab\",\n \"aria-selected\": selected,\n disabled: disabled,\n onClick: handleClick,\n onFocus: handleFocus,\n ownerState: ownerState,\n tabIndex: selected ? 0 : -1\n }, other, {\n children: [iconPosition === 'top' || iconPosition === 'start' ? /*#__PURE__*/_jsxs(React.Fragment, {\n children: [icon, label]\n }) : /*#__PURE__*/_jsxs(React.Fragment, {\n children: [label, icon]\n }), indicator]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Tab.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * This prop isn't supported.\n * Use the `component` prop if you need to change the children structure.\n */\n children: unsupportedProp,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the keyboard focus ripple is disabled.\n * @default false\n */\n disableFocusRipple: PropTypes.bool,\n /**\n * If `true`, the ripple effect is disabled.\n *\n * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n * @default false\n */\n disableRipple: PropTypes.bool,\n /**\n * The icon to display.\n */\n icon: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),\n /**\n * The position of the icon relative to the label.\n * @default 'top'\n */\n iconPosition: PropTypes.oneOf(['bottom', 'end', 'start', 'top']),\n /**\n * The label element.\n */\n label: PropTypes.node,\n /**\n * @ignore\n */\n onChange: PropTypes.func,\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * You can provide your own value. Otherwise, we fallback to the child position index.\n */\n value: PropTypes.any,\n /**\n * Tab labels appear in a single row.\n * They can use a second line if needed.\n * @default false\n */\n wrapped: PropTypes.bool\n} : void 0;\nexport default Tab;","// Source from https://github.com/alitaheri/normalize-scroll-left\nlet cachedType;\n\n/**\n * Based on the jquery plugin https://github.com/othree/jquery.rtl-scroll-type\n *\n * Types of scrollLeft, assuming scrollWidth=100 and direction is rtl.\n *\n * Type | <- Most Left | Most Right -> | Initial\n * ---------------- | ------------ | ------------- | -------\n * default | 0 | 100 | 100\n * negative (spec*) | -100 | 0 | 0\n * reverse | 100 | 0 | 0\n *\n * Edge 85: default\n * Safari 14: negative\n * Chrome 85: negative\n * Firefox 81: negative\n * IE11: reverse\n *\n * spec* https://drafts.csswg.org/cssom-view/#dom-window-scroll\n */\nexport function detectScrollType() {\n if (cachedType) {\n return cachedType;\n }\n const dummy = document.createElement('div');\n const container = document.createElement('div');\n container.style.width = '10px';\n container.style.height = '1px';\n dummy.appendChild(container);\n dummy.dir = 'rtl';\n dummy.style.fontSize = '14px';\n dummy.style.width = '4px';\n dummy.style.height = '1px';\n dummy.style.position = 'absolute';\n dummy.style.top = '-1000px';\n dummy.style.overflow = 'scroll';\n document.body.appendChild(dummy);\n cachedType = 'reverse';\n if (dummy.scrollLeft > 0) {\n cachedType = 'default';\n } else {\n dummy.scrollLeft = 1;\n if (dummy.scrollLeft === 0) {\n cachedType = 'negative';\n }\n }\n document.body.removeChild(dummy);\n return cachedType;\n}\n\n// Based on https://stackoverflow.com/a/24394376\nexport function getNormalizedScrollLeft(element, direction) {\n const scrollLeft = element.scrollLeft;\n\n // Perform the calculations only when direction is rtl to avoid messing up the ltr behavior\n if (direction !== 'rtl') {\n return scrollLeft;\n }\n const type = detectScrollType();\n switch (type) {\n case 'negative':\n return element.scrollWidth - element.clientWidth + scrollLeft;\n case 'reverse':\n return element.scrollWidth - element.clientWidth - scrollLeft;\n default:\n return scrollLeft;\n }\n}","function easeInOutSin(time) {\n return (1 + Math.sin(Math.PI * time - Math.PI / 2)) / 2;\n}\nexport default function animate(property, element, to, options = {}, cb = () => {}) {\n const {\n ease = easeInOutSin,\n duration = 300 // standard\n } = options;\n let start = null;\n const from = element[property];\n let cancelled = false;\n const cancel = () => {\n cancelled = true;\n };\n const step = timestamp => {\n if (cancelled) {\n cb(new Error('Animation cancelled'));\n return;\n }\n if (start === null) {\n start = timestamp;\n }\n const time = Math.min(1, (timestamp - start) / duration);\n element[property] = ease(time) * (to - from) + from;\n if (time >= 1) {\n requestAnimationFrame(() => {\n cb(null);\n });\n return;\n }\n requestAnimationFrame(step);\n };\n if (from === to) {\n cb(new Error('Element already at target position'));\n return cancel;\n }\n requestAnimationFrame(step);\n return cancel;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onChange\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from '../utils/debounce';\nimport { ownerWindow, unstable_useEnhancedEffect as useEnhancedEffect } from '../utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst styles = {\n width: 99,\n height: 99,\n position: 'absolute',\n top: -9999,\n overflow: 'scroll'\n};\n\n/**\n * @ignore - internal component.\n * The component originates from https://github.com/STORIS/react-scrollbar-size.\n * It has been moved into the core in order to minimize the bundle size.\n */\nexport default function ScrollbarSize(props) {\n const {\n onChange\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const scrollbarHeight = React.useRef();\n const nodeRef = React.useRef(null);\n const setMeasurements = () => {\n scrollbarHeight.current = nodeRef.current.offsetHeight - nodeRef.current.clientHeight;\n };\n useEnhancedEffect(() => {\n const handleResize = debounce(() => {\n const prevHeight = scrollbarHeight.current;\n setMeasurements();\n if (prevHeight !== scrollbarHeight.current) {\n onChange(scrollbarHeight.current);\n }\n });\n const containerWindow = ownerWindow(nodeRef.current);\n containerWindow.addEventListener('resize', handleResize);\n return () => {\n handleResize.clear();\n containerWindow.removeEventListener('resize', handleResize);\n };\n }, [onChange]);\n React.useEffect(() => {\n setMeasurements();\n onChange(scrollbarHeight.current);\n }, [onChange]);\n return /*#__PURE__*/_jsx(\"div\", _extends({\n style: styles,\n ref: nodeRef\n }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? ScrollbarSize.propTypes = {\n onChange: PropTypes.func.isRequired\n} : void 0;","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z\"\n}), 'KeyboardArrowLeft');","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z\"\n}), 'KeyboardArrowRight');","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTabScrollButtonUtilityClass(slot) {\n return generateUtilityClass('MuiTabScrollButton', slot);\n}\nconst tabScrollButtonClasses = generateUtilityClasses('MuiTabScrollButton', ['root', 'vertical', 'horizontal', 'disabled']);\nexport default tabScrollButtonClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"slots\", \"slotProps\", \"direction\", \"orientation\", \"disabled\"];\n/* eslint-disable jsx-a11y/aria-role */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses, useSlotProps } from '@mui/base';\nimport KeyboardArrowLeft from '../internal/svg-icons/KeyboardArrowLeft';\nimport KeyboardArrowRight from '../internal/svg-icons/KeyboardArrowRight';\nimport ButtonBase from '../ButtonBase';\nimport useTheme from '../styles/useTheme';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport tabScrollButtonClasses, { getTabScrollButtonUtilityClass } from './tabScrollButtonClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n orientation,\n disabled\n } = ownerState;\n const slots = {\n root: ['root', orientation, disabled && 'disabled']\n };\n return composeClasses(slots, getTabScrollButtonUtilityClass, classes);\n};\nconst TabScrollButtonRoot = styled(ButtonBase, {\n name: 'MuiTabScrollButton',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.orientation && styles[ownerState.orientation]];\n }\n})(({\n ownerState\n}) => _extends({\n width: 40,\n flexShrink: 0,\n opacity: 0.8,\n [`&.${tabScrollButtonClasses.disabled}`]: {\n opacity: 0\n }\n}, ownerState.orientation === 'vertical' && {\n width: '100%',\n height: 40,\n '& svg': {\n transform: `rotate(${ownerState.isRtl ? -90 : 90}deg)`\n }\n}));\nconst TabScrollButton = /*#__PURE__*/React.forwardRef(function TabScrollButton(inProps, ref) {\n var _slots$StartScrollBut, _slots$EndScrollButto;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTabScrollButton'\n });\n const {\n className,\n slots = {},\n slotProps = {},\n direction\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const theme = useTheme();\n const isRtl = theme.direction === 'rtl';\n const ownerState = _extends({\n isRtl\n }, props);\n const classes = useUtilityClasses(ownerState);\n const StartButtonIcon = (_slots$StartScrollBut = slots.StartScrollButtonIcon) != null ? _slots$StartScrollBut : KeyboardArrowLeft;\n const EndButtonIcon = (_slots$EndScrollButto = slots.EndScrollButtonIcon) != null ? _slots$EndScrollButto : KeyboardArrowRight;\n const startButtonIconProps = useSlotProps({\n elementType: StartButtonIcon,\n externalSlotProps: slotProps.startScrollButtonIcon,\n additionalProps: {\n fontSize: 'small'\n },\n ownerState\n });\n const endButtonIconProps = useSlotProps({\n elementType: EndButtonIcon,\n externalSlotProps: slotProps.endScrollButtonIcon,\n additionalProps: {\n fontSize: 'small'\n },\n ownerState\n });\n return /*#__PURE__*/_jsx(TabScrollButtonRoot, _extends({\n component: \"div\",\n className: clsx(classes.root, className),\n ref: ref,\n role: null,\n ownerState: ownerState,\n tabIndex: null\n }, other, {\n children: direction === 'left' ? /*#__PURE__*/_jsx(StartButtonIcon, _extends({}, startButtonIconProps)) : /*#__PURE__*/_jsx(EndButtonIcon, _extends({}, endButtonIconProps))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TabScrollButton.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The direction the button should indicate.\n */\n direction: PropTypes.oneOf(['left', 'right']).isRequired,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * The component orientation (layout flow direction).\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']).isRequired,\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n * @default {}\n */\n slotProps: PropTypes.shape({\n endScrollButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n startScrollButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside.\n * @default {}\n */\n slots: PropTypes.shape({\n EndScrollButtonIcon: PropTypes.elementType,\n StartScrollButtonIcon: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TabScrollButton;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTabsUtilityClass(slot) {\n return generateUtilityClass('MuiTabs', slot);\n}\nconst tabsClasses = generateUtilityClasses('MuiTabs', ['root', 'vertical', 'flexContainer', 'flexContainerVertical', 'centered', 'scroller', 'fixed', 'scrollableX', 'scrollableY', 'hideScrollbar', 'scrollButtons', 'scrollButtonsHideMobile', 'indicator']);\nexport default tabsClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"aria-label\", \"aria-labelledby\", \"action\", \"centered\", \"children\", \"className\", \"component\", \"allowScrollButtonsMobile\", \"indicatorColor\", \"onChange\", \"orientation\", \"ScrollButtonComponent\", \"scrollButtons\", \"selectionFollowsFocus\", \"slots\", \"slotProps\", \"TabIndicatorProps\", \"TabScrollButtonProps\", \"textColor\", \"value\", \"variant\", \"visibleScrollbar\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses, useSlotProps } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useTheme from '../styles/useTheme';\nimport debounce from '../utils/debounce';\nimport { getNormalizedScrollLeft, detectScrollType } from '../utils/scrollLeft';\nimport animate from '../internal/animate';\nimport ScrollbarSize from './ScrollbarSize';\nimport TabScrollButton from '../TabScrollButton';\nimport useEventCallback from '../utils/useEventCallback';\nimport tabsClasses, { getTabsUtilityClass } from './tabsClasses';\nimport ownerDocument from '../utils/ownerDocument';\nimport ownerWindow from '../utils/ownerWindow';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst nextItem = (list, item) => {\n if (list === item) {\n return list.firstChild;\n }\n if (item && item.nextElementSibling) {\n return item.nextElementSibling;\n }\n return list.firstChild;\n};\nconst previousItem = (list, item) => {\n if (list === item) {\n return list.lastChild;\n }\n if (item && item.previousElementSibling) {\n return item.previousElementSibling;\n }\n return list.lastChild;\n};\nconst moveFocus = (list, currentFocus, traversalFunction) => {\n let wrappedOnce = false;\n let nextFocus = traversalFunction(list, currentFocus);\n while (nextFocus) {\n // Prevent infinite loop.\n if (nextFocus === list.firstChild) {\n if (wrappedOnce) {\n return;\n }\n wrappedOnce = true;\n }\n\n // Same logic as useAutocomplete.js\n const nextFocusDisabled = nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n if (!nextFocus.hasAttribute('tabindex') || nextFocusDisabled) {\n // Move to the next element.\n nextFocus = traversalFunction(list, nextFocus);\n } else {\n nextFocus.focus();\n return;\n }\n }\n};\nconst useUtilityClasses = ownerState => {\n const {\n vertical,\n fixed,\n hideScrollbar,\n scrollableX,\n scrollableY,\n centered,\n scrollButtonsHideMobile,\n classes\n } = ownerState;\n const slots = {\n root: ['root', vertical && 'vertical'],\n scroller: ['scroller', fixed && 'fixed', hideScrollbar && 'hideScrollbar', scrollableX && 'scrollableX', scrollableY && 'scrollableY'],\n flexContainer: ['flexContainer', vertical && 'flexContainerVertical', centered && 'centered'],\n indicator: ['indicator'],\n scrollButtons: ['scrollButtons', scrollButtonsHideMobile && 'scrollButtonsHideMobile'],\n scrollableX: [scrollableX && 'scrollableX'],\n hideScrollbar: [hideScrollbar && 'hideScrollbar']\n };\n return composeClasses(slots, getTabsUtilityClass, classes);\n};\nconst TabsRoot = styled('div', {\n name: 'MuiTabs',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${tabsClasses.scrollButtons}`]: styles.scrollButtons\n }, {\n [`& .${tabsClasses.scrollButtons}`]: ownerState.scrollButtonsHideMobile && styles.scrollButtonsHideMobile\n }, styles.root, ownerState.vertical && styles.vertical];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n overflow: 'hidden',\n minHeight: 48,\n // Add iOS momentum scrolling for iOS < 13.0\n WebkitOverflowScrolling: 'touch',\n display: 'flex'\n}, ownerState.vertical && {\n flexDirection: 'column'\n}, ownerState.scrollButtonsHideMobile && {\n [`& .${tabsClasses.scrollButtons}`]: {\n [theme.breakpoints.down('sm')]: {\n display: 'none'\n }\n }\n}));\nconst TabsScroller = styled('div', {\n name: 'MuiTabs',\n slot: 'Scroller',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.scroller, ownerState.fixed && styles.fixed, ownerState.hideScrollbar && styles.hideScrollbar, ownerState.scrollableX && styles.scrollableX, ownerState.scrollableY && styles.scrollableY];\n }\n})(({\n ownerState\n}) => _extends({\n position: 'relative',\n display: 'inline-block',\n flex: '1 1 auto',\n whiteSpace: 'nowrap'\n}, ownerState.fixed && {\n overflowX: 'hidden',\n width: '100%'\n}, ownerState.hideScrollbar && {\n // Hide dimensionless scrollbar on macOS\n scrollbarWidth: 'none',\n // Firefox\n '&::-webkit-scrollbar': {\n display: 'none' // Safari + Chrome\n }\n}, ownerState.scrollableX && {\n overflowX: 'auto',\n overflowY: 'hidden'\n}, ownerState.scrollableY && {\n overflowY: 'auto',\n overflowX: 'hidden'\n}));\nconst FlexContainer = styled('div', {\n name: 'MuiTabs',\n slot: 'FlexContainer',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.flexContainer, ownerState.vertical && styles.flexContainerVertical, ownerState.centered && styles.centered];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'flex'\n}, ownerState.vertical && {\n flexDirection: 'column'\n}, ownerState.centered && {\n justifyContent: 'center'\n}));\nconst TabsIndicator = styled('span', {\n name: 'MuiTabs',\n slot: 'Indicator',\n overridesResolver: (props, styles) => styles.indicator\n})(({\n ownerState,\n theme\n}) => _extends({\n position: 'absolute',\n height: 2,\n bottom: 0,\n width: '100%',\n transition: theme.transitions.create()\n}, ownerState.indicatorColor === 'primary' && {\n backgroundColor: (theme.vars || theme).palette.primary.main\n}, ownerState.indicatorColor === 'secondary' && {\n backgroundColor: (theme.vars || theme).palette.secondary.main\n}, ownerState.vertical && {\n height: '100%',\n width: 2,\n right: 0\n}));\nconst TabsScrollbarSize = styled(ScrollbarSize, {\n name: 'MuiTabs',\n slot: 'ScrollbarSize'\n})({\n overflowX: 'auto',\n overflowY: 'hidden',\n // Hide dimensionless scrollbar on macOS\n scrollbarWidth: 'none',\n // Firefox\n '&::-webkit-scrollbar': {\n display: 'none' // Safari + Chrome\n }\n});\n\nconst defaultIndicatorStyle = {};\nlet warnedOnceTabPresent = false;\nconst Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTabs'\n });\n const theme = useTheme();\n const isRtl = theme.direction === 'rtl';\n const {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n action,\n centered = false,\n children: childrenProp,\n className,\n component = 'div',\n allowScrollButtonsMobile = false,\n indicatorColor = 'primary',\n onChange,\n orientation = 'horizontal',\n ScrollButtonComponent = TabScrollButton,\n scrollButtons = 'auto',\n selectionFollowsFocus,\n slots = {},\n slotProps = {},\n TabIndicatorProps = {},\n TabScrollButtonProps = {},\n textColor = 'primary',\n value,\n variant = 'standard',\n visibleScrollbar = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const scrollable = variant === 'scrollable';\n const vertical = orientation === 'vertical';\n const scrollStart = vertical ? 'scrollTop' : 'scrollLeft';\n const start = vertical ? 'top' : 'left';\n const end = vertical ? 'bottom' : 'right';\n const clientSize = vertical ? 'clientHeight' : 'clientWidth';\n const size = vertical ? 'height' : 'width';\n const ownerState = _extends({}, props, {\n component,\n allowScrollButtonsMobile,\n indicatorColor,\n orientation,\n vertical,\n scrollButtons,\n textColor,\n variant,\n visibleScrollbar,\n fixed: !scrollable,\n hideScrollbar: scrollable && !visibleScrollbar,\n scrollableX: scrollable && !vertical,\n scrollableY: scrollable && vertical,\n centered: centered && !scrollable,\n scrollButtonsHideMobile: !allowScrollButtonsMobile\n });\n const classes = useUtilityClasses(ownerState);\n const startScrollButtonIconProps = useSlotProps({\n elementType: slots.StartScrollButtonIcon,\n externalSlotProps: slotProps.startScrollButtonIcon,\n ownerState\n });\n const endScrollButtonIconProps = useSlotProps({\n elementType: slots.EndScrollButtonIcon,\n externalSlotProps: slotProps.endScrollButtonIcon,\n ownerState\n });\n if (process.env.NODE_ENV !== 'production') {\n if (centered && scrollable) {\n console.error('MUI: You can not use the `centered={true}` and `variant=\"scrollable\"` properties ' + 'at the same time on a `Tabs` component.');\n }\n }\n const [mounted, setMounted] = React.useState(false);\n const [indicatorStyle, setIndicatorStyle] = React.useState(defaultIndicatorStyle);\n const [displayScroll, setDisplayScroll] = React.useState({\n start: false,\n end: false\n });\n const [scrollerStyle, setScrollerStyle] = React.useState({\n overflow: 'hidden',\n scrollbarWidth: 0\n });\n const valueToIndex = new Map();\n const tabsRef = React.useRef(null);\n const tabListRef = React.useRef(null);\n const getTabsMeta = () => {\n const tabsNode = tabsRef.current;\n let tabsMeta;\n if (tabsNode) {\n const rect = tabsNode.getBoundingClientRect();\n // create a new object with ClientRect class props + scrollLeft\n tabsMeta = {\n clientWidth: tabsNode.clientWidth,\n scrollLeft: tabsNode.scrollLeft,\n scrollTop: tabsNode.scrollTop,\n scrollLeftNormalized: getNormalizedScrollLeft(tabsNode, theme.direction),\n scrollWidth: tabsNode.scrollWidth,\n top: rect.top,\n bottom: rect.bottom,\n left: rect.left,\n right: rect.right\n };\n }\n let tabMeta;\n if (tabsNode && value !== false) {\n const children = tabListRef.current.children;\n if (children.length > 0) {\n const tab = children[valueToIndex.get(value)];\n if (process.env.NODE_ENV !== 'production') {\n if (!tab) {\n console.error([`MUI: The \\`value\\` provided to the Tabs component is invalid.`, `None of the Tabs' children match with \"${value}\".`, valueToIndex.keys ? `You can provide one of the following values: ${Array.from(valueToIndex.keys()).join(', ')}.` : null].join('\\n'));\n }\n }\n tabMeta = tab ? tab.getBoundingClientRect() : null;\n if (process.env.NODE_ENV !== 'production') {\n if (process.env.NODE_ENV !== 'test' && !warnedOnceTabPresent && tabMeta && tabMeta.width === 0 && tabMeta.height === 0 &&\n // if the whole Tabs component is hidden, don't warn\n tabsMeta.clientWidth !== 0) {\n tabsMeta = null;\n console.error(['MUI: The `value` provided to the Tabs component is invalid.', `The Tab with this \\`value\\` (\"${value}\") is not part of the document layout.`, \"Make sure the tab item is present in the document or that it's not `display: none`.\"].join('\\n'));\n warnedOnceTabPresent = true;\n }\n }\n }\n }\n return {\n tabsMeta,\n tabMeta\n };\n };\n const updateIndicatorState = useEventCallback(() => {\n const {\n tabsMeta,\n tabMeta\n } = getTabsMeta();\n let startValue = 0;\n let startIndicator;\n if (vertical) {\n startIndicator = 'top';\n if (tabMeta && tabsMeta) {\n startValue = tabMeta.top - tabsMeta.top + tabsMeta.scrollTop;\n }\n } else {\n startIndicator = isRtl ? 'right' : 'left';\n if (tabMeta && tabsMeta) {\n const correction = isRtl ? tabsMeta.scrollLeftNormalized + tabsMeta.clientWidth - tabsMeta.scrollWidth : tabsMeta.scrollLeft;\n startValue = (isRtl ? -1 : 1) * (tabMeta[startIndicator] - tabsMeta[startIndicator] + correction);\n }\n }\n const newIndicatorStyle = {\n [startIndicator]: startValue,\n // May be wrong until the font is loaded.\n [size]: tabMeta ? tabMeta[size] : 0\n };\n\n // IE11 support, replace with Number.isNaN\n // eslint-disable-next-line no-restricted-globals\n if (isNaN(indicatorStyle[startIndicator]) || isNaN(indicatorStyle[size])) {\n setIndicatorStyle(newIndicatorStyle);\n } else {\n const dStart = Math.abs(indicatorStyle[startIndicator] - newIndicatorStyle[startIndicator]);\n const dSize = Math.abs(indicatorStyle[size] - newIndicatorStyle[size]);\n if (dStart >= 1 || dSize >= 1) {\n setIndicatorStyle(newIndicatorStyle);\n }\n }\n });\n const scroll = (scrollValue, {\n animation = true\n } = {}) => {\n if (animation) {\n animate(scrollStart, tabsRef.current, scrollValue, {\n duration: theme.transitions.duration.standard\n });\n } else {\n tabsRef.current[scrollStart] = scrollValue;\n }\n };\n const moveTabsScroll = delta => {\n let scrollValue = tabsRef.current[scrollStart];\n if (vertical) {\n scrollValue += delta;\n } else {\n scrollValue += delta * (isRtl ? -1 : 1);\n // Fix for Edge\n scrollValue *= isRtl && detectScrollType() === 'reverse' ? -1 : 1;\n }\n scroll(scrollValue);\n };\n const getScrollSize = () => {\n const containerSize = tabsRef.current[clientSize];\n let totalSize = 0;\n const children = Array.from(tabListRef.current.children);\n for (let i = 0; i < children.length; i += 1) {\n const tab = children[i];\n if (totalSize + tab[clientSize] > containerSize) {\n // If the first item is longer than the container size, then only scroll\n // by the container size.\n if (i === 0) {\n totalSize = containerSize;\n }\n break;\n }\n totalSize += tab[clientSize];\n }\n return totalSize;\n };\n const handleStartScrollClick = () => {\n moveTabsScroll(-1 * getScrollSize());\n };\n const handleEndScrollClick = () => {\n moveTabsScroll(getScrollSize());\n };\n\n // TODO Remove as browser support for hiding the scrollbar\n // with CSS improves.\n const handleScrollbarSizeChange = React.useCallback(scrollbarWidth => {\n setScrollerStyle({\n overflow: null,\n scrollbarWidth\n });\n }, []);\n const getConditionalElements = () => {\n const conditionalElements = {};\n conditionalElements.scrollbarSizeListener = scrollable ? /*#__PURE__*/_jsx(TabsScrollbarSize, {\n onChange: handleScrollbarSizeChange,\n className: clsx(classes.scrollableX, classes.hideScrollbar)\n }) : null;\n const scrollButtonsActive = displayScroll.start || displayScroll.end;\n const showScrollButtons = scrollable && (scrollButtons === 'auto' && scrollButtonsActive || scrollButtons === true);\n conditionalElements.scrollButtonStart = showScrollButtons ? /*#__PURE__*/_jsx(ScrollButtonComponent, _extends({\n slots: {\n StartScrollButtonIcon: slots.StartScrollButtonIcon\n },\n slotProps: {\n startScrollButtonIcon: startScrollButtonIconProps\n },\n orientation: orientation,\n direction: isRtl ? 'right' : 'left',\n onClick: handleStartScrollClick,\n disabled: !displayScroll.start\n }, TabScrollButtonProps, {\n className: clsx(classes.scrollButtons, TabScrollButtonProps.className)\n })) : null;\n conditionalElements.scrollButtonEnd = showScrollButtons ? /*#__PURE__*/_jsx(ScrollButtonComponent, _extends({\n slots: {\n EndScrollButtonIcon: slots.EndScrollButtonIcon\n },\n slotProps: {\n endScrollButtonIcon: endScrollButtonIconProps\n },\n orientation: orientation,\n direction: isRtl ? 'left' : 'right',\n onClick: handleEndScrollClick,\n disabled: !displayScroll.end\n }, TabScrollButtonProps, {\n className: clsx(classes.scrollButtons, TabScrollButtonProps.className)\n })) : null;\n return conditionalElements;\n };\n const scrollSelectedIntoView = useEventCallback(animation => {\n const {\n tabsMeta,\n tabMeta\n } = getTabsMeta();\n if (!tabMeta || !tabsMeta) {\n return;\n }\n if (tabMeta[start] < tabsMeta[start]) {\n // left side of button is out of view\n const nextScrollStart = tabsMeta[scrollStart] + (tabMeta[start] - tabsMeta[start]);\n scroll(nextScrollStart, {\n animation\n });\n } else if (tabMeta[end] > tabsMeta[end]) {\n // right side of button is out of view\n const nextScrollStart = tabsMeta[scrollStart] + (tabMeta[end] - tabsMeta[end]);\n scroll(nextScrollStart, {\n animation\n });\n }\n });\n const updateScrollButtonState = useEventCallback(() => {\n if (scrollable && scrollButtons !== false) {\n const {\n scrollTop,\n scrollHeight,\n clientHeight,\n scrollWidth,\n clientWidth\n } = tabsRef.current;\n let showStartScroll;\n let showEndScroll;\n if (vertical) {\n showStartScroll = scrollTop > 1;\n showEndScroll = scrollTop < scrollHeight - clientHeight - 1;\n } else {\n const scrollLeft = getNormalizedScrollLeft(tabsRef.current, theme.direction);\n // use 1 for the potential rounding error with browser zooms.\n showStartScroll = isRtl ? scrollLeft < scrollWidth - clientWidth - 1 : scrollLeft > 1;\n showEndScroll = !isRtl ? scrollLeft < scrollWidth - clientWidth - 1 : scrollLeft > 1;\n }\n if (showStartScroll !== displayScroll.start || showEndScroll !== displayScroll.end) {\n setDisplayScroll({\n start: showStartScroll,\n end: showEndScroll\n });\n }\n }\n });\n React.useEffect(() => {\n const handleResize = debounce(() => {\n // If the Tabs component is replaced by Suspense with a fallback, the last\n // ResizeObserver's handler that runs because of the change in the layout is trying to\n // access a dom node that is no longer there (as the fallback component is being shown instead).\n // See https://github.com/mui/material-ui/issues/33276\n // TODO: Add tests that will ensure the component is not failing when\n // replaced by Suspense with a fallback, once React is updated to version 18\n if (tabsRef.current) {\n updateIndicatorState();\n updateScrollButtonState();\n }\n });\n const win = ownerWindow(tabsRef.current);\n win.addEventListener('resize', handleResize);\n let resizeObserver;\n if (typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(handleResize);\n Array.from(tabListRef.current.children).forEach(child => {\n resizeObserver.observe(child);\n });\n }\n return () => {\n handleResize.clear();\n win.removeEventListener('resize', handleResize);\n if (resizeObserver) {\n resizeObserver.disconnect();\n }\n };\n }, [updateIndicatorState, updateScrollButtonState]);\n const handleTabsScroll = React.useMemo(() => debounce(() => {\n updateScrollButtonState();\n }), [updateScrollButtonState]);\n React.useEffect(() => {\n return () => {\n handleTabsScroll.clear();\n };\n }, [handleTabsScroll]);\n React.useEffect(() => {\n setMounted(true);\n }, []);\n React.useEffect(() => {\n updateIndicatorState();\n updateScrollButtonState();\n });\n React.useEffect(() => {\n // Don't animate on the first render.\n scrollSelectedIntoView(defaultIndicatorStyle !== indicatorStyle);\n }, [scrollSelectedIntoView, indicatorStyle]);\n React.useImperativeHandle(action, () => ({\n updateIndicator: updateIndicatorState,\n updateScrollButtons: updateScrollButtonState\n }), [updateIndicatorState, updateScrollButtonState]);\n const indicator = /*#__PURE__*/_jsx(TabsIndicator, _extends({}, TabIndicatorProps, {\n className: clsx(classes.indicator, TabIndicatorProps.className),\n ownerState: ownerState,\n style: _extends({}, indicatorStyle, TabIndicatorProps.style)\n }));\n let childIndex = 0;\n const children = React.Children.map(childrenProp, child => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return null;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"MUI: The Tabs component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n const childValue = child.props.value === undefined ? childIndex : child.props.value;\n valueToIndex.set(childValue, childIndex);\n const selected = childValue === value;\n childIndex += 1;\n return /*#__PURE__*/React.cloneElement(child, _extends({\n fullWidth: variant === 'fullWidth',\n indicator: selected && !mounted && indicator,\n selected,\n selectionFollowsFocus,\n onChange,\n textColor,\n value: childValue\n }, childIndex === 1 && value === false && !child.props.tabIndex ? {\n tabIndex: 0\n } : {}));\n });\n const handleKeyDown = event => {\n const list = tabListRef.current;\n const currentFocus = ownerDocument(list).activeElement;\n // Keyboard navigation assumes that [role=\"tab\"] are siblings\n // though we might warn in the future about nested, interactive elements\n // as a a11y violation\n const role = currentFocus.getAttribute('role');\n if (role !== 'tab') {\n return;\n }\n let previousItemKey = orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp';\n let nextItemKey = orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown';\n if (orientation === 'horizontal' && isRtl) {\n // swap previousItemKey with nextItemKey\n previousItemKey = 'ArrowRight';\n nextItemKey = 'ArrowLeft';\n }\n switch (event.key) {\n case previousItemKey:\n event.preventDefault();\n moveFocus(list, currentFocus, previousItem);\n break;\n case nextItemKey:\n event.preventDefault();\n moveFocus(list, currentFocus, nextItem);\n break;\n case 'Home':\n event.preventDefault();\n moveFocus(list, null, nextItem);\n break;\n case 'End':\n event.preventDefault();\n moveFocus(list, null, previousItem);\n break;\n default:\n break;\n }\n };\n const conditionalElements = getConditionalElements();\n return /*#__PURE__*/_jsxs(TabsRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref,\n as: component\n }, other, {\n children: [conditionalElements.scrollButtonStart, conditionalElements.scrollbarSizeListener, /*#__PURE__*/_jsxs(TabsScroller, {\n className: classes.scroller,\n ownerState: ownerState,\n style: {\n overflow: scrollerStyle.overflow,\n [vertical ? `margin${isRtl ? 'Left' : 'Right'}` : 'marginBottom']: visibleScrollbar ? undefined : -scrollerStyle.scrollbarWidth\n },\n ref: tabsRef,\n onScroll: handleTabsScroll,\n children: [/*#__PURE__*/_jsx(FlexContainer, {\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-orientation\": orientation === 'vertical' ? 'vertical' : null,\n className: classes.flexContainer,\n ownerState: ownerState,\n onKeyDown: handleKeyDown,\n ref: tabListRef,\n role: \"tablist\",\n children: children\n }), mounted && indicator]\n }), conditionalElements.scrollButtonEnd]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Tabs.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Callback fired when the component mounts.\n * This is useful when you want to trigger an action programmatically.\n * It supports two actions: `updateIndicator()` and `updateScrollButtons()`\n *\n * @param {object} actions This object contains all possible actions\n * that can be triggered programmatically.\n */\n action: refType,\n /**\n * If `true`, the scroll buttons aren't forced hidden on mobile.\n * By default the scroll buttons are hidden on mobile and takes precedence over `scrollButtons`.\n * @default false\n */\n allowScrollButtonsMobile: PropTypes.bool,\n /**\n * The label for the Tabs as a string.\n */\n 'aria-label': PropTypes.string,\n /**\n * An id or list of ids separated by a space that label the Tabs.\n */\n 'aria-labelledby': PropTypes.string,\n /**\n * If `true`, the tabs are centered.\n * This prop is intended for large views.\n * @default false\n */\n centered: PropTypes.bool,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Determines the color of the indicator.\n * @default 'primary'\n */\n indicatorColor: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n /**\n * Callback fired when the value changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback. **Warning**: This is a generic event not a change event.\n * @param {any} value We default to the index of the child (number)\n */\n onChange: PropTypes.func,\n /**\n * The component orientation (layout flow direction).\n * @default 'horizontal'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n /**\n * The component used to render the scroll buttons.\n * @default TabScrollButton\n */\n ScrollButtonComponent: PropTypes.elementType,\n /**\n * Determine behavior of scroll buttons when tabs are set to scroll:\n *\n * - `auto` will only present them when not all the items are visible.\n * - `true` will always present them.\n * - `false` will never present them.\n *\n * By default the scroll buttons are hidden on mobile.\n * This behavior can be disabled with `allowScrollButtonsMobile`.\n * @default 'auto'\n */\n scrollButtons: PropTypes /* @typescript-to-proptypes-ignore */.oneOf(['auto', false, true]),\n /**\n * If `true` the selected tab changes on focus. Otherwise it only\n * changes on activation.\n */\n selectionFollowsFocus: PropTypes.bool,\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n * @default {}\n */\n slotProps: PropTypes.shape({\n endScrollButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n startScrollButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside.\n * @default {}\n */\n slots: PropTypes.shape({\n EndScrollButtonIcon: PropTypes.elementType,\n StartScrollButtonIcon: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Props applied to the tab indicator element.\n * @default {}\n */\n TabIndicatorProps: PropTypes.object,\n /**\n * Props applied to the [`TabScrollButton`](/material-ui/api/tab-scroll-button/) element.\n * @default {}\n */\n TabScrollButtonProps: PropTypes.object,\n /**\n * Determines the color of the `Tab`.\n * @default 'primary'\n */\n textColor: PropTypes.oneOf(['inherit', 'primary', 'secondary']),\n /**\n * The value of the currently selected `Tab`.\n * If you don't want any selected `Tab`, you can set this prop to `false`.\n */\n value: PropTypes.any,\n /**\n * Determines additional display behavior of the tabs:\n *\n * - `scrollable` will invoke scrolling properties and allow for horizontally\n * scrolling (or swiping) of the tab bar.\n * -`fullWidth` will make the tabs grow to use all the available space,\n * which should be used for small views, like on mobile.\n * - `standard` will render the default state.\n * @default 'standard'\n */\n variant: PropTypes.oneOf(['fullWidth', 'scrollable', 'standard']),\n /**\n * If `true`, the scrollbar is visible. It can be useful when displaying\n * a long vertical list of tabs.\n * @default false\n */\n visibleScrollbar: PropTypes.bool\n} : void 0;\nexport default Tabs;"],"names":["getTabUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","TabRoot","styled","ButtonBase","name","overridesResolver","props","styles","ownerState","root","label","icon","labelIcon","concat","capitalize","textColor","fullWidth","wrapped","_ref","theme","_extends","typography","button","maxWidth","minWidth","position","minHeight","flexShrink","padding","overflow","whiteSpace","textAlign","flexDirection","iconPosition","lineHeight","paddingTop","paddingBottom","tabClasses","iconWrapper","marginBottom","marginTop","marginRight","spacing","marginLeft","color","opacity","selected","disabled","vars","palette","action","disabledOpacity","text","secondary","primary","main","flexGrow","flexBasis","fontSize","pxToRem","React","inProps","ref","useThemeProps","className","disableFocusRipple","iconProp","indicator","onChange","onClick","onFocus","selectionFollowsFocus","value","other","_objectWithoutPropertiesLoose","classes","slots","composeClasses","useUtilityClasses","clsx","_jsxs","focusRipple","role","event","tabIndex","children","cachedType","detectScrollType","dummy","document","createElement","container","style","width","height","appendChild","dir","top","body","scrollLeft","removeChild","getNormalizedScrollLeft","element","direction","scrollWidth","clientWidth","easeInOutSin","time","Math","sin","PI","createSvgIcon","_jsx","d","getTabScrollButtonUtilityClass","TabScrollButtonRoot","orientation","tabScrollButtonClasses","transform","isRtl","_slots$StartScrollBut","_slots$EndScrollButto","slotProps","useTheme","StartButtonIcon","StartScrollButtonIcon","KeyboardArrowLeft","EndButtonIcon","EndScrollButtonIcon","KeyboardArrowRight","startButtonIconProps","useSlotProps","elementType","externalSlotProps","startScrollButtonIcon","additionalProps","endButtonIconProps","endScrollButtonIcon","component","getTabsUtilityClass","nextItem","list","item","firstChild","nextElementSibling","previousItem","lastChild","previousElementSibling","moveFocus","currentFocus","traversalFunction","wrappedOnce","nextFocus","nextFocusDisabled","getAttribute","hasAttribute","focus","TabsRoot","tabsClasses","scrollButtons","scrollButtonsHideMobile","vertical","WebkitOverflowScrolling","display","breakpoints","down","TabsScroller","scroller","fixed","hideScrollbar","scrollableX","scrollableY","_ref2","flex","overflowX","scrollbarWidth","overflowY","FlexContainer","flexContainer","flexContainerVertical","centered","_ref3","justifyContent","TabsIndicator","_ref4","bottom","transition","transitions","create","indicatorColor","backgroundColor","right","TabsScrollbarSize","scrollbarHeight","nodeRef","setMeasurements","current","offsetHeight","clientHeight","useEnhancedEffect","handleResize","debounce","prevHeight","containerWindow","ownerWindow","addEventListener","clear","removeEventListener","defaultIndicatorStyle","ariaLabel","ariaLabelledBy","childrenProp","allowScrollButtonsMobile","ScrollButtonComponent","TabScrollButton","TabIndicatorProps","TabScrollButtonProps","variant","visibleScrollbar","scrollable","scrollStart","start","end","clientSize","size","startScrollButtonIconProps","endScrollButtonIconProps","mounted","setMounted","indicatorStyle","setIndicatorStyle","displayScroll","setDisplayScroll","scrollerStyle","setScrollerStyle","valueToIndex","Map","tabsRef","tabListRef","getTabsMeta","tabsNode","tabsMeta","tabMeta","rect","getBoundingClientRect","scrollTop","scrollLeftNormalized","left","length","tab","get","process","updateIndicatorState","useEventCallback","startIndicator","startValue","correction","newIndicatorStyle","isNaN","dStart","abs","dSize","scroll","scrollValue","animation","arguments","undefined","property","to","options","cb","ease","duration","from","cancelled","cancel","step","timestamp","Error","min","requestAnimationFrame","animate","standard","moveTabsScroll","delta","getScrollSize","containerSize","totalSize","Array","i","handleStartScrollClick","handleEndScrollClick","handleScrollbarSizeChange","scrollSelectedIntoView","nextScrollStart","updateScrollButtonState","scrollHeight","showStartScroll","showEndScroll","win","resizeObserver","ResizeObserver","forEach","child","observe","disconnect","handleTabsScroll","updateIndicator","updateScrollButtons","childIndex","map","childValue","set","conditionalElements","getConditionalElements","scrollbarSizeListener","scrollButtonsActive","showScrollButtons","scrollButtonStart","scrollButtonEnd","as","onScroll","onKeyDown","ownerDocument","activeElement","previousItemKey","nextItemKey","key","preventDefault"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/411.d1015441.chunk.js b/web-app/build/static/js/411.d1015441.chunk.js deleted file mode 100644 index 6efecf8d25a..00000000000 --- a/web-app/build/static/js/411.d1015441.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[411],{43896:function(e,t,o){o.d(t,{Z:function(){return w}});var r=o(4942),l=o(63366),n=o(87462),i=o(72791),a=o(28182),c=o(94419),s=o(23701),d=o(14036),u=o(31402),f=o(66934),v=o(75878),p=o(21217);function b(e){return(0,p.Z)("MuiTab",e)}var h=(0,v.Z)("MuiTab",["root","labelIcon","textColorInherit","textColorPrimary","textColorSecondary","selected","disabled","fullWidth","wrapped","iconWrapper"]),m=o(80184),S=["className","disabled","disableFocusRipple","fullWidth","icon","iconPosition","indicator","label","onChange","onClick","onFocus","selected","selectionFollowsFocus","textColor","value","wrapped"],Z=(0,f.ZP)(s.Z,{name:"MuiTab",slot:"Root",overridesResolver:function(e,t){var o=e.ownerState;return[t.root,o.label&&o.icon&&t.labelIcon,t["textColor".concat((0,d.Z)(o.textColor))],o.fullWidth&&t.fullWidth,o.wrapped&&t.wrapped]}})((function(e){var t,o,l,i=e.theme,a=e.ownerState;return(0,n.Z)({},i.typography.button,{maxWidth:360,minWidth:90,position:"relative",minHeight:48,flexShrink:0,padding:"12px 16px",overflow:"hidden",whiteSpace:"normal",textAlign:"center"},a.label&&{flexDirection:"top"===a.iconPosition||"bottom"===a.iconPosition?"column":"row"},{lineHeight:1.25},a.icon&&a.label&&(0,r.Z)({minHeight:72,paddingTop:9,paddingBottom:9},"& > .".concat(h.iconWrapper),(0,n.Z)({},"top"===a.iconPosition&&{marginBottom:6},"bottom"===a.iconPosition&&{marginTop:6},"start"===a.iconPosition&&{marginRight:i.spacing(1)},"end"===a.iconPosition&&{marginLeft:i.spacing(1)})),"inherit"===a.textColor&&(t={color:"inherit",opacity:.6},(0,r.Z)(t,"&.".concat(h.selected),{opacity:1}),(0,r.Z)(t,"&.".concat(h.disabled),{opacity:(i.vars||i).palette.action.disabledOpacity}),t),"primary"===a.textColor&&(o={color:(i.vars||i).palette.text.secondary},(0,r.Z)(o,"&.".concat(h.selected),{color:(i.vars||i).palette.primary.main}),(0,r.Z)(o,"&.".concat(h.disabled),{color:(i.vars||i).palette.text.disabled}),o),"secondary"===a.textColor&&(l={color:(i.vars||i).palette.text.secondary},(0,r.Z)(l,"&.".concat(h.selected),{color:(i.vars||i).palette.secondary.main}),(0,r.Z)(l,"&.".concat(h.disabled),{color:(i.vars||i).palette.text.disabled}),l),a.fullWidth&&{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:"none"},a.wrapped&&{fontSize:i.typography.pxToRem(12)})})),w=i.forwardRef((function(e,t){var o=(0,u.Z)({props:e,name:"MuiTab"}),r=o.className,s=o.disabled,f=void 0!==s&&s,v=o.disableFocusRipple,p=void 0!==v&&v,h=o.fullWidth,w=o.icon,x=o.iconPosition,g=void 0===x?"top":x,C=o.indicator,y=o.label,B=o.onChange,M=o.onClick,W=o.onFocus,P=o.selected,E=o.selectionFollowsFocus,R=o.textColor,T=void 0===R?"inherit":R,I=o.value,N=o.wrapped,k=void 0!==N&&N,L=(0,l.Z)(o,S),z=(0,n.Z)({},o,{disabled:f,disableFocusRipple:p,selected:P,icon:!!w,iconPosition:g,label:!!y,fullWidth:h,textColor:T,wrapped:k}),F=function(e){var t=e.classes,o=e.textColor,r=e.fullWidth,l=e.wrapped,n=e.icon,i=e.label,a=e.selected,s=e.disabled,u={root:["root",n&&i&&"labelIcon","textColor".concat((0,d.Z)(o)),r&&"fullWidth",l&&"wrapped",a&&"selected",s&&"disabled"],iconWrapper:["iconWrapper"]};return(0,c.Z)(u,b,t)}(z),A=w&&y&&i.isValidElement(w)?i.cloneElement(w,{className:(0,a.Z)(F.iconWrapper,w.props.className)}):w;return(0,m.jsxs)(Z,(0,n.Z)({focusRipple:!p,className:(0,a.Z)(F.root,r),ref:t,role:"tab","aria-selected":P,disabled:f,onClick:function(e){!P&&B&&B(e,I),M&&M(e)},onFocus:function(e){E&&!P&&B&&B(e,I),W&&W(e)},ownerState:z,tabIndex:P?0:-1},L,{children:["top"===g||"start"===g?(0,m.jsxs)(i.Fragment,{children:[A,y]}):(0,m.jsxs)(i.Fragment,{children:[y,A]}),C]}))}))},25228:function(e,t,o){o.d(t,{Z:function(){return U}});var r,l=o(29439),n=o(4942),i=o(63366),a=o(87462),c=o(72791),s=(o(57441),o(28182)),d=o(94419),u=o(21607),f=o(66934),v=o(31402),p=o(13967),b=o(83199);function h(){if(r)return r;var e=document.createElement("div"),t=document.createElement("div");return t.style.width="10px",t.style.height="1px",e.appendChild(t),e.dir="rtl",e.style.fontSize="14px",e.style.width="4px",e.style.height="1px",e.style.position="absolute",e.style.top="-1000px",e.style.overflow="scroll",document.body.appendChild(e),r="reverse",e.scrollLeft>0?r="default":(e.scrollLeft=1,0===e.scrollLeft&&(r="negative")),document.body.removeChild(e),r}function m(e,t){var o=e.scrollLeft;if("rtl"!==t)return o;switch(h()){case"negative":return e.scrollWidth-e.clientWidth+o;case"reverse":return e.scrollWidth-e.clientWidth-o;default:return o}}function S(e){return(1+Math.sin(Math.PI*e-Math.PI/2))/2}var Z=o(40162),w=o(17602),x=o(80184),g=["onChange"],C={width:99,height:99,position:"absolute",top:-9999,overflow:"scroll"};var y=o(76189),B=(0,y.Z)((0,x.jsx)("path",{d:"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"}),"KeyboardArrowLeft"),M=(0,y.Z)((0,x.jsx)("path",{d:"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"}),"KeyboardArrowRight"),W=o(23701),P=o(75878),E=o(21217);function R(e){return(0,E.Z)("MuiTabScrollButton",e)}var T=(0,P.Z)("MuiTabScrollButton",["root","vertical","horizontal","disabled"]),I=["className","slots","slotProps","direction","orientation","disabled"],N=(0,f.ZP)(W.Z,{name:"MuiTabScrollButton",slot:"Root",overridesResolver:function(e,t){var o=e.ownerState;return[t.root,o.orientation&&t[o.orientation]]}})((function(e){var t=e.ownerState;return(0,a.Z)((0,n.Z)({width:40,flexShrink:0,opacity:.8},"&.".concat(T.disabled),{opacity:0}),"vertical"===t.orientation&&{width:"100%",height:40,"& svg":{transform:"rotate(".concat(t.isRtl?-90:90,"deg)")}})})),k=c.forwardRef((function(e,t){var o,r,l=(0,v.Z)({props:e,name:"MuiTabScrollButton"}),n=l.className,c=l.slots,f=void 0===c?{}:c,b=l.slotProps,h=void 0===b?{}:b,m=l.direction,S=(0,i.Z)(l,I),Z="rtl"===(0,p.Z)().direction,w=(0,a.Z)({isRtl:Z},l),g=function(e){var t=e.classes,o={root:["root",e.orientation,e.disabled&&"disabled"]};return(0,d.Z)(o,R,t)}(w),C=null!=(o=f.StartScrollButtonIcon)?o:B,y=null!=(r=f.EndScrollButtonIcon)?r:M,W=(0,u.Z)({elementType:C,externalSlotProps:h.startScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:w}),P=(0,u.Z)({elementType:y,externalSlotProps:h.endScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:w});return(0,x.jsx)(N,(0,a.Z)({component:"div",className:(0,s.Z)(g.root,n),ref:t,role:null,ownerState:w,tabIndex:null},S,{children:"left"===m?(0,x.jsx)(C,(0,a.Z)({},W)):(0,x.jsx)(y,(0,a.Z)({},P))}))})),L=o(89683);function z(e){return(0,E.Z)("MuiTabs",e)}var F=(0,P.Z)("MuiTabs",["root","vertical","flexContainer","flexContainerVertical","centered","scroller","fixed","scrollableX","scrollableY","hideScrollbar","scrollButtons","scrollButtonsHideMobile","indicator"]),A=o(98301),H=["aria-label","aria-labelledby","action","centered","children","className","component","allowScrollButtonsMobile","indicatorColor","onChange","orientation","ScrollButtonComponent","scrollButtons","selectionFollowsFocus","slots","slotProps","TabIndicatorProps","TabScrollButtonProps","textColor","value","variant","visibleScrollbar"],j=function(e,t){return e===t?e.firstChild:t&&t.nextElementSibling?t.nextElementSibling:e.firstChild},X=function(e,t){return e===t?e.lastChild:t&&t.previousElementSibling?t.previousElementSibling:e.lastChild},Y=function(e,t,o){for(var r=!1,l=o(e,t);l;){if(l===e.firstChild){if(r)return;r=!0}var n=l.disabled||"true"===l.getAttribute("aria-disabled");if(l.hasAttribute("tabindex")&&!n)return void l.focus();l=o(e,l)}},D=(0,f.ZP)("div",{name:"MuiTabs",slot:"Root",overridesResolver:function(e,t){var o=e.ownerState;return[(0,n.Z)({},"& .".concat(F.scrollButtons),t.scrollButtons),(0,n.Z)({},"& .".concat(F.scrollButtons),o.scrollButtonsHideMobile&&t.scrollButtonsHideMobile),t.root,o.vertical&&t.vertical]}})((function(e){var t=e.ownerState,o=e.theme;return(0,a.Z)({overflow:"hidden",minHeight:48,WebkitOverflowScrolling:"touch",display:"flex"},t.vertical&&{flexDirection:"column"},t.scrollButtonsHideMobile&&(0,n.Z)({},"& .".concat(F.scrollButtons),(0,n.Z)({},o.breakpoints.down("sm"),{display:"none"})))})),V=(0,f.ZP)("div",{name:"MuiTabs",slot:"Scroller",overridesResolver:function(e,t){var o=e.ownerState;return[t.scroller,o.fixed&&t.fixed,o.hideScrollbar&&t.hideScrollbar,o.scrollableX&&t.scrollableX,o.scrollableY&&t.scrollableY]}})((function(e){var t=e.ownerState;return(0,a.Z)({position:"relative",display:"inline-block",flex:"1 1 auto",whiteSpace:"nowrap"},t.fixed&&{overflowX:"hidden",width:"100%"},t.hideScrollbar&&{scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}},t.scrollableX&&{overflowX:"auto",overflowY:"hidden"},t.scrollableY&&{overflowY:"auto",overflowX:"hidden"})})),O=(0,f.ZP)("div",{name:"MuiTabs",slot:"FlexContainer",overridesResolver:function(e,t){var o=e.ownerState;return[t.flexContainer,o.vertical&&t.flexContainerVertical,o.centered&&t.centered]}})((function(e){var t=e.ownerState;return(0,a.Z)({display:"flex"},t.vertical&&{flexDirection:"column"},t.centered&&{justifyContent:"center"})})),q=(0,f.ZP)("span",{name:"MuiTabs",slot:"Indicator",overridesResolver:function(e,t){return t.indicator}})((function(e){var t=e.ownerState,o=e.theme;return(0,a.Z)({position:"absolute",height:2,bottom:0,width:"100%",transition:o.transitions.create()},"primary"===t.indicatorColor&&{backgroundColor:(o.vars||o).palette.primary.main},"secondary"===t.indicatorColor&&{backgroundColor:(o.vars||o).palette.secondary.main},t.vertical&&{height:"100%",width:2,right:0})})),K=(0,f.ZP)((function(e){var t=e.onChange,o=(0,i.Z)(e,g),r=c.useRef(),l=c.useRef(null),n=function(){r.current=l.current.offsetHeight-l.current.clientHeight};return(0,Z.Z)((function(){var e=(0,b.Z)((function(){var e=r.current;n(),e!==r.current&&t(r.current)})),o=(0,w.Z)(l.current);return o.addEventListener("resize",e),function(){e.clear(),o.removeEventListener("resize",e)}}),[t]),c.useEffect((function(){n(),t(r.current)}),[t]),(0,x.jsx)("div",(0,a.Z)({style:C,ref:l},o))}),{name:"MuiTabs",slot:"ScrollbarSize"})({overflowX:"auto",overflowY:"hidden",scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}),_={},G=c.forwardRef((function(e,t){var o=(0,v.Z)({props:e,name:"MuiTabs"}),r=(0,p.Z)(),f="rtl"===r.direction,Z=o["aria-label"],g=o["aria-labelledby"],C=o.action,y=o.centered,B=void 0!==y&&y,M=o.children,W=o.className,P=o.component,E=void 0===P?"div":P,R=o.allowScrollButtonsMobile,T=void 0!==R&&R,I=o.indicatorColor,N=void 0===I?"primary":I,F=o.onChange,G=o.orientation,U=void 0===G?"horizontal":G,J=o.ScrollButtonComponent,Q=void 0===J?k:J,$=o.scrollButtons,ee=void 0===$?"auto":$,te=o.selectionFollowsFocus,oe=o.slots,re=void 0===oe?{}:oe,le=o.slotProps,ne=void 0===le?{}:le,ie=o.TabIndicatorProps,ae=void 0===ie?{}:ie,ce=o.TabScrollButtonProps,se=void 0===ce?{}:ce,de=o.textColor,ue=void 0===de?"primary":de,fe=o.value,ve=o.variant,pe=void 0===ve?"standard":ve,be=o.visibleScrollbar,he=void 0!==be&&be,me=(0,i.Z)(o,H),Se="scrollable"===pe,Ze="vertical"===U,we=Ze?"scrollTop":"scrollLeft",xe=Ze?"top":"left",ge=Ze?"bottom":"right",Ce=Ze?"clientHeight":"clientWidth",ye=Ze?"height":"width",Be=(0,a.Z)({},o,{component:E,allowScrollButtonsMobile:T,indicatorColor:N,orientation:U,vertical:Ze,scrollButtons:ee,textColor:ue,variant:pe,visibleScrollbar:he,fixed:!Se,hideScrollbar:Se&&!he,scrollableX:Se&&!Ze,scrollableY:Se&&Ze,centered:B&&!Se,scrollButtonsHideMobile:!T}),Me=function(e){var t=e.vertical,o=e.fixed,r=e.hideScrollbar,l=e.scrollableX,n=e.scrollableY,i=e.centered,a=e.scrollButtonsHideMobile,c=e.classes,s={root:["root",t&&"vertical"],scroller:["scroller",o&&"fixed",r&&"hideScrollbar",l&&"scrollableX",n&&"scrollableY"],flexContainer:["flexContainer",t&&"flexContainerVertical",i&&"centered"],indicator:["indicator"],scrollButtons:["scrollButtons",a&&"scrollButtonsHideMobile"],scrollableX:[l&&"scrollableX"],hideScrollbar:[r&&"hideScrollbar"]};return(0,d.Z)(s,z,c)}(Be),We=(0,u.Z)({elementType:re.StartScrollButtonIcon,externalSlotProps:ne.startScrollButtonIcon,ownerState:Be}),Pe=(0,u.Z)({elementType:re.EndScrollButtonIcon,externalSlotProps:ne.endScrollButtonIcon,ownerState:Be});var Ee=c.useState(!1),Re=(0,l.Z)(Ee,2),Te=Re[0],Ie=Re[1],Ne=c.useState(_),ke=(0,l.Z)(Ne,2),Le=ke[0],ze=ke[1],Fe=c.useState({start:!1,end:!1}),Ae=(0,l.Z)(Fe,2),He=Ae[0],je=Ae[1],Xe=c.useState({overflow:"hidden",scrollbarWidth:0}),Ye=(0,l.Z)(Xe,2),De=Ye[0],Ve=Ye[1],Oe=new Map,qe=c.useRef(null),Ke=c.useRef(null),_e=function(){var e,t,o=qe.current;if(o){var l=o.getBoundingClientRect();e={clientWidth:o.clientWidth,scrollLeft:o.scrollLeft,scrollTop:o.scrollTop,scrollLeftNormalized:m(o,r.direction),scrollWidth:o.scrollWidth,top:l.top,bottom:l.bottom,left:l.left,right:l.right}}if(o&&!1!==fe){var n=Ke.current.children;if(n.length>0){var i=n[Oe.get(fe)];0,t=i?i.getBoundingClientRect():null}}return{tabsMeta:e,tabMeta:t}},Ge=(0,L.Z)((function(){var e,t,o=_e(),r=o.tabsMeta,l=o.tabMeta,i=0;if(Ze)t="top",l&&r&&(i=l.top-r.top+r.scrollTop);else if(t=f?"right":"left",l&&r){var a=f?r.scrollLeftNormalized+r.clientWidth-r.scrollWidth:r.scrollLeft;i=(f?-1:1)*(l[t]-r[t]+a)}var c=(e={},(0,n.Z)(e,t,i),(0,n.Z)(e,ye,l?l[ye]:0),e);if(isNaN(Le[t])||isNaN(Le[ye]))ze(c);else{var s=Math.abs(Le[t]-c[t]),d=Math.abs(Le[ye]-c[ye]);(s>=1||d>=1)&&ze(c)}})),Ue=function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).animation;void 0===t||t?function(e,t,o){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(){},n=r.ease,i=void 0===n?S:n,a=r.duration,c=void 0===a?300:a,s=null,d=t[e],u=!1,f=function(){u=!0};d===o?l(new Error("Element already at target position")):requestAnimationFrame((function r(n){if(u)l(new Error("Animation cancelled"));else{null===s&&(s=n);var a=Math.min(1,(n-s)/c);t[e]=i(a)*(o-d)+d,a>=1?requestAnimationFrame((function(){l(null)})):requestAnimationFrame(r)}}))}(we,qe.current,e,{duration:r.transitions.duration.standard}):qe.current[we]=e},Je=function(e){var t=qe.current[we];Ze?t+=e:(t+=e*(f?-1:1),t*=f&&"reverse"===h()?-1:1),Ue(t)},Qe=function(){for(var e=qe.current[Ce],t=0,o=Array.from(Ke.current.children),r=0;re){0===r&&(t=e);break}t+=l[Ce]}return t},$e=function(){Je(-1*Qe())},et=function(){Je(Qe())},tt=c.useCallback((function(e){Ve({overflow:null,scrollbarWidth:e})}),[]),ot=(0,L.Z)((function(e){var t=_e(),o=t.tabsMeta,r=t.tabMeta;if(r&&o)if(r[xe]o[ge]){var n=o[we]+(r[ge]-o[ge]);Ue(n,{animation:e})}})),rt=(0,L.Z)((function(){if(Se&&!1!==ee){var e,t,o=qe.current,l=o.scrollTop,n=o.scrollHeight,i=o.clientHeight,a=o.scrollWidth,c=o.clientWidth;if(Ze)e=l>1,t=l1,t=f?s>1:s {\n const {\n classes,\n textColor,\n fullWidth,\n wrapped,\n icon,\n label,\n selected,\n disabled\n } = ownerState;\n const slots = {\n root: ['root', icon && label && 'labelIcon', `textColor${capitalize(textColor)}`, fullWidth && 'fullWidth', wrapped && 'wrapped', selected && 'selected', disabled && 'disabled'],\n iconWrapper: ['iconWrapper']\n };\n return composeClasses(slots, getTabUtilityClass, classes);\n};\nconst TabRoot = styled(ButtonBase, {\n name: 'MuiTab',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.label && ownerState.icon && styles.labelIcon, styles[`textColor${capitalize(ownerState.textColor)}`], ownerState.fullWidth && styles.fullWidth, ownerState.wrapped && styles.wrapped];\n }\n})(({\n theme,\n ownerState\n}) => _extends({}, theme.typography.button, {\n maxWidth: 360,\n minWidth: 90,\n position: 'relative',\n minHeight: 48,\n flexShrink: 0,\n padding: '12px 16px',\n overflow: 'hidden',\n whiteSpace: 'normal',\n textAlign: 'center'\n}, ownerState.label && {\n flexDirection: ownerState.iconPosition === 'top' || ownerState.iconPosition === 'bottom' ? 'column' : 'row'\n}, {\n lineHeight: 1.25\n}, ownerState.icon && ownerState.label && {\n minHeight: 72,\n paddingTop: 9,\n paddingBottom: 9,\n [`& > .${tabClasses.iconWrapper}`]: _extends({}, ownerState.iconPosition === 'top' && {\n marginBottom: 6\n }, ownerState.iconPosition === 'bottom' && {\n marginTop: 6\n }, ownerState.iconPosition === 'start' && {\n marginRight: theme.spacing(1)\n }, ownerState.iconPosition === 'end' && {\n marginLeft: theme.spacing(1)\n })\n}, ownerState.textColor === 'inherit' && {\n color: 'inherit',\n opacity: 0.6,\n // same opacity as theme.palette.text.secondary\n [`&.${tabClasses.selected}`]: {\n opacity: 1\n },\n [`&.${tabClasses.disabled}`]: {\n opacity: (theme.vars || theme).palette.action.disabledOpacity\n }\n}, ownerState.textColor === 'primary' && {\n color: (theme.vars || theme).palette.text.secondary,\n [`&.${tabClasses.selected}`]: {\n color: (theme.vars || theme).palette.primary.main\n },\n [`&.${tabClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n }\n}, ownerState.textColor === 'secondary' && {\n color: (theme.vars || theme).palette.text.secondary,\n [`&.${tabClasses.selected}`]: {\n color: (theme.vars || theme).palette.secondary.main\n },\n [`&.${tabClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n }\n}, ownerState.fullWidth && {\n flexShrink: 1,\n flexGrow: 1,\n flexBasis: 0,\n maxWidth: 'none'\n}, ownerState.wrapped && {\n fontSize: theme.typography.pxToRem(12)\n}));\nconst Tab = /*#__PURE__*/React.forwardRef(function Tab(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTab'\n });\n const {\n className,\n disabled = false,\n disableFocusRipple = false,\n // eslint-disable-next-line react/prop-types\n fullWidth,\n icon: iconProp,\n iconPosition = 'top',\n // eslint-disable-next-line react/prop-types\n indicator,\n label,\n onChange,\n onClick,\n onFocus,\n // eslint-disable-next-line react/prop-types\n selected,\n // eslint-disable-next-line react/prop-types\n selectionFollowsFocus,\n // eslint-disable-next-line react/prop-types\n textColor = 'inherit',\n value,\n wrapped = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n disabled,\n disableFocusRipple,\n selected,\n icon: !!iconProp,\n iconPosition,\n label: !!label,\n fullWidth,\n textColor,\n wrapped\n });\n const classes = useUtilityClasses(ownerState);\n const icon = iconProp && label && /*#__PURE__*/React.isValidElement(iconProp) ? /*#__PURE__*/React.cloneElement(iconProp, {\n className: clsx(classes.iconWrapper, iconProp.props.className)\n }) : iconProp;\n const handleClick = event => {\n if (!selected && onChange) {\n onChange(event, value);\n }\n if (onClick) {\n onClick(event);\n }\n };\n const handleFocus = event => {\n if (selectionFollowsFocus && !selected && onChange) {\n onChange(event, value);\n }\n if (onFocus) {\n onFocus(event);\n }\n };\n return /*#__PURE__*/_jsxs(TabRoot, _extends({\n focusRipple: !disableFocusRipple,\n className: clsx(classes.root, className),\n ref: ref,\n role: \"tab\",\n \"aria-selected\": selected,\n disabled: disabled,\n onClick: handleClick,\n onFocus: handleFocus,\n ownerState: ownerState,\n tabIndex: selected ? 0 : -1\n }, other, {\n children: [iconPosition === 'top' || iconPosition === 'start' ? /*#__PURE__*/_jsxs(React.Fragment, {\n children: [icon, label]\n }) : /*#__PURE__*/_jsxs(React.Fragment, {\n children: [label, icon]\n }), indicator]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Tab.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * This prop isn't supported.\n * Use the `component` prop if you need to change the children structure.\n */\n children: unsupportedProp,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the keyboard focus ripple is disabled.\n * @default false\n */\n disableFocusRipple: PropTypes.bool,\n /**\n * If `true`, the ripple effect is disabled.\n *\n * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n * @default false\n */\n disableRipple: PropTypes.bool,\n /**\n * The icon to display.\n */\n icon: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),\n /**\n * The position of the icon relative to the label.\n * @default 'top'\n */\n iconPosition: PropTypes.oneOf(['bottom', 'end', 'start', 'top']),\n /**\n * The label element.\n */\n label: PropTypes.node,\n /**\n * @ignore\n */\n onChange: PropTypes.func,\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * You can provide your own value. Otherwise, we fallback to the child position index.\n */\n value: PropTypes.any,\n /**\n * Tab labels appear in a single row.\n * They can use a second line if needed.\n * @default false\n */\n wrapped: PropTypes.bool\n} : void 0;\nexport default Tab;","// Source from https://github.com/alitaheri/normalize-scroll-left\nlet cachedType;\n\n/**\n * Based on the jquery plugin https://github.com/othree/jquery.rtl-scroll-type\n *\n * Types of scrollLeft, assuming scrollWidth=100 and direction is rtl.\n *\n * Type | <- Most Left | Most Right -> | Initial\n * ---------------- | ------------ | ------------- | -------\n * default | 0 | 100 | 100\n * negative (spec*) | -100 | 0 | 0\n * reverse | 100 | 0 | 0\n *\n * Edge 85: default\n * Safari 14: negative\n * Chrome 85: negative\n * Firefox 81: negative\n * IE11: reverse\n *\n * spec* https://drafts.csswg.org/cssom-view/#dom-window-scroll\n */\nexport function detectScrollType() {\n if (cachedType) {\n return cachedType;\n }\n const dummy = document.createElement('div');\n const container = document.createElement('div');\n container.style.width = '10px';\n container.style.height = '1px';\n dummy.appendChild(container);\n dummy.dir = 'rtl';\n dummy.style.fontSize = '14px';\n dummy.style.width = '4px';\n dummy.style.height = '1px';\n dummy.style.position = 'absolute';\n dummy.style.top = '-1000px';\n dummy.style.overflow = 'scroll';\n document.body.appendChild(dummy);\n cachedType = 'reverse';\n if (dummy.scrollLeft > 0) {\n cachedType = 'default';\n } else {\n dummy.scrollLeft = 1;\n if (dummy.scrollLeft === 0) {\n cachedType = 'negative';\n }\n }\n document.body.removeChild(dummy);\n return cachedType;\n}\n\n// Based on https://stackoverflow.com/a/24394376\nexport function getNormalizedScrollLeft(element, direction) {\n const scrollLeft = element.scrollLeft;\n\n // Perform the calculations only when direction is rtl to avoid messing up the ltr behavior\n if (direction !== 'rtl') {\n return scrollLeft;\n }\n const type = detectScrollType();\n switch (type) {\n case 'negative':\n return element.scrollWidth - element.clientWidth + scrollLeft;\n case 'reverse':\n return element.scrollWidth - element.clientWidth - scrollLeft;\n default:\n return scrollLeft;\n }\n}","function easeInOutSin(time) {\n return (1 + Math.sin(Math.PI * time - Math.PI / 2)) / 2;\n}\nexport default function animate(property, element, to, options = {}, cb = () => {}) {\n const {\n ease = easeInOutSin,\n duration = 300 // standard\n } = options;\n let start = null;\n const from = element[property];\n let cancelled = false;\n const cancel = () => {\n cancelled = true;\n };\n const step = timestamp => {\n if (cancelled) {\n cb(new Error('Animation cancelled'));\n return;\n }\n if (start === null) {\n start = timestamp;\n }\n const time = Math.min(1, (timestamp - start) / duration);\n element[property] = ease(time) * (to - from) + from;\n if (time >= 1) {\n requestAnimationFrame(() => {\n cb(null);\n });\n return;\n }\n requestAnimationFrame(step);\n };\n if (from === to) {\n cb(new Error('Element already at target position'));\n return cancel;\n }\n requestAnimationFrame(step);\n return cancel;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onChange\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from '../utils/debounce';\nimport { ownerWindow, unstable_useEnhancedEffect as useEnhancedEffect } from '../utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst styles = {\n width: 99,\n height: 99,\n position: 'absolute',\n top: -9999,\n overflow: 'scroll'\n};\n\n/**\n * @ignore - internal component.\n * The component originates from https://github.com/STORIS/react-scrollbar-size.\n * It has been moved into the core in order to minimize the bundle size.\n */\nexport default function ScrollbarSize(props) {\n const {\n onChange\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const scrollbarHeight = React.useRef();\n const nodeRef = React.useRef(null);\n const setMeasurements = () => {\n scrollbarHeight.current = nodeRef.current.offsetHeight - nodeRef.current.clientHeight;\n };\n useEnhancedEffect(() => {\n const handleResize = debounce(() => {\n const prevHeight = scrollbarHeight.current;\n setMeasurements();\n if (prevHeight !== scrollbarHeight.current) {\n onChange(scrollbarHeight.current);\n }\n });\n const containerWindow = ownerWindow(nodeRef.current);\n containerWindow.addEventListener('resize', handleResize);\n return () => {\n handleResize.clear();\n containerWindow.removeEventListener('resize', handleResize);\n };\n }, [onChange]);\n React.useEffect(() => {\n setMeasurements();\n onChange(scrollbarHeight.current);\n }, [onChange]);\n return /*#__PURE__*/_jsx(\"div\", _extends({\n style: styles,\n ref: nodeRef\n }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? ScrollbarSize.propTypes = {\n onChange: PropTypes.func.isRequired\n} : void 0;","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z\"\n}), 'KeyboardArrowLeft');","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z\"\n}), 'KeyboardArrowRight');","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTabScrollButtonUtilityClass(slot) {\n return generateUtilityClass('MuiTabScrollButton', slot);\n}\nconst tabScrollButtonClasses = generateUtilityClasses('MuiTabScrollButton', ['root', 'vertical', 'horizontal', 'disabled']);\nexport default tabScrollButtonClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"slots\", \"slotProps\", \"direction\", \"orientation\", \"disabled\"];\n/* eslint-disable jsx-a11y/aria-role */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses, useSlotProps } from '@mui/base';\nimport KeyboardArrowLeft from '../internal/svg-icons/KeyboardArrowLeft';\nimport KeyboardArrowRight from '../internal/svg-icons/KeyboardArrowRight';\nimport ButtonBase from '../ButtonBase';\nimport useTheme from '../styles/useTheme';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport tabScrollButtonClasses, { getTabScrollButtonUtilityClass } from './tabScrollButtonClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n orientation,\n disabled\n } = ownerState;\n const slots = {\n root: ['root', orientation, disabled && 'disabled']\n };\n return composeClasses(slots, getTabScrollButtonUtilityClass, classes);\n};\nconst TabScrollButtonRoot = styled(ButtonBase, {\n name: 'MuiTabScrollButton',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.orientation && styles[ownerState.orientation]];\n }\n})(({\n ownerState\n}) => _extends({\n width: 40,\n flexShrink: 0,\n opacity: 0.8,\n [`&.${tabScrollButtonClasses.disabled}`]: {\n opacity: 0\n }\n}, ownerState.orientation === 'vertical' && {\n width: '100%',\n height: 40,\n '& svg': {\n transform: `rotate(${ownerState.isRtl ? -90 : 90}deg)`\n }\n}));\nconst TabScrollButton = /*#__PURE__*/React.forwardRef(function TabScrollButton(inProps, ref) {\n var _slots$StartScrollBut, _slots$EndScrollButto;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTabScrollButton'\n });\n const {\n className,\n slots = {},\n slotProps = {},\n direction\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const theme = useTheme();\n const isRtl = theme.direction === 'rtl';\n const ownerState = _extends({\n isRtl\n }, props);\n const classes = useUtilityClasses(ownerState);\n const StartButtonIcon = (_slots$StartScrollBut = slots.StartScrollButtonIcon) != null ? _slots$StartScrollBut : KeyboardArrowLeft;\n const EndButtonIcon = (_slots$EndScrollButto = slots.EndScrollButtonIcon) != null ? _slots$EndScrollButto : KeyboardArrowRight;\n const startButtonIconProps = useSlotProps({\n elementType: StartButtonIcon,\n externalSlotProps: slotProps.startScrollButtonIcon,\n additionalProps: {\n fontSize: 'small'\n },\n ownerState\n });\n const endButtonIconProps = useSlotProps({\n elementType: EndButtonIcon,\n externalSlotProps: slotProps.endScrollButtonIcon,\n additionalProps: {\n fontSize: 'small'\n },\n ownerState\n });\n return /*#__PURE__*/_jsx(TabScrollButtonRoot, _extends({\n component: \"div\",\n className: clsx(classes.root, className),\n ref: ref,\n role: null,\n ownerState: ownerState,\n tabIndex: null\n }, other, {\n children: direction === 'left' ? /*#__PURE__*/_jsx(StartButtonIcon, _extends({}, startButtonIconProps)) : /*#__PURE__*/_jsx(EndButtonIcon, _extends({}, endButtonIconProps))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TabScrollButton.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The direction the button should indicate.\n */\n direction: PropTypes.oneOf(['left', 'right']).isRequired,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * The component orientation (layout flow direction).\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']).isRequired,\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n * @default {}\n */\n slotProps: PropTypes.shape({\n endScrollButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n startScrollButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside.\n * @default {}\n */\n slots: PropTypes.shape({\n EndScrollButtonIcon: PropTypes.elementType,\n StartScrollButtonIcon: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TabScrollButton;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTabsUtilityClass(slot) {\n return generateUtilityClass('MuiTabs', slot);\n}\nconst tabsClasses = generateUtilityClasses('MuiTabs', ['root', 'vertical', 'flexContainer', 'flexContainerVertical', 'centered', 'scroller', 'fixed', 'scrollableX', 'scrollableY', 'hideScrollbar', 'scrollButtons', 'scrollButtonsHideMobile', 'indicator']);\nexport default tabsClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"aria-label\", \"aria-labelledby\", \"action\", \"centered\", \"children\", \"className\", \"component\", \"allowScrollButtonsMobile\", \"indicatorColor\", \"onChange\", \"orientation\", \"ScrollButtonComponent\", \"scrollButtons\", \"selectionFollowsFocus\", \"slots\", \"slotProps\", \"TabIndicatorProps\", \"TabScrollButtonProps\", \"textColor\", \"value\", \"variant\", \"visibleScrollbar\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses, useSlotProps } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useTheme from '../styles/useTheme';\nimport debounce from '../utils/debounce';\nimport { getNormalizedScrollLeft, detectScrollType } from '../utils/scrollLeft';\nimport animate from '../internal/animate';\nimport ScrollbarSize from './ScrollbarSize';\nimport TabScrollButton from '../TabScrollButton';\nimport useEventCallback from '../utils/useEventCallback';\nimport tabsClasses, { getTabsUtilityClass } from './tabsClasses';\nimport ownerDocument from '../utils/ownerDocument';\nimport ownerWindow from '../utils/ownerWindow';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst nextItem = (list, item) => {\n if (list === item) {\n return list.firstChild;\n }\n if (item && item.nextElementSibling) {\n return item.nextElementSibling;\n }\n return list.firstChild;\n};\nconst previousItem = (list, item) => {\n if (list === item) {\n return list.lastChild;\n }\n if (item && item.previousElementSibling) {\n return item.previousElementSibling;\n }\n return list.lastChild;\n};\nconst moveFocus = (list, currentFocus, traversalFunction) => {\n let wrappedOnce = false;\n let nextFocus = traversalFunction(list, currentFocus);\n while (nextFocus) {\n // Prevent infinite loop.\n if (nextFocus === list.firstChild) {\n if (wrappedOnce) {\n return;\n }\n wrappedOnce = true;\n }\n\n // Same logic as useAutocomplete.js\n const nextFocusDisabled = nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n if (!nextFocus.hasAttribute('tabindex') || nextFocusDisabled) {\n // Move to the next element.\n nextFocus = traversalFunction(list, nextFocus);\n } else {\n nextFocus.focus();\n return;\n }\n }\n};\nconst useUtilityClasses = ownerState => {\n const {\n vertical,\n fixed,\n hideScrollbar,\n scrollableX,\n scrollableY,\n centered,\n scrollButtonsHideMobile,\n classes\n } = ownerState;\n const slots = {\n root: ['root', vertical && 'vertical'],\n scroller: ['scroller', fixed && 'fixed', hideScrollbar && 'hideScrollbar', scrollableX && 'scrollableX', scrollableY && 'scrollableY'],\n flexContainer: ['flexContainer', vertical && 'flexContainerVertical', centered && 'centered'],\n indicator: ['indicator'],\n scrollButtons: ['scrollButtons', scrollButtonsHideMobile && 'scrollButtonsHideMobile'],\n scrollableX: [scrollableX && 'scrollableX'],\n hideScrollbar: [hideScrollbar && 'hideScrollbar']\n };\n return composeClasses(slots, getTabsUtilityClass, classes);\n};\nconst TabsRoot = styled('div', {\n name: 'MuiTabs',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${tabsClasses.scrollButtons}`]: styles.scrollButtons\n }, {\n [`& .${tabsClasses.scrollButtons}`]: ownerState.scrollButtonsHideMobile && styles.scrollButtonsHideMobile\n }, styles.root, ownerState.vertical && styles.vertical];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n overflow: 'hidden',\n minHeight: 48,\n // Add iOS momentum scrolling for iOS < 13.0\n WebkitOverflowScrolling: 'touch',\n display: 'flex'\n}, ownerState.vertical && {\n flexDirection: 'column'\n}, ownerState.scrollButtonsHideMobile && {\n [`& .${tabsClasses.scrollButtons}`]: {\n [theme.breakpoints.down('sm')]: {\n display: 'none'\n }\n }\n}));\nconst TabsScroller = styled('div', {\n name: 'MuiTabs',\n slot: 'Scroller',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.scroller, ownerState.fixed && styles.fixed, ownerState.hideScrollbar && styles.hideScrollbar, ownerState.scrollableX && styles.scrollableX, ownerState.scrollableY && styles.scrollableY];\n }\n})(({\n ownerState\n}) => _extends({\n position: 'relative',\n display: 'inline-block',\n flex: '1 1 auto',\n whiteSpace: 'nowrap'\n}, ownerState.fixed && {\n overflowX: 'hidden',\n width: '100%'\n}, ownerState.hideScrollbar && {\n // Hide dimensionless scrollbar on macOS\n scrollbarWidth: 'none',\n // Firefox\n '&::-webkit-scrollbar': {\n display: 'none' // Safari + Chrome\n }\n}, ownerState.scrollableX && {\n overflowX: 'auto',\n overflowY: 'hidden'\n}, ownerState.scrollableY && {\n overflowY: 'auto',\n overflowX: 'hidden'\n}));\nconst FlexContainer = styled('div', {\n name: 'MuiTabs',\n slot: 'FlexContainer',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.flexContainer, ownerState.vertical && styles.flexContainerVertical, ownerState.centered && styles.centered];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'flex'\n}, ownerState.vertical && {\n flexDirection: 'column'\n}, ownerState.centered && {\n justifyContent: 'center'\n}));\nconst TabsIndicator = styled('span', {\n name: 'MuiTabs',\n slot: 'Indicator',\n overridesResolver: (props, styles) => styles.indicator\n})(({\n ownerState,\n theme\n}) => _extends({\n position: 'absolute',\n height: 2,\n bottom: 0,\n width: '100%',\n transition: theme.transitions.create()\n}, ownerState.indicatorColor === 'primary' && {\n backgroundColor: (theme.vars || theme).palette.primary.main\n}, ownerState.indicatorColor === 'secondary' && {\n backgroundColor: (theme.vars || theme).palette.secondary.main\n}, ownerState.vertical && {\n height: '100%',\n width: 2,\n right: 0\n}));\nconst TabsScrollbarSize = styled(ScrollbarSize, {\n name: 'MuiTabs',\n slot: 'ScrollbarSize'\n})({\n overflowX: 'auto',\n overflowY: 'hidden',\n // Hide dimensionless scrollbar on macOS\n scrollbarWidth: 'none',\n // Firefox\n '&::-webkit-scrollbar': {\n display: 'none' // Safari + Chrome\n }\n});\n\nconst defaultIndicatorStyle = {};\nlet warnedOnceTabPresent = false;\nconst Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTabs'\n });\n const theme = useTheme();\n const isRtl = theme.direction === 'rtl';\n const {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n action,\n centered = false,\n children: childrenProp,\n className,\n component = 'div',\n allowScrollButtonsMobile = false,\n indicatorColor = 'primary',\n onChange,\n orientation = 'horizontal',\n ScrollButtonComponent = TabScrollButton,\n scrollButtons = 'auto',\n selectionFollowsFocus,\n slots = {},\n slotProps = {},\n TabIndicatorProps = {},\n TabScrollButtonProps = {},\n textColor = 'primary',\n value,\n variant = 'standard',\n visibleScrollbar = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const scrollable = variant === 'scrollable';\n const vertical = orientation === 'vertical';\n const scrollStart = vertical ? 'scrollTop' : 'scrollLeft';\n const start = vertical ? 'top' : 'left';\n const end = vertical ? 'bottom' : 'right';\n const clientSize = vertical ? 'clientHeight' : 'clientWidth';\n const size = vertical ? 'height' : 'width';\n const ownerState = _extends({}, props, {\n component,\n allowScrollButtonsMobile,\n indicatorColor,\n orientation,\n vertical,\n scrollButtons,\n textColor,\n variant,\n visibleScrollbar,\n fixed: !scrollable,\n hideScrollbar: scrollable && !visibleScrollbar,\n scrollableX: scrollable && !vertical,\n scrollableY: scrollable && vertical,\n centered: centered && !scrollable,\n scrollButtonsHideMobile: !allowScrollButtonsMobile\n });\n const classes = useUtilityClasses(ownerState);\n const startScrollButtonIconProps = useSlotProps({\n elementType: slots.StartScrollButtonIcon,\n externalSlotProps: slotProps.startScrollButtonIcon,\n ownerState\n });\n const endScrollButtonIconProps = useSlotProps({\n elementType: slots.EndScrollButtonIcon,\n externalSlotProps: slotProps.endScrollButtonIcon,\n ownerState\n });\n if (process.env.NODE_ENV !== 'production') {\n if (centered && scrollable) {\n console.error('MUI: You can not use the `centered={true}` and `variant=\"scrollable\"` properties ' + 'at the same time on a `Tabs` component.');\n }\n }\n const [mounted, setMounted] = React.useState(false);\n const [indicatorStyle, setIndicatorStyle] = React.useState(defaultIndicatorStyle);\n const [displayScroll, setDisplayScroll] = React.useState({\n start: false,\n end: false\n });\n const [scrollerStyle, setScrollerStyle] = React.useState({\n overflow: 'hidden',\n scrollbarWidth: 0\n });\n const valueToIndex = new Map();\n const tabsRef = React.useRef(null);\n const tabListRef = React.useRef(null);\n const getTabsMeta = () => {\n const tabsNode = tabsRef.current;\n let tabsMeta;\n if (tabsNode) {\n const rect = tabsNode.getBoundingClientRect();\n // create a new object with ClientRect class props + scrollLeft\n tabsMeta = {\n clientWidth: tabsNode.clientWidth,\n scrollLeft: tabsNode.scrollLeft,\n scrollTop: tabsNode.scrollTop,\n scrollLeftNormalized: getNormalizedScrollLeft(tabsNode, theme.direction),\n scrollWidth: tabsNode.scrollWidth,\n top: rect.top,\n bottom: rect.bottom,\n left: rect.left,\n right: rect.right\n };\n }\n let tabMeta;\n if (tabsNode && value !== false) {\n const children = tabListRef.current.children;\n if (children.length > 0) {\n const tab = children[valueToIndex.get(value)];\n if (process.env.NODE_ENV !== 'production') {\n if (!tab) {\n console.error([`MUI: The \\`value\\` provided to the Tabs component is invalid.`, `None of the Tabs' children match with \"${value}\".`, valueToIndex.keys ? `You can provide one of the following values: ${Array.from(valueToIndex.keys()).join(', ')}.` : null].join('\\n'));\n }\n }\n tabMeta = tab ? tab.getBoundingClientRect() : null;\n if (process.env.NODE_ENV !== 'production') {\n if (process.env.NODE_ENV !== 'test' && !warnedOnceTabPresent && tabMeta && tabMeta.width === 0 && tabMeta.height === 0 &&\n // if the whole Tabs component is hidden, don't warn\n tabsMeta.clientWidth !== 0) {\n tabsMeta = null;\n console.error(['MUI: The `value` provided to the Tabs component is invalid.', `The Tab with this \\`value\\` (\"${value}\") is not part of the document layout.`, \"Make sure the tab item is present in the document or that it's not `display: none`.\"].join('\\n'));\n warnedOnceTabPresent = true;\n }\n }\n }\n }\n return {\n tabsMeta,\n tabMeta\n };\n };\n const updateIndicatorState = useEventCallback(() => {\n const {\n tabsMeta,\n tabMeta\n } = getTabsMeta();\n let startValue = 0;\n let startIndicator;\n if (vertical) {\n startIndicator = 'top';\n if (tabMeta && tabsMeta) {\n startValue = tabMeta.top - tabsMeta.top + tabsMeta.scrollTop;\n }\n } else {\n startIndicator = isRtl ? 'right' : 'left';\n if (tabMeta && tabsMeta) {\n const correction = isRtl ? tabsMeta.scrollLeftNormalized + tabsMeta.clientWidth - tabsMeta.scrollWidth : tabsMeta.scrollLeft;\n startValue = (isRtl ? -1 : 1) * (tabMeta[startIndicator] - tabsMeta[startIndicator] + correction);\n }\n }\n const newIndicatorStyle = {\n [startIndicator]: startValue,\n // May be wrong until the font is loaded.\n [size]: tabMeta ? tabMeta[size] : 0\n };\n\n // IE11 support, replace with Number.isNaN\n // eslint-disable-next-line no-restricted-globals\n if (isNaN(indicatorStyle[startIndicator]) || isNaN(indicatorStyle[size])) {\n setIndicatorStyle(newIndicatorStyle);\n } else {\n const dStart = Math.abs(indicatorStyle[startIndicator] - newIndicatorStyle[startIndicator]);\n const dSize = Math.abs(indicatorStyle[size] - newIndicatorStyle[size]);\n if (dStart >= 1 || dSize >= 1) {\n setIndicatorStyle(newIndicatorStyle);\n }\n }\n });\n const scroll = (scrollValue, {\n animation = true\n } = {}) => {\n if (animation) {\n animate(scrollStart, tabsRef.current, scrollValue, {\n duration: theme.transitions.duration.standard\n });\n } else {\n tabsRef.current[scrollStart] = scrollValue;\n }\n };\n const moveTabsScroll = delta => {\n let scrollValue = tabsRef.current[scrollStart];\n if (vertical) {\n scrollValue += delta;\n } else {\n scrollValue += delta * (isRtl ? -1 : 1);\n // Fix for Edge\n scrollValue *= isRtl && detectScrollType() === 'reverse' ? -1 : 1;\n }\n scroll(scrollValue);\n };\n const getScrollSize = () => {\n const containerSize = tabsRef.current[clientSize];\n let totalSize = 0;\n const children = Array.from(tabListRef.current.children);\n for (let i = 0; i < children.length; i += 1) {\n const tab = children[i];\n if (totalSize + tab[clientSize] > containerSize) {\n // If the first item is longer than the container size, then only scroll\n // by the container size.\n if (i === 0) {\n totalSize = containerSize;\n }\n break;\n }\n totalSize += tab[clientSize];\n }\n return totalSize;\n };\n const handleStartScrollClick = () => {\n moveTabsScroll(-1 * getScrollSize());\n };\n const handleEndScrollClick = () => {\n moveTabsScroll(getScrollSize());\n };\n\n // TODO Remove as browser support for hiding the scrollbar\n // with CSS improves.\n const handleScrollbarSizeChange = React.useCallback(scrollbarWidth => {\n setScrollerStyle({\n overflow: null,\n scrollbarWidth\n });\n }, []);\n const getConditionalElements = () => {\n const conditionalElements = {};\n conditionalElements.scrollbarSizeListener = scrollable ? /*#__PURE__*/_jsx(TabsScrollbarSize, {\n onChange: handleScrollbarSizeChange,\n className: clsx(classes.scrollableX, classes.hideScrollbar)\n }) : null;\n const scrollButtonsActive = displayScroll.start || displayScroll.end;\n const showScrollButtons = scrollable && (scrollButtons === 'auto' && scrollButtonsActive || scrollButtons === true);\n conditionalElements.scrollButtonStart = showScrollButtons ? /*#__PURE__*/_jsx(ScrollButtonComponent, _extends({\n slots: {\n StartScrollButtonIcon: slots.StartScrollButtonIcon\n },\n slotProps: {\n startScrollButtonIcon: startScrollButtonIconProps\n },\n orientation: orientation,\n direction: isRtl ? 'right' : 'left',\n onClick: handleStartScrollClick,\n disabled: !displayScroll.start\n }, TabScrollButtonProps, {\n className: clsx(classes.scrollButtons, TabScrollButtonProps.className)\n })) : null;\n conditionalElements.scrollButtonEnd = showScrollButtons ? /*#__PURE__*/_jsx(ScrollButtonComponent, _extends({\n slots: {\n EndScrollButtonIcon: slots.EndScrollButtonIcon\n },\n slotProps: {\n endScrollButtonIcon: endScrollButtonIconProps\n },\n orientation: orientation,\n direction: isRtl ? 'left' : 'right',\n onClick: handleEndScrollClick,\n disabled: !displayScroll.end\n }, TabScrollButtonProps, {\n className: clsx(classes.scrollButtons, TabScrollButtonProps.className)\n })) : null;\n return conditionalElements;\n };\n const scrollSelectedIntoView = useEventCallback(animation => {\n const {\n tabsMeta,\n tabMeta\n } = getTabsMeta();\n if (!tabMeta || !tabsMeta) {\n return;\n }\n if (tabMeta[start] < tabsMeta[start]) {\n // left side of button is out of view\n const nextScrollStart = tabsMeta[scrollStart] + (tabMeta[start] - tabsMeta[start]);\n scroll(nextScrollStart, {\n animation\n });\n } else if (tabMeta[end] > tabsMeta[end]) {\n // right side of button is out of view\n const nextScrollStart = tabsMeta[scrollStart] + (tabMeta[end] - tabsMeta[end]);\n scroll(nextScrollStart, {\n animation\n });\n }\n });\n const updateScrollButtonState = useEventCallback(() => {\n if (scrollable && scrollButtons !== false) {\n const {\n scrollTop,\n scrollHeight,\n clientHeight,\n scrollWidth,\n clientWidth\n } = tabsRef.current;\n let showStartScroll;\n let showEndScroll;\n if (vertical) {\n showStartScroll = scrollTop > 1;\n showEndScroll = scrollTop < scrollHeight - clientHeight - 1;\n } else {\n const scrollLeft = getNormalizedScrollLeft(tabsRef.current, theme.direction);\n // use 1 for the potential rounding error with browser zooms.\n showStartScroll = isRtl ? scrollLeft < scrollWidth - clientWidth - 1 : scrollLeft > 1;\n showEndScroll = !isRtl ? scrollLeft < scrollWidth - clientWidth - 1 : scrollLeft > 1;\n }\n if (showStartScroll !== displayScroll.start || showEndScroll !== displayScroll.end) {\n setDisplayScroll({\n start: showStartScroll,\n end: showEndScroll\n });\n }\n }\n });\n React.useEffect(() => {\n const handleResize = debounce(() => {\n // If the Tabs component is replaced by Suspense with a fallback, the last\n // ResizeObserver's handler that runs because of the change in the layout is trying to\n // access a dom node that is no longer there (as the fallback component is being shown instead).\n // See https://github.com/mui/material-ui/issues/33276\n // TODO: Add tests that will ensure the component is not failing when\n // replaced by Suspense with a fallback, once React is updated to version 18\n if (tabsRef.current) {\n updateIndicatorState();\n updateScrollButtonState();\n }\n });\n const win = ownerWindow(tabsRef.current);\n win.addEventListener('resize', handleResize);\n let resizeObserver;\n if (typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(handleResize);\n Array.from(tabListRef.current.children).forEach(child => {\n resizeObserver.observe(child);\n });\n }\n return () => {\n handleResize.clear();\n win.removeEventListener('resize', handleResize);\n if (resizeObserver) {\n resizeObserver.disconnect();\n }\n };\n }, [updateIndicatorState, updateScrollButtonState]);\n const handleTabsScroll = React.useMemo(() => debounce(() => {\n updateScrollButtonState();\n }), [updateScrollButtonState]);\n React.useEffect(() => {\n return () => {\n handleTabsScroll.clear();\n };\n }, [handleTabsScroll]);\n React.useEffect(() => {\n setMounted(true);\n }, []);\n React.useEffect(() => {\n updateIndicatorState();\n updateScrollButtonState();\n });\n React.useEffect(() => {\n // Don't animate on the first render.\n scrollSelectedIntoView(defaultIndicatorStyle !== indicatorStyle);\n }, [scrollSelectedIntoView, indicatorStyle]);\n React.useImperativeHandle(action, () => ({\n updateIndicator: updateIndicatorState,\n updateScrollButtons: updateScrollButtonState\n }), [updateIndicatorState, updateScrollButtonState]);\n const indicator = /*#__PURE__*/_jsx(TabsIndicator, _extends({}, TabIndicatorProps, {\n className: clsx(classes.indicator, TabIndicatorProps.className),\n ownerState: ownerState,\n style: _extends({}, indicatorStyle, TabIndicatorProps.style)\n }));\n let childIndex = 0;\n const children = React.Children.map(childrenProp, child => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return null;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"MUI: The Tabs component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n const childValue = child.props.value === undefined ? childIndex : child.props.value;\n valueToIndex.set(childValue, childIndex);\n const selected = childValue === value;\n childIndex += 1;\n return /*#__PURE__*/React.cloneElement(child, _extends({\n fullWidth: variant === 'fullWidth',\n indicator: selected && !mounted && indicator,\n selected,\n selectionFollowsFocus,\n onChange,\n textColor,\n value: childValue\n }, childIndex === 1 && value === false && !child.props.tabIndex ? {\n tabIndex: 0\n } : {}));\n });\n const handleKeyDown = event => {\n const list = tabListRef.current;\n const currentFocus = ownerDocument(list).activeElement;\n // Keyboard navigation assumes that [role=\"tab\"] are siblings\n // though we might warn in the future about nested, interactive elements\n // as a a11y violation\n const role = currentFocus.getAttribute('role');\n if (role !== 'tab') {\n return;\n }\n let previousItemKey = orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp';\n let nextItemKey = orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown';\n if (orientation === 'horizontal' && isRtl) {\n // swap previousItemKey with nextItemKey\n previousItemKey = 'ArrowRight';\n nextItemKey = 'ArrowLeft';\n }\n switch (event.key) {\n case previousItemKey:\n event.preventDefault();\n moveFocus(list, currentFocus, previousItem);\n break;\n case nextItemKey:\n event.preventDefault();\n moveFocus(list, currentFocus, nextItem);\n break;\n case 'Home':\n event.preventDefault();\n moveFocus(list, null, nextItem);\n break;\n case 'End':\n event.preventDefault();\n moveFocus(list, null, previousItem);\n break;\n default:\n break;\n }\n };\n const conditionalElements = getConditionalElements();\n return /*#__PURE__*/_jsxs(TabsRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref,\n as: component\n }, other, {\n children: [conditionalElements.scrollButtonStart, conditionalElements.scrollbarSizeListener, /*#__PURE__*/_jsxs(TabsScroller, {\n className: classes.scroller,\n ownerState: ownerState,\n style: {\n overflow: scrollerStyle.overflow,\n [vertical ? `margin${isRtl ? 'Left' : 'Right'}` : 'marginBottom']: visibleScrollbar ? undefined : -scrollerStyle.scrollbarWidth\n },\n ref: tabsRef,\n onScroll: handleTabsScroll,\n children: [/*#__PURE__*/_jsx(FlexContainer, {\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-orientation\": orientation === 'vertical' ? 'vertical' : null,\n className: classes.flexContainer,\n ownerState: ownerState,\n onKeyDown: handleKeyDown,\n ref: tabListRef,\n role: \"tablist\",\n children: children\n }), mounted && indicator]\n }), conditionalElements.scrollButtonEnd]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Tabs.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Callback fired when the component mounts.\n * This is useful when you want to trigger an action programmatically.\n * It supports two actions: `updateIndicator()` and `updateScrollButtons()`\n *\n * @param {object} actions This object contains all possible actions\n * that can be triggered programmatically.\n */\n action: refType,\n /**\n * If `true`, the scroll buttons aren't forced hidden on mobile.\n * By default the scroll buttons are hidden on mobile and takes precedence over `scrollButtons`.\n * @default false\n */\n allowScrollButtonsMobile: PropTypes.bool,\n /**\n * The label for the Tabs as a string.\n */\n 'aria-label': PropTypes.string,\n /**\n * An id or list of ids separated by a space that label the Tabs.\n */\n 'aria-labelledby': PropTypes.string,\n /**\n * If `true`, the tabs are centered.\n * This prop is intended for large views.\n * @default false\n */\n centered: PropTypes.bool,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Determines the color of the indicator.\n * @default 'primary'\n */\n indicatorColor: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n /**\n * Callback fired when the value changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback. **Warning**: This is a generic event not a change event.\n * @param {any} value We default to the index of the child (number)\n */\n onChange: PropTypes.func,\n /**\n * The component orientation (layout flow direction).\n * @default 'horizontal'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n /**\n * The component used to render the scroll buttons.\n * @default TabScrollButton\n */\n ScrollButtonComponent: PropTypes.elementType,\n /**\n * Determine behavior of scroll buttons when tabs are set to scroll:\n *\n * - `auto` will only present them when not all the items are visible.\n * - `true` will always present them.\n * - `false` will never present them.\n *\n * By default the scroll buttons are hidden on mobile.\n * This behavior can be disabled with `allowScrollButtonsMobile`.\n * @default 'auto'\n */\n scrollButtons: PropTypes /* @typescript-to-proptypes-ignore */.oneOf(['auto', false, true]),\n /**\n * If `true` the selected tab changes on focus. Otherwise it only\n * changes on activation.\n */\n selectionFollowsFocus: PropTypes.bool,\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n * @default {}\n */\n slotProps: PropTypes.shape({\n endScrollButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n startScrollButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside.\n * @default {}\n */\n slots: PropTypes.shape({\n EndScrollButtonIcon: PropTypes.elementType,\n StartScrollButtonIcon: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Props applied to the tab indicator element.\n * @default {}\n */\n TabIndicatorProps: PropTypes.object,\n /**\n * Props applied to the [`TabScrollButton`](/material-ui/api/tab-scroll-button/) element.\n * @default {}\n */\n TabScrollButtonProps: PropTypes.object,\n /**\n * Determines the color of the `Tab`.\n * @default 'primary'\n */\n textColor: PropTypes.oneOf(['inherit', 'primary', 'secondary']),\n /**\n * The value of the currently selected `Tab`.\n * If you don't want any selected `Tab`, you can set this prop to `false`.\n */\n value: PropTypes.any,\n /**\n * Determines additional display behavior of the tabs:\n *\n * - `scrollable` will invoke scrolling properties and allow for horizontally\n * scrolling (or swiping) of the tab bar.\n * -`fullWidth` will make the tabs grow to use all the available space,\n * which should be used for small views, like on mobile.\n * - `standard` will render the default state.\n * @default 'standard'\n */\n variant: PropTypes.oneOf(['fullWidth', 'scrollable', 'standard']),\n /**\n * If `true`, the scrollbar is visible. It can be useful when displaying\n * a long vertical list of tabs.\n * @default false\n */\n visibleScrollbar: PropTypes.bool\n} : void 0;\nexport default Tabs;"],"names":["getTabUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","TabRoot","styled","ButtonBase","name","overridesResolver","props","styles","ownerState","root","label","icon","labelIcon","concat","capitalize","textColor","fullWidth","wrapped","_ref","_ref3","_ref4","_ref5","theme","_extends","typography","button","maxWidth","minWidth","position","minHeight","flexShrink","padding","overflow","whiteSpace","textAlign","flexDirection","iconPosition","lineHeight","_defineProperty","paddingTop","paddingBottom","tabClasses","iconWrapper","marginBottom","marginTop","marginRight","spacing","marginLeft","color","opacity","selected","disabled","vars","palette","action","disabledOpacity","text","secondary","primary","main","flexGrow","flexBasis","fontSize","pxToRem","React","inProps","ref","useThemeProps","className","_props$disabled","_props$disableFocusRi","disableFocusRipple","iconProp","_props$iconPosition","indicator","onChange","onClick","onFocus","selectionFollowsFocus","_props$textColor","value","_props$wrapped","other","_objectWithoutPropertiesLoose","classes","slots","composeClasses","useUtilityClasses","clsx","_jsxs","focusRipple","role","event","tabIndex","children","cachedType","detectScrollType","dummy","document","createElement","container","style","width","height","appendChild","dir","top","body","scrollLeft","removeChild","getNormalizedScrollLeft","element","direction","scrollWidth","clientWidth","easeInOutSin","time","Math","sin","PI","createSvgIcon","_jsx","d","getTabScrollButtonUtilityClass","TabScrollButtonRoot","orientation","tabScrollButtonClasses","transform","isRtl","_slots$StartScrollBut","_slots$EndScrollButto","_props$slots","_props$slotProps","slotProps","useTheme","StartButtonIcon","StartScrollButtonIcon","KeyboardArrowLeft","EndButtonIcon","EndScrollButtonIcon","KeyboardArrowRight","startButtonIconProps","useSlotProps","elementType","externalSlotProps","startScrollButtonIcon","additionalProps","endButtonIconProps","endScrollButtonIcon","component","getTabsUtilityClass","nextItem","list","item","firstChild","nextElementSibling","previousItem","lastChild","previousElementSibling","moveFocus","currentFocus","traversalFunction","wrappedOnce","nextFocus","nextFocusDisabled","getAttribute","hasAttribute","focus","TabsRoot","tabsClasses","scrollButtons","scrollButtonsHideMobile","vertical","WebkitOverflowScrolling","display","breakpoints","down","TabsScroller","scroller","fixed","hideScrollbar","scrollableX","scrollableY","flex","overflowX","scrollbarWidth","overflowY","FlexContainer","flexContainer","flexContainerVertical","centered","_ref6","justifyContent","TabsIndicator","_ref7","bottom","transition","transitions","create","indicatorColor","backgroundColor","right","TabsScrollbarSize","scrollbarHeight","nodeRef","setMeasurements","current","offsetHeight","clientHeight","useEnhancedEffect","handleResize","debounce","prevHeight","containerWindow","ownerWindow","addEventListener","clear","removeEventListener","defaultIndicatorStyle","Tabs","ariaLabel","ariaLabelledBy","_props$centered","childrenProp","_props$component","_props$allowScrollBut","allowScrollButtonsMobile","_props$indicatorColor","_props$orientation","_props$ScrollButtonCo","ScrollButtonComponent","TabScrollButton","_props$scrollButtons","_props$TabIndicatorPr","TabIndicatorProps","_props$TabScrollButto","TabScrollButtonProps","_props$variant","variant","_props$visibleScrollb","visibleScrollbar","scrollable","scrollStart","start","end","clientSize","size","startScrollButtonIconProps","endScrollButtonIconProps","_React$useState","_React$useState2","_slicedToArray","mounted","setMounted","_React$useState3","_React$useState4","indicatorStyle","setIndicatorStyle","_React$useState5","_React$useState6","displayScroll","setDisplayScroll","_React$useState7","_React$useState8","scrollerStyle","setScrollerStyle","valueToIndex","Map","tabsRef","tabListRef","getTabsMeta","tabsMeta","tabMeta","tabsNode","rect","getBoundingClientRect","scrollTop","scrollLeftNormalized","left","length","tab","get","process","updateIndicatorState","useEventCallback","_newIndicatorStyle","startIndicator","_getTabsMeta","startValue","correction","newIndicatorStyle","isNaN","dStart","abs","dSize","scroll","scrollValue","_ref8$animation","arguments","undefined","animation","property","to","options","cb","_options$ease","ease","_options$duration","duration","from","cancelled","cancel","Error","requestAnimationFrame","step","timestamp","min","animate","standard","moveTabsScroll","delta","getScrollSize","containerSize","totalSize","Array","i","handleStartScrollClick","handleEndScrollClick","handleScrollbarSizeChange","scrollSelectedIntoView","_getTabsMeta2","nextScrollStart","updateScrollButtonState","showStartScroll","showEndScroll","_tabsRef$current","scrollHeight","resizeObserver","win","ResizeObserver","forEach","child","observe","disconnect","handleTabsScroll","updateIndicator","updateScrollButtons","childIndex","map","childValue","set","conditionalElements","scrollbarSizeListener","scrollButtonsActive","showScrollButtons","scrollButtonStart","scrollButtonEnd","getConditionalElements","as","onScroll","onKeyDown","ownerDocument","activeElement","previousItemKey","nextItemKey","key","preventDefault"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/417.9842b54e.chunk.js b/web-app/build/static/js/417.9842b54e.chunk.js deleted file mode 100644 index aab42393c9e..00000000000 --- a/web-app/build/static/js/417.9842b54e.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[417],{63466:function(e,t,o){o.d(t,{Z:function(){return x}});var i=o(4942),n=o(63366),r=o(87462),l=o(72791),s=o(28182),a=o(94419),c=o(14036),d=o(20890),h=o(93840),u=o(52930),f=o(66934),p=o(75878),v=o(21217);function g(e){return(0,v.Z)("MuiInputAdornment",e)}var m,_=(0,p.Z)("MuiInputAdornment",["root","filled","standard","outlined","positionStart","positionEnd","disablePointerEvents","hiddenLabel","sizeSmall"]),S=o(31402),C=o(80184),y=["children","className","component","disablePointerEvents","disableTypography","position","variant"],w=(0,f.ZP)("div",{name:"MuiInputAdornment",slot:"Root",overridesResolver:function(e,t){var o=e.ownerState;return[t.root,t["position".concat((0,c.Z)(o.position))],!0===o.disablePointerEvents&&t.disablePointerEvents,t[o.variant]]}})((function(e){var t=e.theme,o=e.ownerState;return(0,r.Z)({display:"flex",height:"0.01em",maxHeight:"2em",alignItems:"center",whiteSpace:"nowrap",color:(t.vars||t).palette.action.active},"filled"===o.variant&&(0,i.Z)({},"&.".concat(_.positionStart,"&:not(.").concat(_.hiddenLabel,")"),{marginTop:16}),"start"===o.position&&{marginRight:8},"end"===o.position&&{marginLeft:8},!0===o.disablePointerEvents&&{pointerEvents:"none"})})),x=l.forwardRef((function(e,t){var o=(0,S.Z)({props:e,name:"MuiInputAdornment"}),i=o.children,f=o.className,p=o.component,v=void 0===p?"div":p,_=o.disablePointerEvents,x=void 0!==_&&_,R=o.disableTypography,T=void 0!==R&&R,z=o.position,b=o.variant,I=(0,n.Z)(o,y),Z=(0,u.Z)()||{},M=b;b&&Z.variant,Z&&!M&&(M=Z.variant);var P=(0,r.Z)({},o,{hiddenLabel:Z.hiddenLabel,size:Z.size,disablePointerEvents:x,position:z,variant:M}),k=function(e){var t=e.classes,o=e.disablePointerEvents,i=e.hiddenLabel,n=e.position,r=e.size,l=e.variant,s={root:["root",o&&"disablePointerEvents",n&&"position".concat((0,c.Z)(n)),l,i&&"hiddenLabel",r&&"size".concat((0,c.Z)(r))]};return(0,a.Z)(s,g,t)}(P);return(0,C.jsx)(h.Z.Provider,{value:null,children:(0,C.jsx)(w,(0,r.Z)({as:v,ownerState:P,className:(0,s.Z)(k.root,f),ref:t},I,{children:"string"!==typeof i||T?(0,C.jsxs)(l.Fragment,{children:["start"===z?m||(m=(0,C.jsx)("span",{className:"notranslate",children:"\u200b"})):null,i]}):(0,C.jsx)(d.Z,{color:"text.secondary",children:i})}))})}))},23688:function(e,t,o){function i(){var e=this.constructor.getDerivedStateFromProps(this.props,this.state);null!==e&&void 0!==e&&this.setState(e)}function n(e){this.setState(function(t){var o=this.constructor.getDerivedStateFromProps(e,t);return null!==o&&void 0!==o?o:null}.bind(this))}function r(e,t){try{var o=this.props,i=this.state;this.props=e,this.state=t,this.__reactInternalSnapshotFlag=!0,this.__reactInternalSnapshot=this.getSnapshotBeforeUpdate(o,i)}finally{this.props=o,this.state=i}}function l(e){var t=e.prototype;if(!t||!t.isReactComponent)throw new Error("Can only polyfill class components");if("function"!==typeof e.getDerivedStateFromProps&&"function"!==typeof t.getSnapshotBeforeUpdate)return e;var o=null,l=null,s=null;if("function"===typeof t.componentWillMount?o="componentWillMount":"function"===typeof t.UNSAFE_componentWillMount&&(o="UNSAFE_componentWillMount"),"function"===typeof t.componentWillReceiveProps?l="componentWillReceiveProps":"function"===typeof t.UNSAFE_componentWillReceiveProps&&(l="UNSAFE_componentWillReceiveProps"),"function"===typeof t.componentWillUpdate?s="componentWillUpdate":"function"===typeof t.UNSAFE_componentWillUpdate&&(s="UNSAFE_componentWillUpdate"),null!==o||null!==l||null!==s){var a=e.displayName||e.name,c="function"===typeof e.getDerivedStateFromProps?"getDerivedStateFromProps()":"getSnapshotBeforeUpdate()";throw Error("Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n"+a+" uses "+c+" but also contains the following legacy lifecycles:"+(null!==o?"\n "+o:"")+(null!==l?"\n "+l:"")+(null!==s?"\n "+s:"")+"\n\nThe above lifecycles should be removed. Learn more about this warning here:\nhttps://fb.me/react-async-component-lifecycle-hooks")}if("function"===typeof e.getDerivedStateFromProps&&(t.componentWillMount=i,t.componentWillReceiveProps=n),"function"===typeof t.getSnapshotBeforeUpdate){if("function"!==typeof t.componentDidUpdate)throw new Error("Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype");t.componentWillUpdate=r;var d=t.componentDidUpdate;t.componentDidUpdate=function(e,t,o){var i=this.__reactInternalSnapshotFlag?this.__reactInternalSnapshot:o;d.call(this,e,t,i)}}return e}o.r(t),o.d(t,{polyfill:function(){return l}}),i.__suppressDeprecationWarning=!0,n.__suppressDeprecationWarning=!0,r.__suppressDeprecationWarning=!0},5171:function(e,t,o){o.d(t,{qj:function(){return X},Z8:function(){return $},t1:function(){return ee},sg:function(){return Ye},b2:function(){return fe},aV:function(){return ge},iA:function(){return $e}});var i=o(15671),n=o(43144),r=o(82963),l=o(61120),s=o(97326),a=o(60136),c=o(4942),d=o(72791),h=o(23688),u=o(87462),f=o(28182);function p(e){var t=e.cellCount,o=e.cellSize,i=e.computeMetadataCallback,n=e.computeMetadataCallbackProps,r=e.nextCellsCount,l=e.nextCellSize,s=e.nextScrollToIndex,a=e.scrollToIndex,c=e.updateScrollOffsetForScrollToIndex;t===r&&("number"!==typeof o&&"number"!==typeof l||o===l)||(i(n),a>=0&&a===s&&c())}var v=o(45987),g=function(){function e(t){var o=t.cellCount,n=t.cellSizeGetter,r=t.estimatedCellSize;(0,i.Z)(this,e),(0,c.Z)(this,"_cellSizeAndPositionData",{}),(0,c.Z)(this,"_lastMeasuredIndex",-1),(0,c.Z)(this,"_lastBatchedIndex",-1),(0,c.Z)(this,"_cellCount",void 0),(0,c.Z)(this,"_cellSizeGetter",void 0),(0,c.Z)(this,"_estimatedCellSize",void 0),this._cellSizeGetter=n,this._cellCount=o,this._estimatedCellSize=r}return(0,n.Z)(e,[{key:"areOffsetsAdjusted",value:function(){return!1}},{key:"configure",value:function(e){var t=e.cellCount,o=e.estimatedCellSize,i=e.cellSizeGetter;this._cellCount=t,this._estimatedCellSize=o,this._cellSizeGetter=i}},{key:"getCellCount",value:function(){return this._cellCount}},{key:"getEstimatedCellSize",value:function(){return this._estimatedCellSize}},{key:"getLastMeasuredIndex",value:function(){return this._lastMeasuredIndex}},{key:"getOffsetAdjustment",value:function(){return 0}},{key:"getSizeAndPositionOfCell",value:function(e){if(e<0||e>=this._cellCount)throw Error("Requested index ".concat(e," is outside of range 0..").concat(this._cellCount));if(e>this._lastMeasuredIndex)for(var t=this.getSizeAndPositionOfLastMeasuredCell(),o=t.offset+t.size,i=this._lastMeasuredIndex+1;i<=e;i++){var n=this._cellSizeGetter({index:i});if(void 0===n||isNaN(n))throw Error("Invalid size returned for cell ".concat(i," of value ").concat(n));null===n?(this._cellSizeAndPositionData[i]={offset:o,size:0},this._lastBatchedIndex=e):(this._cellSizeAndPositionData[i]={offset:o,size:n},o+=n,this._lastMeasuredIndex=e)}return this._cellSizeAndPositionData[e]}},{key:"getSizeAndPositionOfLastMeasuredCell",value:function(){return this._lastMeasuredIndex>=0?this._cellSizeAndPositionData[this._lastMeasuredIndex]:{offset:0,size:0}}},{key:"getTotalSize",value:function(){var e=this.getSizeAndPositionOfLastMeasuredCell();return e.offset+e.size+(this._cellCount-this._lastMeasuredIndex-1)*this._estimatedCellSize}},{key:"getUpdatedOffsetForIndex",value:function(e){var t=e.align,o=void 0===t?"auto":t,i=e.containerSize,n=e.currentOffset,r=e.targetIndex;if(i<=0)return 0;var l,s=this.getSizeAndPositionOfCell(r),a=s.offset,c=a-i+s.size;switch(o){case"start":l=a;break;case"end":l=c;break;case"center":l=a-(i-s.size)/2;break;default:l=Math.max(c,Math.min(a,n))}var d=this.getTotalSize();return Math.max(0,Math.min(d-i,l))}},{key:"getVisibleCellRange",value:function(e){var t=e.containerSize,o=e.offset;if(0===this.getTotalSize())return{};var i=o+t,n=this._findNearestCell(o),r=this.getSizeAndPositionOfCell(n);o=r.offset+r.size;for(var l=n;oo&&(e=i-1)}return t>0?t-1:0}},{key:"_exponentialSearch",value:function(e,t){for(var o=1;e=e?this._binarySearch(o,0,e):this._exponentialSearch(o,e)}}]),e}(),m=function(){return"undefined"!==typeof window&&window.chrome?16777100:15e5},_=function(){function e(t){var o=t.maxScrollSize,n=void 0===o?m():o,r=(0,v.Z)(t,["maxScrollSize"]);(0,i.Z)(this,e),(0,c.Z)(this,"_cellSizeAndPositionManager",void 0),(0,c.Z)(this,"_maxScrollSize",void 0),this._cellSizeAndPositionManager=new g(r),this._maxScrollSize=n}return(0,n.Z)(e,[{key:"areOffsetsAdjusted",value:function(){return this._cellSizeAndPositionManager.getTotalSize()>this._maxScrollSize}},{key:"configure",value:function(e){this._cellSizeAndPositionManager.configure(e)}},{key:"getCellCount",value:function(){return this._cellSizeAndPositionManager.getCellCount()}},{key:"getEstimatedCellSize",value:function(){return this._cellSizeAndPositionManager.getEstimatedCellSize()}},{key:"getLastMeasuredIndex",value:function(){return this._cellSizeAndPositionManager.getLastMeasuredIndex()}},{key:"getOffsetAdjustment",value:function(e){var t=e.containerSize,o=e.offset,i=this._cellSizeAndPositionManager.getTotalSize(),n=this.getTotalSize(),r=this._getOffsetPercentage({containerSize:t,offset:o,totalSize:n});return Math.round(r*(n-i))}},{key:"getSizeAndPositionOfCell",value:function(e){return this._cellSizeAndPositionManager.getSizeAndPositionOfCell(e)}},{key:"getSizeAndPositionOfLastMeasuredCell",value:function(){return this._cellSizeAndPositionManager.getSizeAndPositionOfLastMeasuredCell()}},{key:"getTotalSize",value:function(){return Math.min(this._maxScrollSize,this._cellSizeAndPositionManager.getTotalSize())}},{key:"getUpdatedOffsetForIndex",value:function(e){var t=e.align,o=void 0===t?"auto":t,i=e.containerSize,n=e.currentOffset,r=e.targetIndex;n=this._safeOffsetToOffset({containerSize:i,offset:n});var l=this._cellSizeAndPositionManager.getUpdatedOffsetForIndex({align:o,containerSize:i,currentOffset:n,targetIndex:r});return this._offsetToSafeOffset({containerSize:i,offset:l})}},{key:"getVisibleCellRange",value:function(e){var t=e.containerSize,o=e.offset;return o=this._safeOffsetToOffset({containerSize:t,offset:o}),this._cellSizeAndPositionManager.getVisibleCellRange({containerSize:t,offset:o})}},{key:"resetCell",value:function(e){this._cellSizeAndPositionManager.resetCell(e)}},{key:"_getOffsetPercentage",value:function(e){var t=e.containerSize,o=e.offset,i=e.totalSize;return i<=t?0:o/(i-t)}},{key:"_offsetToSafeOffset",value:function(e){var t=e.containerSize,o=e.offset,i=this._cellSizeAndPositionManager.getTotalSize(),n=this.getTotalSize();if(i===n)return o;var r=this._getOffsetPercentage({containerSize:t,offset:o,totalSize:i});return Math.round(r*(n-t))}},{key:"_safeOffsetToOffset",value:function(e){var t=e.containerSize,o=e.offset,i=this._cellSizeAndPositionManager.getTotalSize(),n=this.getTotalSize();if(i===n)return o;var r=this._getOffsetPercentage({containerSize:t,offset:o,totalSize:n});return Math.round(r*(i-t))}}]),e}();function S(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t={};return function(o){var i=o.callback,n=o.indices,r=Object.keys(n),l=!e||r.every((function(e){var t=n[e];return Array.isArray(t)?t.length>0:t>=0})),s=r.length!==Object.keys(t).length||r.some((function(e){var o=t[e],i=n[e];return Array.isArray(i)?o.join(",")!==i.join(","):o!==i}));t=n,l&&s&&i(n)}}function C(e){var t=e.cellSize,o=e.cellSizeAndPositionManager,i=e.previousCellsCount,n=e.previousCellSize,r=e.previousScrollToAlignment,l=e.previousScrollToIndex,s=e.previousSize,a=e.scrollOffset,c=e.scrollToAlignment,d=e.scrollToIndex,h=e.size,u=e.sizeJustIncreasedFromZero,f=e.updateScrollIndexCallback,p=o.getCellCount(),v=d>=0&&d0&&(ho.getTotalSize()-h&&f(p-1)}var y,w,x=!("undefined"===typeof window||!window.document||!window.document.createElement);function R(e){if((!y&&0!==y||e)&&x){var t=document.createElement("div");t.style.position="absolute",t.style.top="-9999px",t.style.width="50px",t.style.height="50px",t.style.overflow="scroll",document.body.appendChild(t),y=t.offsetWidth-t.clientWidth,document.body.removeChild(t)}return y}var T,z,b=(w="undefined"!==typeof window?window:"undefined"!==typeof self?self:{}).requestAnimationFrame||w.webkitRequestAnimationFrame||w.mozRequestAnimationFrame||w.oRequestAnimationFrame||w.msRequestAnimationFrame||function(e){return w.setTimeout(e,1e3/60)},I=w.cancelAnimationFrame||w.webkitCancelAnimationFrame||w.mozCancelAnimationFrame||w.oCancelAnimationFrame||w.msCancelAnimationFrame||function(e){w.clearTimeout(e)},Z=b,M=I,P=function(e){return M(e.id)},k=function(e,t){var o;Promise.resolve().then((function(){o=Date.now()}));var i={id:Z((function n(){Date.now()-o>=t?e.call():i.id=Z(n)}))};return i};function O(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,i)}return o}function L(e){for(var t=1;t0&&(o._initialScrollTop=o._getCalculatedScrollTop(e,o.state)),e.scrollToColumn>0&&(o._initialScrollLeft=o._getCalculatedScrollLeft(e,o.state)),o}return(0,a.Z)(t,e),(0,n.Z)(t,[{key:"getOffsetForCell",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.alignment,o=void 0===t?this.props.scrollToAlignment:t,i=e.columnIndex,n=void 0===i?this.props.scrollToColumn:i,r=e.rowIndex,l=void 0===r?this.props.scrollToRow:r,s=L({},this.props,{scrollToAlignment:o,scrollToColumn:n,scrollToRow:l});return{scrollLeft:this._getCalculatedScrollLeft(s),scrollTop:this._getCalculatedScrollTop(s)}}},{key:"getTotalRowsHeight",value:function(){return this.state.instanceProps.rowSizeAndPositionManager.getTotalSize()}},{key:"getTotalColumnsWidth",value:function(){return this.state.instanceProps.columnSizeAndPositionManager.getTotalSize()}},{key:"handleScrollEvent",value:function(e){var t=e.scrollLeft,o=void 0===t?0:t,i=e.scrollTop,n=void 0===i?0:i;if(!(n<0)){this._debounceScrollEnded();var r=this.props,l=r.autoHeight,s=r.autoWidth,a=r.height,c=r.width,d=this.state.instanceProps,h=d.scrollbarSize,u=d.rowSizeAndPositionManager.getTotalSize(),f=d.columnSizeAndPositionManager.getTotalSize(),p=Math.min(Math.max(0,f-c+h),o),v=Math.min(Math.max(0,u-a+h),n);if(this.state.scrollLeft!==p||this.state.scrollTop!==v){var g={isScrolling:!0,scrollDirectionHorizontal:p!==this.state.scrollLeft?p>this.state.scrollLeft?1:-1:this.state.scrollDirectionHorizontal,scrollDirectionVertical:v!==this.state.scrollTop?v>this.state.scrollTop?1:-1:this.state.scrollDirectionVertical,scrollPositionChangeReason:G};l||(g.scrollTop=v),s||(g.scrollLeft=p),g.needToResetStyleCache=!1,this.setState(g)}this._invokeOnScrollMemoizer({scrollLeft:p,scrollTop:v,totalColumnsWidth:f,totalRowsHeight:u})}}},{key:"invalidateCellSizeAfterRender",value:function(e){var t=e.columnIndex,o=e.rowIndex;this._deferredInvalidateColumnIndex="number"===typeof this._deferredInvalidateColumnIndex?Math.min(this._deferredInvalidateColumnIndex,t):t,this._deferredInvalidateRowIndex="number"===typeof this._deferredInvalidateRowIndex?Math.min(this._deferredInvalidateRowIndex,o):o}},{key:"measureAllCells",value:function(){var e=this.props,t=e.columnCount,o=e.rowCount,i=this.state.instanceProps;i.columnSizeAndPositionManager.getSizeAndPositionOfCell(t-1),i.rowSizeAndPositionManager.getSizeAndPositionOfCell(o-1)}},{key:"recomputeGridSize",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.columnIndex,o=void 0===t?0:t,i=e.rowIndex,n=void 0===i?0:i,r=this.props,l=r.scrollToColumn,s=r.scrollToRow,a=this.state.instanceProps;a.columnSizeAndPositionManager.resetCell(o),a.rowSizeAndPositionManager.resetCell(n),this._recomputeScrollLeftFlag=l>=0&&(1===this.state.scrollDirectionHorizontal?o<=l:o>=l),this._recomputeScrollTopFlag=s>=0&&(1===this.state.scrollDirectionVertical?n<=s:n>=s),this._styleCache={},this._cellCache={},this.forceUpdate()}},{key:"scrollToCell",value:function(e){var t=e.columnIndex,o=e.rowIndex,i=this.props.columnCount,n=this.props;i>1&&void 0!==t&&this._updateScrollLeftForScrollToColumn(L({},n,{scrollToColumn:t})),void 0!==o&&this._updateScrollTopForScrollToRow(L({},n,{scrollToRow:o}))}},{key:"componentDidMount",value:function(){var e=this.props,o=e.getScrollbarSize,i=e.height,n=e.scrollLeft,r=e.scrollToColumn,l=e.scrollTop,s=e.scrollToRow,a=e.width,c=this.state.instanceProps;if(this._initialScrollTop=0,this._initialScrollLeft=0,this._handleInvalidatedGridSize(),c.scrollbarSizeMeasured||this.setState((function(e){var t=L({},e,{needToResetStyleCache:!1});return t.instanceProps.scrollbarSize=o(),t.instanceProps.scrollbarSizeMeasured=!0,t})),"number"===typeof n&&n>=0||"number"===typeof l&&l>=0){var d=t._getScrollToPositionStateUpdate({prevState:this.state,scrollLeft:n,scrollTop:l});d&&(d.needToResetStyleCache=!1,this.setState(d))}this._scrollingContainer&&(this._scrollingContainer.scrollLeft!==this.state.scrollLeft&&(this._scrollingContainer.scrollLeft=this.state.scrollLeft),this._scrollingContainer.scrollTop!==this.state.scrollTop&&(this._scrollingContainer.scrollTop=this.state.scrollTop));var h=i>0&&a>0;r>=0&&h&&this._updateScrollLeftForScrollToColumn(),s>=0&&h&&this._updateScrollTopForScrollToRow(),this._invokeOnGridRenderedHelper(),this._invokeOnScrollMemoizer({scrollLeft:n||0,scrollTop:l||0,totalColumnsWidth:c.columnSizeAndPositionManager.getTotalSize(),totalRowsHeight:c.rowSizeAndPositionManager.getTotalSize()}),this._maybeCallOnScrollbarPresenceChange()}},{key:"componentDidUpdate",value:function(e,t){var o=this,i=this.props,n=i.autoHeight,r=i.autoWidth,l=i.columnCount,s=i.height,a=i.rowCount,c=i.scrollToAlignment,d=i.scrollToColumn,h=i.scrollToRow,u=i.width,f=this.state,p=f.scrollLeft,v=f.scrollPositionChangeReason,g=f.scrollTop,m=f.instanceProps;this._handleInvalidatedGridSize();var _=l>0&&0===e.columnCount||a>0&&0===e.rowCount;v===A&&(!r&&p>=0&&(p!==this._scrollingContainer.scrollLeft||_)&&(this._scrollingContainer.scrollLeft=p),!n&&g>=0&&(g!==this._scrollingContainer.scrollTop||_)&&(this._scrollingContainer.scrollTop=g));var S=(0===e.width||0===e.height)&&s>0&&u>0;if(this._recomputeScrollLeftFlag?(this._recomputeScrollLeftFlag=!1,this._updateScrollLeftForScrollToColumn(this.props)):C({cellSizeAndPositionManager:m.columnSizeAndPositionManager,previousCellsCount:e.columnCount,previousCellSize:e.columnWidth,previousScrollToAlignment:e.scrollToAlignment,previousScrollToIndex:e.scrollToColumn,previousSize:e.width,scrollOffset:p,scrollToAlignment:c,scrollToIndex:d,size:u,sizeJustIncreasedFromZero:S,updateScrollIndexCallback:function(){return o._updateScrollLeftForScrollToColumn(o.props)}}),this._recomputeScrollTopFlag?(this._recomputeScrollTopFlag=!1,this._updateScrollTopForScrollToRow(this.props)):C({cellSizeAndPositionManager:m.rowSizeAndPositionManager,previousCellsCount:e.rowCount,previousCellSize:e.rowHeight,previousScrollToAlignment:e.scrollToAlignment,previousScrollToIndex:e.scrollToRow,previousSize:e.height,scrollOffset:g,scrollToAlignment:c,scrollToIndex:h,size:s,sizeJustIncreasedFromZero:S,updateScrollIndexCallback:function(){return o._updateScrollTopForScrollToRow(o.props)}}),this._invokeOnGridRenderedHelper(),p!==t.scrollLeft||g!==t.scrollTop){var y=m.rowSizeAndPositionManager.getTotalSize(),w=m.columnSizeAndPositionManager.getTotalSize();this._invokeOnScrollMemoizer({scrollLeft:p,scrollTop:g,totalColumnsWidth:w,totalRowsHeight:y})}this._maybeCallOnScrollbarPresenceChange()}},{key:"componentWillUnmount",value:function(){this._disablePointerEventsTimeoutId&&P(this._disablePointerEventsTimeoutId)}},{key:"render",value:function(){var e=this.props,t=e.autoContainerWidth,o=e.autoHeight,i=e.autoWidth,n=e.className,r=e.containerProps,l=e.containerRole,s=e.containerStyle,a=e.height,c=e.id,h=e.noContentRenderer,p=e.role,v=e.style,g=e.tabIndex,m=e.width,_=this.state,S=_.instanceProps,C=_.needToResetStyleCache,y=this._isScrolling(),w={boxSizing:"border-box",direction:"ltr",height:o?"auto":a,position:"relative",width:i?"auto":m,WebkitOverflowScrolling:"touch",willChange:"transform"};C&&(this._styleCache={}),this.state.isScrolling||this._resetStyleCache(),this._calculateChildrenToRender(this.props,this.state);var x=S.columnSizeAndPositionManager.getTotalSize(),R=S.rowSizeAndPositionManager.getTotalSize(),T=R>a?S.scrollbarSize:0,z=x>m?S.scrollbarSize:0;z===this._horizontalScrollBarSize&&T===this._verticalScrollBarSize||(this._horizontalScrollBarSize=z,this._verticalScrollBarSize=T,this._scrollbarPresenceChanged=!0),w.overflowX=x+T<=m?"hidden":"auto",w.overflowY=R+z<=a?"hidden":"auto";var b=this._childrenToDisplay,I=0===b.length&&a>0&&m>0;return d.createElement("div",(0,u.Z)({ref:this._setScrollingContainerRef},r,{"aria-label":this.props["aria-label"],"aria-readonly":this.props["aria-readonly"],className:(0,f.Z)("ReactVirtualized__Grid",n),id:c,onScroll:this._onScroll,role:p,style:L({},w,{},v),tabIndex:g}),b.length>0&&d.createElement("div",{className:"ReactVirtualized__Grid__innerScrollContainer",role:l,style:L({width:t?"auto":x,height:R,maxWidth:x,maxHeight:R,overflow:"hidden",pointerEvents:y?"none":"",position:"relative"},s)},b),I&&h())}},{key:"_calculateChildrenToRender",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.state,o=e.cellRenderer,i=e.cellRangeRenderer,n=e.columnCount,r=e.deferredMeasurementCache,l=e.height,s=e.overscanColumnCount,a=e.overscanIndicesGetter,c=e.overscanRowCount,d=e.rowCount,h=e.width,u=e.isScrollingOptOut,f=t.scrollDirectionHorizontal,p=t.scrollDirectionVertical,v=t.instanceProps,g=this._initialScrollTop>0?this._initialScrollTop:t.scrollTop,m=this._initialScrollLeft>0?this._initialScrollLeft:t.scrollLeft,_=this._isScrolling(e,t);if(this._childrenToDisplay=[],l>0&&h>0){var S=v.columnSizeAndPositionManager.getVisibleCellRange({containerSize:h,offset:m}),C=v.rowSizeAndPositionManager.getVisibleCellRange({containerSize:l,offset:g}),y=v.columnSizeAndPositionManager.getOffsetAdjustment({containerSize:h,offset:m}),w=v.rowSizeAndPositionManager.getOffsetAdjustment({containerSize:l,offset:g});this._renderedColumnStartIndex=S.start,this._renderedColumnStopIndex=S.stop,this._renderedRowStartIndex=C.start,this._renderedRowStopIndex=C.stop;var x=a({direction:"horizontal",cellCount:n,overscanCellsCount:s,scrollDirection:f,startIndex:"number"===typeof S.start?S.start:0,stopIndex:"number"===typeof S.stop?S.stop:-1}),R=a({direction:"vertical",cellCount:d,overscanCellsCount:c,scrollDirection:p,startIndex:"number"===typeof C.start?C.start:0,stopIndex:"number"===typeof C.stop?C.stop:-1}),T=x.overscanStartIndex,z=x.overscanStopIndex,b=R.overscanStartIndex,I=R.overscanStopIndex;if(r){if(!r.hasFixedHeight())for(var Z=b;Z<=I;Z++)if(!r.has(Z,0)){T=0,z=n-1;break}if(!r.hasFixedWidth())for(var M=T;M<=z;M++)if(!r.has(0,M)){b=0,I=d-1;break}}this._childrenToDisplay=i({cellCache:this._cellCache,cellRenderer:o,columnSizeAndPositionManager:v.columnSizeAndPositionManager,columnStartIndex:T,columnStopIndex:z,deferredMeasurementCache:r,horizontalOffsetAdjustment:y,isScrolling:_,isScrollingOptOut:u,parent:this,rowSizeAndPositionManager:v.rowSizeAndPositionManager,rowStartIndex:b,rowStopIndex:I,scrollLeft:m,scrollTop:g,styleCache:this._styleCache,verticalOffsetAdjustment:w,visibleColumnIndices:S,visibleRowIndices:C}),this._columnStartIndex=T,this._columnStopIndex=z,this._rowStartIndex=b,this._rowStopIndex=I}}},{key:"_debounceScrollEnded",value:function(){var e=this.props.scrollingResetTimeInterval;this._disablePointerEventsTimeoutId&&P(this._disablePointerEventsTimeoutId),this._disablePointerEventsTimeoutId=k(this._debounceScrollEndedCallback,e)}},{key:"_handleInvalidatedGridSize",value:function(){if("number"===typeof this._deferredInvalidateColumnIndex&&"number"===typeof this._deferredInvalidateRowIndex){var e=this._deferredInvalidateColumnIndex,t=this._deferredInvalidateRowIndex;this._deferredInvalidateColumnIndex=null,this._deferredInvalidateRowIndex=null,this.recomputeGridSize({columnIndex:e,rowIndex:t})}}},{key:"_invokeOnScrollMemoizer",value:function(e){var t=this,o=e.scrollLeft,i=e.scrollTop,n=e.totalColumnsWidth,r=e.totalRowsHeight;this._onScrollMemoizer({callback:function(e){var o=e.scrollLeft,i=e.scrollTop,l=t.props,s=l.height;(0,l.onScroll)({clientHeight:s,clientWidth:l.width,scrollHeight:r,scrollLeft:o,scrollTop:i,scrollWidth:n})},indices:{scrollLeft:o,scrollTop:i}})}},{key:"_isScrolling",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.state;return Object.hasOwnProperty.call(e,"isScrolling")?Boolean(e.isScrolling):Boolean(t.isScrolling)}},{key:"_maybeCallOnScrollbarPresenceChange",value:function(){if(this._scrollbarPresenceChanged){var e=this.props.onScrollbarPresenceChange;this._scrollbarPresenceChanged=!1,e({horizontal:this._horizontalScrollBarSize>0,size:this.state.instanceProps.scrollbarSize,vertical:this._verticalScrollBarSize>0})}}},{key:"scrollToPosition",value:function(e){var o=e.scrollLeft,i=e.scrollTop,n=t._getScrollToPositionStateUpdate({prevState:this.state,scrollLeft:o,scrollTop:i});n&&(n.needToResetStyleCache=!1,this.setState(n))}},{key:"_getCalculatedScrollLeft",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.state;return t._getCalculatedScrollLeft(e,o)}},{key:"_updateScrollLeftForScrollToColumn",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.state,i=t._getScrollLeftForScrollToColumnStateUpdate(e,o);i&&(i.needToResetStyleCache=!1,this.setState(i))}},{key:"_getCalculatedScrollTop",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.state;return t._getCalculatedScrollTop(e,o)}},{key:"_resetStyleCache",value:function(){var e=this._styleCache,t=this._cellCache,o=this.props.isScrollingOptOut;this._cellCache={},this._styleCache={};for(var i=this._rowStartIndex;i<=this._rowStopIndex;i++)for(var n=this._columnStartIndex;n<=this._columnStopIndex;n++){var r="".concat(i,"-").concat(n);this._styleCache[r]=e[r],o&&(this._cellCache[r]=t[r])}}},{key:"_updateScrollTopForScrollToRow",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.state,i=t._getScrollTopForScrollToRowStateUpdate(e,o);i&&(i.needToResetStyleCache=!1,this.setState(i))}}],[{key:"getDerivedStateFromProps",value:function(e,o){var i={};0===e.columnCount&&0!==o.scrollLeft||0===e.rowCount&&0!==o.scrollTop?(i.scrollLeft=0,i.scrollTop=0):(e.scrollLeft!==o.scrollLeft&&e.scrollToColumn<0||e.scrollTop!==o.scrollTop&&e.scrollToRow<0)&&Object.assign(i,t._getScrollToPositionStateUpdate({prevState:o,scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}));var n,r,l=o.instanceProps;return i.needToResetStyleCache=!1,e.columnWidth===l.prevColumnWidth&&e.rowHeight===l.prevRowHeight||(i.needToResetStyleCache=!0),l.columnSizeAndPositionManager.configure({cellCount:e.columnCount,estimatedCellSize:t._getEstimatedColumnSize(e),cellSizeGetter:t._wrapSizeGetter(e.columnWidth)}),l.rowSizeAndPositionManager.configure({cellCount:e.rowCount,estimatedCellSize:t._getEstimatedRowSize(e),cellSizeGetter:t._wrapSizeGetter(e.rowHeight)}),0!==l.prevColumnCount&&0!==l.prevRowCount||(l.prevColumnCount=0,l.prevRowCount=0),e.autoHeight&&!1===e.isScrolling&&!0===l.prevIsScrolling&&Object.assign(i,{isScrolling:!1}),p({cellCount:l.prevColumnCount,cellSize:"number"===typeof l.prevColumnWidth?l.prevColumnWidth:null,computeMetadataCallback:function(){return l.columnSizeAndPositionManager.resetCell(0)},computeMetadataCallbackProps:e,nextCellsCount:e.columnCount,nextCellSize:"number"===typeof e.columnWidth?e.columnWidth:null,nextScrollToIndex:e.scrollToColumn,scrollToIndex:l.prevScrollToColumn,updateScrollOffsetForScrollToIndex:function(){n=t._getScrollLeftForScrollToColumnStateUpdate(e,o)}}),p({cellCount:l.prevRowCount,cellSize:"number"===typeof l.prevRowHeight?l.prevRowHeight:null,computeMetadataCallback:function(){return l.rowSizeAndPositionManager.resetCell(0)},computeMetadataCallbackProps:e,nextCellsCount:e.rowCount,nextCellSize:"number"===typeof e.rowHeight?e.rowHeight:null,nextScrollToIndex:e.scrollToRow,scrollToIndex:l.prevScrollToRow,updateScrollOffsetForScrollToIndex:function(){r=t._getScrollTopForScrollToRowStateUpdate(e,o)}}),l.prevColumnCount=e.columnCount,l.prevColumnWidth=e.columnWidth,l.prevIsScrolling=!0===e.isScrolling,l.prevRowCount=e.rowCount,l.prevRowHeight=e.rowHeight,l.prevScrollToColumn=e.scrollToColumn,l.prevScrollToRow=e.scrollToRow,l.scrollbarSize=e.getScrollbarSize(),void 0===l.scrollbarSize?(l.scrollbarSizeMeasured=!1,l.scrollbarSize=0):l.scrollbarSizeMeasured=!0,i.instanceProps=l,L({},i,{},n,{},r)}},{key:"_getEstimatedColumnSize",value:function(e){return"number"===typeof e.columnWidth?e.columnWidth:e.estimatedColumnSize}},{key:"_getEstimatedRowSize",value:function(e){return"number"===typeof e.rowHeight?e.rowHeight:e.estimatedRowSize}},{key:"_getScrollToPositionStateUpdate",value:function(e){var t=e.prevState,o=e.scrollLeft,i=e.scrollTop,n={scrollPositionChangeReason:A};return"number"===typeof o&&o>=0&&(n.scrollDirectionHorizontal=o>t.scrollLeft?1:-1,n.scrollLeft=o),"number"===typeof i&&i>=0&&(n.scrollDirectionVertical=i>t.scrollTop?1:-1,n.scrollTop=i),"number"===typeof o&&o>=0&&o!==t.scrollLeft||"number"===typeof i&&i>=0&&i!==t.scrollTop?n:{}}},{key:"_wrapSizeGetter",value:function(e){return"function"===typeof e?e:function(){return e}}},{key:"_getCalculatedScrollLeft",value:function(e,t){var o=e.columnCount,i=e.height,n=e.scrollToAlignment,r=e.scrollToColumn,l=e.width,s=t.scrollLeft,a=t.instanceProps;if(o>0){var c=o-1,d=r<0?c:Math.min(c,r),h=a.rowSizeAndPositionManager.getTotalSize(),u=a.scrollbarSizeMeasured&&h>i?a.scrollbarSize:0;return a.columnSizeAndPositionManager.getUpdatedOffsetForIndex({align:n,containerSize:l-u,currentOffset:s,targetIndex:d})}return 0}},{key:"_getScrollLeftForScrollToColumnStateUpdate",value:function(e,o){var i=o.scrollLeft,n=t._getCalculatedScrollLeft(e,o);return"number"===typeof n&&n>=0&&i!==n?t._getScrollToPositionStateUpdate({prevState:o,scrollLeft:n,scrollTop:-1}):{}}},{key:"_getCalculatedScrollTop",value:function(e,t){var o=e.height,i=e.rowCount,n=e.scrollToAlignment,r=e.scrollToRow,l=e.width,s=t.scrollTop,a=t.instanceProps;if(i>0){var c=i-1,d=r<0?c:Math.min(c,r),h=a.columnSizeAndPositionManager.getTotalSize(),u=a.scrollbarSizeMeasured&&h>l?a.scrollbarSize:0;return a.rowSizeAndPositionManager.getUpdatedOffsetForIndex({align:n,containerSize:o-u,currentOffset:s,targetIndex:d})}return 0}},{key:"_getScrollTopForScrollToRowStateUpdate",value:function(e,o){var i=o.scrollTop,n=t._getCalculatedScrollTop(e,o);return"number"===typeof n&&n>=0&&i!==n?t._getScrollToPositionStateUpdate({prevState:o,scrollLeft:-1,scrollTop:n}):{}}}]),t}(d.PureComponent),(0,c.Z)(T,"propTypes",null),z);(0,c.Z)(W,"defaultProps",{"aria-label":"grid","aria-readonly":!0,autoContainerWidth:!1,autoHeight:!1,autoWidth:!1,cellRangeRenderer:function(e){for(var t=e.cellCache,o=e.cellRenderer,i=e.columnSizeAndPositionManager,n=e.columnStartIndex,r=e.columnStopIndex,l=e.deferredMeasurementCache,s=e.horizontalOffsetAdjustment,a=e.isScrolling,c=e.isScrollingOptOut,d=e.parent,h=e.rowSizeAndPositionManager,u=e.rowStartIndex,f=e.rowStopIndex,p=e.styleCache,v=e.verticalOffsetAdjustment,g=e.visibleColumnIndices,m=e.visibleRowIndices,_=[],S=i.areOffsetsAdjusted()||h.areOffsetsAdjusted(),C=!a&&!S,y=u;y<=f;y++)for(var w=h.getSizeAndPositionOfCell(y),x=n;x<=r;x++){var R=i.getSizeAndPositionOfCell(x),T=x>=g.start&&x<=g.stop&&y>=m.start&&y<=m.stop,z="".concat(y,"-").concat(x),b=void 0;C&&p[z]?b=p[z]:l&&!l.has(y,x)?b={height:"auto",left:0,position:"absolute",top:0,width:"auto"}:(b={height:w.size,left:R.offset+s,position:"absolute",top:w.offset+v,width:R.size},p[z]=b);var I={columnIndex:x,isScrolling:a,isVisible:T,key:z,parent:d,rowIndex:y,style:b},Z=void 0;!c&&!a||s||v?Z=o(I):(t[z]||(t[z]=o(I)),Z=t[z]),null!=Z&&!1!==Z&&_.push(Z)}return _},containerRole:"rowgroup",containerStyle:{},estimatedColumnSize:100,estimatedRowSize:30,getScrollbarSize:R,noContentRenderer:function(){return null},onScroll:function(){},onScrollbarPresenceChange:function(){},onSectionRendered:function(){},overscanColumnCount:0,overscanIndicesGetter:function(e){var t=e.cellCount,o=e.overscanCellsCount,i=e.scrollDirection,n=e.startIndex,r=e.stopIndex;return 1===i?{overscanStartIndex:Math.max(0,n),overscanStopIndex:Math.min(t-1,r+o)}:{overscanStartIndex:Math.max(0,n-o),overscanStopIndex:Math.min(t-1,r)}},overscanRowCount:10,role:"grid",scrollingResetTimeInterval:150,scrollToAlignment:"auto",scrollToColumn:-1,scrollToRow:-1,style:{},tabIndex:0,isScrollingOptOut:!1}),(0,h.polyfill)(W);var H=W;function E(e){var t=e.cellCount,o=e.overscanCellsCount,i=e.scrollDirection,n=e.startIndex,r=e.stopIndex;return o=Math.max(1,o),1===i?{overscanStartIndex:Math.max(0,n-1),overscanStopIndex:Math.min(t-1,r+o)}:{overscanStartIndex:Math.max(0,n-o),overscanStopIndex:Math.min(t-1,r+1)}}var D,F;function N(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,i)}return o}var j=(F=D=function(e){function t(){var e,o;(0,i.Z)(this,t);for(var n=arguments.length,a=new Array(n),d=0;d div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',i=t.head||t.getElementsByTagName("head")[0],n=t.createElement("style");n.id="detectElementResize",n.type="text/css",null!=e&&n.setAttribute("nonce",e),n.styleSheet?n.styleSheet.cssText=o:n.appendChild(t.createTextNode(o)),i.appendChild(n)}}(r),t.__resizeLast__={},t.__resizeListeners__=[],(t.__resizeTriggers__=r.createElement("div")).className="resize-triggers";var c='
';if(window.trustedTypes){var d=trustedTypes.createPolicy("react-virtualized-auto-sizer",{createHTML:function(){return c}});t.__resizeTriggers__.innerHTML=d.createHTML("")}else t.__resizeTriggers__.innerHTML=c;t.appendChild(t.__resizeTriggers__),s(t),t.addEventListener("scroll",a,!0),h&&(t.__resizeTriggers__.__animationListener__=function(e){e.animationName==g&&s(t)},t.__resizeTriggers__.addEventListener(h,t.__resizeTriggers__.__animationListener__))}t.__resizeListeners__.push(o)}},removeResizeListener:function(e,t){if(n)e.detachEvent("onresize",t);else if(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),!e.__resizeListeners__.length){e.removeEventListener("scroll",a,!0),e.__resizeTriggers__.__animationListener__&&(e.__resizeTriggers__.removeEventListener(h,e.__resizeTriggers__.__animationListener__),e.__resizeTriggers__.__animationListener__=null);try{e.__resizeTriggers__=!e.removeChild(e.__resizeTriggers__)}catch(o){}}}}}function q(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,i)}return o}function K(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{};(0,i.Z)(this,e),(0,c.Z)(this,"_cellHeightCache",{}),(0,c.Z)(this,"_cellWidthCache",{}),(0,c.Z)(this,"_columnWidthCache",{}),(0,c.Z)(this,"_rowHeightCache",{}),(0,c.Z)(this,"_defaultHeight",void 0),(0,c.Z)(this,"_defaultWidth",void 0),(0,c.Z)(this,"_minHeight",void 0),(0,c.Z)(this,"_minWidth",void 0),(0,c.Z)(this,"_keyMapper",void 0),(0,c.Z)(this,"_hasFixedHeight",void 0),(0,c.Z)(this,"_hasFixedWidth",void 0),(0,c.Z)(this,"_columnCount",0),(0,c.Z)(this,"_rowCount",0),(0,c.Z)(this,"columnWidth",(function(e){var o=e.index,i=t._keyMapper(0,o);return void 0!==t._columnWidthCache[i]?t._columnWidthCache[i]:t._defaultWidth})),(0,c.Z)(this,"rowHeight",(function(e){var o=e.index,i=t._keyMapper(o,0);return void 0!==t._rowHeightCache[i]?t._rowHeightCache[i]:t._defaultHeight}));var n=o.defaultHeight,r=o.defaultWidth,l=o.fixedHeight,s=o.fixedWidth,a=o.keyMapper,d=o.minHeight,h=o.minWidth;this._hasFixedHeight=!0===l,this._hasFixedWidth=!0===s,this._minHeight=d||0,this._minWidth=h||0,this._keyMapper=a||te,this._defaultHeight=Math.max(this._minHeight,"number"===typeof n?n:30),this._defaultWidth=Math.max(this._minWidth,"number"===typeof r?r:100)}return(0,n.Z)(e,[{key:"clear",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this._keyMapper(e,t);delete this._cellHeightCache[o],delete this._cellWidthCache[o],this._updateCachedColumnAndRowSizes(e,t)}},{key:"clearAll",value:function(){this._cellHeightCache={},this._cellWidthCache={},this._columnWidthCache={},this._rowHeightCache={},this._rowCount=0,this._columnCount=0}},{key:"hasFixedHeight",value:function(){return this._hasFixedHeight}},{key:"hasFixedWidth",value:function(){return this._hasFixedWidth}},{key:"getHeight",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(this._hasFixedHeight)return this._defaultHeight;var o=this._keyMapper(e,t);return void 0!==this._cellHeightCache[o]?Math.max(this._minHeight,this._cellHeightCache[o]):this._defaultHeight}},{key:"getWidth",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(this._hasFixedWidth)return this._defaultWidth;var o=this._keyMapper(e,t);return void 0!==this._cellWidthCache[o]?Math.max(this._minWidth,this._cellWidthCache[o]):this._defaultWidth}},{key:"has",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this._keyMapper(e,t);return void 0!==this._cellHeightCache[o]}},{key:"set",value:function(e,t,o,i){var n=this._keyMapper(e,t);t>=this._columnCount&&(this._columnCount=t+1),e>=this._rowCount&&(this._rowCount=e+1),this._cellHeightCache[n]=i,this._cellWidthCache[n]=o,this._updateCachedColumnAndRowSizes(e,t)}},{key:"_updateCachedColumnAndRowSizes",value:function(e,t){if(!this._hasFixedWidth){for(var o=0,i=0;i=0){var d=t.getScrollPositionForCell({align:n,cellIndex:r,height:i,scrollLeft:a,scrollTop:c,width:l});d.scrollLeft===a&&d.scrollTop===c||o._setScrollPosition(d)}})),(0,c.Z)((0,s.Z)(o),"_onScroll",(function(e){if(e.target===o._scrollingContainer){o._enablePointerEventsAfterDelay();var t=o.props,i=t.cellLayoutManager,n=t.height,r=t.isScrollingChange,l=t.width,s=o._scrollbarSize,a=i.getTotalSize(),c=a.height,d=a.width,h=Math.max(0,Math.min(d-l+s,e.target.scrollLeft)),u=Math.max(0,Math.min(c-n+s,e.target.scrollTop));if(o.state.scrollLeft!==h||o.state.scrollTop!==u){var f=e.cancelable?ne:re;o.state.isScrolling||r(!0),o.setState({isScrolling:!0,scrollLeft:h,scrollPositionChangeReason:f,scrollTop:u})}o._invokeOnScrollMemoizer({scrollLeft:h,scrollTop:u,totalWidth:d,totalHeight:c})}})),o._scrollbarSize=R(),void 0===o._scrollbarSize?(o._scrollbarSizeMeasured=!1,o._scrollbarSize=0):o._scrollbarSizeMeasured=!0,o}return(0,a.Z)(t,e),(0,n.Z)(t,[{key:"recomputeCellSizesAndPositions",value:function(){this._calculateSizeAndPositionDataOnNextUpdate=!0,this.forceUpdate()}},{key:"componentDidMount",value:function(){var e=this.props,t=e.cellLayoutManager,o=e.scrollLeft,i=e.scrollToCell,n=e.scrollTop;this._scrollbarSizeMeasured||(this._scrollbarSize=R(),this._scrollbarSizeMeasured=!0,this.setState({})),i>=0?this._updateScrollPositionForScrollToCell():(o>=0||n>=0)&&this._setScrollPosition({scrollLeft:o,scrollTop:n}),this._invokeOnSectionRenderedHelper();var r=t.getTotalSize(),l=r.height,s=r.width;this._invokeOnScrollMemoizer({scrollLeft:o||0,scrollTop:n||0,totalHeight:l,totalWidth:s})}},{key:"componentDidUpdate",value:function(e,t){var o=this.props,i=o.height,n=o.scrollToAlignment,r=o.scrollToCell,l=o.width,s=this.state,a=s.scrollLeft,c=s.scrollPositionChangeReason,d=s.scrollTop;c===re&&(a>=0&&a!==t.scrollLeft&&a!==this._scrollingContainer.scrollLeft&&(this._scrollingContainer.scrollLeft=a),d>=0&&d!==t.scrollTop&&d!==this._scrollingContainer.scrollTop&&(this._scrollingContainer.scrollTop=d)),i===e.height&&n===e.scrollToAlignment&&r===e.scrollToCell&&l===e.width||this._updateScrollPositionForScrollToCell(),this._invokeOnSectionRenderedHelper()}},{key:"componentWillUnmount",value:function(){this._disablePointerEventsTimeoutId&&clearTimeout(this._disablePointerEventsTimeoutId)}},{key:"render",value:function(){var e=this.props,t=e.autoHeight,o=e.cellCount,i=e.cellLayoutManager,n=e.className,r=e.height,l=e.horizontalOverscanSize,s=e.id,a=e.noContentRenderer,c=e.style,h=e.verticalOverscanSize,u=e.width,p=this.state,v=p.isScrolling,g=p.scrollLeft,m=p.scrollTop;(this._lastRenderedCellCount!==o||this._lastRenderedCellLayoutManager!==i||this._calculateSizeAndPositionDataOnNextUpdate)&&(this._lastRenderedCellCount=o,this._lastRenderedCellLayoutManager=i,this._calculateSizeAndPositionDataOnNextUpdate=!1,i.calculateSizeAndPositionData());var _=i.getTotalSize(),S=_.height,C=_.width,y=Math.max(0,g-l),w=Math.max(0,m-h),x=Math.min(C,g+u+l),R=Math.min(S,m+r+h),T=r>0&&u>0?i.cellRenderers({height:R-w,isScrolling:v,width:x-y,x:y,y:w}):[],z={boxSizing:"border-box",direction:"ltr",height:t?"auto":r,position:"relative",WebkitOverflowScrolling:"touch",width:u,willChange:"transform"},b=S>r?this._scrollbarSize:0,I=C>u?this._scrollbarSize:0;return z.overflowX=C+b<=u?"hidden":"auto",z.overflowY=S+I<=r?"hidden":"auto",d.createElement("div",{ref:this._setScrollingContainerRef,"aria-label":this.props["aria-label"],className:(0,f.Z)("ReactVirtualized__Collection",n),id:s,onScroll:this._onScroll,role:"grid",style:ie({},z,{},c),tabIndex:0},o>0&&d.createElement("div",{className:"ReactVirtualized__Collection__innerScrollContainer",style:{height:S,maxHeight:S,maxWidth:C,overflow:"hidden",pointerEvents:v?"none":"",width:C}},T),0===o&&a())}},{key:"_enablePointerEventsAfterDelay",value:function(){var e=this;this._disablePointerEventsTimeoutId&&clearTimeout(this._disablePointerEventsTimeoutId),this._disablePointerEventsTimeoutId=setTimeout((function(){(0,e.props.isScrollingChange)(!1),e._disablePointerEventsTimeoutId=null,e.setState({isScrolling:!1})}),150)}},{key:"_invokeOnScrollMemoizer",value:function(e){var t=this,o=e.scrollLeft,i=e.scrollTop,n=e.totalHeight,r=e.totalWidth;this._onScrollMemoizer({callback:function(e){var o=e.scrollLeft,i=e.scrollTop,l=t.props,s=l.height;(0,l.onScroll)({clientHeight:s,clientWidth:l.width,scrollHeight:n,scrollLeft:o,scrollTop:i,scrollWidth:r})},indices:{scrollLeft:o,scrollTop:i}})}},{key:"_setScrollPosition",value:function(e){var t=e.scrollLeft,o=e.scrollTop,i={scrollPositionChangeReason:re};t>=0&&(i.scrollLeft=t),o>=0&&(i.scrollTop=o),(t>=0&&t!==this.state.scrollLeft||o>=0&&o!==this.state.scrollTop)&&this.setState(i)}}],[{key:"getDerivedStateFromProps",value:function(e,t){return 0!==e.cellCount||0===t.scrollLeft&&0===t.scrollTop?e.scrollLeft!==t.scrollLeft||e.scrollTop!==t.scrollTop?{scrollLeft:null!=e.scrollLeft?e.scrollLeft:t.scrollLeft,scrollTop:null!=e.scrollTop?e.scrollTop:t.scrollTop,scrollPositionChangeReason:re}:null:{scrollLeft:0,scrollTop:0,scrollPositionChangeReason:re}}}]),t}(d.PureComponent);(0,c.Z)(le,"defaultProps",{"aria-label":"grid",horizontalOverscanSize:0,noContentRenderer:function(){return null},onScroll:function(){return null},onSectionRendered:function(){return null},scrollToAlignment:"auto",scrollToCell:-1,style:{},verticalOverscanSize:0}),le.propTypes={},(0,h.polyfill)(le);var se=le,ae=function(){function e(t){var o=t.height,n=t.width,r=t.x,l=t.y;(0,i.Z)(this,e),this.height=o,this.width=n,this.x=r,this.y=l,this._indexMap={},this._indices=[]}return(0,n.Z)(e,[{key:"addCellIndex",value:function(e){var t=e.index;this._indexMap[t]||(this._indexMap[t]=!0,this._indices.push(t))}},{key:"getCellIndices",value:function(){return this._indices}},{key:"toString",value:function(){return"".concat(this.x,",").concat(this.y," ").concat(this.width,"x").concat(this.height)}}]),e}(),ce=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:100;(0,i.Z)(this,e),this._sectionSize=t,this._cellMetadata=[],this._sections={}}return(0,n.Z)(e,[{key:"getCellIndices",value:function(e){var t=e.height,o=e.width,i=e.x,n=e.y,r={};return this.getSections({height:t,width:o,x:i,y:n}).forEach((function(e){return e.getCellIndices().forEach((function(e){r[e]=e}))})),Object.keys(r).map((function(e){return r[e]}))}},{key:"getCellMetadata",value:function(e){var t=e.index;return this._cellMetadata[t]}},{key:"getSections",value:function(e){for(var t=e.height,o=e.width,i=e.x,n=e.y,r=Math.floor(i/this._sectionSize),l=Math.floor((i+o-1)/this._sectionSize),s=Math.floor(n/this._sectionSize),a=Math.floor((n+t-1)/this._sectionSize),c=[],d=r;d<=l;d++)for(var h=s;h<=a;h++){var u="".concat(d,".").concat(h);this._sections[u]||(this._sections[u]=new ae({height:this._sectionSize,width:this._sectionSize,x:d*this._sectionSize,y:h*this._sectionSize})),c.push(this._sections[u])}return c}},{key:"getTotalSectionCount",value:function(){return Object.keys(this._sections).length}},{key:"toString",value:function(){var e=this;return Object.keys(this._sections).map((function(t){return e._sections[t].toString()}))}},{key:"registerCell",value:function(e){var t=e.cellMetadatum,o=e.index;this._cellMetadata[o]=t,this.getSections(t).forEach((function(e){return e.addCellIndex({index:o})}))}}]),e}();function de(e){var t=e.align,o=void 0===t?"auto":t,i=e.cellOffset,n=e.cellSize,r=e.containerSize,l=e.currentOffset,s=i,a=s-r+n;switch(o){case"start":return s;case"end":return a;case"center":return s-(r-n)/2;default:return Math.max(a,Math.min(s,l))}}var he=function(e){function t(e,o){var n;return(0,i.Z)(this,t),(n=(0,r.Z)(this,(0,l.Z)(t).call(this,e,o)))._cellMetadata=[],n._lastRenderedCellIndices=[],n._cellCache=[],n._isScrollingChange=n._isScrollingChange.bind((0,s.Z)(n)),n._setCollectionViewRef=n._setCollectionViewRef.bind((0,s.Z)(n)),n}return(0,a.Z)(t,e),(0,n.Z)(t,[{key:"forceUpdate",value:function(){void 0!==this._collectionView&&this._collectionView.forceUpdate()}},{key:"recomputeCellSizesAndPositions",value:function(){this._cellCache=[],this._collectionView.recomputeCellSizesAndPositions()}},{key:"render",value:function(){var e=(0,u.Z)({},this.props);return d.createElement(se,(0,u.Z)({cellLayoutManager:this,isScrollingChange:this._isScrollingChange,ref:this._setCollectionViewRef},e))}},{key:"calculateSizeAndPositionData",value:function(){var e=this.props,t=function(e){for(var t=e.cellCount,o=e.cellSizeAndPositionGetter,i=e.sectionSize,n=[],r=new ce(i),l=0,s=0,a=0;a=0&&oo||n1&&void 0!==arguments[1]?arguments[1]:0,o="function"===typeof e.recomputeGridSize?e.recomputeGridSize:e.recomputeRowHeights;o?o.call(e,t):e.forceUpdate()}(t._registeredChild,t._lastRenderedStartIndex)}))}))}},{key:"_onRowsRendered",value:function(e){var t=e.startIndex,o=e.stopIndex;this._lastRenderedStartIndex=t,this._lastRenderedStopIndex=o,this._doStuff(t,o)}},{key:"_doStuff",value:function(e,t){var o,i=this,n=this.props,r=n.isRowLoaded,l=n.minimumBatchSize,s=n.rowCount,a=n.threshold,c=function(e){for(var t=e.isRowLoaded,o=e.minimumBatchSize,i=e.rowCount,n=e.startIndex,r=e.stopIndex,l=[],s=null,a=null,c=n;c<=r;c++){t({index:c})?null!==a&&(l.push({startIndex:s,stopIndex:a}),s=a=null):(a=c,null===s&&(s=c))}if(null!==a){for(var d=Math.min(Math.max(a,s+o-1),i-1),h=a+1;h<=d&&!t({index:h});h++)a=h;l.push({startIndex:s,stopIndex:a})}if(l.length)for(var u=l[0];u.stopIndex-u.startIndex+10;){var f=u.startIndex-1;if(t({index:f}))break;u.startIndex=f}return l}({isRowLoaded:r,minimumBatchSize:l,rowCount:s,startIndex:Math.max(0,e-a),stopIndex:Math.min(s-1,t+a)}),d=(o=[]).concat.apply(o,(0,ue.Z)(c.map((function(e){return[e.startIndex,e.stopIndex]}))));this._loadMoreRowsMemoizer({callback:function(){i._loadUnloadedRanges(c)},indices:{squashedUnloadedRanges:d}})}},{key:"_registerChild",value:function(e){this._registeredChild=e}}]),t}(d.PureComponent);(0,c.Z)(fe,"defaultProps",{minimumBatchSize:10,rowCount:0,threshold:15}),fe.propTypes={};var pe,ve,ge=(ve=pe=function(e){function t(){var e,o;(0,i.Z)(this,t);for(var n=arguments.length,a=new Array(n),d=0;d0&&void 0!==arguments[0]?arguments[0]:{},t=e.columnIndex,o=void 0===t?0:t,i=e.rowIndex,n=void 0===i?0:i;this.Grid&&this.Grid.recomputeGridSize({rowIndex:n,columnIndex:o})}},{key:"recomputeRowHeights",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.Grid&&this.Grid.recomputeGridSize({rowIndex:e,columnIndex:0})}},{key:"scrollToPosition",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.Grid&&this.Grid.scrollToPosition({scrollTop:e})}},{key:"scrollToRow",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.Grid&&this.Grid.scrollToCell({columnIndex:0,rowIndex:e})}},{key:"render",value:function(){var e=this.props,t=e.className,o=e.noRowsRenderer,i=e.scrollToIndex,n=e.width,r=(0,f.Z)("ReactVirtualized__List",t);return d.createElement(H,(0,u.Z)({},this.props,{autoContainerWidth:!0,cellRenderer:this._cellRenderer,className:r,columnWidth:n,columnCount:1,noContentRenderer:o,onScroll:this._onScroll,onSectionRendered:this._onSectionRendered,ref:this._setRef,scrollToRow:i}))}}]),t}(d.PureComponent),(0,c.Z)(pe,"propTypes",null),ve);(0,c.Z)(ge,"defaultProps",{autoHeight:!1,estimatedRowSize:30,onScroll:function(){},noRowsRenderer:function(){return null},onRowsRendered:function(){},overscanIndicesGetter:E,overscanRowCount:10,scrollToAlignment:"auto",scrollToIndex:-1,style:{}});var me=o(29439);var _e={ge:function(e,t,o,i,n){return"function"===typeof o?function(e,t,o,i,n){for(var r=o+1;t<=o;){var l=t+o>>>1;n(e[l],i)>=0?(r=l,o=l-1):t=l+1}return r}(e,void 0===i?0:0|i,void 0===n?e.length-1:0|n,t,o):function(e,t,o,i){for(var n=o+1;t<=o;){var r=t+o>>>1;e[r]>=i?(n=r,o=r-1):t=r+1}return n}(e,void 0===o?0:0|o,void 0===i?e.length-1:0|i,t)},gt:function(e,t,o,i,n){return"function"===typeof o?function(e,t,o,i,n){for(var r=o+1;t<=o;){var l=t+o>>>1;n(e[l],i)>0?(r=l,o=l-1):t=l+1}return r}(e,void 0===i?0:0|i,void 0===n?e.length-1:0|n,t,o):function(e,t,o,i){for(var n=o+1;t<=o;){var r=t+o>>>1;e[r]>i?(n=r,o=r-1):t=r+1}return n}(e,void 0===o?0:0|o,void 0===i?e.length-1:0|i,t)},lt:function(e,t,o,i,n){return"function"===typeof o?function(e,t,o,i,n){for(var r=t-1;t<=o;){var l=t+o>>>1;n(e[l],i)<0?(r=l,t=l+1):o=l-1}return r}(e,void 0===i?0:0|i,void 0===n?e.length-1:0|n,t,o):function(e,t,o,i){for(var n=t-1;t<=o;){var r=t+o>>>1;e[r]>>1;n(e[l],i)<=0?(r=l,t=l+1):o=l-1}return r}(e,void 0===i?0:0|i,void 0===n?e.length-1:0|n,t,o):function(e,t,o,i){for(var n=t-1;t<=o;){var r=t+o>>>1;e[r]<=i?(n=r,t=r+1):o=r-1}return n}(e,void 0===o?0:0|o,void 0===i?e.length-1:0|i,t)},eq:function(e,t,o,i,n){return"function"===typeof o?function(e,t,o,i,n){for(;t<=o;){var r=t+o>>>1,l=n(e[r],i);if(0===l)return r;l<=0?t=r+1:o=r-1}return-1}(e,void 0===i?0:0|i,void 0===n?e.length-1:0|n,t,o):function(e,t,o,i){for(;t<=o;){var n=t+o>>>1,r=e[n];if(r===i)return n;r<=i?t=n+1:o=n-1}return-1}(e,void 0===o?0:0|o,void 0===i?e.length-1:0|i,t)}};function Se(e,t,o,i,n){this.mid=e,this.left=t,this.right=o,this.leftPoints=i,this.rightPoints=n,this.count=(t?t.count:0)+(o?o.count:0)+i.length}var Ce=Se.prototype;function ye(e,t){e.mid=t.mid,e.left=t.left,e.right=t.right,e.leftPoints=t.leftPoints,e.rightPoints=t.rightPoints,e.count=t.count}function we(e,t){var o=Pe(t);e.mid=o.mid,e.left=o.left,e.right=o.right,e.leftPoints=o.leftPoints,e.rightPoints=o.rightPoints,e.count=o.count}function xe(e,t){var o=e.intervals([]);o.push(t),we(e,o)}function Re(e,t){var o=e.intervals([]),i=o.indexOf(t);return i<0?0:(o.splice(i,1),we(e,o),1)}function Te(e,t,o){for(var i=0;i=0&&e[i][1]>=t;--i){var n=o(e[i]);if(n)return n}}function be(e,t){for(var o=0;o>1],n=[],r=[],l=[];for(o=0;o3*(t+1)?xe(this,e):this.left.insert(e):this.left=Pe([e]);else if(e[0]>this.mid)this.right?4*(this.right.count+1)>3*(t+1)?xe(this,e):this.right.insert(e):this.right=Pe([e]);else{var o=_e.ge(this.leftPoints,e,Ze),i=_e.ge(this.rightPoints,e,Me);this.leftPoints.splice(o,0,e),this.rightPoints.splice(i,0,e)}},Ce.remove=function(e){var t=this.count-this.leftPoints;if(e[1]3*(t-1)?Re(this,e):2===(r=this.left.remove(e))?(this.left=null,this.count-=1,1):(1===r&&(this.count-=1),r):0;if(e[0]>this.mid)return this.right?4*(this.left?this.left.count:0)>3*(t-1)?Re(this,e):2===(r=this.right.remove(e))?(this.right=null,this.count-=1,1):(1===r&&(this.count-=1),r):0;if(1===this.count)return this.leftPoints[0]===e?2:0;if(1===this.leftPoints.length&&this.leftPoints[0]===e){if(this.left&&this.right){for(var o=this,i=this.left;i.right;)o=i,i=i.right;if(o===this)i.right=this.right;else{var n=this.left,r=this.right;o.count-=i.count,o.right=i.left,i.left=n,i.right=r}ye(this,i),this.count=(this.left?this.left.count:0)+(this.right?this.right.count:0)+this.leftPoints.length}else this.left?ye(this,this.left):ye(this,this.right);return 1}for(n=_e.ge(this.leftPoints,e,Ze);nthis.mid){var o;if(this.right)if(o=this.right.queryPoint(e,t))return o;return ze(this.rightPoints,e,t)}return be(this.leftPoints,t)},Ce.queryInterval=function(e,t,o){var i;if(ethis.mid&&this.right&&(i=this.right.queryInterval(e,t,o)))return i;return tthis.mid?ze(this.rightPoints,e,o):be(this.leftPoints,o)};var Oe=ke.prototype;Oe.insert=function(e){this.root?this.root.insert(e):this.root=new Se(e[0],null,null,[e],[e])},Oe.remove=function(e){if(this.root){var t=this.root.remove(e);return 2===t&&(this.root=null),0!==t}return!1},Oe.queryPoint=function(e,t){if(this.root)return this.root.queryPoint(e,t)},Oe.queryInterval=function(e,t,o){if(e<=t&&this.root)return this.root.queryInterval(e,t,o)},Object.defineProperty(Oe,"count",{get:function(){return this.root?this.root.count:0}}),Object.defineProperty(Oe,"intervals",{get:function(){return this.root?this.root.intervals([]):[]}});var Le,Ge,Ae=function(){function e(){var t;(0,i.Z)(this,e),(0,c.Z)(this,"_columnSizeMap",{}),(0,c.Z)(this,"_intervalTree",t&&0!==t.length?new ke(Pe(t)):new ke(null)),(0,c.Z)(this,"_leftMap",{})}return(0,n.Z)(e,[{key:"estimateTotalHeight",value:function(e,t,o){var i=e-this.count;return this.tallestColumnSize+Math.ceil(i/t)*o}},{key:"range",value:function(e,t,o){var i=this;this._intervalTree.queryInterval(e,e+t,(function(e){var t=(0,me.Z)(e,3),n=t[0],r=(t[1],t[2]);return o(r,i._leftMap[r],n)}))}},{key:"setPosition",value:function(e,t,o,i){this._intervalTree.insert([o,o+i,e]),this._leftMap[e]=t;var n=this._columnSizeMap,r=n[t];n[t]=void 0===r?o+i:Math.max(r,o+i)}},{key:"count",get:function(){return this._intervalTree.count}},{key:"shortestColumnSize",get:function(){var e=this._columnSizeMap,t=0;for(var o in e){var i=e[o];t=0===t?i:Math.min(t,i)}return t}},{key:"tallestColumnSize",get:function(){var e=this._columnSizeMap,t=0;for(var o in e){var i=e[o];t=Math.max(t,i)}return t}}]),e}();function We(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,i)}return o}function He(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{};(0,i.Z)(this,e),(0,c.Z)(this,"_cellMeasurerCache",void 0),(0,c.Z)(this,"_columnIndexOffset",void 0),(0,c.Z)(this,"_rowIndexOffset",void 0),(0,c.Z)(this,"columnWidth",(function(e){var o=e.index;t._cellMeasurerCache.columnWidth({index:o+t._columnIndexOffset})})),(0,c.Z)(this,"rowHeight",(function(e){var o=e.index;t._cellMeasurerCache.rowHeight({index:o+t._rowIndexOffset})}));var n=o.cellMeasurerCache,r=o.columnIndexOffset,l=void 0===r?0:r,s=o.rowIndexOffset,a=void 0===s?0:s;this._cellMeasurerCache=n,this._columnIndexOffset=l,this._rowIndexOffset=a}return(0,n.Z)(e,[{key:"clear",value:function(e,t){this._cellMeasurerCache.clear(e+this._rowIndexOffset,t+this._columnIndexOffset)}},{key:"clearAll",value:function(){this._cellMeasurerCache.clearAll()}},{key:"hasFixedHeight",value:function(){return this._cellMeasurerCache.hasFixedHeight()}},{key:"hasFixedWidth",value:function(){return this._cellMeasurerCache.hasFixedWidth()}},{key:"getHeight",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this._cellMeasurerCache.getHeight(e+this._rowIndexOffset,t+this._columnIndexOffset)}},{key:"getWidth",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this._cellMeasurerCache.getWidth(e+this._rowIndexOffset,t+this._columnIndexOffset)}},{key:"has",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this._cellMeasurerCache.has(e+this._rowIndexOffset,t+this._columnIndexOffset)}},{key:"set",value:function(e,t,o,i){this._cellMeasurerCache.set(e+this._rowIndexOffset,t+this._columnIndexOffset,o,i)}},{key:"defaultHeight",get:function(){return this._cellMeasurerCache.defaultHeight}},{key:"defaultWidth",get:function(){return this._cellMeasurerCache.defaultWidth}}]),e}();function Ne(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,i)}return o}function je(e){for(var t=1;t0?new Fe({cellMeasurerCache:a,columnIndexOffset:0,rowIndexOffset:u}):a,n._deferredMeasurementCacheBottomRightGrid=h>0||u>0?new Fe({cellMeasurerCache:a,columnIndexOffset:h,rowIndexOffset:u}):a,n._deferredMeasurementCacheTopRightGrid=h>0?new Fe({cellMeasurerCache:a,columnIndexOffset:h,rowIndexOffset:0}):a),n}return(0,a.Z)(t,e),(0,n.Z)(t,[{key:"forceUpdateGrids",value:function(){this._bottomLeftGrid&&this._bottomLeftGrid.forceUpdate(),this._bottomRightGrid&&this._bottomRightGrid.forceUpdate(),this._topLeftGrid&&this._topLeftGrid.forceUpdate(),this._topRightGrid&&this._topRightGrid.forceUpdate()}},{key:"invalidateCellSizeAfterRender",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.columnIndex,o=void 0===t?0:t,i=e.rowIndex,n=void 0===i?0:i;this._deferredInvalidateColumnIndex="number"===typeof this._deferredInvalidateColumnIndex?Math.min(this._deferredInvalidateColumnIndex,o):o,this._deferredInvalidateRowIndex="number"===typeof this._deferredInvalidateRowIndex?Math.min(this._deferredInvalidateRowIndex,n):n}},{key:"measureAllCells",value:function(){this._bottomLeftGrid&&this._bottomLeftGrid.measureAllCells(),this._bottomRightGrid&&this._bottomRightGrid.measureAllCells(),this._topLeftGrid&&this._topLeftGrid.measureAllCells(),this._topRightGrid&&this._topRightGrid.measureAllCells()}},{key:"recomputeGridSize",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.columnIndex,o=void 0===t?0:t,i=e.rowIndex,n=void 0===i?0:i,r=this.props,l=r.fixedColumnCount,s=r.fixedRowCount,a=Math.max(0,o-l),c=Math.max(0,n-s);this._bottomLeftGrid&&this._bottomLeftGrid.recomputeGridSize({columnIndex:o,rowIndex:c}),this._bottomRightGrid&&this._bottomRightGrid.recomputeGridSize({columnIndex:a,rowIndex:c}),this._topLeftGrid&&this._topLeftGrid.recomputeGridSize({columnIndex:o,rowIndex:n}),this._topRightGrid&&this._topRightGrid.recomputeGridSize({columnIndex:a,rowIndex:n}),this._leftGridWidth=null,this._topGridHeight=null,this._maybeCalculateCachedStyles(!0)}},{key:"componentDidMount",value:function(){var e=this.props,t=e.scrollLeft,o=e.scrollTop;if(t>0||o>0){var i={};t>0&&(i.scrollLeft=t),o>0&&(i.scrollTop=o),this.setState(i)}this._handleInvalidatedGridSize()}},{key:"componentDidUpdate",value:function(){this._handleInvalidatedGridSize()}},{key:"render",value:function(){var e=this.props,t=e.onScroll,o=e.onSectionRendered,i=(e.onScrollbarPresenceChange,e.scrollLeft,e.scrollToColumn),n=(e.scrollTop,e.scrollToRow),r=(0,v.Z)(e,["onScroll","onSectionRendered","onScrollbarPresenceChange","scrollLeft","scrollToColumn","scrollTop","scrollToRow"]);if(this._prepareForRender(),0===this.props.width||0===this.props.height)return null;var l=this.state,s=l.scrollLeft,a=l.scrollTop;return d.createElement("div",{style:this._containerOuterStyle},d.createElement("div",{style:this._containerTopStyle},this._renderTopLeftGrid(r),this._renderTopRightGrid(je({},r,{onScroll:t,scrollLeft:s}))),d.createElement("div",{style:this._containerBottomStyle},this._renderBottomLeftGrid(je({},r,{onScroll:t,scrollTop:a})),this._renderBottomRightGrid(je({},r,{onScroll:t,onSectionRendered:o,scrollLeft:s,scrollToColumn:i,scrollToRow:n,scrollTop:a}))))}},{key:"_getBottomGridHeight",value:function(e){return e.height-this._getTopGridHeight(e)}},{key:"_getLeftGridWidth",value:function(e){var t=e.fixedColumnCount,o=e.columnWidth;if(null==this._leftGridWidth)if("function"===typeof o){for(var i=0,n=0;n=0?e.scrollLeft:t.scrollLeft,scrollTop:null!=e.scrollTop&&e.scrollTop>=0?e.scrollTop:t.scrollTop}:null}}]),t}(d.PureComponent);(0,c.Z)(Ue,"defaultProps",{classNameBottomLeftGrid:"",classNameBottomRightGrid:"",classNameTopLeftGrid:"",classNameTopRightGrid:"",enableFixedColumnScroll:!1,enableFixedRowScroll:!1,fixedColumnCount:0,fixedRowCount:0,scrollToColumn:-1,scrollToRow:-1,style:{},styleBottomLeftGrid:{},styleBottomRightGrid:{},styleTopLeftGrid:{},styleTopRightGrid:{},hideTopRightGridScrollbar:!1,hideBottomLeftGridScrollbar:!1}),Ue.propTypes={},(0,h.polyfill)(Ue);(function(e){function t(e,o){var n;return(0,i.Z)(this,t),(n=(0,r.Z)(this,(0,l.Z)(t).call(this,e,o))).state={clientHeight:0,clientWidth:0,scrollHeight:0,scrollLeft:0,scrollTop:0,scrollWidth:0},n._onScroll=n._onScroll.bind((0,s.Z)(n)),n}return(0,a.Z)(t,e),(0,n.Z)(t,[{key:"render",value:function(){var e=this.props.children,t=this.state,o=t.clientHeight,i=t.clientWidth,n=t.scrollHeight,r=t.scrollLeft,l=t.scrollTop,s=t.scrollWidth;return e({clientHeight:o,clientWidth:i,onScroll:this._onScroll,scrollHeight:n,scrollLeft:r,scrollTop:l,scrollWidth:s})}},{key:"_onScroll",value:function(e){var t=e.clientHeight,o=e.clientWidth,i=e.scrollHeight,n=e.scrollLeft,r=e.scrollTop,l=e.scrollWidth;this.setState({clientHeight:t,clientWidth:o,scrollHeight:i,scrollLeft:n,scrollTop:r,scrollWidth:l})}}]),t}(d.PureComponent)).propTypes={};function Be(e){var t=e.className,o=e.columns,i=e.style;return d.createElement("div",{className:t,role:"row",style:i},o)}Be.propTypes=null;var Ve={ASC:"ASC",DESC:"DESC"};function qe(e){var t=e.sortDirection,o=(0,f.Z)("ReactVirtualized__Table__sortableHeaderIcon",{"ReactVirtualized__Table__sortableHeaderIcon--ASC":t===Ve.ASC,"ReactVirtualized__Table__sortableHeaderIcon--DESC":t===Ve.DESC});return d.createElement("svg",{className:o,width:18,height:18,viewBox:"0 0 24 24"},t===Ve.ASC?d.createElement("path",{d:"M7 14l5-5 5 5z"}):d.createElement("path",{d:"M7 10l5 5 5-5z"}),d.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}))}function Ke(e){var t=e.dataKey,o=e.label,i=e.sortBy,n=e.sortDirection,r=i===t,l=[d.createElement("span",{className:"ReactVirtualized__Table__headerTruncatedText",key:"label",title:"string"===typeof o?o:null},o)];return r&&l.push(d.createElement(qe,{key:"SortIndicator",sortDirection:n})),l}function Xe(e){var t=e.className,o=e.columns,i=e.index,n=e.key,r=e.onRowClick,l=e.onRowDoubleClick,s=e.onRowMouseOut,a=e.onRowMouseOver,c=e.onRowRightClick,h=e.rowData,f=e.style,p={"aria-rowindex":i+1};return(r||l||s||a||c)&&(p["aria-label"]="row",p.tabIndex=0,r&&(p.onClick=function(e){return r({event:e,index:i,rowData:h})}),l&&(p.onDoubleClick=function(e){return l({event:e,index:i,rowData:h})}),s&&(p.onMouseOut=function(e){return s({event:e,index:i,rowData:h})}),a&&(p.onMouseOver=function(e){return a({event:e,index:i,rowData:h})}),c&&(p.onContextMenu=function(e){return c({event:e,index:i,rowData:h})})),d.createElement("div",(0,u.Z)({},p,{className:t,key:n,role:"row",style:f}),o)}qe.propTypes={},Ke.propTypes=null,Xe.propTypes=null;var Ye=function(e){function t(){return(0,i.Z)(this,t),(0,r.Z)(this,(0,l.Z)(t).apply(this,arguments))}return(0,a.Z)(t,e),t}(d.Component);function Je(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,i)}return o}function Qe(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.columnIndex,o=void 0===t?0:t,i=e.rowIndex,n=void 0===i?0:i;this.Grid&&this.Grid.recomputeGridSize({rowIndex:n,columnIndex:o})}},{key:"recomputeRowHeights",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.Grid&&this.Grid.recomputeGridSize({rowIndex:e})}},{key:"scrollToPosition",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.Grid&&this.Grid.scrollToPosition({scrollTop:e})}},{key:"scrollToRow",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.Grid&&this.Grid.scrollToCell({columnIndex:0,rowIndex:e})}},{key:"getScrollbarWidth",value:function(){if(this.Grid){var e=(0,Q.findDOMNode)(this.Grid),t=e.clientWidth||0;return(e.offsetWidth||0)-t}return 0}},{key:"componentDidMount",value:function(){this._setScrollbarWidth()}},{key:"componentDidUpdate",value:function(){this._setScrollbarWidth()}},{key:"render",value:function(){var e=this,t=this.props,o=t.children,i=t.className,n=t.disableHeader,r=t.gridClassName,l=t.gridStyle,s=t.headerHeight,a=t.headerRowRenderer,c=t.height,h=t.id,p=t.noRowsRenderer,v=t.rowClassName,g=t.rowStyle,m=t.scrollToIndex,_=t.style,S=t.width,C=this.state.scrollbarWidth,y=n?c:c-s,w="function"===typeof v?v({index:-1}):v,x="function"===typeof g?g({index:-1}):g;return this._cachedColumnStyles=[],d.Children.toArray(o).forEach((function(t,o){var i=e._getFlexStyleForColumn(t,t.props.style);e._cachedColumnStyles[o]=Qe({overflow:"hidden"},i)})),d.createElement("div",{"aria-label":this.props["aria-label"],"aria-labelledby":this.props["aria-labelledby"],"aria-colcount":d.Children.toArray(o).length,"aria-rowcount":this.props.rowCount,className:(0,f.Z)("ReactVirtualized__Table",i),id:h,role:"grid",style:_},!n&&a({className:(0,f.Z)("ReactVirtualized__Table__headerRow",w),columns:this._getHeaderColumns(),style:Qe({height:s,overflow:"hidden",paddingRight:C,width:S},x)}),d.createElement(H,(0,u.Z)({},this.props,{"aria-readonly":null,autoContainerWidth:!0,className:(0,f.Z)("ReactVirtualized__Table__Grid",r),cellRenderer:this._createRow,columnWidth:S,columnCount:1,height:y,id:void 0,noContentRenderer:p,onScroll:this._onScroll,onSectionRendered:this._onSectionRendered,ref:this._setRef,role:"rowgroup",scrollbarWidth:C,scrollToRow:m,style:Qe({},l,{overflowX:"hidden"})})))}},{key:"_createColumn",value:function(e){var t=e.column,o=e.columnIndex,i=e.isScrolling,n=e.parent,r=e.rowData,l=e.rowIndex,s=this.props.onColumnClick,a=t.props,c=a.cellDataGetter,h=a.cellRenderer,u=a.className,p=a.columnData,v=a.dataKey,g=a.id,m=h({cellData:c({columnData:p,dataKey:v,rowData:r}),columnData:p,columnIndex:o,dataKey:v,isScrolling:i,parent:n,rowData:r,rowIndex:l}),_=this._cachedColumnStyles[o],S="string"===typeof m?m:null;return d.createElement("div",{"aria-colindex":o+1,"aria-describedby":g,className:(0,f.Z)("ReactVirtualized__Table__rowColumn",u),key:"Row"+l+"-Col"+o,onClick:function(e){s&&s({columnData:p,dataKey:v,event:e})},role:"gridcell",style:_,title:S},m)}},{key:"_createHeader",value:function(e){var t,o,i,n,r,l=e.column,s=e.index,a=this.props,c=a.headerClassName,h=a.headerStyle,u=a.onHeaderClick,p=a.sort,v=a.sortBy,g=a.sortDirection,m=l.props,_=m.columnData,S=m.dataKey,C=m.defaultSortDirection,y=m.disableSort,w=m.headerRenderer,x=m.id,R=m.label,T=!y&&p,z=(0,f.Z)("ReactVirtualized__Table__headerColumn",c,l.props.headerClassName,{ReactVirtualized__Table__sortableHeaderColumn:T}),b=this._getFlexStyleForColumn(l,Qe({},h,{},l.props.headerStyle)),I=w({columnData:_,dataKey:S,disableSort:y,label:R,sortBy:v,sortDirection:g});if(T||u){var Z=v!==S?C:g===Ve.DESC?Ve.ASC:Ve.DESC,M=function(e){T&&p({defaultSortDirection:C,event:e,sortBy:S,sortDirection:Z}),u&&u({columnData:_,dataKey:S,event:e})};r=l.props["aria-label"]||R||S,n="none",i=0,t=M,o=function(e){"Enter"!==e.key&&" "!==e.key||M(e)}}return v===S&&(n=g===Ve.ASC?"ascending":"descending"),d.createElement("div",{"aria-label":r,"aria-sort":n,className:z,id:x,key:"Header-Col"+s,onClick:t,onKeyDown:o,role:"columnheader",style:b,tabIndex:i},I)}},{key:"_createRow",value:function(e){var t=this,o=e.rowIndex,i=e.isScrolling,n=e.key,r=e.parent,l=e.style,s=this.props,a=s.children,c=s.onRowClick,h=s.onRowDoubleClick,u=s.onRowRightClick,p=s.onRowMouseOver,v=s.onRowMouseOut,g=s.rowClassName,m=s.rowGetter,_=s.rowRenderer,S=s.rowStyle,C=this.state.scrollbarWidth,y="function"===typeof g?g({index:o}):g,w="function"===typeof S?S({index:o}):S,x=m({index:o}),R=d.Children.toArray(a).map((function(e,n){return t._createColumn({column:e,columnIndex:n,isScrolling:i,parent:r,rowData:x,rowIndex:o,scrollbarWidth:C})})),T=(0,f.Z)("ReactVirtualized__Table__row",y),z=Qe({},l,{height:this._getRowHeight(o),overflow:"hidden",paddingRight:C},w);return _({className:T,columns:R,index:o,isScrolling:i,key:n,onRowClick:c,onRowDoubleClick:h,onRowRightClick:u,onRowMouseOver:p,onRowMouseOut:v,rowData:x,style:z})}},{key:"_getFlexStyleForColumn",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o="".concat(e.props.flexGrow," ").concat(e.props.flexShrink," ").concat(e.props.width,"px"),i=Qe({},t,{flex:o,msFlex:o,WebkitFlex:o});return e.props.maxWidth&&(i.maxWidth=e.props.maxWidth),e.props.minWidth&&(i.minWidth=e.props.minWidth),i}},{key:"_getHeaderColumns",value:function(){var e=this,t=this.props,o=t.children;return(t.disableHeader?[]:d.Children.toArray(o)).map((function(t,o){return e._createHeader({column:t,index:o})}))}},{key:"_getRowHeight",value:function(e){var t=this.props.rowHeight;return"function"===typeof t?t({index:e}):t}},{key:"_onScroll",value:function(e){var t=e.clientHeight,o=e.scrollHeight,i=e.scrollTop;(0,this.props.onScroll)({clientHeight:t,scrollHeight:o,scrollTop:i})}},{key:"_onSectionRendered",value:function(e){var t=e.rowOverscanStartIndex,o=e.rowOverscanStopIndex,i=e.rowStartIndex,n=e.rowStopIndex;(0,this.props.onRowsRendered)({overscanStartIndex:t,overscanStopIndex:o,startIndex:i,stopIndex:n})}},{key:"_setRef",value:function(e){this.Grid=e}},{key:"_setScrollbarWidth",value:function(){var e=this.getScrollbarWidth();this.setState({scrollbarWidth:e})}}]),t}(d.PureComponent);(0,c.Z)($e,"defaultProps",{disableHeader:!1,estimatedRowSize:30,headerHeight:0,headerStyle:{},noRowsRenderer:function(){return null},onRowsRendered:function(){return null},onScroll:function(){return null},overscanIndicesGetter:E,overscanRowCount:10,rowRenderer:Xe,headerRowRenderer:Be,rowStyle:{},scrollToAlignment:"auto",scrollToIndex:-1,style:{}}),$e.propTypes={};var et=[],tt=null,ot=null;function it(){ot&&(ot=null,document.body&&null!=tt&&(document.body.style.pointerEvents=tt),tt=null)}function nt(){it(),et.forEach((function(e){return e.__resetIsScrolling()}))}function rt(e){e.currentTarget===window&&null==tt&&document.body&&(tt=document.body.style.pointerEvents,document.body.style.pointerEvents="none"),function(){ot&&P(ot);var e=0;et.forEach((function(t){e=Math.max(e,t.props.scrollingResetTimeInterval)})),ot=k(nt,e)}(),et.forEach((function(t){t.props.scrollElement===e.currentTarget&&t.__handleWindowScrollEvent()}))}function lt(e,t){et.some((function(e){return e.props.scrollElement===t}))||t.addEventListener("scroll",rt),et.push(e)}function st(e,t){(et=et.filter((function(t){return t!==e}))).length||(t.removeEventListener("scroll",rt),ot&&(P(ot),it()))}var at,ct,dt=function(e){return e===window},ht=function(e){return e.getBoundingClientRect()};function ut(e,t){if(e){if(dt(e)){var o=window,i=o.innerHeight,n=o.innerWidth;return{height:"number"===typeof i?i:0,width:"number"===typeof n?n:0}}return ht(e)}return{height:t.serverHeight,width:t.serverWidth}}function ft(e){return dt(e)&&document.documentElement?{top:"scrollY"in window?window.scrollY:document.documentElement.scrollTop,left:"scrollX"in window?window.scrollX:document.documentElement.scrollLeft}:{top:e.scrollTop,left:e.scrollLeft}}function pt(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,i)}return o}var vt=function(){return"undefined"!==typeof window?window:void 0},gt=(ct=at=function(e){function t(){var e,o;(0,i.Z)(this,t);for(var n=arguments.length,a=new Array(n),d=0;d0&&void 0!==arguments[0]?arguments[0]:this.props.scrollElement,t=this.props.onResize,o=this.state,i=o.height,n=o.width,r=this._child||Q.findDOMNode(this);if(r instanceof Element&&e){var l=function(e,t){if(dt(t)&&document.documentElement){var o=document.documentElement,i=ht(e),n=ht(o);return{top:i.top-n.top,left:i.left-n.left}}var r=ft(t),l=ht(e),s=ht(t);return{top:l.top+r.top-s.top,left:l.left+r.left-s.left}}(r,e);this._positionFromTop=l.top,this._positionFromLeft=l.left}var s=ut(e,this.props);i===s.height&&n===s.width||(this.setState({height:s.height,width:s.width}),t({height:s.height,width:s.width}))}},{key:"componentDidMount",value:function(){var e=this.props.scrollElement;this._detectElementResize=V(),this.updatePosition(e),e&&(lt(this,e),this._registerResizeListener(e)),this._isMounted=!0}},{key:"componentDidUpdate",value:function(e,t){var o=this.props.scrollElement,i=e.scrollElement;i!==o&&null!=i&&null!=o&&(this.updatePosition(o),st(this,i),lt(this,o),this._unregisterResizeListener(i),this._registerResizeListener(o))}},{key:"componentWillUnmount",value:function(){var e=this.props.scrollElement;e&&(st(this,e),this._unregisterResizeListener(e)),this._isMounted=!1}},{key:"render",value:function(){var e=this.props.children,t=this.state,o=t.isScrolling,i=t.scrollTop,n=t.scrollLeft,r=t.height,l=t.width;return e({onChildScroll:this._onChildScroll,registerChild:this._registerChild,height:r,isScrolling:o,scrollLeft:n,scrollTop:i,width:l})}}]),t}(d.PureComponent),(0,c.Z)(at,"propTypes",null),ct);(0,c.Z)(gt,"defaultProps",{onResize:function(){},onScroll:function(){},scrollingResetTimeInterval:150,scrollElement:vt(),serverHeight:0,serverWidth:0})}}]); -//# sourceMappingURL=417.9842b54e.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/417.9842b54e.chunk.js.map b/web-app/build/static/js/417.9842b54e.chunk.js.map deleted file mode 100644 index 87aff287cab..00000000000 --- a/web-app/build/static/js/417.9842b54e.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/417.9842b54e.chunk.js","mappings":"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","sources":["../node_modules/@mui/material/InputAdornment/inputAdornmentClasses.js","../node_modules/@mui/material/InputAdornment/InputAdornment.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/react-virtualized/dist/es/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.js","../node_modules/react-virtualized/dist/es/Grid/utils/CellSizeAndPositionManager.js","../node_modules/react-virtualized/dist/es/Grid/utils/maxElementSize.js","../node_modules/react-virtualized/dist/es/Grid/utils/ScalingCellSizeAndPositionManager.js","../node_modules/react-virtualized/dist/es/utils/createCallbackMemoizer.js","../node_modules/react-virtualized/dist/es/Grid/utils/updateScrollIndexHelper.js","../node_modules/dom-helpers/esm/canUseDOM.js","../node_modules/dom-helpers/esm/scrollbarSize.js","../node_modules/react-virtualized/dist/es/utils/animationFrame.js","../node_modules/react-virtualized/dist/es/Grid/Grid.js","../node_modules/react-virtualized/dist/es/utils/requestAnimationTimeout.js","../node_modules/react-virtualized/dist/es/Grid/defaultOverscanIndicesGetter.js","../node_modules/react-virtualized/dist/es/Grid/defaultCellRangeRenderer.js","../node_modules/react-virtualized/dist/es/Grid/accessibilityOverscanIndicesGetter.js","../node_modules/react-virtualized/dist/es/ArrowKeyStepper/types.js","../node_modules/react-virtualized/dist/es/ArrowKeyStepper/ArrowKeyStepper.js","../node_modules/react-virtualized/dist/es/AutoSizer/AutoSizer.js","../node_modules/react-virtualized/dist/es/vendor/detectElementResize.js","../node_modules/react-virtualized/dist/es/CellMeasurer/CellMeasurer.js","../node_modules/react-virtualized/dist/es/CellMeasurer/CellMeasurerCache.js","../node_modules/react-virtualized/dist/es/Collection/CollectionView.js","../node_modules/react-virtualized/dist/es/Collection/Section.js","../node_modules/react-virtualized/dist/es/Collection/SectionManager.js","../node_modules/react-virtualized/dist/es/utils/getUpdatedOffsetForIndex.js","../node_modules/react-virtualized/dist/es/Collection/Collection.js","../node_modules/react-virtualized/dist/es/Collection/utils/calculateSizeAndPositionData.js","../node_modules/react-virtualized/dist/es/ColumnSizer/ColumnSizer.js","../node_modules/react-virtualized/dist/es/ColumnSizer/index.js","../node_modules/react-virtualized/dist/es/InfiniteLoader/InfiniteLoader.js","../node_modules/react-virtualized/dist/es/InfiniteLoader/index.js","../node_modules/react-virtualized/dist/es/List/List.js","../node_modules/react-virtualized/dist/es/vendor/binarySearchBounds.js","../node_modules/react-virtualized/dist/es/vendor/intervalTree.js","../node_modules/react-virtualized/dist/es/Masonry/PositionCache.js","../node_modules/react-virtualized/dist/es/Masonry/Masonry.js","../node_modules/react-virtualized/dist/es/Masonry/index.js","../node_modules/react-virtualized/dist/es/MultiGrid/CellMeasurerCacheDecorator.js","../node_modules/react-virtualized/dist/es/MultiGrid/MultiGrid.js","../node_modules/react-virtualized/dist/es/ScrollSync/ScrollSync.js","../node_modules/react-virtualized/dist/es/Table/defaultHeaderRowRenderer.js","../node_modules/react-virtualized/dist/es/Table/SortDirection.js","../node_modules/react-virtualized/dist/es/Table/SortIndicator.js","../node_modules/react-virtualized/dist/es/Table/defaultHeaderRenderer.js","../node_modules/react-virtualized/dist/es/Table/defaultRowRenderer.js","../node_modules/react-virtualized/dist/es/Table/Column.js","../node_modules/react-virtualized/dist/es/Table/Table.js","../node_modules/react-virtualized/dist/es/Table/defaultCellDataGetter.js","../node_modules/react-virtualized/dist/es/Table/defaultCellRenderer.js","../node_modules/react-virtualized/dist/es/Table/index.js","../node_modules/react-virtualized/dist/es/WindowScroller/utils/onScroll.js","../node_modules/react-virtualized/dist/es/WindowScroller/utils/dimensions.js","../node_modules/react-virtualized/dist/es/WindowScroller/WindowScroller.js"],"sourcesContent":["import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getInputAdornmentUtilityClass(slot) {\n return generateUtilityClass('MuiInputAdornment', slot);\n}\nconst inputAdornmentClasses = generateUtilityClasses('MuiInputAdornment', ['root', 'filled', 'standard', 'outlined', 'positionStart', 'positionEnd', 'disablePointerEvents', 'hiddenLabel', 'sizeSmall']);\nexport default inputAdornmentClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _span;\nconst _excluded = [\"children\", \"className\", \"component\", \"disablePointerEvents\", \"disableTypography\", \"position\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport capitalize from '../utils/capitalize';\nimport Typography from '../Typography';\nimport FormControlContext from '../FormControl/FormControlContext';\nimport useFormControl from '../FormControl/useFormControl';\nimport styled from '../styles/styled';\nimport inputAdornmentClasses, { getInputAdornmentUtilityClass } from './inputAdornmentClasses';\nimport useThemeProps from '../styles/useThemeProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`position${capitalize(ownerState.position)}`], ownerState.disablePointerEvents === true && styles.disablePointerEvents, styles[ownerState.variant]];\n};\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePointerEvents,\n hiddenLabel,\n position,\n size,\n variant\n } = ownerState;\n const slots = {\n root: ['root', disablePointerEvents && 'disablePointerEvents', position && `position${capitalize(position)}`, variant, hiddenLabel && 'hiddenLabel', size && `size${capitalize(size)}`]\n };\n return composeClasses(slots, getInputAdornmentUtilityClass, classes);\n};\nconst InputAdornmentRoot = styled('div', {\n name: 'MuiInputAdornment',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n height: '0.01em',\n // Fix IE11 flexbox alignment. To remove at some point.\n maxHeight: '2em',\n alignItems: 'center',\n whiteSpace: 'nowrap',\n color: (theme.vars || theme).palette.action.active\n}, ownerState.variant === 'filled' && {\n // Styles applied to the root element if `variant=\"filled\"`.\n [`&.${inputAdornmentClasses.positionStart}&:not(.${inputAdornmentClasses.hiddenLabel})`]: {\n marginTop: 16\n }\n}, ownerState.position === 'start' && {\n // Styles applied to the root element if `position=\"start\"`.\n marginRight: 8\n}, ownerState.position === 'end' && {\n // Styles applied to the root element if `position=\"end\"`.\n marginLeft: 8\n}, ownerState.disablePointerEvents === true && {\n // Styles applied to the root element if `disablePointerEvents={true}`.\n pointerEvents: 'none'\n}));\nconst InputAdornment = /*#__PURE__*/React.forwardRef(function InputAdornment(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiInputAdornment'\n });\n const {\n children,\n className,\n component = 'div',\n disablePointerEvents = false,\n disableTypography = false,\n position,\n variant: variantProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl() || {};\n let variant = variantProp;\n if (variantProp && muiFormControl.variant) {\n if (process.env.NODE_ENV !== 'production') {\n if (variantProp === muiFormControl.variant) {\n console.error('MUI: The `InputAdornment` variant infers the variant prop ' + 'you do not have to provide one.');\n }\n }\n }\n if (muiFormControl && !variant) {\n variant = muiFormControl.variant;\n }\n const ownerState = _extends({}, props, {\n hiddenLabel: muiFormControl.hiddenLabel,\n size: muiFormControl.size,\n disablePointerEvents,\n position,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(FormControlContext.Provider, {\n value: null,\n children: /*#__PURE__*/_jsx(InputAdornmentRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: typeof children === 'string' && !disableTypography ? /*#__PURE__*/_jsx(Typography, {\n color: \"text.secondary\",\n children: children\n }) : /*#__PURE__*/_jsxs(React.Fragment, {\n children: [position === 'start' ? /* notranslate needed while Google Translate will not fix zero-width space issue */_span || (_span = /*#__PURE__*/_jsx(\"span\", {\n className: \"notranslate\",\n children: \"\\u200B\"\n })) : null, children]\n })\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? InputAdornment.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component, normally an `IconButton` or string.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Disable pointer events on the root.\n * This allows for the content of the adornment to focus the `input` on click.\n * @default false\n */\n disablePointerEvents: PropTypes.bool,\n /**\n * If children is a string then disable wrapping in a Typography component.\n * @default false\n */\n disableTypography: PropTypes.bool,\n /**\n * The position this adornment should appear relative to the `Input`.\n */\n position: PropTypes.oneOf(['end', 'start']).isRequired,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n * Note: If you are using the `TextField` component or the `FormControl` component\n * you do not have to set this manually.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputAdornment;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","/**\n * Helper method that determines when to recalculate row or column metadata.\n */\nexport default function calculateSizeAndPositionDataAndUpdateScrollOffset(_ref) {\n var cellCount = _ref.cellCount,\n cellSize = _ref.cellSize,\n computeMetadataCallback = _ref.computeMetadataCallback,\n computeMetadataCallbackProps = _ref.computeMetadataCallbackProps,\n nextCellsCount = _ref.nextCellsCount,\n nextCellSize = _ref.nextCellSize,\n nextScrollToIndex = _ref.nextScrollToIndex,\n scrollToIndex = _ref.scrollToIndex,\n updateScrollOffsetForScrollToIndex = _ref.updateScrollOffsetForScrollToIndex;\n\n // Don't compare cell sizes if they are functions because inline functions would cause infinite loops.\n // In that event users should use the manual recompute methods to inform of changes.\n if (cellCount !== nextCellsCount || (typeof cellSize === 'number' || typeof nextCellSize === 'number') && cellSize !== nextCellSize) {\n computeMetadataCallback(computeMetadataCallbackProps); // Updated cell metadata may have hidden the previous scrolled-to item.\n // In this case we should also update the scrollTop to ensure it stays visible.\n\n if (scrollToIndex >= 0 && scrollToIndex === nextScrollToIndex) {\n updateScrollOffsetForScrollToIndex();\n }\n }\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\n/**\n * Just-in-time calculates and caches size and position information for a collection of cells.\n */\nvar CellSizeAndPositionManager =\n/*#__PURE__*/\nfunction () {\n // Cache of size and position data for cells, mapped by cell index.\n // Note that invalid values may exist in this map so only rely on cells up to this._lastMeasuredIndex\n // Measurements for cells up to this index can be trusted; cells afterward should be estimated.\n // Used in deferred mode to track which cells have been queued for measurement.\n function CellSizeAndPositionManager(_ref) {\n var cellCount = _ref.cellCount,\n cellSizeGetter = _ref.cellSizeGetter,\n estimatedCellSize = _ref.estimatedCellSize;\n\n _classCallCheck(this, CellSizeAndPositionManager);\n\n _defineProperty(this, \"_cellSizeAndPositionData\", {});\n\n _defineProperty(this, \"_lastMeasuredIndex\", -1);\n\n _defineProperty(this, \"_lastBatchedIndex\", -1);\n\n _defineProperty(this, \"_cellCount\", void 0);\n\n _defineProperty(this, \"_cellSizeGetter\", void 0);\n\n _defineProperty(this, \"_estimatedCellSize\", void 0);\n\n this._cellSizeGetter = cellSizeGetter;\n this._cellCount = cellCount;\n this._estimatedCellSize = estimatedCellSize;\n }\n\n _createClass(CellSizeAndPositionManager, [{\n key: \"areOffsetsAdjusted\",\n value: function areOffsetsAdjusted() {\n return false;\n }\n }, {\n key: \"configure\",\n value: function configure(_ref2) {\n var cellCount = _ref2.cellCount,\n estimatedCellSize = _ref2.estimatedCellSize,\n cellSizeGetter = _ref2.cellSizeGetter;\n this._cellCount = cellCount;\n this._estimatedCellSize = estimatedCellSize;\n this._cellSizeGetter = cellSizeGetter;\n }\n }, {\n key: \"getCellCount\",\n value: function getCellCount() {\n return this._cellCount;\n }\n }, {\n key: \"getEstimatedCellSize\",\n value: function getEstimatedCellSize() {\n return this._estimatedCellSize;\n }\n }, {\n key: \"getLastMeasuredIndex\",\n value: function getLastMeasuredIndex() {\n return this._lastMeasuredIndex;\n }\n }, {\n key: \"getOffsetAdjustment\",\n value: function getOffsetAdjustment() {\n return 0;\n }\n /**\n * This method returns the size and position for the cell at the specified index.\n * It just-in-time calculates (or used cached values) for cells leading up to the index.\n */\n\n }, {\n key: \"getSizeAndPositionOfCell\",\n value: function getSizeAndPositionOfCell(index) {\n if (index < 0 || index >= this._cellCount) {\n throw Error(\"Requested index \".concat(index, \" is outside of range 0..\").concat(this._cellCount));\n }\n\n if (index > this._lastMeasuredIndex) {\n var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n var offset = lastMeasuredCellSizeAndPosition.offset + lastMeasuredCellSizeAndPosition.size;\n\n for (var i = this._lastMeasuredIndex + 1; i <= index; i++) {\n var size = this._cellSizeGetter({\n index: i\n }); // undefined or NaN probably means a logic error in the size getter.\n // null means we're using CellMeasurer and haven't yet measured a given index.\n\n\n if (size === undefined || isNaN(size)) {\n throw Error(\"Invalid size returned for cell \".concat(i, \" of value \").concat(size));\n } else if (size === null) {\n this._cellSizeAndPositionData[i] = {\n offset: offset,\n size: 0\n };\n this._lastBatchedIndex = index;\n } else {\n this._cellSizeAndPositionData[i] = {\n offset: offset,\n size: size\n };\n offset += size;\n this._lastMeasuredIndex = index;\n }\n }\n }\n\n return this._cellSizeAndPositionData[index];\n }\n }, {\n key: \"getSizeAndPositionOfLastMeasuredCell\",\n value: function getSizeAndPositionOfLastMeasuredCell() {\n return this._lastMeasuredIndex >= 0 ? this._cellSizeAndPositionData[this._lastMeasuredIndex] : {\n offset: 0,\n size: 0\n };\n }\n /**\n * Total size of all cells being measured.\n * This value will be completely estimated initially.\n * As cells are measured, the estimate will be updated.\n */\n\n }, {\n key: \"getTotalSize\",\n value: function getTotalSize() {\n var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n var totalSizeOfMeasuredCells = lastMeasuredCellSizeAndPosition.offset + lastMeasuredCellSizeAndPosition.size;\n var numUnmeasuredCells = this._cellCount - this._lastMeasuredIndex - 1;\n var totalSizeOfUnmeasuredCells = numUnmeasuredCells * this._estimatedCellSize;\n return totalSizeOfMeasuredCells + totalSizeOfUnmeasuredCells;\n }\n /**\n * Determines a new offset that ensures a certain cell is visible, given the current offset.\n * If the cell is already visible then the current offset will be returned.\n * If the current offset is too great or small, it will be adjusted just enough to ensure the specified index is visible.\n *\n * @param align Desired alignment within container; one of \"auto\" (default), \"start\", or \"end\"\n * @param containerSize Size (width or height) of the container viewport\n * @param currentOffset Container's current (x or y) offset\n * @param totalSize Total size (width or height) of all cells\n * @return Offset to use to ensure the specified cell is visible\n */\n\n }, {\n key: \"getUpdatedOffsetForIndex\",\n value: function getUpdatedOffsetForIndex(_ref3) {\n var _ref3$align = _ref3.align,\n align = _ref3$align === void 0 ? 'auto' : _ref3$align,\n containerSize = _ref3.containerSize,\n currentOffset = _ref3.currentOffset,\n targetIndex = _ref3.targetIndex;\n\n if (containerSize <= 0) {\n return 0;\n }\n\n var datum = this.getSizeAndPositionOfCell(targetIndex);\n var maxOffset = datum.offset;\n var minOffset = maxOffset - containerSize + datum.size;\n var idealOffset;\n\n switch (align) {\n case 'start':\n idealOffset = maxOffset;\n break;\n\n case 'end':\n idealOffset = minOffset;\n break;\n\n case 'center':\n idealOffset = maxOffset - (containerSize - datum.size) / 2;\n break;\n\n default:\n idealOffset = Math.max(minOffset, Math.min(maxOffset, currentOffset));\n break;\n }\n\n var totalSize = this.getTotalSize();\n return Math.max(0, Math.min(totalSize - containerSize, idealOffset));\n }\n }, {\n key: \"getVisibleCellRange\",\n value: function getVisibleCellRange(params) {\n var containerSize = params.containerSize,\n offset = params.offset;\n var totalSize = this.getTotalSize();\n\n if (totalSize === 0) {\n return {};\n }\n\n var maxOffset = offset + containerSize;\n\n var start = this._findNearestCell(offset);\n\n var datum = this.getSizeAndPositionOfCell(start);\n offset = datum.offset + datum.size;\n var stop = start;\n\n while (offset < maxOffset && stop < this._cellCount - 1) {\n stop++;\n offset += this.getSizeAndPositionOfCell(stop).size;\n }\n\n return {\n start: start,\n stop: stop\n };\n }\n /**\n * Clear all cached values for cells after the specified index.\n * This method should be called for any cell that has changed its size.\n * It will not immediately perform any calculations; they'll be performed the next time getSizeAndPositionOfCell() is called.\n */\n\n }, {\n key: \"resetCell\",\n value: function resetCell(index) {\n this._lastMeasuredIndex = Math.min(this._lastMeasuredIndex, index - 1);\n }\n }, {\n key: \"_binarySearch\",\n value: function _binarySearch(high, low, offset) {\n while (low <= high) {\n var middle = low + Math.floor((high - low) / 2);\n var currentOffset = this.getSizeAndPositionOfCell(middle).offset;\n\n if (currentOffset === offset) {\n return middle;\n } else if (currentOffset < offset) {\n low = middle + 1;\n } else if (currentOffset > offset) {\n high = middle - 1;\n }\n }\n\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n }\n }, {\n key: \"_exponentialSearch\",\n value: function _exponentialSearch(index, offset) {\n var interval = 1;\n\n while (index < this._cellCount && this.getSizeAndPositionOfCell(index).offset < offset) {\n index += interval;\n interval *= 2;\n }\n\n return this._binarySearch(Math.min(index, this._cellCount - 1), Math.floor(index / 2), offset);\n }\n /**\n * Searches for the cell (index) nearest the specified offset.\n *\n * If no exact match is found the next lowest cell index will be returned.\n * This allows partially visible cells (with offsets just before/above the fold) to be visible.\n */\n\n }, {\n key: \"_findNearestCell\",\n value: function _findNearestCell(offset) {\n if (isNaN(offset)) {\n throw Error(\"Invalid offset \".concat(offset, \" specified\"));\n } // Our search algorithms find the nearest match at or below the specified offset.\n // So make sure the offset is at least 0 or no match will be found.\n\n\n offset = Math.max(0, offset);\n var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n var lastMeasuredIndex = Math.max(0, this._lastMeasuredIndex);\n\n if (lastMeasuredCellSizeAndPosition.offset >= offset) {\n // If we've already measured cells within this range just use a binary search as it's faster.\n return this._binarySearch(lastMeasuredIndex, 0, offset);\n } else {\n // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n // The exponential search avoids pre-computing sizes for the full set of cells as a binary search would.\n // The overall complexity for this approach is O(log n).\n return this._exponentialSearch(lastMeasuredIndex, offset);\n }\n }\n }]);\n\n return CellSizeAndPositionManager;\n}();\n\nexport { CellSizeAndPositionManager as default };\nimport { bpfrpt_proptype_Alignment } from \"../types\";\nimport { bpfrpt_proptype_CellSizeGetter } from \"../types\";\nimport { bpfrpt_proptype_VisibleCellRange } from \"../types\";","var DEFAULT_MAX_ELEMENT_SIZE = 1500000;\nvar CHROME_MAX_ELEMENT_SIZE = 1.67771e7;\n\nvar isBrowser = function isBrowser() {\n return typeof window !== 'undefined';\n};\n\nvar isChrome = function isChrome() {\n return !!window.chrome;\n};\n\nexport var getMaxElementSize = function getMaxElementSize() {\n if (isBrowser()) {\n if (isChrome()) {\n return CHROME_MAX_ELEMENT_SIZE;\n }\n }\n\n return DEFAULT_MAX_ELEMENT_SIZE;\n};","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport CellSizeAndPositionManager from './CellSizeAndPositionManager';\nimport { getMaxElementSize } from './maxElementSize.js';\n\n/**\n * Extends CellSizeAndPositionManager and adds scaling behavior for lists that are too large to fit within a browser's native limits.\n */\nvar ScalingCellSizeAndPositionManager =\n/*#__PURE__*/\nfunction () {\n function ScalingCellSizeAndPositionManager(_ref) {\n var _ref$maxScrollSize = _ref.maxScrollSize,\n maxScrollSize = _ref$maxScrollSize === void 0 ? getMaxElementSize() : _ref$maxScrollSize,\n params = _objectWithoutProperties(_ref, [\"maxScrollSize\"]);\n\n _classCallCheck(this, ScalingCellSizeAndPositionManager);\n\n _defineProperty(this, \"_cellSizeAndPositionManager\", void 0);\n\n _defineProperty(this, \"_maxScrollSize\", void 0);\n\n // Favor composition over inheritance to simplify IE10 support\n this._cellSizeAndPositionManager = new CellSizeAndPositionManager(params);\n this._maxScrollSize = maxScrollSize;\n }\n\n _createClass(ScalingCellSizeAndPositionManager, [{\n key: \"areOffsetsAdjusted\",\n value: function areOffsetsAdjusted() {\n return this._cellSizeAndPositionManager.getTotalSize() > this._maxScrollSize;\n }\n }, {\n key: \"configure\",\n value: function configure(params) {\n this._cellSizeAndPositionManager.configure(params);\n }\n }, {\n key: \"getCellCount\",\n value: function getCellCount() {\n return this._cellSizeAndPositionManager.getCellCount();\n }\n }, {\n key: \"getEstimatedCellSize\",\n value: function getEstimatedCellSize() {\n return this._cellSizeAndPositionManager.getEstimatedCellSize();\n }\n }, {\n key: \"getLastMeasuredIndex\",\n value: function getLastMeasuredIndex() {\n return this._cellSizeAndPositionManager.getLastMeasuredIndex();\n }\n /**\n * Number of pixels a cell at the given position (offset) should be shifted in order to fit within the scaled container.\n * The offset passed to this function is scaled (safe) as well.\n */\n\n }, {\n key: \"getOffsetAdjustment\",\n value: function getOffsetAdjustment(_ref2) {\n var containerSize = _ref2.containerSize,\n offset = _ref2.offset;\n\n var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n var safeTotalSize = this.getTotalSize();\n\n var offsetPercentage = this._getOffsetPercentage({\n containerSize: containerSize,\n offset: offset,\n totalSize: safeTotalSize\n });\n\n return Math.round(offsetPercentage * (safeTotalSize - totalSize));\n }\n }, {\n key: \"getSizeAndPositionOfCell\",\n value: function getSizeAndPositionOfCell(index) {\n return this._cellSizeAndPositionManager.getSizeAndPositionOfCell(index);\n }\n }, {\n key: \"getSizeAndPositionOfLastMeasuredCell\",\n value: function getSizeAndPositionOfLastMeasuredCell() {\n return this._cellSizeAndPositionManager.getSizeAndPositionOfLastMeasuredCell();\n }\n /** See CellSizeAndPositionManager#getTotalSize */\n\n }, {\n key: \"getTotalSize\",\n value: function getTotalSize() {\n return Math.min(this._maxScrollSize, this._cellSizeAndPositionManager.getTotalSize());\n }\n /** See CellSizeAndPositionManager#getUpdatedOffsetForIndex */\n\n }, {\n key: \"getUpdatedOffsetForIndex\",\n value: function getUpdatedOffsetForIndex(_ref3) {\n var _ref3$align = _ref3.align,\n align = _ref3$align === void 0 ? 'auto' : _ref3$align,\n containerSize = _ref3.containerSize,\n currentOffset = _ref3.currentOffset,\n targetIndex = _ref3.targetIndex;\n currentOffset = this._safeOffsetToOffset({\n containerSize: containerSize,\n offset: currentOffset\n });\n\n var offset = this._cellSizeAndPositionManager.getUpdatedOffsetForIndex({\n align: align,\n containerSize: containerSize,\n currentOffset: currentOffset,\n targetIndex: targetIndex\n });\n\n return this._offsetToSafeOffset({\n containerSize: containerSize,\n offset: offset\n });\n }\n /** See CellSizeAndPositionManager#getVisibleCellRange */\n\n }, {\n key: \"getVisibleCellRange\",\n value: function getVisibleCellRange(_ref4) {\n var containerSize = _ref4.containerSize,\n offset = _ref4.offset;\n offset = this._safeOffsetToOffset({\n containerSize: containerSize,\n offset: offset\n });\n return this._cellSizeAndPositionManager.getVisibleCellRange({\n containerSize: containerSize,\n offset: offset\n });\n }\n }, {\n key: \"resetCell\",\n value: function resetCell(index) {\n this._cellSizeAndPositionManager.resetCell(index);\n }\n }, {\n key: \"_getOffsetPercentage\",\n value: function _getOffsetPercentage(_ref5) {\n var containerSize = _ref5.containerSize,\n offset = _ref5.offset,\n totalSize = _ref5.totalSize;\n return totalSize <= containerSize ? 0 : offset / (totalSize - containerSize);\n }\n }, {\n key: \"_offsetToSafeOffset\",\n value: function _offsetToSafeOffset(_ref6) {\n var containerSize = _ref6.containerSize,\n offset = _ref6.offset;\n\n var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n var safeTotalSize = this.getTotalSize();\n\n if (totalSize === safeTotalSize) {\n return offset;\n } else {\n var offsetPercentage = this._getOffsetPercentage({\n containerSize: containerSize,\n offset: offset,\n totalSize: totalSize\n });\n\n return Math.round(offsetPercentage * (safeTotalSize - containerSize));\n }\n }\n }, {\n key: \"_safeOffsetToOffset\",\n value: function _safeOffsetToOffset(_ref7) {\n var containerSize = _ref7.containerSize,\n offset = _ref7.offset;\n\n var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n var safeTotalSize = this.getTotalSize();\n\n if (totalSize === safeTotalSize) {\n return offset;\n } else {\n var offsetPercentage = this._getOffsetPercentage({\n containerSize: containerSize,\n offset: offset,\n totalSize: safeTotalSize\n });\n\n return Math.round(offsetPercentage * (totalSize - containerSize));\n }\n }\n }]);\n\n return ScalingCellSizeAndPositionManager;\n}();\n\nexport { ScalingCellSizeAndPositionManager as default };\nimport { bpfrpt_proptype_Alignment } from \"../types\";\nimport { bpfrpt_proptype_CellSizeGetter } from \"../types\";\nimport { bpfrpt_proptype_VisibleCellRange } from \"../types\";","/**\n * Helper utility that updates the specified callback whenever any of the specified indices have changed.\n */\nexport default function createCallbackMemoizer() {\n var requireAllKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var cachedIndices = {};\n return function (_ref) {\n var callback = _ref.callback,\n indices = _ref.indices;\n var keys = Object.keys(indices);\n var allInitialized = !requireAllKeys || keys.every(function (key) {\n var value = indices[key];\n return Array.isArray(value) ? value.length > 0 : value >= 0;\n });\n var indexChanged = keys.length !== Object.keys(cachedIndices).length || keys.some(function (key) {\n var cachedValue = cachedIndices[key];\n var value = indices[key];\n return Array.isArray(value) ? cachedValue.join(',') !== value.join(',') : cachedValue !== value;\n });\n cachedIndices = indices;\n\n if (allInitialized && indexChanged) {\n callback(indices);\n }\n };\n}","import ScalingCellSizeAndPositionManager from './ScalingCellSizeAndPositionManager.js';\n/**\n * Helper function that determines when to update scroll offsets to ensure that a scroll-to-index remains visible.\n * This function also ensures that the scroll ofset isn't past the last column/row of cells.\n */\n\nexport default function updateScrollIndexHelper(_ref) {\n var cellSize = _ref.cellSize,\n cellSizeAndPositionManager = _ref.cellSizeAndPositionManager,\n previousCellsCount = _ref.previousCellsCount,\n previousCellSize = _ref.previousCellSize,\n previousScrollToAlignment = _ref.previousScrollToAlignment,\n previousScrollToIndex = _ref.previousScrollToIndex,\n previousSize = _ref.previousSize,\n scrollOffset = _ref.scrollOffset,\n scrollToAlignment = _ref.scrollToAlignment,\n scrollToIndex = _ref.scrollToIndex,\n size = _ref.size,\n sizeJustIncreasedFromZero = _ref.sizeJustIncreasedFromZero,\n updateScrollIndexCallback = _ref.updateScrollIndexCallback;\n var cellCount = cellSizeAndPositionManager.getCellCount();\n var hasScrollToIndex = scrollToIndex >= 0 && scrollToIndex < cellCount;\n var sizeHasChanged = size !== previousSize || sizeJustIncreasedFromZero || !previousCellSize || typeof cellSize === 'number' && cellSize !== previousCellSize; // If we have a new scroll target OR if height/row-height has changed,\n // We should ensure that the scroll target is visible.\n\n if (hasScrollToIndex && (sizeHasChanged || scrollToAlignment !== previousScrollToAlignment || scrollToIndex !== previousScrollToIndex)) {\n updateScrollIndexCallback(scrollToIndex); // If we don't have a selected item but list size or number of children have decreased,\n // Make sure we aren't scrolled too far past the current content.\n } else if (!hasScrollToIndex && cellCount > 0 && (size < previousSize || cellCount < previousCellsCount)) {\n // We need to ensure that the current scroll offset is still within the collection's range.\n // To do this, we don't need to measure everything; CellMeasurer would perform poorly.\n // Just check to make sure we're still okay.\n // Only adjust the scroll position if we've scrolled below the last set of rows.\n if (scrollOffset > cellSizeAndPositionManager.getTotalSize() - size) {\n updateScrollIndexCallback(cellCount - 1);\n }\n }\n}\nimport { bpfrpt_proptype_Alignment } from \"../types\";\nimport { bpfrpt_proptype_CellSize } from \"../types\";","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (canUseDOM) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}","// Properly handle server-side rendering.\nvar win;\n\nif (typeof window !== 'undefined') {\n win = window;\n} else if (typeof self !== 'undefined') {\n win = self;\n} else {\n win = {};\n} // requestAnimationFrame() shim by Paul Irish\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n\n\nvar request = win.requestAnimationFrame || win.webkitRequestAnimationFrame || win.mozRequestAnimationFrame || win.oRequestAnimationFrame || win.msRequestAnimationFrame || function (callback) {\n return win.setTimeout(callback, 1000 / 60);\n};\n\nvar cancel = win.cancelAnimationFrame || win.webkitCancelAnimationFrame || win.mozCancelAnimationFrame || win.oCancelAnimationFrame || win.msCancelAnimationFrame || function (id) {\n win.clearTimeout(id);\n};\n\nexport var raf = request;\nexport var caf = cancel;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport calculateSizeAndPositionDataAndUpdateScrollOffset from './utils/calculateSizeAndPositionDataAndUpdateScrollOffset';\nimport ScalingCellSizeAndPositionManager from './utils/ScalingCellSizeAndPositionManager';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\nimport defaultOverscanIndicesGetter, { SCROLL_DIRECTION_BACKWARD, SCROLL_DIRECTION_FORWARD } from './defaultOverscanIndicesGetter';\nimport updateScrollIndexHelper from './utils/updateScrollIndexHelper';\nimport defaultCellRangeRenderer from './defaultCellRangeRenderer';\nimport scrollbarSize from 'dom-helpers/scrollbarSize';\nimport { polyfill } from 'react-lifecycles-compat';\nimport { requestAnimationTimeout, cancelAnimationTimeout } from '../utils/requestAnimationTimeout';\n/**\n * Specifies the number of milliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nexport var DEFAULT_SCROLLING_RESET_TIME_INTERVAL = 150;\n/**\n * Controls whether the Grid updates the DOM element's scrollLeft/scrollTop based on the current state or just observes it.\n * This prevents Grid from interrupting mouse-wheel animations (see issue #2).\n */\n\nvar SCROLL_POSITION_CHANGE_REASONS = {\n OBSERVED: 'observed',\n REQUESTED: 'requested'\n};\n\nvar renderNull = function renderNull() {\n return null;\n};\n\n/**\n * Renders tabular data with virtualization along the vertical and horizontal axes.\n * Row heights and column widths must be known ahead of time and specified as properties.\n */\nvar Grid = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Grid, _React$PureComponent);\n\n // Invokes onSectionRendered callback only when start/stop row or column indices change\n function Grid(props) {\n var _this;\n\n _classCallCheck(this, Grid);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Grid).call(this, props));\n\n _defineProperty(_assertThisInitialized(_this), \"_onGridRenderedMemoizer\", createCallbackMemoizer());\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollMemoizer\", createCallbackMemoizer(false));\n\n _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateColumnIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateRowIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_recomputeScrollLeftFlag\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_recomputeScrollTopFlag\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_horizontalScrollBarSize\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_verticalScrollBarSize\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_scrollbarPresenceChanged\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_scrollingContainer\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_childrenToDisplay\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_columnStartIndex\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_columnStopIndex\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_rowStartIndex\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_rowStopIndex\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_renderedColumnStartIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_renderedColumnStopIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_renderedRowStartIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_renderedRowStopIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_initialScrollTop\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_initialScrollLeft\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_disablePointerEventsTimeoutId\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_styleCache\", {});\n\n _defineProperty(_assertThisInitialized(_this), \"_cellCache\", {});\n\n _defineProperty(_assertThisInitialized(_this), \"_debounceScrollEndedCallback\", function () {\n _this._disablePointerEventsTimeoutId = null; // isScrolling is used to determine if we reset styleCache\n\n _this.setState({\n isScrolling: false,\n needToResetStyleCache: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_invokeOnGridRenderedHelper\", function () {\n var onSectionRendered = _this.props.onSectionRendered;\n\n _this._onGridRenderedMemoizer({\n callback: onSectionRendered,\n indices: {\n columnOverscanStartIndex: _this._columnStartIndex,\n columnOverscanStopIndex: _this._columnStopIndex,\n columnStartIndex: _this._renderedColumnStartIndex,\n columnStopIndex: _this._renderedColumnStopIndex,\n rowOverscanStartIndex: _this._rowStartIndex,\n rowOverscanStopIndex: _this._rowStopIndex,\n rowStartIndex: _this._renderedRowStartIndex,\n rowStopIndex: _this._renderedRowStopIndex\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setScrollingContainerRef\", function (ref) {\n _this._scrollingContainer = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (event) {\n // In certain edge-cases React dispatches an onScroll event with an invalid target.scrollLeft / target.scrollTop.\n // This invalid event can be detected by comparing event.target to this component's scrollable DOM element.\n // See issue #404 for more information.\n if (event.target === _this._scrollingContainer) {\n _this.handleScrollEvent(event.target);\n }\n });\n\n var columnSizeAndPositionManager = new ScalingCellSizeAndPositionManager({\n cellCount: props.columnCount,\n cellSizeGetter: function cellSizeGetter(params) {\n return Grid._wrapSizeGetter(props.columnWidth)(params);\n },\n estimatedCellSize: Grid._getEstimatedColumnSize(props)\n });\n var rowSizeAndPositionManager = new ScalingCellSizeAndPositionManager({\n cellCount: props.rowCount,\n cellSizeGetter: function cellSizeGetter(params) {\n return Grid._wrapSizeGetter(props.rowHeight)(params);\n },\n estimatedCellSize: Grid._getEstimatedRowSize(props)\n });\n _this.state = {\n instanceProps: {\n columnSizeAndPositionManager: columnSizeAndPositionManager,\n rowSizeAndPositionManager: rowSizeAndPositionManager,\n prevColumnWidth: props.columnWidth,\n prevRowHeight: props.rowHeight,\n prevColumnCount: props.columnCount,\n prevRowCount: props.rowCount,\n prevIsScrolling: props.isScrolling === true,\n prevScrollToColumn: props.scrollToColumn,\n prevScrollToRow: props.scrollToRow,\n scrollbarSize: 0,\n scrollbarSizeMeasured: false\n },\n isScrolling: false,\n scrollDirectionHorizontal: SCROLL_DIRECTION_FORWARD,\n scrollDirectionVertical: SCROLL_DIRECTION_FORWARD,\n scrollLeft: 0,\n scrollTop: 0,\n scrollPositionChangeReason: null,\n needToResetStyleCache: false\n };\n\n if (props.scrollToRow > 0) {\n _this._initialScrollTop = _this._getCalculatedScrollTop(props, _this.state);\n }\n\n if (props.scrollToColumn > 0) {\n _this._initialScrollLeft = _this._getCalculatedScrollLeft(props, _this.state);\n }\n\n return _this;\n }\n /**\n * Gets offsets for a given cell and alignment.\n */\n\n\n _createClass(Grid, [{\n key: \"getOffsetForCell\",\n value: function getOffsetForCell() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$alignment = _ref.alignment,\n alignment = _ref$alignment === void 0 ? this.props.scrollToAlignment : _ref$alignment,\n _ref$columnIndex = _ref.columnIndex,\n columnIndex = _ref$columnIndex === void 0 ? this.props.scrollToColumn : _ref$columnIndex,\n _ref$rowIndex = _ref.rowIndex,\n rowIndex = _ref$rowIndex === void 0 ? this.props.scrollToRow : _ref$rowIndex;\n\n var offsetProps = _objectSpread({}, this.props, {\n scrollToAlignment: alignment,\n scrollToColumn: columnIndex,\n scrollToRow: rowIndex\n });\n\n return {\n scrollLeft: this._getCalculatedScrollLeft(offsetProps),\n scrollTop: this._getCalculatedScrollTop(offsetProps)\n };\n }\n /**\n * Gets estimated total rows' height.\n */\n\n }, {\n key: \"getTotalRowsHeight\",\n value: function getTotalRowsHeight() {\n return this.state.instanceProps.rowSizeAndPositionManager.getTotalSize();\n }\n /**\n * Gets estimated total columns' width.\n */\n\n }, {\n key: \"getTotalColumnsWidth\",\n value: function getTotalColumnsWidth() {\n return this.state.instanceProps.columnSizeAndPositionManager.getTotalSize();\n }\n /**\n * This method handles a scroll event originating from an external scroll control.\n * It's an advanced method and should probably not be used unless you're implementing a custom scroll-bar solution.\n */\n\n }, {\n key: \"handleScrollEvent\",\n value: function handleScrollEvent(_ref2) {\n var _ref2$scrollLeft = _ref2.scrollLeft,\n scrollLeftParam = _ref2$scrollLeft === void 0 ? 0 : _ref2$scrollLeft,\n _ref2$scrollTop = _ref2.scrollTop,\n scrollTopParam = _ref2$scrollTop === void 0 ? 0 : _ref2$scrollTop;\n\n // On iOS, we can arrive at negative offsets by swiping past the start.\n // To prevent flicker here, we make playing in the negative offset zone cause nothing to happen.\n if (scrollTopParam < 0) {\n return;\n } // Prevent pointer events from interrupting a smooth scroll\n\n\n this._debounceScrollEnded();\n\n var _this$props = this.props,\n autoHeight = _this$props.autoHeight,\n autoWidth = _this$props.autoWidth,\n height = _this$props.height,\n width = _this$props.width;\n var instanceProps = this.state.instanceProps; // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n // This causes a series of rapid renders that is slow for long lists.\n // We can avoid that by doing some simple bounds checking to ensure that scroll offsets never exceed their bounds.\n\n var scrollbarSize = instanceProps.scrollbarSize;\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n var scrollLeft = Math.min(Math.max(0, totalColumnsWidth - width + scrollbarSize), scrollLeftParam);\n var scrollTop = Math.min(Math.max(0, totalRowsHeight - height + scrollbarSize), scrollTopParam); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n // Don't force a re-render if this is the case.\n // The mouse may move faster then the animation frame does.\n // Use requestAnimationFrame to avoid over-updating.\n\n if (this.state.scrollLeft !== scrollLeft || this.state.scrollTop !== scrollTop) {\n // Track scrolling direction so we can more efficiently overscan rows to reduce empty space around the edges while scrolling.\n // Don't change direction for an axis unless scroll offset has changed.\n var scrollDirectionHorizontal = scrollLeft !== this.state.scrollLeft ? scrollLeft > this.state.scrollLeft ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD : this.state.scrollDirectionHorizontal;\n var scrollDirectionVertical = scrollTop !== this.state.scrollTop ? scrollTop > this.state.scrollTop ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD : this.state.scrollDirectionVertical;\n var newState = {\n isScrolling: true,\n scrollDirectionHorizontal: scrollDirectionHorizontal,\n scrollDirectionVertical: scrollDirectionVertical,\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.OBSERVED\n };\n\n if (!autoHeight) {\n newState.scrollTop = scrollTop;\n }\n\n if (!autoWidth) {\n newState.scrollLeft = scrollLeft;\n }\n\n newState.needToResetStyleCache = false;\n this.setState(newState);\n }\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n totalColumnsWidth: totalColumnsWidth,\n totalRowsHeight: totalRowsHeight\n });\n }\n /**\n * Invalidate Grid size and recompute visible cells.\n * This is a deferred wrapper for recomputeGridSize().\n * It sets a flag to be evaluated on cDM/cDU to avoid unnecessary renders.\n * This method is intended for advanced use-cases like CellMeasurer.\n */\n // @TODO (bvaughn) Add automated test coverage for this.\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender(_ref3) {\n var columnIndex = _ref3.columnIndex,\n rowIndex = _ref3.rowIndex;\n this._deferredInvalidateColumnIndex = typeof this._deferredInvalidateColumnIndex === 'number' ? Math.min(this._deferredInvalidateColumnIndex, columnIndex) : columnIndex;\n this._deferredInvalidateRowIndex = typeof this._deferredInvalidateRowIndex === 'number' ? Math.min(this._deferredInvalidateRowIndex, rowIndex) : rowIndex;\n }\n /**\n * Pre-measure all columns and rows in a Grid.\n * Typically cells are only measured as needed and estimated sizes are used for cells that have not yet been measured.\n * This method ensures that the next call to getTotalSize() returns an exact size (as opposed to just an estimated one).\n */\n\n }, {\n key: \"measureAllCells\",\n value: function measureAllCells() {\n var _this$props2 = this.props,\n columnCount = _this$props2.columnCount,\n rowCount = _this$props2.rowCount;\n var instanceProps = this.state.instanceProps;\n instanceProps.columnSizeAndPositionManager.getSizeAndPositionOfCell(columnCount - 1);\n instanceProps.rowSizeAndPositionManager.getSizeAndPositionOfCell(rowCount - 1);\n }\n /**\n * Forced recompute of row heights and column widths.\n * This function should be called if dynamic column or row sizes have changed but nothing else has.\n * Since Grid only receives :columnCount and :rowCount it has no way of detecting when the underlying data changes.\n */\n\n }, {\n key: \"recomputeGridSize\",\n value: function recomputeGridSize() {\n var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref4$columnIndex = _ref4.columnIndex,\n columnIndex = _ref4$columnIndex === void 0 ? 0 : _ref4$columnIndex,\n _ref4$rowIndex = _ref4.rowIndex,\n rowIndex = _ref4$rowIndex === void 0 ? 0 : _ref4$rowIndex;\n\n var _this$props3 = this.props,\n scrollToColumn = _this$props3.scrollToColumn,\n scrollToRow = _this$props3.scrollToRow;\n var instanceProps = this.state.instanceProps;\n instanceProps.columnSizeAndPositionManager.resetCell(columnIndex);\n instanceProps.rowSizeAndPositionManager.resetCell(rowIndex); // Cell sizes may be determined by a function property.\n // In this case the cDU handler can't know if they changed.\n // Store this flag to let the next cDU pass know it needs to recompute the scroll offset.\n\n this._recomputeScrollLeftFlag = scrollToColumn >= 0 && (this.state.scrollDirectionHorizontal === SCROLL_DIRECTION_FORWARD ? columnIndex <= scrollToColumn : columnIndex >= scrollToColumn);\n this._recomputeScrollTopFlag = scrollToRow >= 0 && (this.state.scrollDirectionVertical === SCROLL_DIRECTION_FORWARD ? rowIndex <= scrollToRow : rowIndex >= scrollToRow); // Clear cell cache in case we are scrolling;\n // Invalid row heights likely mean invalid cached content as well.\n\n this._styleCache = {};\n this._cellCache = {};\n this.forceUpdate();\n }\n /**\n * Ensure column and row are visible.\n */\n\n }, {\n key: \"scrollToCell\",\n value: function scrollToCell(_ref5) {\n var columnIndex = _ref5.columnIndex,\n rowIndex = _ref5.rowIndex;\n var columnCount = this.props.columnCount;\n var props = this.props; // Don't adjust scroll offset for single-column grids (eg List, Table).\n // This can cause a funky scroll offset because of the vertical scrollbar width.\n\n if (columnCount > 1 && columnIndex !== undefined) {\n this._updateScrollLeftForScrollToColumn(_objectSpread({}, props, {\n scrollToColumn: columnIndex\n }));\n }\n\n if (rowIndex !== undefined) {\n this._updateScrollTopForScrollToRow(_objectSpread({}, props, {\n scrollToRow: rowIndex\n }));\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props4 = this.props,\n getScrollbarSize = _this$props4.getScrollbarSize,\n height = _this$props4.height,\n scrollLeft = _this$props4.scrollLeft,\n scrollToColumn = _this$props4.scrollToColumn,\n scrollTop = _this$props4.scrollTop,\n scrollToRow = _this$props4.scrollToRow,\n width = _this$props4.width;\n var instanceProps = this.state.instanceProps; // Reset initial offsets to be ignored in browser\n\n this._initialScrollTop = 0;\n this._initialScrollLeft = 0; // If cell sizes have been invalidated (eg we are using CellMeasurer) then reset cached positions.\n // We must do this at the start of the method as we may calculate and update scroll position below.\n\n this._handleInvalidatedGridSize(); // If this component was first rendered server-side, scrollbar size will be undefined.\n // In that event we need to remeasure.\n\n\n if (!instanceProps.scrollbarSizeMeasured) {\n this.setState(function (prevState) {\n var stateUpdate = _objectSpread({}, prevState, {\n needToResetStyleCache: false\n });\n\n stateUpdate.instanceProps.scrollbarSize = getScrollbarSize();\n stateUpdate.instanceProps.scrollbarSizeMeasured = true;\n return stateUpdate;\n });\n }\n\n if (typeof scrollLeft === 'number' && scrollLeft >= 0 || typeof scrollTop === 'number' && scrollTop >= 0) {\n var stateUpdate = Grid._getScrollToPositionStateUpdate({\n prevState: this.state,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n } // refs don't work in `react-test-renderer`\n\n\n if (this._scrollingContainer) {\n // setting the ref's scrollLeft and scrollTop.\n // Somehow in MultiGrid the main grid doesn't trigger a update on mount.\n if (this._scrollingContainer.scrollLeft !== this.state.scrollLeft) {\n this._scrollingContainer.scrollLeft = this.state.scrollLeft;\n }\n\n if (this._scrollingContainer.scrollTop !== this.state.scrollTop) {\n this._scrollingContainer.scrollTop = this.state.scrollTop;\n }\n } // Don't update scroll offset if the size is 0; we don't render any cells in this case.\n // Setting a state may cause us to later thing we've updated the offce when we haven't.\n\n\n var sizeIsBiggerThanZero = height > 0 && width > 0;\n\n if (scrollToColumn >= 0 && sizeIsBiggerThanZero) {\n this._updateScrollLeftForScrollToColumn();\n }\n\n if (scrollToRow >= 0 && sizeIsBiggerThanZero) {\n this._updateScrollTopForScrollToRow();\n } // Update onRowsRendered callback\n\n\n this._invokeOnGridRenderedHelper(); // Initialize onScroll callback\n\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft || 0,\n scrollTop: scrollTop || 0,\n totalColumnsWidth: instanceProps.columnSizeAndPositionManager.getTotalSize(),\n totalRowsHeight: instanceProps.rowSizeAndPositionManager.getTotalSize()\n });\n\n this._maybeCallOnScrollbarPresenceChange();\n }\n /**\n * @private\n * This method updates scrollLeft/scrollTop in state for the following conditions:\n * 1) New scroll-to-cell props have been set\n */\n\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var _this2 = this;\n\n var _this$props5 = this.props,\n autoHeight = _this$props5.autoHeight,\n autoWidth = _this$props5.autoWidth,\n columnCount = _this$props5.columnCount,\n height = _this$props5.height,\n rowCount = _this$props5.rowCount,\n scrollToAlignment = _this$props5.scrollToAlignment,\n scrollToColumn = _this$props5.scrollToColumn,\n scrollToRow = _this$props5.scrollToRow,\n width = _this$props5.width;\n var _this$state = this.state,\n scrollLeft = _this$state.scrollLeft,\n scrollPositionChangeReason = _this$state.scrollPositionChangeReason,\n scrollTop = _this$state.scrollTop,\n instanceProps = _this$state.instanceProps; // If cell sizes have been invalidated (eg we are using CellMeasurer) then reset cached positions.\n // We must do this at the start of the method as we may calculate and update scroll position below.\n\n this._handleInvalidatedGridSize(); // Handle edge case where column or row count has only just increased over 0.\n // In this case we may have to restore a previously-specified scroll offset.\n // For more info see bvaughn/react-virtualized/issues/218\n\n\n var columnOrRowCountJustIncreasedFromZero = columnCount > 0 && prevProps.columnCount === 0 || rowCount > 0 && prevProps.rowCount === 0; // Make sure requested changes to :scrollLeft or :scrollTop get applied.\n // Assigning to scrollLeft/scrollTop tells the browser to interrupt any running scroll animations,\n // And to discard any pending async changes to the scroll position that may have happened in the meantime (e.g. on a separate scrolling thread).\n // So we only set these when we require an adjustment of the scroll position.\n // See issue #2 for more information.\n\n if (scrollPositionChangeReason === SCROLL_POSITION_CHANGE_REASONS.REQUESTED) {\n // @TRICKY :autoHeight and :autoWidth properties instructs Grid to leave :scrollTop and :scrollLeft management to an external HOC (eg WindowScroller).\n // In this case we should avoid checking scrollingContainer.scrollTop and scrollingContainer.scrollLeft since it forces layout/flow.\n if (!autoWidth && scrollLeft >= 0 && (scrollLeft !== this._scrollingContainer.scrollLeft || columnOrRowCountJustIncreasedFromZero)) {\n this._scrollingContainer.scrollLeft = scrollLeft;\n }\n\n if (!autoHeight && scrollTop >= 0 && (scrollTop !== this._scrollingContainer.scrollTop || columnOrRowCountJustIncreasedFromZero)) {\n this._scrollingContainer.scrollTop = scrollTop;\n }\n } // Special case where the previous size was 0:\n // In this case we don't show any windowed cells at all.\n // So we should always recalculate offset afterwards.\n\n\n var sizeJustIncreasedFromZero = (prevProps.width === 0 || prevProps.height === 0) && height > 0 && width > 0; // Update scroll offsets if the current :scrollToColumn or :scrollToRow values requires it\n // @TODO Do we also need this check or can the one in componentWillUpdate() suffice?\n\n if (this._recomputeScrollLeftFlag) {\n this._recomputeScrollLeftFlag = false;\n\n this._updateScrollLeftForScrollToColumn(this.props);\n } else {\n updateScrollIndexHelper({\n cellSizeAndPositionManager: instanceProps.columnSizeAndPositionManager,\n previousCellsCount: prevProps.columnCount,\n previousCellSize: prevProps.columnWidth,\n previousScrollToAlignment: prevProps.scrollToAlignment,\n previousScrollToIndex: prevProps.scrollToColumn,\n previousSize: prevProps.width,\n scrollOffset: scrollLeft,\n scrollToAlignment: scrollToAlignment,\n scrollToIndex: scrollToColumn,\n size: width,\n sizeJustIncreasedFromZero: sizeJustIncreasedFromZero,\n updateScrollIndexCallback: function updateScrollIndexCallback() {\n return _this2._updateScrollLeftForScrollToColumn(_this2.props);\n }\n });\n }\n\n if (this._recomputeScrollTopFlag) {\n this._recomputeScrollTopFlag = false;\n\n this._updateScrollTopForScrollToRow(this.props);\n } else {\n updateScrollIndexHelper({\n cellSizeAndPositionManager: instanceProps.rowSizeAndPositionManager,\n previousCellsCount: prevProps.rowCount,\n previousCellSize: prevProps.rowHeight,\n previousScrollToAlignment: prevProps.scrollToAlignment,\n previousScrollToIndex: prevProps.scrollToRow,\n previousSize: prevProps.height,\n scrollOffset: scrollTop,\n scrollToAlignment: scrollToAlignment,\n scrollToIndex: scrollToRow,\n size: height,\n sizeJustIncreasedFromZero: sizeJustIncreasedFromZero,\n updateScrollIndexCallback: function updateScrollIndexCallback() {\n return _this2._updateScrollTopForScrollToRow(_this2.props);\n }\n });\n } // Update onRowsRendered callback if start/stop indices have changed\n\n\n this._invokeOnGridRenderedHelper(); // Changes to :scrollLeft or :scrollTop should also notify :onScroll listeners\n\n\n if (scrollLeft !== prevState.scrollLeft || scrollTop !== prevState.scrollTop) {\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n totalColumnsWidth: totalColumnsWidth,\n totalRowsHeight: totalRowsHeight\n });\n }\n\n this._maybeCallOnScrollbarPresenceChange();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(this._disablePointerEventsTimeoutId);\n }\n }\n /**\n * This method updates scrollLeft/scrollTop in state for the following conditions:\n * 1) Empty content (0 rows or columns)\n * 2) New scroll props overriding the current state\n * 3) Cells-count or cells-size has changed, making previous scroll offsets invalid\n */\n\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n autoContainerWidth = _this$props6.autoContainerWidth,\n autoHeight = _this$props6.autoHeight,\n autoWidth = _this$props6.autoWidth,\n className = _this$props6.className,\n containerProps = _this$props6.containerProps,\n containerRole = _this$props6.containerRole,\n containerStyle = _this$props6.containerStyle,\n height = _this$props6.height,\n id = _this$props6.id,\n noContentRenderer = _this$props6.noContentRenderer,\n role = _this$props6.role,\n style = _this$props6.style,\n tabIndex = _this$props6.tabIndex,\n width = _this$props6.width;\n var _this$state2 = this.state,\n instanceProps = _this$state2.instanceProps,\n needToResetStyleCache = _this$state2.needToResetStyleCache;\n\n var isScrolling = this._isScrolling();\n\n var gridStyle = {\n boxSizing: 'border-box',\n direction: 'ltr',\n height: autoHeight ? 'auto' : height,\n position: 'relative',\n width: autoWidth ? 'auto' : width,\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform'\n };\n\n if (needToResetStyleCache) {\n this._styleCache = {};\n } // calculate _styleCache here\n // if state.isScrolling (not from _isScrolling) then reset\n\n\n if (!this.state.isScrolling) {\n this._resetStyleCache();\n } // calculate children to render here\n\n\n this._calculateChildrenToRender(this.props, this.state);\n\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize(); // Force browser to hide scrollbars when we know they aren't necessary.\n // Otherwise once scrollbars appear they may not disappear again.\n // For more info see issue #116\n\n var verticalScrollBarSize = totalRowsHeight > height ? instanceProps.scrollbarSize : 0;\n var horizontalScrollBarSize = totalColumnsWidth > width ? instanceProps.scrollbarSize : 0;\n\n if (horizontalScrollBarSize !== this._horizontalScrollBarSize || verticalScrollBarSize !== this._verticalScrollBarSize) {\n this._horizontalScrollBarSize = horizontalScrollBarSize;\n this._verticalScrollBarSize = verticalScrollBarSize;\n this._scrollbarPresenceChanged = true;\n } // Also explicitly init styles to 'auto' if scrollbars are required.\n // This works around an obscure edge case where external CSS styles have not yet been loaded,\n // But an initial scroll index of offset is set as an external prop.\n // Without this style, Grid would render the correct range of cells but would NOT update its internal offset.\n // This was originally reported via clauderic/react-infinite-calendar/issues/23\n\n\n gridStyle.overflowX = totalColumnsWidth + verticalScrollBarSize <= width ? 'hidden' : 'auto';\n gridStyle.overflowY = totalRowsHeight + horizontalScrollBarSize <= height ? 'hidden' : 'auto';\n var childrenToDisplay = this._childrenToDisplay;\n var showNoContentRenderer = childrenToDisplay.length === 0 && height > 0 && width > 0;\n return React.createElement(\"div\", _extends({\n ref: this._setScrollingContainerRef\n }, containerProps, {\n \"aria-label\": this.props['aria-label'],\n \"aria-readonly\": this.props['aria-readonly'],\n className: clsx('ReactVirtualized__Grid', className),\n id: id,\n onScroll: this._onScroll,\n role: role,\n style: _objectSpread({}, gridStyle, {}, style),\n tabIndex: tabIndex\n }), childrenToDisplay.length > 0 && React.createElement(\"div\", {\n className: \"ReactVirtualized__Grid__innerScrollContainer\",\n role: containerRole,\n style: _objectSpread({\n width: autoContainerWidth ? 'auto' : totalColumnsWidth,\n height: totalRowsHeight,\n maxWidth: totalColumnsWidth,\n maxHeight: totalRowsHeight,\n overflow: 'hidden',\n pointerEvents: isScrolling ? 'none' : '',\n position: 'relative'\n }, containerStyle)\n }, childrenToDisplay), showNoContentRenderer && noContentRenderer());\n }\n /* ---------------------------- Helper methods ---------------------------- */\n\n }, {\n key: \"_calculateChildrenToRender\",\n value: function _calculateChildrenToRender() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n var cellRenderer = props.cellRenderer,\n cellRangeRenderer = props.cellRangeRenderer,\n columnCount = props.columnCount,\n deferredMeasurementCache = props.deferredMeasurementCache,\n height = props.height,\n overscanColumnCount = props.overscanColumnCount,\n overscanIndicesGetter = props.overscanIndicesGetter,\n overscanRowCount = props.overscanRowCount,\n rowCount = props.rowCount,\n width = props.width,\n isScrollingOptOut = props.isScrollingOptOut;\n var scrollDirectionHorizontal = state.scrollDirectionHorizontal,\n scrollDirectionVertical = state.scrollDirectionVertical,\n instanceProps = state.instanceProps;\n var scrollTop = this._initialScrollTop > 0 ? this._initialScrollTop : state.scrollTop;\n var scrollLeft = this._initialScrollLeft > 0 ? this._initialScrollLeft : state.scrollLeft;\n\n var isScrolling = this._isScrolling(props, state);\n\n this._childrenToDisplay = []; // Render only enough columns and rows to cover the visible area of the grid.\n\n if (height > 0 && width > 0) {\n var visibleColumnIndices = instanceProps.columnSizeAndPositionManager.getVisibleCellRange({\n containerSize: width,\n offset: scrollLeft\n });\n var visibleRowIndices = instanceProps.rowSizeAndPositionManager.getVisibleCellRange({\n containerSize: height,\n offset: scrollTop\n });\n var horizontalOffsetAdjustment = instanceProps.columnSizeAndPositionManager.getOffsetAdjustment({\n containerSize: width,\n offset: scrollLeft\n });\n var verticalOffsetAdjustment = instanceProps.rowSizeAndPositionManager.getOffsetAdjustment({\n containerSize: height,\n offset: scrollTop\n }); // Store for _invokeOnGridRenderedHelper()\n\n this._renderedColumnStartIndex = visibleColumnIndices.start;\n this._renderedColumnStopIndex = visibleColumnIndices.stop;\n this._renderedRowStartIndex = visibleRowIndices.start;\n this._renderedRowStopIndex = visibleRowIndices.stop;\n var overscanColumnIndices = overscanIndicesGetter({\n direction: 'horizontal',\n cellCount: columnCount,\n overscanCellsCount: overscanColumnCount,\n scrollDirection: scrollDirectionHorizontal,\n startIndex: typeof visibleColumnIndices.start === 'number' ? visibleColumnIndices.start : 0,\n stopIndex: typeof visibleColumnIndices.stop === 'number' ? visibleColumnIndices.stop : -1\n });\n var overscanRowIndices = overscanIndicesGetter({\n direction: 'vertical',\n cellCount: rowCount,\n overscanCellsCount: overscanRowCount,\n scrollDirection: scrollDirectionVertical,\n startIndex: typeof visibleRowIndices.start === 'number' ? visibleRowIndices.start : 0,\n stopIndex: typeof visibleRowIndices.stop === 'number' ? visibleRowIndices.stop : -1\n }); // Store for _invokeOnGridRenderedHelper()\n\n var columnStartIndex = overscanColumnIndices.overscanStartIndex;\n var columnStopIndex = overscanColumnIndices.overscanStopIndex;\n var rowStartIndex = overscanRowIndices.overscanStartIndex;\n var rowStopIndex = overscanRowIndices.overscanStopIndex; // Advanced use-cases (eg CellMeasurer) require batched measurements to determine accurate sizes.\n\n if (deferredMeasurementCache) {\n // If rows have a dynamic height, scan the rows we are about to render.\n // If any have not yet been measured, then we need to render all columns initially,\n // Because the height of the row is equal to the tallest cell within that row,\n // (And so we can't know the height without measuring all column-cells first).\n if (!deferredMeasurementCache.hasFixedHeight()) {\n for (var rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {\n if (!deferredMeasurementCache.has(rowIndex, 0)) {\n columnStartIndex = 0;\n columnStopIndex = columnCount - 1;\n break;\n }\n }\n } // If columns have a dynamic width, scan the columns we are about to render.\n // If any have not yet been measured, then we need to render all rows initially,\n // Because the width of the column is equal to the widest cell within that column,\n // (And so we can't know the width without measuring all row-cells first).\n\n\n if (!deferredMeasurementCache.hasFixedWidth()) {\n for (var columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {\n if (!deferredMeasurementCache.has(0, columnIndex)) {\n rowStartIndex = 0;\n rowStopIndex = rowCount - 1;\n break;\n }\n }\n }\n }\n\n this._childrenToDisplay = cellRangeRenderer({\n cellCache: this._cellCache,\n cellRenderer: cellRenderer,\n columnSizeAndPositionManager: instanceProps.columnSizeAndPositionManager,\n columnStartIndex: columnStartIndex,\n columnStopIndex: columnStopIndex,\n deferredMeasurementCache: deferredMeasurementCache,\n horizontalOffsetAdjustment: horizontalOffsetAdjustment,\n isScrolling: isScrolling,\n isScrollingOptOut: isScrollingOptOut,\n parent: this,\n rowSizeAndPositionManager: instanceProps.rowSizeAndPositionManager,\n rowStartIndex: rowStartIndex,\n rowStopIndex: rowStopIndex,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n styleCache: this._styleCache,\n verticalOffsetAdjustment: verticalOffsetAdjustment,\n visibleColumnIndices: visibleColumnIndices,\n visibleRowIndices: visibleRowIndices\n }); // update the indices\n\n this._columnStartIndex = columnStartIndex;\n this._columnStopIndex = columnStopIndex;\n this._rowStartIndex = rowStartIndex;\n this._rowStopIndex = rowStopIndex;\n }\n }\n /**\n * Sets an :isScrolling flag for a small window of time.\n * This flag is used to disable pointer events on the scrollable portion of the Grid.\n * This prevents jerky/stuttery mouse-wheel scrolling.\n */\n\n }, {\n key: \"_debounceScrollEnded\",\n value: function _debounceScrollEnded() {\n var scrollingResetTimeInterval = this.props.scrollingResetTimeInterval;\n\n if (this._disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(this._disablePointerEventsTimeoutId);\n }\n\n this._disablePointerEventsTimeoutId = requestAnimationTimeout(this._debounceScrollEndedCallback, scrollingResetTimeInterval);\n }\n }, {\n key: \"_handleInvalidatedGridSize\",\n\n /**\n * Check for batched CellMeasurer size invalidations.\n * This will occur the first time one or more previously unmeasured cells are rendered.\n */\n value: function _handleInvalidatedGridSize() {\n if (typeof this._deferredInvalidateColumnIndex === 'number' && typeof this._deferredInvalidateRowIndex === 'number') {\n var columnIndex = this._deferredInvalidateColumnIndex;\n var rowIndex = this._deferredInvalidateRowIndex;\n this._deferredInvalidateColumnIndex = null;\n this._deferredInvalidateRowIndex = null;\n this.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n }\n }\n }, {\n key: \"_invokeOnScrollMemoizer\",\n value: function _invokeOnScrollMemoizer(_ref6) {\n var _this3 = this;\n\n var scrollLeft = _ref6.scrollLeft,\n scrollTop = _ref6.scrollTop,\n totalColumnsWidth = _ref6.totalColumnsWidth,\n totalRowsHeight = _ref6.totalRowsHeight;\n\n this._onScrollMemoizer({\n callback: function callback(_ref7) {\n var scrollLeft = _ref7.scrollLeft,\n scrollTop = _ref7.scrollTop;\n var _this3$props = _this3.props,\n height = _this3$props.height,\n onScroll = _this3$props.onScroll,\n width = _this3$props.width;\n onScroll({\n clientHeight: height,\n clientWidth: width,\n scrollHeight: totalRowsHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: totalColumnsWidth\n });\n },\n indices: {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n }\n });\n }\n }, {\n key: \"_isScrolling\",\n value: function _isScrolling() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n // If isScrolling is defined in props, use it to override the value in state\n // This is a performance optimization for WindowScroller + Grid\n return Object.hasOwnProperty.call(props, 'isScrolling') ? Boolean(props.isScrolling) : Boolean(state.isScrolling);\n }\n }, {\n key: \"_maybeCallOnScrollbarPresenceChange\",\n value: function _maybeCallOnScrollbarPresenceChange() {\n if (this._scrollbarPresenceChanged) {\n var onScrollbarPresenceChange = this.props.onScrollbarPresenceChange;\n this._scrollbarPresenceChanged = false;\n onScrollbarPresenceChange({\n horizontal: this._horizontalScrollBarSize > 0,\n size: this.state.instanceProps.scrollbarSize,\n vertical: this._verticalScrollBarSize > 0\n });\n }\n }\n }, {\n key: \"scrollToPosition\",\n\n /**\n * Scroll to the specified offset(s).\n * Useful for animating position changes.\n */\n value: function scrollToPosition(_ref8) {\n var scrollLeft = _ref8.scrollLeft,\n scrollTop = _ref8.scrollTop;\n\n var stateUpdate = Grid._getScrollToPositionStateUpdate({\n prevState: this.state,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n }\n }, {\n key: \"_getCalculatedScrollLeft\",\n value: function _getCalculatedScrollLeft() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n return Grid._getCalculatedScrollLeft(props, state);\n }\n }, {\n key: \"_updateScrollLeftForScrollToColumn\",\n value: function _updateScrollLeftForScrollToColumn() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n\n var stateUpdate = Grid._getScrollLeftForScrollToColumnStateUpdate(props, state);\n\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n }\n }, {\n key: \"_getCalculatedScrollTop\",\n value: function _getCalculatedScrollTop() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n return Grid._getCalculatedScrollTop(props, state);\n }\n }, {\n key: \"_resetStyleCache\",\n value: function _resetStyleCache() {\n var styleCache = this._styleCache;\n var cellCache = this._cellCache;\n var isScrollingOptOut = this.props.isScrollingOptOut; // Reset cell and style caches once scrolling stops.\n // This makes Grid simpler to use (since cells commonly change).\n // And it keeps the caches from growing too large.\n // Performance is most sensitive when a user is scrolling.\n // Don't clear visible cells from cellCache if isScrollingOptOut is specified.\n // This keeps the cellCache to a resonable size.\n\n this._cellCache = {};\n this._styleCache = {}; // Copy over the visible cell styles so avoid unnecessary re-render.\n\n for (var rowIndex = this._rowStartIndex; rowIndex <= this._rowStopIndex; rowIndex++) {\n for (var columnIndex = this._columnStartIndex; columnIndex <= this._columnStopIndex; columnIndex++) {\n var key = \"\".concat(rowIndex, \"-\").concat(columnIndex);\n this._styleCache[key] = styleCache[key];\n\n if (isScrollingOptOut) {\n this._cellCache[key] = cellCache[key];\n }\n }\n }\n }\n }, {\n key: \"_updateScrollTopForScrollToRow\",\n value: function _updateScrollTopForScrollToRow() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n\n var stateUpdate = Grid._getScrollTopForScrollToRowStateUpdate(props, state);\n\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var newState = {};\n\n if (nextProps.columnCount === 0 && prevState.scrollLeft !== 0 || nextProps.rowCount === 0 && prevState.scrollTop !== 0) {\n newState.scrollLeft = 0;\n newState.scrollTop = 0; // only use scroll{Left,Top} from props if scrollTo{Column,Row} isn't specified\n // scrollTo{Column,Row} should override scroll{Left,Top}\n } else if (nextProps.scrollLeft !== prevState.scrollLeft && nextProps.scrollToColumn < 0 || nextProps.scrollTop !== prevState.scrollTop && nextProps.scrollToRow < 0) {\n Object.assign(newState, Grid._getScrollToPositionStateUpdate({\n prevState: prevState,\n scrollLeft: nextProps.scrollLeft,\n scrollTop: nextProps.scrollTop\n }));\n }\n\n var instanceProps = prevState.instanceProps; // Initially we should not clearStyleCache\n\n newState.needToResetStyleCache = false;\n\n if (nextProps.columnWidth !== instanceProps.prevColumnWidth || nextProps.rowHeight !== instanceProps.prevRowHeight) {\n // Reset cache. set it to {} in render\n newState.needToResetStyleCache = true;\n }\n\n instanceProps.columnSizeAndPositionManager.configure({\n cellCount: nextProps.columnCount,\n estimatedCellSize: Grid._getEstimatedColumnSize(nextProps),\n cellSizeGetter: Grid._wrapSizeGetter(nextProps.columnWidth)\n });\n instanceProps.rowSizeAndPositionManager.configure({\n cellCount: nextProps.rowCount,\n estimatedCellSize: Grid._getEstimatedRowSize(nextProps),\n cellSizeGetter: Grid._wrapSizeGetter(nextProps.rowHeight)\n });\n\n if (instanceProps.prevColumnCount === 0 || instanceProps.prevRowCount === 0) {\n instanceProps.prevColumnCount = 0;\n instanceProps.prevRowCount = 0;\n } // If scrolling is controlled outside this component, clear cache when scrolling stops\n\n\n if (nextProps.autoHeight && nextProps.isScrolling === false && instanceProps.prevIsScrolling === true) {\n Object.assign(newState, {\n isScrolling: false\n });\n }\n\n var maybeStateA;\n var maybeStateB;\n calculateSizeAndPositionDataAndUpdateScrollOffset({\n cellCount: instanceProps.prevColumnCount,\n cellSize: typeof instanceProps.prevColumnWidth === 'number' ? instanceProps.prevColumnWidth : null,\n computeMetadataCallback: function computeMetadataCallback() {\n return instanceProps.columnSizeAndPositionManager.resetCell(0);\n },\n computeMetadataCallbackProps: nextProps,\n nextCellsCount: nextProps.columnCount,\n nextCellSize: typeof nextProps.columnWidth === 'number' ? nextProps.columnWidth : null,\n nextScrollToIndex: nextProps.scrollToColumn,\n scrollToIndex: instanceProps.prevScrollToColumn,\n updateScrollOffsetForScrollToIndex: function updateScrollOffsetForScrollToIndex() {\n maybeStateA = Grid._getScrollLeftForScrollToColumnStateUpdate(nextProps, prevState);\n }\n });\n calculateSizeAndPositionDataAndUpdateScrollOffset({\n cellCount: instanceProps.prevRowCount,\n cellSize: typeof instanceProps.prevRowHeight === 'number' ? instanceProps.prevRowHeight : null,\n computeMetadataCallback: function computeMetadataCallback() {\n return instanceProps.rowSizeAndPositionManager.resetCell(0);\n },\n computeMetadataCallbackProps: nextProps,\n nextCellsCount: nextProps.rowCount,\n nextCellSize: typeof nextProps.rowHeight === 'number' ? nextProps.rowHeight : null,\n nextScrollToIndex: nextProps.scrollToRow,\n scrollToIndex: instanceProps.prevScrollToRow,\n updateScrollOffsetForScrollToIndex: function updateScrollOffsetForScrollToIndex() {\n maybeStateB = Grid._getScrollTopForScrollToRowStateUpdate(nextProps, prevState);\n }\n });\n instanceProps.prevColumnCount = nextProps.columnCount;\n instanceProps.prevColumnWidth = nextProps.columnWidth;\n instanceProps.prevIsScrolling = nextProps.isScrolling === true;\n instanceProps.prevRowCount = nextProps.rowCount;\n instanceProps.prevRowHeight = nextProps.rowHeight;\n instanceProps.prevScrollToColumn = nextProps.scrollToColumn;\n instanceProps.prevScrollToRow = nextProps.scrollToRow; // getting scrollBarSize (moved from componentWillMount)\n\n instanceProps.scrollbarSize = nextProps.getScrollbarSize();\n\n if (instanceProps.scrollbarSize === undefined) {\n instanceProps.scrollbarSizeMeasured = false;\n instanceProps.scrollbarSize = 0;\n } else {\n instanceProps.scrollbarSizeMeasured = true;\n }\n\n newState.instanceProps = instanceProps;\n return _objectSpread({}, newState, {}, maybeStateA, {}, maybeStateB);\n }\n }, {\n key: \"_getEstimatedColumnSize\",\n value: function _getEstimatedColumnSize(props) {\n return typeof props.columnWidth === 'number' ? props.columnWidth : props.estimatedColumnSize;\n }\n }, {\n key: \"_getEstimatedRowSize\",\n value: function _getEstimatedRowSize(props) {\n return typeof props.rowHeight === 'number' ? props.rowHeight : props.estimatedRowSize;\n }\n }, {\n key: \"_getScrollToPositionStateUpdate\",\n\n /**\n * Get the updated state after scrolling to\n * scrollLeft and scrollTop\n */\n value: function _getScrollToPositionStateUpdate(_ref9) {\n var prevState = _ref9.prevState,\n scrollLeft = _ref9.scrollLeft,\n scrollTop = _ref9.scrollTop;\n var newState = {\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n\n if (typeof scrollLeft === 'number' && scrollLeft >= 0) {\n newState.scrollDirectionHorizontal = scrollLeft > prevState.scrollLeft ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD;\n newState.scrollLeft = scrollLeft;\n }\n\n if (typeof scrollTop === 'number' && scrollTop >= 0) {\n newState.scrollDirectionVertical = scrollTop > prevState.scrollTop ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD;\n newState.scrollTop = scrollTop;\n }\n\n if (typeof scrollLeft === 'number' && scrollLeft >= 0 && scrollLeft !== prevState.scrollLeft || typeof scrollTop === 'number' && scrollTop >= 0 && scrollTop !== prevState.scrollTop) {\n return newState;\n }\n\n return {};\n }\n }, {\n key: \"_wrapSizeGetter\",\n value: function _wrapSizeGetter(value) {\n return typeof value === 'function' ? value : function () {\n return value;\n };\n }\n }, {\n key: \"_getCalculatedScrollLeft\",\n value: function _getCalculatedScrollLeft(nextProps, prevState) {\n var columnCount = nextProps.columnCount,\n height = nextProps.height,\n scrollToAlignment = nextProps.scrollToAlignment,\n scrollToColumn = nextProps.scrollToColumn,\n width = nextProps.width;\n var scrollLeft = prevState.scrollLeft,\n instanceProps = prevState.instanceProps;\n\n if (columnCount > 0) {\n var finalColumn = columnCount - 1;\n var targetIndex = scrollToColumn < 0 ? finalColumn : Math.min(finalColumn, scrollToColumn);\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n var scrollBarSize = instanceProps.scrollbarSizeMeasured && totalRowsHeight > height ? instanceProps.scrollbarSize : 0;\n return instanceProps.columnSizeAndPositionManager.getUpdatedOffsetForIndex({\n align: scrollToAlignment,\n containerSize: width - scrollBarSize,\n currentOffset: scrollLeft,\n targetIndex: targetIndex\n });\n }\n\n return 0;\n }\n }, {\n key: \"_getScrollLeftForScrollToColumnStateUpdate\",\n value: function _getScrollLeftForScrollToColumnStateUpdate(nextProps, prevState) {\n var scrollLeft = prevState.scrollLeft;\n\n var calculatedScrollLeft = Grid._getCalculatedScrollLeft(nextProps, prevState);\n\n if (typeof calculatedScrollLeft === 'number' && calculatedScrollLeft >= 0 && scrollLeft !== calculatedScrollLeft) {\n return Grid._getScrollToPositionStateUpdate({\n prevState: prevState,\n scrollLeft: calculatedScrollLeft,\n scrollTop: -1\n });\n }\n\n return {};\n }\n }, {\n key: \"_getCalculatedScrollTop\",\n value: function _getCalculatedScrollTop(nextProps, prevState) {\n var height = nextProps.height,\n rowCount = nextProps.rowCount,\n scrollToAlignment = nextProps.scrollToAlignment,\n scrollToRow = nextProps.scrollToRow,\n width = nextProps.width;\n var scrollTop = prevState.scrollTop,\n instanceProps = prevState.instanceProps;\n\n if (rowCount > 0) {\n var finalRow = rowCount - 1;\n var targetIndex = scrollToRow < 0 ? finalRow : Math.min(finalRow, scrollToRow);\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n var scrollBarSize = instanceProps.scrollbarSizeMeasured && totalColumnsWidth > width ? instanceProps.scrollbarSize : 0;\n return instanceProps.rowSizeAndPositionManager.getUpdatedOffsetForIndex({\n align: scrollToAlignment,\n containerSize: height - scrollBarSize,\n currentOffset: scrollTop,\n targetIndex: targetIndex\n });\n }\n\n return 0;\n }\n }, {\n key: \"_getScrollTopForScrollToRowStateUpdate\",\n value: function _getScrollTopForScrollToRowStateUpdate(nextProps, prevState) {\n var scrollTop = prevState.scrollTop;\n\n var calculatedScrollTop = Grid._getCalculatedScrollTop(nextProps, prevState);\n\n if (typeof calculatedScrollTop === 'number' && calculatedScrollTop >= 0 && scrollTop !== calculatedScrollTop) {\n return Grid._getScrollToPositionStateUpdate({\n prevState: prevState,\n scrollLeft: -1,\n scrollTop: calculatedScrollTop\n });\n }\n\n return {};\n }\n }]);\n\n return Grid;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"aria-label\": PropTypes.string.isRequired,\n \"aria-readonly\": PropTypes.bool,\n\n /**\n * Set the width of the inner scrollable container to 'auto'.\n * This is useful for single-column Grids to ensure that the column doesn't extend below a vertical scrollbar.\n */\n \"autoContainerWidth\": PropTypes.bool.isRequired,\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height of rows can stretch the window.\n * Intended for use with WindowScroller\n */\n \"autoHeight\": PropTypes.bool.isRequired,\n\n /**\n * Removes fixed width from the scrollingContainer so that the total width of rows can stretch the window.\n * Intended for use with WindowScroller\n */\n \"autoWidth\": PropTypes.bool.isRequired,\n\n /** Responsible for rendering a cell given an row and column index. */\n \"cellRenderer\": function cellRenderer() {\n return (typeof bpfrpt_proptype_CellRenderer === \"function\" ? bpfrpt_proptype_CellRenderer.isRequired ? bpfrpt_proptype_CellRenderer.isRequired : bpfrpt_proptype_CellRenderer : PropTypes.shape(bpfrpt_proptype_CellRenderer).isRequired).apply(this, arguments);\n },\n\n /** Responsible for rendering a group of cells given their index ranges. */\n \"cellRangeRenderer\": function cellRangeRenderer() {\n return (typeof bpfrpt_proptype_CellRangeRenderer === \"function\" ? bpfrpt_proptype_CellRangeRenderer.isRequired ? bpfrpt_proptype_CellRangeRenderer.isRequired : bpfrpt_proptype_CellRangeRenderer : PropTypes.shape(bpfrpt_proptype_CellRangeRenderer).isRequired).apply(this, arguments);\n },\n\n /** Optional custom CSS class name to attach to root Grid element. */\n \"className\": PropTypes.string,\n\n /** Number of columns in grid. */\n \"columnCount\": PropTypes.number.isRequired,\n\n /** Either a fixed column width (number) or a function that returns the width of a column given its index. */\n \"columnWidth\": function columnWidth() {\n return (typeof bpfrpt_proptype_CellSize === \"function\" ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n },\n\n /** Unfiltered props for the Grid container. */\n \"containerProps\": PropTypes.object,\n\n /** ARIA role for the cell-container. */\n \"containerRole\": PropTypes.string.isRequired,\n\n /** Optional inline style applied to inner cell-container */\n \"containerStyle\": PropTypes.object.isRequired,\n\n /**\n * If CellMeasurer is used to measure this Grid's children, this should be a pointer to its CellMeasurerCache.\n * A shared CellMeasurerCache reference enables Grid and CellMeasurer to share measurement data.\n */\n \"deferredMeasurementCache\": PropTypes.object,\n\n /**\n * Used to estimate the total width of a Grid before all of its columns have actually been measured.\n * The estimated total width is adjusted as columns are rendered.\n */\n \"estimatedColumnSize\": PropTypes.number.isRequired,\n\n /**\n * Used to estimate the total height of a Grid before all of its rows have actually been measured.\n * The estimated total height is adjusted as rows are rendered.\n */\n \"estimatedRowSize\": PropTypes.number.isRequired,\n\n /** Exposed for testing purposes only. */\n \"getScrollbarSize\": PropTypes.func.isRequired,\n\n /** Height of Grid; this property determines the number of visible (vs virtualized) rows. */\n \"height\": PropTypes.number.isRequired,\n\n /** Optional custom id to attach to root Grid element. */\n \"id\": PropTypes.string,\n\n /**\n * Override internal is-scrolling state tracking.\n * This property is primarily intended for use with the WindowScroller component.\n */\n \"isScrolling\": PropTypes.bool,\n\n /**\n * Opt-out of isScrolling param passed to cellRangeRenderer.\n * To avoid the extra render when scroll stops.\n */\n \"isScrollingOptOut\": PropTypes.bool.isRequired,\n\n /** Optional renderer to be used in place of rows when either :rowCount or :columnCount is 0. */\n \"noContentRenderer\": function noContentRenderer() {\n return (typeof bpfrpt_proptype_NoContentRenderer === \"function\" ? bpfrpt_proptype_NoContentRenderer.isRequired ? bpfrpt_proptype_NoContentRenderer.isRequired : bpfrpt_proptype_NoContentRenderer : PropTypes.shape(bpfrpt_proptype_NoContentRenderer).isRequired).apply(this, arguments);\n },\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n */\n \"onScroll\": PropTypes.func.isRequired,\n\n /**\n * Called whenever a horizontal or vertical scrollbar is added or removed.\n * This prop is not intended for end-user use;\n * It is used by MultiGrid to support fixed-row/fixed-column scroll syncing.\n */\n \"onScrollbarPresenceChange\": PropTypes.func.isRequired,\n\n /** Callback invoked with information about the section of the Grid that was just rendered. */\n \"onSectionRendered\": PropTypes.func.isRequired,\n\n /**\n * Number of columns to render before/after the visible section of the grid.\n * These columns can help for smoother scrolling on touch devices or browsers that send scroll events infrequently.\n */\n \"overscanColumnCount\": PropTypes.number.isRequired,\n\n /**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n \"overscanIndicesGetter\": function overscanIndicesGetter() {\n return (typeof bpfrpt_proptype_OverscanIndicesGetter === \"function\" ? bpfrpt_proptype_OverscanIndicesGetter.isRequired ? bpfrpt_proptype_OverscanIndicesGetter.isRequired : bpfrpt_proptype_OverscanIndicesGetter : PropTypes.shape(bpfrpt_proptype_OverscanIndicesGetter).isRequired).apply(this, arguments);\n },\n\n /**\n * Number of rows to render above/below the visible section of the grid.\n * These rows can help for smoother scrolling on touch devices or browsers that send scroll events infrequently.\n */\n \"overscanRowCount\": PropTypes.number.isRequired,\n\n /** ARIA role for the grid element. */\n \"role\": PropTypes.string.isRequired,\n\n /**\n * Either a fixed row height (number) or a function that returns the height of a row given its index.\n * Should implement the following interface: ({ index: number }): number\n */\n \"rowHeight\": function rowHeight() {\n return (typeof bpfrpt_proptype_CellSize === \"function\" ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n },\n\n /** Number of rows in grid. */\n \"rowCount\": PropTypes.number.isRequired,\n\n /** Wait this amount of time after the last scroll event before resetting Grid `pointer-events`. */\n \"scrollingResetTimeInterval\": PropTypes.number.isRequired,\n\n /** Horizontal offset. */\n \"scrollLeft\": PropTypes.number,\n\n /**\n * Controls scroll-to-cell behavior of the Grid.\n * The default (\"auto\") scrolls the least amount possible to ensure that the specified cell is fully visible.\n * Use \"start\" to align cells to the top/left of the Grid and \"end\" to align bottom/right.\n */\n \"scrollToAlignment\": function scrollToAlignment() {\n return (typeof bpfrpt_proptype_Alignment === \"function\" ? bpfrpt_proptype_Alignment.isRequired ? bpfrpt_proptype_Alignment.isRequired : bpfrpt_proptype_Alignment : PropTypes.shape(bpfrpt_proptype_Alignment).isRequired).apply(this, arguments);\n },\n\n /** Column index to ensure visible (by forcefully scrolling if necessary) */\n \"scrollToColumn\": PropTypes.number.isRequired,\n\n /** Vertical offset. */\n \"scrollTop\": PropTypes.number,\n\n /** Row index to ensure visible (by forcefully scrolling if necessary) */\n \"scrollToRow\": PropTypes.number.isRequired,\n\n /** Optional inline style */\n \"style\": PropTypes.object.isRequired,\n\n /** Tab index for focus */\n \"tabIndex\": PropTypes.number,\n\n /** Width of Grid; this property determines the number of visible (vs virtualized) columns. */\n \"width\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(Grid, \"defaultProps\", {\n 'aria-label': 'grid',\n 'aria-readonly': true,\n autoContainerWidth: false,\n autoHeight: false,\n autoWidth: false,\n cellRangeRenderer: defaultCellRangeRenderer,\n containerRole: 'rowgroup',\n containerStyle: {},\n estimatedColumnSize: 100,\n estimatedRowSize: 30,\n getScrollbarSize: scrollbarSize,\n noContentRenderer: renderNull,\n onScroll: function onScroll() {},\n onScrollbarPresenceChange: function onScrollbarPresenceChange() {},\n onSectionRendered: function onSectionRendered() {},\n overscanColumnCount: 0,\n overscanIndicesGetter: defaultOverscanIndicesGetter,\n overscanRowCount: 10,\n role: 'grid',\n scrollingResetTimeInterval: DEFAULT_SCROLLING_RESET_TIME_INTERVAL,\n scrollToAlignment: 'auto',\n scrollToColumn: -1,\n scrollToRow: -1,\n style: {},\n tabIndex: 0,\n isScrollingOptOut: false\n});\n\npolyfill(Grid);\nexport default Grid;\nimport { bpfrpt_proptype_CellRenderer } from \"./types\";\nimport { bpfrpt_proptype_CellRangeRenderer } from \"./types\";\nimport { bpfrpt_proptype_CellPosition } from \"./types\";\nimport { bpfrpt_proptype_CellSize } from \"./types\";\nimport { bpfrpt_proptype_CellSizeGetter } from \"./types\";\nimport { bpfrpt_proptype_NoContentRenderer } from \"./types\";\nimport { bpfrpt_proptype_Scroll } from \"./types\";\nimport { bpfrpt_proptype_ScrollbarPresenceChange } from \"./types\";\nimport { bpfrpt_proptype_RenderedSection } from \"./types\";\nimport { bpfrpt_proptype_OverscanIndicesGetter } from \"./types\";\nimport { bpfrpt_proptype_Alignment } from \"./types\";\nimport { bpfrpt_proptype_CellCache } from \"./types\";\nimport { bpfrpt_proptype_StyleCache } from \"./types\";\nimport { bpfrpt_proptype_AnimationTimeoutId } from \"../utils/requestAnimationTimeout\";\nimport PropTypes from \"prop-types\";","import { caf, raf } from './animationFrame';\nvar bpfrpt_proptype_AnimationTimeoutId = process.env.NODE_ENV === 'production' ? null : {\n \"id\": PropTypes.number.isRequired\n};\nexport var cancelAnimationTimeout = function cancelAnimationTimeout(frame) {\n return caf(frame.id);\n};\n/**\n * Recursively calls requestAnimationFrame until a specified delay has been met or exceeded.\n * When the delay time has been reached the function you're timing out will be called.\n *\n * Credit: Joe Lambert (https://gist.github.com/joelambert/1002116#file-requesttimeout-js)\n */\n\nexport var requestAnimationTimeout = function requestAnimationTimeout(callback, delay) {\n var start; // wait for end of processing current event handler, because event handler may be long\n\n Promise.resolve().then(function () {\n start = Date.now();\n });\n\n var timeout = function timeout() {\n if (Date.now() - start >= delay) {\n callback.call();\n } else {\n frame.id = raf(timeout);\n }\n };\n\n var frame = {\n id: raf(timeout)\n };\n return frame;\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_AnimationTimeoutId };","export var SCROLL_DIRECTION_BACKWARD = -1;\nexport var SCROLL_DIRECTION_FORWARD = 1;\nexport var SCROLL_DIRECTION_HORIZONTAL = 'horizontal';\nexport var SCROLL_DIRECTION_VERTICAL = 'vertical';\n/**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n\nexport default function defaultOverscanIndicesGetter(_ref) {\n var cellCount = _ref.cellCount,\n overscanCellsCount = _ref.overscanCellsCount,\n scrollDirection = _ref.scrollDirection,\n startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n\n if (scrollDirection === SCROLL_DIRECTION_FORWARD) {\n return {\n overscanStartIndex: Math.max(0, startIndex),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex + overscanCellsCount)\n };\n } else {\n return {\n overscanStartIndex: Math.max(0, startIndex - overscanCellsCount),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex)\n };\n }\n}\nimport { bpfrpt_proptype_OverscanIndicesGetterParams } from \"./types\";\nimport { bpfrpt_proptype_OverscanIndices } from \"./types\";","/**\n * Default implementation of cellRangeRenderer used by Grid.\n * This renderer supports cell-caching while the user is scrolling.\n */\nexport default function defaultCellRangeRenderer(_ref) {\n var cellCache = _ref.cellCache,\n cellRenderer = _ref.cellRenderer,\n columnSizeAndPositionManager = _ref.columnSizeAndPositionManager,\n columnStartIndex = _ref.columnStartIndex,\n columnStopIndex = _ref.columnStopIndex,\n deferredMeasurementCache = _ref.deferredMeasurementCache,\n horizontalOffsetAdjustment = _ref.horizontalOffsetAdjustment,\n isScrolling = _ref.isScrolling,\n isScrollingOptOut = _ref.isScrollingOptOut,\n parent = _ref.parent,\n rowSizeAndPositionManager = _ref.rowSizeAndPositionManager,\n rowStartIndex = _ref.rowStartIndex,\n rowStopIndex = _ref.rowStopIndex,\n styleCache = _ref.styleCache,\n verticalOffsetAdjustment = _ref.verticalOffsetAdjustment,\n visibleColumnIndices = _ref.visibleColumnIndices,\n visibleRowIndices = _ref.visibleRowIndices;\n var renderedCells = []; // Browsers have native size limits for elements (eg Chrome 33M pixels, IE 1.5M pixes).\n // User cannot scroll beyond these size limitations.\n // In order to work around this, ScalingCellSizeAndPositionManager compresses offsets.\n // We should never cache styles for compressed offsets though as this can lead to bugs.\n // See issue #576 for more.\n\n var areOffsetsAdjusted = columnSizeAndPositionManager.areOffsetsAdjusted() || rowSizeAndPositionManager.areOffsetsAdjusted();\n var canCacheStyle = !isScrolling && !areOffsetsAdjusted;\n\n for (var rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {\n var rowDatum = rowSizeAndPositionManager.getSizeAndPositionOfCell(rowIndex);\n\n for (var columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {\n var columnDatum = columnSizeAndPositionManager.getSizeAndPositionOfCell(columnIndex);\n var isVisible = columnIndex >= visibleColumnIndices.start && columnIndex <= visibleColumnIndices.stop && rowIndex >= visibleRowIndices.start && rowIndex <= visibleRowIndices.stop;\n var key = \"\".concat(rowIndex, \"-\").concat(columnIndex);\n var style = void 0; // Cache style objects so shallow-compare doesn't re-render unnecessarily.\n\n if (canCacheStyle && styleCache[key]) {\n style = styleCache[key];\n } else {\n // In deferred mode, cells will be initially rendered before we know their size.\n // Don't interfere with CellMeasurer's measurements by setting an invalid size.\n if (deferredMeasurementCache && !deferredMeasurementCache.has(rowIndex, columnIndex)) {\n // Position not-yet-measured cells at top/left 0,0,\n // And give them width/height of 'auto' so they can grow larger than the parent Grid if necessary.\n // Positioning them further to the right/bottom influences their measured size.\n style = {\n height: 'auto',\n left: 0,\n position: 'absolute',\n top: 0,\n width: 'auto'\n };\n } else {\n style = {\n height: rowDatum.size,\n left: columnDatum.offset + horizontalOffsetAdjustment,\n position: 'absolute',\n top: rowDatum.offset + verticalOffsetAdjustment,\n width: columnDatum.size\n };\n styleCache[key] = style;\n }\n }\n\n var cellRendererParams = {\n columnIndex: columnIndex,\n isScrolling: isScrolling,\n isVisible: isVisible,\n key: key,\n parent: parent,\n rowIndex: rowIndex,\n style: style\n };\n var renderedCell = void 0; // Avoid re-creating cells while scrolling.\n // This can lead to the same cell being created many times and can cause performance issues for \"heavy\" cells.\n // If a scroll is in progress- cache and reuse cells.\n // This cache will be thrown away once scrolling completes.\n // However if we are scaling scroll positions and sizes, we should also avoid caching.\n // This is because the offset changes slightly as scroll position changes and caching leads to stale values.\n // For more info refer to issue #395\n //\n // If isScrollingOptOut is specified, we always cache cells.\n // For more info refer to issue #1028\n\n if ((isScrollingOptOut || isScrolling) && !horizontalOffsetAdjustment && !verticalOffsetAdjustment) {\n if (!cellCache[key]) {\n cellCache[key] = cellRenderer(cellRendererParams);\n }\n\n renderedCell = cellCache[key]; // If the user is no longer scrolling, don't cache cells.\n // This makes dynamic cell content difficult for users and would also lead to a heavier memory footprint.\n } else {\n renderedCell = cellRenderer(cellRendererParams);\n }\n\n if (renderedCell == null || renderedCell === false) {\n continue;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n warnAboutMissingStyle(parent, renderedCell);\n }\n\n renderedCells.push(renderedCell);\n }\n }\n\n return renderedCells;\n}\n\nfunction warnAboutMissingStyle(parent, renderedCell) {\n if (process.env.NODE_ENV !== 'production') {\n if (renderedCell) {\n // If the direct child is a CellMeasurer, then we should check its child\n // See issue #611\n if (renderedCell.type && renderedCell.type.__internalCellMeasurerFlag) {\n renderedCell = renderedCell.props.children;\n }\n\n if (renderedCell && renderedCell.props && renderedCell.props.style === undefined && parent.__warnedAboutMissingStyle !== true) {\n parent.__warnedAboutMissingStyle = true;\n console.warn('Rendered cell should include style property for positioning.');\n }\n }\n }\n}\n\nimport { bpfrpt_proptype_CellRangeRendererParams } from \"./types\";","export var SCROLL_DIRECTION_BACKWARD = -1;\nexport var SCROLL_DIRECTION_FORWARD = 1;\nexport var SCROLL_DIRECTION_HORIZONTAL = 'horizontal';\nexport var SCROLL_DIRECTION_VERTICAL = 'vertical';\n/**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n\nexport default function defaultOverscanIndicesGetter(_ref) {\n var cellCount = _ref.cellCount,\n overscanCellsCount = _ref.overscanCellsCount,\n scrollDirection = _ref.scrollDirection,\n startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n // Make sure we render at least 1 cell extra before and after (except near boundaries)\n // This is necessary in order to support keyboard navigation (TAB/SHIFT+TAB) in some cases\n // For more info see issues #625\n overscanCellsCount = Math.max(1, overscanCellsCount);\n\n if (scrollDirection === SCROLL_DIRECTION_FORWARD) {\n return {\n overscanStartIndex: Math.max(0, startIndex - 1),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex + overscanCellsCount)\n };\n } else {\n return {\n overscanStartIndex: Math.max(0, startIndex - overscanCellsCount),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex + 1)\n };\n }\n}\nimport { bpfrpt_proptype_OverscanIndicesGetterParams } from \"./types\";\nimport { bpfrpt_proptype_OverscanIndices } from \"./types\";","var bpfrpt_proptype_ScrollIndices = process.env.NODE_ENV === 'production' ? null : {\n \"scrollToColumn\": PropTypes.number.isRequired,\n \"scrollToRow\": PropTypes.number.isRequired\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_ScrollIndices };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\n/**\n * This HOC decorates a virtualized component and responds to arrow-key events by scrolling one row or column at a time.\n */\n\nvar ArrowKeyStepper = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(ArrowKeyStepper, _React$PureComponent);\n\n function ArrowKeyStepper() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ArrowKeyStepper);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ArrowKeyStepper)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n scrollToColumn: 0,\n scrollToRow: 0,\n instanceProps: {\n prevScrollToColumn: 0,\n prevScrollToRow: 0\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_columnStartIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_columnStopIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_rowStartIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_rowStopIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onKeyDown\", function (event) {\n var _this$props = _this.props,\n columnCount = _this$props.columnCount,\n disabled = _this$props.disabled,\n mode = _this$props.mode,\n rowCount = _this$props.rowCount;\n\n if (disabled) {\n return;\n }\n\n var _this$_getScrollState = _this._getScrollState(),\n scrollToColumnPrevious = _this$_getScrollState.scrollToColumn,\n scrollToRowPrevious = _this$_getScrollState.scrollToRow;\n\n var _this$_getScrollState2 = _this._getScrollState(),\n scrollToColumn = _this$_getScrollState2.scrollToColumn,\n scrollToRow = _this$_getScrollState2.scrollToRow; // The above cases all prevent default event event behavior.\n // This is to keep the grid from scrolling after the snap-to update.\n\n\n switch (event.key) {\n case 'ArrowDown':\n scrollToRow = mode === 'cells' ? Math.min(scrollToRow + 1, rowCount - 1) : Math.min(_this._rowStopIndex + 1, rowCount - 1);\n break;\n\n case 'ArrowLeft':\n scrollToColumn = mode === 'cells' ? Math.max(scrollToColumn - 1, 0) : Math.max(_this._columnStartIndex - 1, 0);\n break;\n\n case 'ArrowRight':\n scrollToColumn = mode === 'cells' ? Math.min(scrollToColumn + 1, columnCount - 1) : Math.min(_this._columnStopIndex + 1, columnCount - 1);\n break;\n\n case 'ArrowUp':\n scrollToRow = mode === 'cells' ? Math.max(scrollToRow - 1, 0) : Math.max(_this._rowStartIndex - 1, 0);\n break;\n }\n\n if (scrollToColumn !== scrollToColumnPrevious || scrollToRow !== scrollToRowPrevious) {\n event.preventDefault();\n\n _this._updateScrollState({\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onSectionRendered\", function (_ref) {\n var columnStartIndex = _ref.columnStartIndex,\n columnStopIndex = _ref.columnStopIndex,\n rowStartIndex = _ref.rowStartIndex,\n rowStopIndex = _ref.rowStopIndex;\n _this._columnStartIndex = columnStartIndex;\n _this._columnStopIndex = columnStopIndex;\n _this._rowStartIndex = rowStartIndex;\n _this._rowStopIndex = rowStopIndex;\n });\n\n return _this;\n }\n\n _createClass(ArrowKeyStepper, [{\n key: \"setScrollIndexes\",\n value: function setScrollIndexes(_ref2) {\n var scrollToColumn = _ref2.scrollToColumn,\n scrollToRow = _ref2.scrollToRow;\n this.setState({\n scrollToRow: scrollToRow,\n scrollToColumn: scrollToColumn\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n className = _this$props2.className,\n children = _this$props2.children;\n\n var _this$_getScrollState3 = this._getScrollState(),\n scrollToColumn = _this$_getScrollState3.scrollToColumn,\n scrollToRow = _this$_getScrollState3.scrollToRow;\n\n return React.createElement(\"div\", {\n className: className,\n onKeyDown: this._onKeyDown\n }, children({\n onSectionRendered: this._onSectionRendered,\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow\n }));\n }\n }, {\n key: \"_getScrollState\",\n value: function _getScrollState() {\n return this.props.isControlled ? this.props : this.state;\n }\n }, {\n key: \"_updateScrollState\",\n value: function _updateScrollState(_ref3) {\n var scrollToColumn = _ref3.scrollToColumn,\n scrollToRow = _ref3.scrollToRow;\n var _this$props3 = this.props,\n isControlled = _this$props3.isControlled,\n onScrollToChange = _this$props3.onScrollToChange;\n\n if (typeof onScrollToChange === 'function') {\n onScrollToChange({\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow\n });\n }\n\n if (!isControlled) {\n this.setState({\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow\n });\n }\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.isControlled) {\n return {};\n }\n\n if (nextProps.scrollToColumn !== prevState.instanceProps.prevScrollToColumn || nextProps.scrollToRow !== prevState.instanceProps.prevScrollToRow) {\n return _objectSpread({}, prevState, {\n scrollToColumn: nextProps.scrollToColumn,\n scrollToRow: nextProps.scrollToRow,\n instanceProps: {\n prevScrollToColumn: nextProps.scrollToColumn,\n prevScrollToRow: nextProps.scrollToRow\n }\n });\n }\n\n return {};\n }\n }]);\n\n return ArrowKeyStepper;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"children\": PropTypes.func.isRequired,\n \"className\": PropTypes.string,\n \"columnCount\": PropTypes.number.isRequired,\n \"disabled\": PropTypes.bool.isRequired,\n \"isControlled\": PropTypes.bool.isRequired,\n \"mode\": PropTypes.oneOf([\"cells\", \"edges\"]).isRequired,\n \"onScrollToChange\": PropTypes.func,\n \"rowCount\": PropTypes.number.isRequired,\n \"scrollToColumn\": PropTypes.number.isRequired,\n \"scrollToRow\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(ArrowKeyStepper, \"defaultProps\", {\n disabled: false,\n isControlled: false,\n mode: 'edges',\n scrollToColumn: 0,\n scrollToRow: 0\n});\n\npolyfill(ArrowKeyStepper);\nexport default ArrowKeyStepper;\nimport { bpfrpt_proptype_RenderedSection } from \"../Grid\";\nimport { bpfrpt_proptype_ScrollIndices } from \"./types\";\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport createDetectElementResize from '../vendor/detectElementResize';\nvar AutoSizer = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(AutoSizer, _React$Component);\n\n function AutoSizer() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, AutoSizer);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(AutoSizer)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n height: _this.props.defaultHeight || 0,\n width: _this.props.defaultWidth || 0\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_parentNode\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_autoSizer\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_window\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_detectElementResize\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onResize\", function () {\n var _this$props = _this.props,\n disableHeight = _this$props.disableHeight,\n disableWidth = _this$props.disableWidth,\n onResize = _this$props.onResize;\n\n if (_this._parentNode) {\n // Guard against AutoSizer component being removed from the DOM immediately after being added.\n // This can result in invalid style values which can result in NaN values if we don't handle them.\n // See issue #150 for more context.\n var height = _this._parentNode.offsetHeight || 0;\n var width = _this._parentNode.offsetWidth || 0;\n var win = _this._window || window;\n var style = win.getComputedStyle(_this._parentNode) || {};\n var paddingLeft = parseInt(style.paddingLeft, 10) || 0;\n var paddingRight = parseInt(style.paddingRight, 10) || 0;\n var paddingTop = parseInt(style.paddingTop, 10) || 0;\n var paddingBottom = parseInt(style.paddingBottom, 10) || 0;\n var newHeight = height - paddingTop - paddingBottom;\n var newWidth = width - paddingLeft - paddingRight;\n\n if (!disableHeight && _this.state.height !== newHeight || !disableWidth && _this.state.width !== newWidth) {\n _this.setState({\n height: height - paddingTop - paddingBottom,\n width: width - paddingLeft - paddingRight\n });\n\n onResize({\n height: height,\n width: width\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setRef\", function (autoSizer) {\n _this._autoSizer = autoSizer;\n });\n\n return _this;\n }\n\n _createClass(AutoSizer, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var nonce = this.props.nonce;\n\n if (this._autoSizer && this._autoSizer.parentNode && this._autoSizer.parentNode.ownerDocument && this._autoSizer.parentNode.ownerDocument.defaultView && this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement) {\n // Delay access of parentNode until mount.\n // This handles edge-cases where the component has already been unmounted before its ref has been set,\n // As well as libraries like react-lite which have a slightly different lifecycle.\n this._parentNode = this._autoSizer.parentNode;\n this._window = this._autoSizer.parentNode.ownerDocument.defaultView; // Defer requiring resize handler in order to support server-side rendering.\n // See issue #41\n\n this._detectElementResize = createDetectElementResize(nonce, this._window);\n\n this._detectElementResize.addResizeListener(this._parentNode, this._onResize);\n\n this._onResize();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._detectElementResize && this._parentNode) {\n this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n children = _this$props2.children,\n className = _this$props2.className,\n disableHeight = _this$props2.disableHeight,\n disableWidth = _this$props2.disableWidth,\n style = _this$props2.style;\n var _this$state = this.state,\n height = _this$state.height,\n width = _this$state.width; // Outer div should not force width/height since that may prevent containers from shrinking.\n // Inner component should overflow and use calculated width/height.\n // See issue #68 for more information.\n\n var outerStyle = {\n overflow: 'visible'\n };\n var childParams = {};\n\n if (!disableHeight) {\n outerStyle.height = 0;\n childParams.height = height;\n }\n\n if (!disableWidth) {\n outerStyle.width = 0;\n childParams.width = width;\n }\n /**\n * TODO: Avoid rendering children before the initial measurements have been collected.\n * At best this would just be wasting cycles.\n * Add this check into version 10 though as it could break too many ref callbacks in version 9.\n * Note that if default width/height props were provided this would still work with SSR.\n if (\n height !== 0 &&\n width !== 0\n ) {\n child = children({ height, width })\n }\n */\n\n\n return React.createElement(\"div\", {\n className: className,\n ref: this._setRef,\n style: _objectSpread({}, outerStyle, {}, style)\n }, children(childParams));\n }\n }]);\n\n return AutoSizer;\n}(React.Component), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n /** Function responsible for rendering children.*/\n \"children\": PropTypes.func.isRequired,\n\n /** Optional custom CSS class name to attach to root AutoSizer element. */\n \"className\": PropTypes.string,\n\n /** Default height to use for initial render; useful for SSR */\n \"defaultHeight\": PropTypes.number,\n\n /** Default width to use for initial render; useful for SSR */\n \"defaultWidth\": PropTypes.number,\n\n /** Disable dynamic :height property */\n \"disableHeight\": PropTypes.bool.isRequired,\n\n /** Disable dynamic :width property */\n \"disableWidth\": PropTypes.bool.isRequired,\n\n /** Nonce of the inlined stylesheet for Content Security Policy */\n \"nonce\": PropTypes.string,\n\n /** Callback to be invoked on-resize */\n \"onResize\": PropTypes.func.isRequired,\n\n /** Optional inline style */\n \"style\": PropTypes.object\n}), _temp);\n\n_defineProperty(AutoSizer, \"defaultProps\", {\n onResize: function onResize() {},\n disableHeight: false,\n disableWidth: false,\n style: {}\n});\n\nexport { AutoSizer as default };\nimport PropTypes from \"prop-types\";","/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n * 5) Added support for injecting custom window object\n **/\nexport default function createDetectElementResize(nonce, hostWindow) {\n // Check `document` and `window` in case of server-side rendering\n var _window;\n\n if (typeof hostWindow !== 'undefined') {\n _window = hostWindow;\n } else if (typeof window !== 'undefined') {\n _window = window;\n } else if (typeof self !== 'undefined') {\n _window = self;\n } else {\n _window = global;\n }\n\n var attachEvent = typeof _window.document !== 'undefined' && _window.document.attachEvent;\n\n if (!attachEvent) {\n var requestFrame = function () {\n var raf = _window.requestAnimationFrame || _window.mozRequestAnimationFrame || _window.webkitRequestAnimationFrame || function (fn) {\n return _window.setTimeout(fn, 20);\n };\n\n return function (fn) {\n return raf(fn);\n };\n }();\n\n var cancelFrame = function () {\n var cancel = _window.cancelAnimationFrame || _window.mozCancelAnimationFrame || _window.webkitCancelAnimationFrame || _window.clearTimeout;\n return function (id) {\n return cancel(id);\n };\n }();\n\n var resetTriggers = function resetTriggers(element) {\n var triggers = element.__resizeTriggers__,\n expand = triggers.firstElementChild,\n contract = triggers.lastElementChild,\n expandChild = expand.firstElementChild;\n contract.scrollLeft = contract.scrollWidth;\n contract.scrollTop = contract.scrollHeight;\n expandChild.style.width = expand.offsetWidth + 1 + 'px';\n expandChild.style.height = expand.offsetHeight + 1 + 'px';\n expand.scrollLeft = expand.scrollWidth;\n expand.scrollTop = expand.scrollHeight;\n };\n\n var checkTriggers = function checkTriggers(element) {\n return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;\n };\n\n var scrollListener = function scrollListener(e) {\n // Don't measure (which forces) reflow for scrolls that happen inside of children!\n if (e.target.className && typeof e.target.className.indexOf === 'function' && e.target.className.indexOf('contract-trigger') < 0 && e.target.className.indexOf('expand-trigger') < 0) {\n return;\n }\n\n var element = this;\n resetTriggers(this);\n\n if (this.__resizeRAF__) {\n cancelFrame(this.__resizeRAF__);\n }\n\n this.__resizeRAF__ = requestFrame(function () {\n if (checkTriggers(element)) {\n element.__resizeLast__.width = element.offsetWidth;\n element.__resizeLast__.height = element.offsetHeight;\n\n element.__resizeListeners__.forEach(function (fn) {\n fn.call(element, e);\n });\n }\n });\n };\n /* Detect CSS Animations support to detect element display/re-attach */\n\n\n var animation = false,\n keyframeprefix = '',\n animationstartevent = 'animationstart',\n domPrefixes = 'Webkit Moz O ms'.split(' '),\n startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),\n pfx = '';\n {\n var elm = _window.document.createElement('fakeelement');\n\n if (elm.style.animationName !== undefined) {\n animation = true;\n }\n\n if (animation === false) {\n for (var i = 0; i < domPrefixes.length; i++) {\n if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {\n pfx = domPrefixes[i];\n keyframeprefix = '-' + pfx.toLowerCase() + '-';\n animationstartevent = startEvents[i];\n animation = true;\n break;\n }\n }\n }\n }\n var animationName = 'resizeanim';\n var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';\n var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';\n }\n\n var createStyles = function createStyles(doc) {\n if (!doc.getElementById('detectElementResize')) {\n //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n var css = (animationKeyframes ? animationKeyframes : '') + '.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n head = doc.head || doc.getElementsByTagName('head')[0],\n style = doc.createElement('style');\n style.id = 'detectElementResize';\n style.type = 'text/css';\n\n if (nonce != null) {\n style.setAttribute('nonce', nonce);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(doc.createTextNode(css));\n }\n\n head.appendChild(style);\n }\n };\n\n var addResizeListener = function addResizeListener(element, fn) {\n if (attachEvent) {\n element.attachEvent('onresize', fn);\n } else {\n if (!element.__resizeTriggers__) {\n var doc = element.ownerDocument;\n\n var elementStyle = _window.getComputedStyle(element);\n\n if (elementStyle && elementStyle.position == 'static') {\n element.style.position = 'relative';\n }\n\n createStyles(doc);\n element.__resizeLast__ = {};\n element.__resizeListeners__ = [];\n (element.__resizeTriggers__ = doc.createElement('div')).className = 'resize-triggers';\n var resizeTriggersHtml = '
' + '
';\n\n if (window.trustedTypes) {\n var staticPolicy = trustedTypes.createPolicy('react-virtualized-auto-sizer', {\n createHTML: function createHTML() {\n return resizeTriggersHtml;\n }\n });\n element.__resizeTriggers__.innerHTML = staticPolicy.createHTML('');\n } else {\n element.__resizeTriggers__.innerHTML = resizeTriggersHtml;\n }\n\n element.appendChild(element.__resizeTriggers__);\n resetTriggers(element);\n element.addEventListener('scroll', scrollListener, true);\n /* Listen for a css animation to detect element display/re-attach */\n\n if (animationstartevent) {\n element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n if (e.animationName == animationName) {\n resetTriggers(element);\n }\n };\n\n element.__resizeTriggers__.addEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n }\n }\n\n element.__resizeListeners__.push(fn);\n }\n };\n\n var removeResizeListener = function removeResizeListener(element, fn) {\n if (attachEvent) {\n element.detachEvent('onresize', fn);\n } else {\n element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n\n if (!element.__resizeListeners__.length) {\n element.removeEventListener('scroll', scrollListener, true);\n\n if (element.__resizeTriggers__.__animationListener__) {\n element.__resizeTriggers__.removeEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n\n element.__resizeTriggers__.__animationListener__ = null;\n }\n\n try {\n element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n } catch (e) {// Preact compat; see developit/preact-compat/issues/228\n }\n }\n }\n };\n\n return {\n addResizeListener: addResizeListener,\n removeResizeListener: removeResizeListener\n };\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nimport * as React from 'react';\nimport { findDOMNode } from 'react-dom';\n\n/**\n * Wraps a cell and measures its rendered content.\n * Measurements are stored in a per-cell cache.\n * Cached-content is not be re-measured.\n */\nvar CellMeasurer = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(CellMeasurer, _React$PureComponent);\n\n function CellMeasurer() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, CellMeasurer);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(CellMeasurer)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"_child\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_measure\", function () {\n var _this$props = _this.props,\n cache = _this$props.cache,\n _this$props$columnInd = _this$props.columnIndex,\n columnIndex = _this$props$columnInd === void 0 ? 0 : _this$props$columnInd,\n parent = _this$props.parent,\n _this$props$rowIndex = _this$props.rowIndex,\n rowIndex = _this$props$rowIndex === void 0 ? _this.props.index || 0 : _this$props$rowIndex;\n\n var _this$_getCellMeasure = _this._getCellMeasurements(),\n height = _this$_getCellMeasure.height,\n width = _this$_getCellMeasure.width;\n\n if (height !== cache.getHeight(rowIndex, columnIndex) || width !== cache.getWidth(rowIndex, columnIndex)) {\n cache.set(rowIndex, columnIndex, width, height);\n\n if (parent && typeof parent.recomputeGridSize === 'function') {\n parent.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_registerChild\", function (element) {\n if (element && !(element instanceof Element)) {\n console.warn('CellMeasurer registerChild expects to be passed Element or null');\n }\n\n _this._child = element;\n\n if (element) {\n _this._maybeMeasureCell();\n }\n });\n\n return _this;\n }\n\n _createClass(CellMeasurer, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._maybeMeasureCell();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._maybeMeasureCell();\n }\n }, {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n return typeof children === 'function' ? children({\n measure: this._measure,\n registerChild: this._registerChild\n }) : children;\n }\n }, {\n key: \"_getCellMeasurements\",\n value: function _getCellMeasurements() {\n var cache = this.props.cache;\n var node = this._child || findDOMNode(this); // TODO Check for a bad combination of fixedWidth and missing numeric width or vice versa with height\n\n if (node && node.ownerDocument && node.ownerDocument.defaultView && node instanceof node.ownerDocument.defaultView.HTMLElement) {\n var styleWidth = node.style.width;\n var styleHeight = node.style.height; // If we are re-measuring a cell that has already been measured,\n // It will have a hard-coded width/height from the previous measurement.\n // The fact that we are measuring indicates this measurement is probably stale,\n // So explicitly clear it out (eg set to \"auto\") so we can recalculate.\n // See issue #593 for more info.\n // Even if we are measuring initially- if we're inside of a MultiGrid component,\n // Explicitly clear width/height before measuring to avoid being tainted by another Grid.\n // eg top/left Grid renders before bottom/right Grid\n // Since the CellMeasurerCache is shared between them this taints derived cell size values.\n\n if (!cache.hasFixedWidth()) {\n node.style.width = 'auto';\n }\n\n if (!cache.hasFixedHeight()) {\n node.style.height = 'auto';\n }\n\n var height = Math.ceil(node.offsetHeight);\n var width = Math.ceil(node.offsetWidth); // Reset after measuring to avoid breaking styles; see #660\n\n if (styleWidth) {\n node.style.width = styleWidth;\n }\n\n if (styleHeight) {\n node.style.height = styleHeight;\n }\n\n return {\n height: height,\n width: width\n };\n } else {\n return {\n height: 0,\n width: 0\n };\n }\n }\n }, {\n key: \"_maybeMeasureCell\",\n value: function _maybeMeasureCell() {\n var _this$props2 = this.props,\n cache = _this$props2.cache,\n _this$props2$columnIn = _this$props2.columnIndex,\n columnIndex = _this$props2$columnIn === void 0 ? 0 : _this$props2$columnIn,\n parent = _this$props2.parent,\n _this$props2$rowIndex = _this$props2.rowIndex,\n rowIndex = _this$props2$rowIndex === void 0 ? this.props.index || 0 : _this$props2$rowIndex;\n\n if (!cache.has(rowIndex, columnIndex)) {\n var _this$_getCellMeasure2 = this._getCellMeasurements(),\n height = _this$_getCellMeasure2.height,\n width = _this$_getCellMeasure2.width;\n\n cache.set(rowIndex, columnIndex, width, height); // If size has changed, let Grid know to re-render.\n\n if (parent && typeof parent.invalidateCellSizeAfterRender === 'function') {\n parent.invalidateCellSizeAfterRender({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n }\n }\n }\n }]);\n\n return CellMeasurer;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"cache\": function cache() {\n return (typeof bpfrpt_proptype_CellMeasureCache === \"function\" ? bpfrpt_proptype_CellMeasureCache.isRequired ? bpfrpt_proptype_CellMeasureCache.isRequired : bpfrpt_proptype_CellMeasureCache : PropTypes.shape(bpfrpt_proptype_CellMeasureCache).isRequired).apply(this, arguments);\n },\n \"children\": PropTypes.oneOfType([PropTypes.func, PropTypes.node]).isRequired,\n \"columnIndex\": PropTypes.number,\n \"index\": PropTypes.number,\n \"parent\": PropTypes.shape({\n invalidateCellSizeAfterRender: PropTypes.func,\n recomputeGridSize: PropTypes.func\n }).isRequired,\n \"rowIndex\": PropTypes.number\n}), _temp); // Used for DEV mode warning check\n\n_defineProperty(CellMeasurer, \"__internalCellMeasurerFlag\", false);\n\nexport { CellMeasurer as default };\n\nif (process.env.NODE_ENV !== 'production') {\n CellMeasurer.__internalCellMeasurerFlag = true;\n}\n\nimport { bpfrpt_proptype_CellMeasureCache } from \"./types\";\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nexport var DEFAULT_HEIGHT = 30;\nexport var DEFAULT_WIDTH = 100; // Enables more intelligent mapping of a given column and row index to an item ID.\n// This prevents a cell cache from being invalidated when its parent collection is modified.\n\n/**\n * Caches measurements for a given cell.\n */\nvar CellMeasurerCache =\n/*#__PURE__*/\nfunction () {\n function CellMeasurerCache() {\n var _this = this;\n\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, CellMeasurerCache);\n\n _defineProperty(this, \"_cellHeightCache\", {});\n\n _defineProperty(this, \"_cellWidthCache\", {});\n\n _defineProperty(this, \"_columnWidthCache\", {});\n\n _defineProperty(this, \"_rowHeightCache\", {});\n\n _defineProperty(this, \"_defaultHeight\", void 0);\n\n _defineProperty(this, \"_defaultWidth\", void 0);\n\n _defineProperty(this, \"_minHeight\", void 0);\n\n _defineProperty(this, \"_minWidth\", void 0);\n\n _defineProperty(this, \"_keyMapper\", void 0);\n\n _defineProperty(this, \"_hasFixedHeight\", void 0);\n\n _defineProperty(this, \"_hasFixedWidth\", void 0);\n\n _defineProperty(this, \"_columnCount\", 0);\n\n _defineProperty(this, \"_rowCount\", 0);\n\n _defineProperty(this, \"columnWidth\", function (_ref) {\n var index = _ref.index;\n\n var key = _this._keyMapper(0, index);\n\n return _this._columnWidthCache[key] !== undefined ? _this._columnWidthCache[key] : _this._defaultWidth;\n });\n\n _defineProperty(this, \"rowHeight\", function (_ref2) {\n var index = _ref2.index;\n\n var key = _this._keyMapper(index, 0);\n\n return _this._rowHeightCache[key] !== undefined ? _this._rowHeightCache[key] : _this._defaultHeight;\n });\n\n var defaultHeight = params.defaultHeight,\n defaultWidth = params.defaultWidth,\n fixedHeight = params.fixedHeight,\n fixedWidth = params.fixedWidth,\n keyMapper = params.keyMapper,\n minHeight = params.minHeight,\n minWidth = params.minWidth;\n this._hasFixedHeight = fixedHeight === true;\n this._hasFixedWidth = fixedWidth === true;\n this._minHeight = minHeight || 0;\n this._minWidth = minWidth || 0;\n this._keyMapper = keyMapper || defaultKeyMapper;\n this._defaultHeight = Math.max(this._minHeight, typeof defaultHeight === 'number' ? defaultHeight : DEFAULT_HEIGHT);\n this._defaultWidth = Math.max(this._minWidth, typeof defaultWidth === 'number' ? defaultWidth : DEFAULT_WIDTH);\n\n if (process.env.NODE_ENV !== 'production') {\n if (this._hasFixedHeight === false && this._hasFixedWidth === false) {\n console.warn(\"CellMeasurerCache should only measure a cell's width or height. \" + 'You have configured CellMeasurerCache to measure both. ' + 'This will result in poor performance.');\n }\n\n if (this._hasFixedHeight === false && this._defaultHeight === 0) {\n console.warn('Fixed height CellMeasurerCache should specify a :defaultHeight greater than 0. ' + 'Failing to do so will lead to unnecessary layout and poor performance.');\n }\n\n if (this._hasFixedWidth === false && this._defaultWidth === 0) {\n console.warn('Fixed width CellMeasurerCache should specify a :defaultWidth greater than 0. ' + 'Failing to do so will lead to unnecessary layout and poor performance.');\n }\n }\n }\n\n _createClass(CellMeasurerCache, [{\n key: \"clear\",\n value: function clear(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var key = this._keyMapper(rowIndex, columnIndex);\n\n delete this._cellHeightCache[key];\n delete this._cellWidthCache[key];\n\n this._updateCachedColumnAndRowSizes(rowIndex, columnIndex);\n }\n }, {\n key: \"clearAll\",\n value: function clearAll() {\n this._cellHeightCache = {};\n this._cellWidthCache = {};\n this._columnWidthCache = {};\n this._rowHeightCache = {};\n this._rowCount = 0;\n this._columnCount = 0;\n }\n }, {\n key: \"hasFixedHeight\",\n value: function hasFixedHeight() {\n return this._hasFixedHeight;\n }\n }, {\n key: \"hasFixedWidth\",\n value: function hasFixedWidth() {\n return this._hasFixedWidth;\n }\n }, {\n key: \"getHeight\",\n value: function getHeight(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (this._hasFixedHeight) {\n return this._defaultHeight;\n } else {\n var _key = this._keyMapper(rowIndex, columnIndex);\n\n return this._cellHeightCache[_key] !== undefined ? Math.max(this._minHeight, this._cellHeightCache[_key]) : this._defaultHeight;\n }\n }\n }, {\n key: \"getWidth\",\n value: function getWidth(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (this._hasFixedWidth) {\n return this._defaultWidth;\n } else {\n var _key2 = this._keyMapper(rowIndex, columnIndex);\n\n return this._cellWidthCache[_key2] !== undefined ? Math.max(this._minWidth, this._cellWidthCache[_key2]) : this._defaultWidth;\n }\n }\n }, {\n key: \"has\",\n value: function has(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var key = this._keyMapper(rowIndex, columnIndex);\n\n return this._cellHeightCache[key] !== undefined;\n }\n }, {\n key: \"set\",\n value: function set(rowIndex, columnIndex, width, height) {\n var key = this._keyMapper(rowIndex, columnIndex);\n\n if (columnIndex >= this._columnCount) {\n this._columnCount = columnIndex + 1;\n }\n\n if (rowIndex >= this._rowCount) {\n this._rowCount = rowIndex + 1;\n } // Size is cached per cell so we don't have to re-measure if cells are re-ordered.\n\n\n this._cellHeightCache[key] = height;\n this._cellWidthCache[key] = width;\n\n this._updateCachedColumnAndRowSizes(rowIndex, columnIndex);\n }\n }, {\n key: \"_updateCachedColumnAndRowSizes\",\n value: function _updateCachedColumnAndRowSizes(rowIndex, columnIndex) {\n // :columnWidth and :rowHeight are derived based on all cells in a column/row.\n // Pre-cache these derived values for faster lookup later.\n // Reads are expected to occur more frequently than writes in this case.\n // Only update non-fixed dimensions though to avoid doing unnecessary work.\n if (!this._hasFixedWidth) {\n var columnWidth = 0;\n\n for (var i = 0; i < this._rowCount; i++) {\n columnWidth = Math.max(columnWidth, this.getWidth(i, columnIndex));\n }\n\n var columnKey = this._keyMapper(0, columnIndex);\n\n this._columnWidthCache[columnKey] = columnWidth;\n }\n\n if (!this._hasFixedHeight) {\n var rowHeight = 0;\n\n for (var _i = 0; _i < this._columnCount; _i++) {\n rowHeight = Math.max(rowHeight, this.getHeight(rowIndex, _i));\n }\n\n var rowKey = this._keyMapper(rowIndex, 0);\n\n this._rowHeightCache[rowKey] = rowHeight;\n }\n }\n }, {\n key: \"defaultHeight\",\n get: function get() {\n return this._defaultHeight;\n }\n }, {\n key: \"defaultWidth\",\n get: function get() {\n return this._defaultWidth;\n }\n }]);\n\n return CellMeasurerCache;\n}();\n\nexport { CellMeasurerCache as default };\n\nfunction defaultKeyMapper(rowIndex, columnIndex) {\n return \"\".concat(rowIndex, \"-\").concat(columnIndex);\n}\n\nimport { bpfrpt_proptype_CellMeasureCache } from \"./types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize'; // @TODO Merge Collection and CollectionView\n\n/**\n * Specifies the number of milliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nvar IS_SCROLLING_TIMEOUT = 150;\n/**\n * Controls whether the Grid updates the DOM element's scrollLeft/scrollTop based on the current state or just observes it.\n * This prevents Grid from interrupting mouse-wheel animations (see issue #2).\n */\n\nvar SCROLL_POSITION_CHANGE_REASONS = {\n OBSERVED: 'observed',\n REQUESTED: 'requested'\n};\n/**\n * Monitors changes in properties (eg. cellCount) and state (eg. scroll offsets) to determine when rendering needs to occur.\n * This component does not render any visible content itself; it defers to the specified :cellLayoutManager.\n */\n\nvar CollectionView =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(CollectionView, _React$PureComponent);\n\n // Invokes callbacks only when their values have changed.\n function CollectionView() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, CollectionView);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(CollectionView)).call.apply(_getPrototypeOf2, [this].concat(args))); // If this component is being rendered server-side, getScrollbarSize() will return undefined.\n // We handle this case in componentDidMount()\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isScrolling: false,\n scrollLeft: 0,\n scrollTop: 0\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_calculateSizeAndPositionDataOnNextUpdate\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_onSectionRenderedMemoizer\", createCallbackMemoizer());\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollMemoizer\", createCallbackMemoizer(false));\n\n _defineProperty(_assertThisInitialized(_this), \"_invokeOnSectionRenderedHelper\", function () {\n var _this$props = _this.props,\n cellLayoutManager = _this$props.cellLayoutManager,\n onSectionRendered = _this$props.onSectionRendered;\n\n _this._onSectionRenderedMemoizer({\n callback: onSectionRendered,\n indices: {\n indices: cellLayoutManager.getLastRenderedIndices()\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setScrollingContainerRef\", function (ref) {\n _this._scrollingContainer = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_updateScrollPositionForScrollToCell\", function () {\n var _this$props2 = _this.props,\n cellLayoutManager = _this$props2.cellLayoutManager,\n height = _this$props2.height,\n scrollToAlignment = _this$props2.scrollToAlignment,\n scrollToCell = _this$props2.scrollToCell,\n width = _this$props2.width;\n var _this$state = _this.state,\n scrollLeft = _this$state.scrollLeft,\n scrollTop = _this$state.scrollTop;\n\n if (scrollToCell >= 0) {\n var scrollPosition = cellLayoutManager.getScrollPositionForCell({\n align: scrollToAlignment,\n cellIndex: scrollToCell,\n height: height,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n width: width\n });\n\n if (scrollPosition.scrollLeft !== scrollLeft || scrollPosition.scrollTop !== scrollTop) {\n _this._setScrollPosition(scrollPosition);\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (event) {\n // In certain edge-cases React dispatches an onScroll event with an invalid target.scrollLeft / target.scrollTop.\n // This invalid event can be detected by comparing event.target to this component's scrollable DOM element.\n // See issue #404 for more information.\n if (event.target !== _this._scrollingContainer) {\n return;\n } // Prevent pointer events from interrupting a smooth scroll\n\n\n _this._enablePointerEventsAfterDelay(); // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n // This causes a series of rapid renders that is slow for long lists.\n // We can avoid that by doing some simple bounds checking to ensure that scrollTop never exceeds the total height.\n\n\n var _this$props3 = _this.props,\n cellLayoutManager = _this$props3.cellLayoutManager,\n height = _this$props3.height,\n isScrollingChange = _this$props3.isScrollingChange,\n width = _this$props3.width;\n var scrollbarSize = _this._scrollbarSize;\n\n var _cellLayoutManager$ge = cellLayoutManager.getTotalSize(),\n totalHeight = _cellLayoutManager$ge.height,\n totalWidth = _cellLayoutManager$ge.width;\n\n var scrollLeft = Math.max(0, Math.min(totalWidth - width + scrollbarSize, event.target.scrollLeft));\n var scrollTop = Math.max(0, Math.min(totalHeight - height + scrollbarSize, event.target.scrollTop)); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n // Don't force a re-render if this is the case.\n // The mouse may move faster then the animation frame does.\n // Use requestAnimationFrame to avoid over-updating.\n\n if (_this.state.scrollLeft !== scrollLeft || _this.state.scrollTop !== scrollTop) {\n // Browsers with cancelable scroll events (eg. Firefox) interrupt scrolling animations if scrollTop/scrollLeft is set.\n // Other browsers (eg. Safari) don't scroll as well without the help under certain conditions (DOM or style changes during scrolling).\n // All things considered, this seems to be the best current work around that I'm aware of.\n // For more information see https://github.com/bvaughn/react-virtualized/pull/124\n var scrollPositionChangeReason = event.cancelable ? SCROLL_POSITION_CHANGE_REASONS.OBSERVED : SCROLL_POSITION_CHANGE_REASONS.REQUESTED; // Synchronously set :isScrolling the first time (since _setNextState will reschedule its animation frame each time it's called)\n\n if (!_this.state.isScrolling) {\n isScrollingChange(true);\n }\n\n _this.setState({\n isScrolling: true,\n scrollLeft: scrollLeft,\n scrollPositionChangeReason: scrollPositionChangeReason,\n scrollTop: scrollTop\n });\n }\n\n _this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n totalWidth: totalWidth,\n totalHeight: totalHeight\n });\n });\n\n _this._scrollbarSize = getScrollbarSize();\n\n if (_this._scrollbarSize === undefined) {\n _this._scrollbarSizeMeasured = false;\n _this._scrollbarSize = 0;\n } else {\n _this._scrollbarSizeMeasured = true;\n }\n\n return _this;\n }\n /**\n * Forced recompute of cell sizes and positions.\n * This function should be called if cell sizes have changed but nothing else has.\n * Since cell positions are calculated by callbacks, the collection view has no way of detecting when the underlying data has changed.\n */\n\n\n _createClass(CollectionView, [{\n key: \"recomputeCellSizesAndPositions\",\n value: function recomputeCellSizesAndPositions() {\n this._calculateSizeAndPositionDataOnNextUpdate = true;\n this.forceUpdate();\n }\n /* ---------------------------- Component lifecycle methods ---------------------------- */\n\n /**\n * @private\n * This method updates scrollLeft/scrollTop in state for the following conditions:\n * 1) Empty content (0 rows or columns)\n * 2) New scroll props overriding the current state\n * 3) Cells-count or cells-size has changed, making previous scroll offsets invalid\n */\n\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props4 = this.props,\n cellLayoutManager = _this$props4.cellLayoutManager,\n scrollLeft = _this$props4.scrollLeft,\n scrollToCell = _this$props4.scrollToCell,\n scrollTop = _this$props4.scrollTop; // If this component was first rendered server-side, scrollbar size will be undefined.\n // In that event we need to remeasure.\n\n if (!this._scrollbarSizeMeasured) {\n this._scrollbarSize = getScrollbarSize();\n this._scrollbarSizeMeasured = true;\n this.setState({});\n }\n\n if (scrollToCell >= 0) {\n this._updateScrollPositionForScrollToCell();\n } else if (scrollLeft >= 0 || scrollTop >= 0) {\n this._setScrollPosition({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n } // Update onSectionRendered callback.\n\n\n this._invokeOnSectionRenderedHelper();\n\n var _cellLayoutManager$ge2 = cellLayoutManager.getTotalSize(),\n totalHeight = _cellLayoutManager$ge2.height,\n totalWidth = _cellLayoutManager$ge2.width; // Initialize onScroll callback.\n\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft || 0,\n scrollTop: scrollTop || 0,\n totalHeight: totalHeight,\n totalWidth: totalWidth\n });\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var _this$props5 = this.props,\n height = _this$props5.height,\n scrollToAlignment = _this$props5.scrollToAlignment,\n scrollToCell = _this$props5.scrollToCell,\n width = _this$props5.width;\n var _this$state2 = this.state,\n scrollLeft = _this$state2.scrollLeft,\n scrollPositionChangeReason = _this$state2.scrollPositionChangeReason,\n scrollTop = _this$state2.scrollTop; // Make sure requested changes to :scrollLeft or :scrollTop get applied.\n // Assigning to scrollLeft/scrollTop tells the browser to interrupt any running scroll animations,\n // And to discard any pending async changes to the scroll position that may have happened in the meantime (e.g. on a separate scrolling thread).\n // So we only set these when we require an adjustment of the scroll position.\n // See issue #2 for more information.\n\n if (scrollPositionChangeReason === SCROLL_POSITION_CHANGE_REASONS.REQUESTED) {\n if (scrollLeft >= 0 && scrollLeft !== prevState.scrollLeft && scrollLeft !== this._scrollingContainer.scrollLeft) {\n this._scrollingContainer.scrollLeft = scrollLeft;\n }\n\n if (scrollTop >= 0 && scrollTop !== prevState.scrollTop && scrollTop !== this._scrollingContainer.scrollTop) {\n this._scrollingContainer.scrollTop = scrollTop;\n }\n } // Update scroll offsets if the current :scrollToCell values requires it\n\n\n if (height !== prevProps.height || scrollToAlignment !== prevProps.scrollToAlignment || scrollToCell !== prevProps.scrollToCell || width !== prevProps.width) {\n this._updateScrollPositionForScrollToCell();\n } // Update onRowsRendered callback if start/stop indices have changed\n\n\n this._invokeOnSectionRenderedHelper();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._disablePointerEventsTimeoutId) {\n clearTimeout(this._disablePointerEventsTimeoutId);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n autoHeight = _this$props6.autoHeight,\n cellCount = _this$props6.cellCount,\n cellLayoutManager = _this$props6.cellLayoutManager,\n className = _this$props6.className,\n height = _this$props6.height,\n horizontalOverscanSize = _this$props6.horizontalOverscanSize,\n id = _this$props6.id,\n noContentRenderer = _this$props6.noContentRenderer,\n style = _this$props6.style,\n verticalOverscanSize = _this$props6.verticalOverscanSize,\n width = _this$props6.width;\n var _this$state3 = this.state,\n isScrolling = _this$state3.isScrolling,\n scrollLeft = _this$state3.scrollLeft,\n scrollTop = _this$state3.scrollTop; // Memoization reset\n\n if (this._lastRenderedCellCount !== cellCount || this._lastRenderedCellLayoutManager !== cellLayoutManager || this._calculateSizeAndPositionDataOnNextUpdate) {\n this._lastRenderedCellCount = cellCount;\n this._lastRenderedCellLayoutManager = cellLayoutManager;\n this._calculateSizeAndPositionDataOnNextUpdate = false;\n cellLayoutManager.calculateSizeAndPositionData();\n }\n\n var _cellLayoutManager$ge3 = cellLayoutManager.getTotalSize(),\n totalHeight = _cellLayoutManager$ge3.height,\n totalWidth = _cellLayoutManager$ge3.width; // Safely expand the rendered area by the specified overscan amount\n\n\n var left = Math.max(0, scrollLeft - horizontalOverscanSize);\n var top = Math.max(0, scrollTop - verticalOverscanSize);\n var right = Math.min(totalWidth, scrollLeft + width + horizontalOverscanSize);\n var bottom = Math.min(totalHeight, scrollTop + height + verticalOverscanSize);\n var childrenToDisplay = height > 0 && width > 0 ? cellLayoutManager.cellRenderers({\n height: bottom - top,\n isScrolling: isScrolling,\n width: right - left,\n x: left,\n y: top\n }) : [];\n var collectionStyle = {\n boxSizing: 'border-box',\n direction: 'ltr',\n height: autoHeight ? 'auto' : height,\n position: 'relative',\n WebkitOverflowScrolling: 'touch',\n width: width,\n willChange: 'transform'\n }; // Force browser to hide scrollbars when we know they aren't necessary.\n // Otherwise once scrollbars appear they may not disappear again.\n // For more info see issue #116\n\n var verticalScrollBarSize = totalHeight > height ? this._scrollbarSize : 0;\n var horizontalScrollBarSize = totalWidth > width ? this._scrollbarSize : 0; // Also explicitly init styles to 'auto' if scrollbars are required.\n // This works around an obscure edge case where external CSS styles have not yet been loaded,\n // But an initial scroll index of offset is set as an external prop.\n // Without this style, Grid would render the correct range of cells but would NOT update its internal offset.\n // This was originally reported via clauderic/react-infinite-calendar/issues/23\n\n collectionStyle.overflowX = totalWidth + verticalScrollBarSize <= width ? 'hidden' : 'auto';\n collectionStyle.overflowY = totalHeight + horizontalScrollBarSize <= height ? 'hidden' : 'auto';\n return React.createElement(\"div\", {\n ref: this._setScrollingContainerRef,\n \"aria-label\": this.props['aria-label'],\n className: clsx('ReactVirtualized__Collection', className),\n id: id,\n onScroll: this._onScroll,\n role: \"grid\",\n style: _objectSpread({}, collectionStyle, {}, style),\n tabIndex: 0\n }, cellCount > 0 && React.createElement(\"div\", {\n className: \"ReactVirtualized__Collection__innerScrollContainer\",\n style: {\n height: totalHeight,\n maxHeight: totalHeight,\n maxWidth: totalWidth,\n overflow: 'hidden',\n pointerEvents: isScrolling ? 'none' : '',\n width: totalWidth\n }\n }, childrenToDisplay), cellCount === 0 && noContentRenderer());\n }\n /* ---------------------------- Helper methods ---------------------------- */\n\n /**\n * Sets an :isScrolling flag for a small window of time.\n * This flag is used to disable pointer events on the scrollable portion of the Collection.\n * This prevents jerky/stuttery mouse-wheel scrolling.\n */\n\n }, {\n key: \"_enablePointerEventsAfterDelay\",\n value: function _enablePointerEventsAfterDelay() {\n var _this2 = this;\n\n if (this._disablePointerEventsTimeoutId) {\n clearTimeout(this._disablePointerEventsTimeoutId);\n }\n\n this._disablePointerEventsTimeoutId = setTimeout(function () {\n var isScrollingChange = _this2.props.isScrollingChange;\n isScrollingChange(false);\n _this2._disablePointerEventsTimeoutId = null;\n\n _this2.setState({\n isScrolling: false\n });\n }, IS_SCROLLING_TIMEOUT);\n }\n }, {\n key: \"_invokeOnScrollMemoizer\",\n value: function _invokeOnScrollMemoizer(_ref) {\n var _this3 = this;\n\n var scrollLeft = _ref.scrollLeft,\n scrollTop = _ref.scrollTop,\n totalHeight = _ref.totalHeight,\n totalWidth = _ref.totalWidth;\n\n this._onScrollMemoizer({\n callback: function callback(_ref2) {\n var scrollLeft = _ref2.scrollLeft,\n scrollTop = _ref2.scrollTop;\n var _this3$props = _this3.props,\n height = _this3$props.height,\n onScroll = _this3$props.onScroll,\n width = _this3$props.width;\n onScroll({\n clientHeight: height,\n clientWidth: width,\n scrollHeight: totalHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: totalWidth\n });\n },\n indices: {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n }\n });\n }\n }, {\n key: \"_setScrollPosition\",\n value: function _setScrollPosition(_ref3) {\n var scrollLeft = _ref3.scrollLeft,\n scrollTop = _ref3.scrollTop;\n var newState = {\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n\n if (scrollLeft >= 0) {\n newState.scrollLeft = scrollLeft;\n }\n\n if (scrollTop >= 0) {\n newState.scrollTop = scrollTop;\n }\n\n if (scrollLeft >= 0 && scrollLeft !== this.state.scrollLeft || scrollTop >= 0 && scrollTop !== this.state.scrollTop) {\n this.setState(newState);\n }\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.cellCount === 0 && (prevState.scrollLeft !== 0 || prevState.scrollTop !== 0)) {\n return {\n scrollLeft: 0,\n scrollTop: 0,\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n } else if (nextProps.scrollLeft !== prevState.scrollLeft || nextProps.scrollTop !== prevState.scrollTop) {\n return {\n scrollLeft: nextProps.scrollLeft != null ? nextProps.scrollLeft : prevState.scrollLeft,\n scrollTop: nextProps.scrollTop != null ? nextProps.scrollTop : prevState.scrollTop,\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n }\n\n return null;\n }\n }]);\n\n return CollectionView;\n}(React.PureComponent);\n\n_defineProperty(CollectionView, \"defaultProps\", {\n 'aria-label': 'grid',\n horizontalOverscanSize: 0,\n noContentRenderer: function noContentRenderer() {\n return null;\n },\n onScroll: function onScroll() {\n return null;\n },\n onSectionRendered: function onSectionRendered() {\n return null;\n },\n scrollToAlignment: 'auto',\n scrollToCell: -1,\n style: {},\n verticalOverscanSize: 0\n});\n\nCollectionView.propTypes = process.env.NODE_ENV !== \"production\" ? {\n 'aria-label': PropTypes.string,\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height\n * of rows can stretch the window. Intended for use with WindowScroller\n */\n autoHeight: PropTypes.bool,\n\n /**\n * Number of cells in collection.\n */\n cellCount: PropTypes.number.isRequired,\n\n /**\n * Calculates cell sizes and positions and manages rendering the appropriate cells given a specified window.\n */\n cellLayoutManager: PropTypes.object.isRequired,\n\n /**\n * Optional custom CSS class name to attach to root Collection element.\n */\n className: PropTypes.string,\n\n /**\n * Height of Collection; this property determines the number of visible (vs virtualized) rows.\n */\n height: PropTypes.number.isRequired,\n\n /**\n * Optional custom id to attach to root Collection element.\n */\n id: PropTypes.string,\n\n /**\n * Enables the `Collection` to horiontally \"overscan\" its content similar to how `Grid` does.\n * This can reduce flicker around the edges when a user scrolls quickly.\n */\n horizontalOverscanSize: PropTypes.number.isRequired,\n isScrollingChange: PropTypes.func,\n\n /**\n * Optional renderer to be used in place of rows when either :rowCount or :cellCount is 0.\n */\n noContentRenderer: PropTypes.func.isRequired,\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n * ({ clientHeight, clientWidth, scrollHeight, scrollLeft, scrollTop, scrollWidth }): void\n */\n onScroll: PropTypes.func.isRequired,\n\n /**\n * Callback invoked with information about the section of the Collection that was just rendered.\n * This callback is passed a named :indices parameter which is an Array of the most recently rendered section indices.\n */\n onSectionRendered: PropTypes.func.isRequired,\n\n /**\n * Horizontal offset.\n */\n scrollLeft: PropTypes.number,\n\n /**\n * Controls scroll-to-cell behavior of the Grid.\n * The default (\"auto\") scrolls the least amount possible to ensure that the specified cell is fully visible.\n * Use \"start\" to align cells to the top/left of the Grid and \"end\" to align bottom/right.\n */\n scrollToAlignment: PropTypes.oneOf(['auto', 'end', 'start', 'center']).isRequired,\n\n /**\n * Cell index to ensure visible (by forcefully scrolling if necessary).\n */\n scrollToCell: PropTypes.number.isRequired,\n\n /**\n * Vertical offset.\n */\n scrollTop: PropTypes.number,\n\n /**\n * Optional custom inline style to attach to root Collection element.\n */\n style: PropTypes.object,\n\n /**\n * Enables the `Collection` to vertically \"overscan\" its content similar to how `Grid` does.\n * This can reduce flicker around the edges when a user scrolls quickly.\n */\n verticalOverscanSize: PropTypes.number.isRequired,\n\n /**\n * Width of Collection; this property determines the number of visible (vs virtualized) columns.\n */\n width: PropTypes.number.isRequired\n} : {};\npolyfill(CollectionView);\nexport default CollectionView;","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\n\n/**\n * A section of the Window.\n * Window Sections are used to group nearby cells.\n * This enables us to more quickly determine which cells to display in a given region of the Window.\n * Sections have a fixed size and contain 0 to many cells (tracked by their indices).\n */\nvar Section =\n/*#__PURE__*/\nfunction () {\n function Section(_ref) {\n var height = _ref.height,\n width = _ref.width,\n x = _ref.x,\n y = _ref.y;\n\n _classCallCheck(this, Section);\n\n this.height = height;\n this.width = width;\n this.x = x;\n this.y = y;\n this._indexMap = {};\n this._indices = [];\n }\n /** Add a cell to this section. */\n\n\n _createClass(Section, [{\n key: \"addCellIndex\",\n value: function addCellIndex(_ref2) {\n var index = _ref2.index;\n\n if (!this._indexMap[index]) {\n this._indexMap[index] = true;\n\n this._indices.push(index);\n }\n }\n /** Get all cell indices that have been added to this section. */\n\n }, {\n key: \"getCellIndices\",\n value: function getCellIndices() {\n return this._indices;\n }\n /** Intended for debugger/test purposes only */\n\n }, {\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.x, \",\").concat(this.y, \" \").concat(this.width, \"x\").concat(this.height);\n }\n }]);\n\n return Section;\n}();\n\nexport { Section as default };\nimport { bpfrpt_proptype_Index } from \"./types\";\nimport { bpfrpt_proptype_SizeAndPositionInfo } from \"./types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\n\n/**\n * Window Sections are used to group nearby cells.\n * This enables us to more quickly determine which cells to display in a given region of the Window.\n * \n */\nimport Section from './Section';\nvar SECTION_SIZE = 100;\n\n/**\n * Contains 0 to many Sections.\n * Grows (and adds Sections) dynamically as cells are registered.\n * Automatically adds cells to the appropriate Section(s).\n */\nvar SectionManager =\n/*#__PURE__*/\nfunction () {\n function SectionManager() {\n var sectionSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SECTION_SIZE;\n\n _classCallCheck(this, SectionManager);\n\n this._sectionSize = sectionSize;\n this._cellMetadata = [];\n this._sections = {};\n }\n /**\n * Gets all cell indices contained in the specified region.\n * A region may encompass 1 or more Sections.\n */\n\n\n _createClass(SectionManager, [{\n key: \"getCellIndices\",\n value: function getCellIndices(_ref) {\n var height = _ref.height,\n width = _ref.width,\n x = _ref.x,\n y = _ref.y;\n var indices = {};\n this.getSections({\n height: height,\n width: width,\n x: x,\n y: y\n }).forEach(function (section) {\n return section.getCellIndices().forEach(function (index) {\n indices[index] = index;\n });\n }); // Object keys are strings; this function returns numbers\n\n return Object.keys(indices).map(function (index) {\n return indices[index];\n });\n }\n /** Get size and position information for the cell specified. */\n\n }, {\n key: \"getCellMetadata\",\n value: function getCellMetadata(_ref2) {\n var index = _ref2.index;\n return this._cellMetadata[index];\n }\n /** Get all Sections overlapping the specified region. */\n\n }, {\n key: \"getSections\",\n value: function getSections(_ref3) {\n var height = _ref3.height,\n width = _ref3.width,\n x = _ref3.x,\n y = _ref3.y;\n var sectionXStart = Math.floor(x / this._sectionSize);\n var sectionXStop = Math.floor((x + width - 1) / this._sectionSize);\n var sectionYStart = Math.floor(y / this._sectionSize);\n var sectionYStop = Math.floor((y + height - 1) / this._sectionSize);\n var sections = [];\n\n for (var sectionX = sectionXStart; sectionX <= sectionXStop; sectionX++) {\n for (var sectionY = sectionYStart; sectionY <= sectionYStop; sectionY++) {\n var key = \"\".concat(sectionX, \".\").concat(sectionY);\n\n if (!this._sections[key]) {\n this._sections[key] = new Section({\n height: this._sectionSize,\n width: this._sectionSize,\n x: sectionX * this._sectionSize,\n y: sectionY * this._sectionSize\n });\n }\n\n sections.push(this._sections[key]);\n }\n }\n\n return sections;\n }\n /** Total number of Sections based on the currently registered cells. */\n\n }, {\n key: \"getTotalSectionCount\",\n value: function getTotalSectionCount() {\n return Object.keys(this._sections).length;\n }\n /** Intended for debugger/test purposes only */\n\n }, {\n key: \"toString\",\n value: function toString() {\n var _this = this;\n\n return Object.keys(this._sections).map(function (index) {\n return _this._sections[index].toString();\n });\n }\n /** Adds a cell to the appropriate Sections and registers it metadata for later retrievable. */\n\n }, {\n key: \"registerCell\",\n value: function registerCell(_ref4) {\n var cellMetadatum = _ref4.cellMetadatum,\n index = _ref4.index;\n this._cellMetadata[index] = cellMetadatum;\n this.getSections(cellMetadatum).forEach(function (section) {\n return section.addCellIndex({\n index: index\n });\n });\n }\n }]);\n\n return SectionManager;\n}();\n\nexport { SectionManager as default };\nimport { bpfrpt_proptype_Index } from \"./types\";\nimport { bpfrpt_proptype_SizeAndPositionInfo } from \"./types\";","/**\n * Determines a new offset that ensures a certain cell is visible, given the current offset.\n * If the cell is already visible then the current offset will be returned.\n * If the current offset is too great or small, it will be adjusted just enough to ensure the specified index is visible.\n *\n * @param align Desired alignment within container; one of \"auto\" (default), \"start\", or \"end\"\n * @param cellOffset Offset (x or y) position for cell\n * @param cellSize Size (width or height) of cell\n * @param containerSize Total size (width or height) of the container\n * @param currentOffset Container's current (x or y) offset\n * @return Offset to use to ensure the specified cell is visible\n */\nexport default function getUpdatedOffsetForIndex(_ref) {\n var _ref$align = _ref.align,\n align = _ref$align === void 0 ? 'auto' : _ref$align,\n cellOffset = _ref.cellOffset,\n cellSize = _ref.cellSize,\n containerSize = _ref.containerSize,\n currentOffset = _ref.currentOffset;\n var maxOffset = cellOffset;\n var minOffset = maxOffset - containerSize + cellSize;\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n return maxOffset - (containerSize - cellSize) / 2;\n\n default:\n return Math.max(minOffset, Math.min(maxOffset, currentOffset));\n }\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport CollectionView from './CollectionView';\nimport _calculateSizeAndPositionData from './utils/calculateSizeAndPositionData';\nimport getUpdatedOffsetForIndex from '../utils/getUpdatedOffsetForIndex';\n\n/**\n * Renders scattered or non-linear data.\n * Unlike Grid, which renders checkerboard data, Collection can render arbitrarily positioned- even overlapping- data.\n */\nvar Collection =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Collection, _React$PureComponent);\n\n function Collection(props, context) {\n var _this;\n\n _classCallCheck(this, Collection);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Collection).call(this, props, context));\n _this._cellMetadata = [];\n _this._lastRenderedCellIndices = []; // Cell cache during scroll (for performance)\n\n _this._cellCache = [];\n _this._isScrollingChange = _this._isScrollingChange.bind(_assertThisInitialized(_this));\n _this._setCollectionViewRef = _this._setCollectionViewRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(Collection, [{\n key: \"forceUpdate\",\n value: function forceUpdate() {\n if (this._collectionView !== undefined) {\n this._collectionView.forceUpdate();\n }\n }\n /** See Collection#recomputeCellSizesAndPositions */\n\n }, {\n key: \"recomputeCellSizesAndPositions\",\n value: function recomputeCellSizesAndPositions() {\n this._cellCache = [];\n\n this._collectionView.recomputeCellSizesAndPositions();\n }\n /** React lifecycle methods */\n\n }, {\n key: \"render\",\n value: function render() {\n var props = _extends({}, this.props);\n\n return React.createElement(CollectionView, _extends({\n cellLayoutManager: this,\n isScrollingChange: this._isScrollingChange,\n ref: this._setCollectionViewRef\n }, props));\n }\n /** CellLayoutManager interface */\n\n }, {\n key: \"calculateSizeAndPositionData\",\n value: function calculateSizeAndPositionData() {\n var _this$props = this.props,\n cellCount = _this$props.cellCount,\n cellSizeAndPositionGetter = _this$props.cellSizeAndPositionGetter,\n sectionSize = _this$props.sectionSize;\n\n var data = _calculateSizeAndPositionData({\n cellCount: cellCount,\n cellSizeAndPositionGetter: cellSizeAndPositionGetter,\n sectionSize: sectionSize\n });\n\n this._cellMetadata = data.cellMetadata;\n this._sectionManager = data.sectionManager;\n this._height = data.height;\n this._width = data.width;\n }\n /**\n * Returns the most recently rendered set of cell indices.\n */\n\n }, {\n key: \"getLastRenderedIndices\",\n value: function getLastRenderedIndices() {\n return this._lastRenderedCellIndices;\n }\n /**\n * Calculates the minimum amount of change from the current scroll position to ensure the specified cell is (fully) visible.\n */\n\n }, {\n key: \"getScrollPositionForCell\",\n value: function getScrollPositionForCell(_ref) {\n var align = _ref.align,\n cellIndex = _ref.cellIndex,\n height = _ref.height,\n scrollLeft = _ref.scrollLeft,\n scrollTop = _ref.scrollTop,\n width = _ref.width;\n var cellCount = this.props.cellCount;\n\n if (cellIndex >= 0 && cellIndex < cellCount) {\n var cellMetadata = this._cellMetadata[cellIndex];\n scrollLeft = getUpdatedOffsetForIndex({\n align: align,\n cellOffset: cellMetadata.x,\n cellSize: cellMetadata.width,\n containerSize: width,\n currentOffset: scrollLeft,\n targetIndex: cellIndex\n });\n scrollTop = getUpdatedOffsetForIndex({\n align: align,\n cellOffset: cellMetadata.y,\n cellSize: cellMetadata.height,\n containerSize: height,\n currentOffset: scrollTop,\n targetIndex: cellIndex\n });\n }\n\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n }\n }, {\n key: \"getTotalSize\",\n value: function getTotalSize() {\n return {\n height: this._height,\n width: this._width\n };\n }\n }, {\n key: \"cellRenderers\",\n value: function cellRenderers(_ref2) {\n var _this2 = this;\n\n var height = _ref2.height,\n isScrolling = _ref2.isScrolling,\n width = _ref2.width,\n x = _ref2.x,\n y = _ref2.y;\n var _this$props2 = this.props,\n cellGroupRenderer = _this$props2.cellGroupRenderer,\n cellRenderer = _this$props2.cellRenderer; // Store for later calls to getLastRenderedIndices()\n\n this._lastRenderedCellIndices = this._sectionManager.getCellIndices({\n height: height,\n width: width,\n x: x,\n y: y\n });\n return cellGroupRenderer({\n cellCache: this._cellCache,\n cellRenderer: cellRenderer,\n cellSizeAndPositionGetter: function cellSizeAndPositionGetter(_ref3) {\n var index = _ref3.index;\n return _this2._sectionManager.getCellMetadata({\n index: index\n });\n },\n indices: this._lastRenderedCellIndices,\n isScrolling: isScrolling\n });\n }\n }, {\n key: \"_isScrollingChange\",\n value: function _isScrollingChange(isScrolling) {\n if (!isScrolling) {\n this._cellCache = [];\n }\n }\n }, {\n key: \"_setCollectionViewRef\",\n value: function _setCollectionViewRef(ref) {\n this._collectionView = ref;\n }\n }]);\n\n return Collection;\n}(React.PureComponent);\n\n_defineProperty(Collection, \"defaultProps\", {\n 'aria-label': 'grid',\n cellGroupRenderer: defaultCellGroupRenderer\n});\n\nexport { Collection as default };\nCollection.propTypes = process.env.NODE_ENV !== \"production\" ? {\n 'aria-label': PropTypes.string,\n\n /**\n * Number of cells in Collection.\n */\n cellCount: PropTypes.number.isRequired,\n\n /**\n * Responsible for rendering a group of cells given their indices.\n * Should implement the following interface: ({\n * cellSizeAndPositionGetter:Function,\n * indices: Array,\n * cellRenderer: Function\n * }): Array\n */\n cellGroupRenderer: PropTypes.func.isRequired,\n\n /**\n * Responsible for rendering a cell given an row and column index.\n * Should implement the following interface: ({ index: number, key: string, style: object }): PropTypes.element\n */\n cellRenderer: PropTypes.func.isRequired,\n\n /**\n * Callback responsible for returning size and offset/position information for a given cell (index).\n * ({ index: number }): { height: number, width: number, x: number, y: number }\n */\n cellSizeAndPositionGetter: PropTypes.func.isRequired,\n\n /**\n * Optionally override the size of the sections a Collection's cells are split into.\n */\n sectionSize: PropTypes.number\n} : {};\n\nfunction defaultCellGroupRenderer(_ref4) {\n var cellCache = _ref4.cellCache,\n cellRenderer = _ref4.cellRenderer,\n cellSizeAndPositionGetter = _ref4.cellSizeAndPositionGetter,\n indices = _ref4.indices,\n isScrolling = _ref4.isScrolling;\n return indices.map(function (index) {\n var cellMetadata = cellSizeAndPositionGetter({\n index: index\n });\n var cellRendererProps = {\n index: index,\n isScrolling: isScrolling,\n key: index,\n style: {\n height: cellMetadata.height,\n left: cellMetadata.x,\n position: 'absolute',\n top: cellMetadata.y,\n width: cellMetadata.width\n }\n }; // Avoid re-creating cells while scrolling.\n // This can lead to the same cell being created many times and can cause performance issues for \"heavy\" cells.\n // If a scroll is in progress- cache and reuse cells.\n // This cache will be thrown away once scrolling complets.\n\n if (isScrolling) {\n if (!(index in cellCache)) {\n cellCache[index] = cellRenderer(cellRendererProps);\n }\n\n return cellCache[index];\n } else {\n return cellRenderer(cellRendererProps);\n }\n }).filter(function (renderedCell) {\n return !!renderedCell;\n });\n}\n\nimport { bpfrpt_proptype_ScrollPosition } from \"./types\";\nimport { bpfrpt_proptype_SizeInfo } from \"./types\";","import SectionManager from '../SectionManager';\nexport default function calculateSizeAndPositionData(_ref) {\n var cellCount = _ref.cellCount,\n cellSizeAndPositionGetter = _ref.cellSizeAndPositionGetter,\n sectionSize = _ref.sectionSize;\n var cellMetadata = [];\n var sectionManager = new SectionManager(sectionSize);\n var height = 0;\n var width = 0;\n\n for (var index = 0; index < cellCount; index++) {\n var cellMetadatum = cellSizeAndPositionGetter({\n index: index\n });\n\n if (cellMetadatum.height == null || isNaN(cellMetadatum.height) || cellMetadatum.width == null || isNaN(cellMetadatum.width) || cellMetadatum.x == null || isNaN(cellMetadatum.x) || cellMetadatum.y == null || isNaN(cellMetadatum.y)) {\n throw Error(\"Invalid metadata returned for cell \".concat(index, \":\\n x:\").concat(cellMetadatum.x, \", y:\").concat(cellMetadatum.y, \", width:\").concat(cellMetadatum.width, \", height:\").concat(cellMetadatum.height));\n }\n\n height = Math.max(height, cellMetadatum.y + cellMetadatum.height);\n width = Math.max(width, cellMetadatum.x + cellMetadatum.width);\n cellMetadata[index] = cellMetadatum;\n sectionManager.registerCell({\n cellMetadatum: cellMetadatum,\n index: index\n });\n }\n\n return {\n cellMetadata: cellMetadata,\n height: height,\n sectionManager: sectionManager,\n width: width\n };\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n/**\n * High-order component that auto-calculates column-widths for `Grid` cells.\n */\n\nvar ColumnSizer =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(ColumnSizer, _React$PureComponent);\n\n function ColumnSizer(props, context) {\n var _this;\n\n _classCallCheck(this, ColumnSizer);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ColumnSizer).call(this, props, context));\n _this._registerChild = _this._registerChild.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(ColumnSizer, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props = this.props,\n columnMaxWidth = _this$props.columnMaxWidth,\n columnMinWidth = _this$props.columnMinWidth,\n columnCount = _this$props.columnCount,\n width = _this$props.width;\n\n if (columnMaxWidth !== prevProps.columnMaxWidth || columnMinWidth !== prevProps.columnMinWidth || columnCount !== prevProps.columnCount || width !== prevProps.width) {\n if (this._registeredChild) {\n this._registeredChild.recomputeGridSize();\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n children = _this$props2.children,\n columnMaxWidth = _this$props2.columnMaxWidth,\n columnMinWidth = _this$props2.columnMinWidth,\n columnCount = _this$props2.columnCount,\n width = _this$props2.width;\n var safeColumnMinWidth = columnMinWidth || 1;\n var safeColumnMaxWidth = columnMaxWidth ? Math.min(columnMaxWidth, width) : width;\n var columnWidth = width / columnCount;\n columnWidth = Math.max(safeColumnMinWidth, columnWidth);\n columnWidth = Math.min(safeColumnMaxWidth, columnWidth);\n columnWidth = Math.floor(columnWidth);\n var adjustedWidth = Math.min(width, columnWidth * columnCount);\n return children({\n adjustedWidth: adjustedWidth,\n columnWidth: columnWidth,\n getColumnWidth: function getColumnWidth() {\n return columnWidth;\n },\n registerChild: this._registerChild\n });\n }\n }, {\n key: \"_registerChild\",\n value: function _registerChild(child) {\n if (child && typeof child.recomputeGridSize !== 'function') {\n throw Error('Unexpected child type registered; only Grid/MultiGrid children are supported.');\n }\n\n this._registeredChild = child;\n\n if (this._registeredChild) {\n this._registeredChild.recomputeGridSize();\n }\n }\n }]);\n\n return ColumnSizer;\n}(React.PureComponent);\n\nexport { ColumnSizer as default };\nColumnSizer.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Function responsible for rendering a virtualized Grid.\n * This function should implement the following signature:\n * ({ adjustedWidth, getColumnWidth, registerChild }) => PropTypes.element\n *\n * The specified :getColumnWidth function should be passed to the Grid's :columnWidth property.\n * The :registerChild should be passed to the Grid's :ref property.\n * The :adjustedWidth property is optional; it reflects the lesser of the overall width or the width of all columns.\n */\n children: PropTypes.func.isRequired,\n\n /** Optional maximum allowed column width */\n columnMaxWidth: PropTypes.number,\n\n /** Optional minimum allowed column width */\n columnMinWidth: PropTypes.number,\n\n /** Number of columns in Grid or Table child */\n columnCount: PropTypes.number.isRequired,\n\n /** Width of Grid or Table child */\n width: PropTypes.number.isRequired\n} : {};","import ColumnSizer from './ColumnSizer';\nexport default ColumnSizer;\nexport { ColumnSizer };","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\n/**\n * Higher-order component that manages lazy-loading for \"infinite\" data.\n * This component decorates a virtual component and just-in-time prefetches rows as a user scrolls.\n * It is intended as a convenience component; fork it if you'd like finer-grained control over data-loading.\n */\n\nvar InfiniteLoader =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(InfiniteLoader, _React$PureComponent);\n\n function InfiniteLoader(props, context) {\n var _this;\n\n _classCallCheck(this, InfiniteLoader);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(InfiniteLoader).call(this, props, context));\n _this._loadMoreRowsMemoizer = createCallbackMemoizer();\n _this._onRowsRendered = _this._onRowsRendered.bind(_assertThisInitialized(_this));\n _this._registerChild = _this._registerChild.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(InfiniteLoader, [{\n key: \"resetLoadMoreRowsCache\",\n value: function resetLoadMoreRowsCache(autoReload) {\n this._loadMoreRowsMemoizer = createCallbackMemoizer();\n\n if (autoReload) {\n this._doStuff(this._lastRenderedStartIndex, this._lastRenderedStopIndex);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n return children({\n onRowsRendered: this._onRowsRendered,\n registerChild: this._registerChild\n });\n }\n }, {\n key: \"_loadUnloadedRanges\",\n value: function _loadUnloadedRanges(unloadedRanges) {\n var _this2 = this;\n\n var loadMoreRows = this.props.loadMoreRows;\n unloadedRanges.forEach(function (unloadedRange) {\n var promise = loadMoreRows(unloadedRange);\n\n if (promise) {\n promise.then(function () {\n // Refresh the visible rows if any of them have just been loaded.\n // Otherwise they will remain in their unloaded visual state.\n if (isRangeVisible({\n lastRenderedStartIndex: _this2._lastRenderedStartIndex,\n lastRenderedStopIndex: _this2._lastRenderedStopIndex,\n startIndex: unloadedRange.startIndex,\n stopIndex: unloadedRange.stopIndex\n })) {\n if (_this2._registeredChild) {\n forceUpdateReactVirtualizedComponent(_this2._registeredChild, _this2._lastRenderedStartIndex);\n }\n }\n });\n }\n });\n }\n }, {\n key: \"_onRowsRendered\",\n value: function _onRowsRendered(_ref) {\n var startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n this._lastRenderedStartIndex = startIndex;\n this._lastRenderedStopIndex = stopIndex;\n\n this._doStuff(startIndex, stopIndex);\n }\n }, {\n key: \"_doStuff\",\n value: function _doStuff(startIndex, stopIndex) {\n var _ref2,\n _this3 = this;\n\n var _this$props = this.props,\n isRowLoaded = _this$props.isRowLoaded,\n minimumBatchSize = _this$props.minimumBatchSize,\n rowCount = _this$props.rowCount,\n threshold = _this$props.threshold;\n var unloadedRanges = scanForUnloadedRanges({\n isRowLoaded: isRowLoaded,\n minimumBatchSize: minimumBatchSize,\n rowCount: rowCount,\n startIndex: Math.max(0, startIndex - threshold),\n stopIndex: Math.min(rowCount - 1, stopIndex + threshold)\n }); // For memoize comparison\n\n var squashedUnloadedRanges = (_ref2 = []).concat.apply(_ref2, _toConsumableArray(unloadedRanges.map(function (_ref3) {\n var startIndex = _ref3.startIndex,\n stopIndex = _ref3.stopIndex;\n return [startIndex, stopIndex];\n })));\n\n this._loadMoreRowsMemoizer({\n callback: function callback() {\n _this3._loadUnloadedRanges(unloadedRanges);\n },\n indices: {\n squashedUnloadedRanges: squashedUnloadedRanges\n }\n });\n }\n }, {\n key: \"_registerChild\",\n value: function _registerChild(registeredChild) {\n this._registeredChild = registeredChild;\n }\n }]);\n\n return InfiniteLoader;\n}(React.PureComponent);\n/**\n * Determines if the specified start/stop range is visible based on the most recently rendered range.\n */\n\n\n_defineProperty(InfiniteLoader, \"defaultProps\", {\n minimumBatchSize: 10,\n rowCount: 0,\n threshold: 15\n});\n\nexport { InfiniteLoader as default };\nInfiniteLoader.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Function responsible for rendering a virtualized component.\n * This function should implement the following signature:\n * ({ onRowsRendered, registerChild }) => PropTypes.element\n *\n * The specified :onRowsRendered function should be passed through to the child's :onRowsRendered property.\n * The :registerChild callback should be set as the virtualized component's :ref.\n */\n children: PropTypes.func.isRequired,\n\n /**\n * Function responsible for tracking the loaded state of each row.\n * It should implement the following signature: ({ index: number }): boolean\n */\n isRowLoaded: PropTypes.func.isRequired,\n\n /**\n * Callback to be invoked when more rows must be loaded.\n * It should implement the following signature: ({ startIndex, stopIndex }): Promise\n * The returned Promise should be resolved once row data has finished loading.\n * It will be used to determine when to refresh the list with the newly-loaded data.\n * This callback may be called multiple times in reaction to a single scroll event.\n */\n loadMoreRows: PropTypes.func.isRequired,\n\n /**\n * Minimum number of rows to be loaded at a time.\n * This property can be used to batch requests to reduce HTTP requests.\n */\n minimumBatchSize: PropTypes.number.isRequired,\n\n /**\n * Number of rows in list; can be arbitrary high number if actual number is unknown.\n */\n rowCount: PropTypes.number.isRequired,\n\n /**\n * Threshold at which to pre-fetch data.\n * A threshold X means that data will start loading when a user scrolls within X rows.\n * This value defaults to 15.\n */\n threshold: PropTypes.number.isRequired\n} : {};\nexport function isRangeVisible(_ref4) {\n var lastRenderedStartIndex = _ref4.lastRenderedStartIndex,\n lastRenderedStopIndex = _ref4.lastRenderedStopIndex,\n startIndex = _ref4.startIndex,\n stopIndex = _ref4.stopIndex;\n return !(startIndex > lastRenderedStopIndex || stopIndex < lastRenderedStartIndex);\n}\n/**\n * Returns all of the ranges within a larger range that contain unloaded rows.\n */\n\nexport function scanForUnloadedRanges(_ref5) {\n var isRowLoaded = _ref5.isRowLoaded,\n minimumBatchSize = _ref5.minimumBatchSize,\n rowCount = _ref5.rowCount,\n startIndex = _ref5.startIndex,\n stopIndex = _ref5.stopIndex;\n var unloadedRanges = [];\n var rangeStartIndex = null;\n var rangeStopIndex = null;\n\n for (var index = startIndex; index <= stopIndex; index++) {\n var loaded = isRowLoaded({\n index: index\n });\n\n if (!loaded) {\n rangeStopIndex = index;\n\n if (rangeStartIndex === null) {\n rangeStartIndex = index;\n }\n } else if (rangeStopIndex !== null) {\n unloadedRanges.push({\n startIndex: rangeStartIndex,\n stopIndex: rangeStopIndex\n });\n rangeStartIndex = rangeStopIndex = null;\n }\n } // If :rangeStopIndex is not null it means we haven't ran out of unloaded rows.\n // Scan forward to try filling our :minimumBatchSize.\n\n\n if (rangeStopIndex !== null) {\n var potentialStopIndex = Math.min(Math.max(rangeStopIndex, rangeStartIndex + minimumBatchSize - 1), rowCount - 1);\n\n for (var _index = rangeStopIndex + 1; _index <= potentialStopIndex; _index++) {\n if (!isRowLoaded({\n index: _index\n })) {\n rangeStopIndex = _index;\n } else {\n break;\n }\n }\n\n unloadedRanges.push({\n startIndex: rangeStartIndex,\n stopIndex: rangeStopIndex\n });\n } // Check to see if our first range ended prematurely.\n // In this case we should scan backwards to try filling our :minimumBatchSize.\n\n\n if (unloadedRanges.length) {\n var firstUnloadedRange = unloadedRanges[0];\n\n while (firstUnloadedRange.stopIndex - firstUnloadedRange.startIndex + 1 < minimumBatchSize && firstUnloadedRange.startIndex > 0) {\n var _index2 = firstUnloadedRange.startIndex - 1;\n\n if (!isRowLoaded({\n index: _index2\n })) {\n firstUnloadedRange.startIndex = _index2;\n } else {\n break;\n }\n }\n }\n\n return unloadedRanges;\n}\n/**\n * Since RV components use shallowCompare we need to force a render (even though props haven't changed).\n * However InfiniteLoader may wrap a Grid or it may wrap a Table or List.\n * In the first case the built-in React forceUpdate() method is sufficient to force a re-render,\n * But in the latter cases we need to use the RV-specific forceUpdateGrid() method.\n * Else the inner Grid will not be re-rendered and visuals may be stale.\n *\n * Additionally, while a Grid is scrolling the cells can be cached,\n * So it's important to invalidate that cache by recalculating sizes\n * before forcing a rerender.\n */\n\nexport function forceUpdateReactVirtualizedComponent(component) {\n var currentIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var recomputeSize = typeof component.recomputeGridSize === 'function' ? component.recomputeGridSize : component.recomputeRowHeights;\n\n if (recomputeSize) {\n recomputeSize.call(component, currentIndex);\n } else {\n component.forceUpdate();\n }\n}","import InfiniteLoader from './InfiniteLoader';\nexport default InfiniteLoader;\nexport { InfiniteLoader };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nimport Grid, { accessibilityOverscanIndicesGetter } from '../Grid';\nimport * as React from 'react';\nimport clsx from 'clsx';\n/**\n * It is inefficient to create and manage a large list of DOM elements within a scrolling container\n * if only a few of those elements are visible. The primary purpose of this component is to improve\n * performance by only rendering the DOM nodes that a user is able to see based on their current\n * scroll position.\n *\n * This component renders a virtualized list of elements with either fixed or dynamic heights.\n */\n\nvar List = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(List, _React$PureComponent);\n\n function List() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, List);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(List)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"Grid\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_cellRenderer\", function (_ref) {\n var parent = _ref.parent,\n rowIndex = _ref.rowIndex,\n style = _ref.style,\n isScrolling = _ref.isScrolling,\n isVisible = _ref.isVisible,\n key = _ref.key;\n var rowRenderer = _this.props.rowRenderer; // TRICKY The style object is sometimes cached by Grid.\n // This prevents new style objects from bypassing shallowCompare().\n // However as of React 16, style props are auto-frozen (at least in dev mode)\n // Check to make sure we can still modify the style before proceeding.\n // https://github.com/facebook/react/commit/977357765b44af8ff0cfea327866861073095c12#commitcomment-20648713\n\n var widthDescriptor = Object.getOwnPropertyDescriptor(style, 'width');\n\n if (widthDescriptor && widthDescriptor.writable) {\n // By default, List cells should be 100% width.\n // This prevents them from flowing under a scrollbar (if present).\n style.width = '100%';\n }\n\n return rowRenderer({\n index: rowIndex,\n style: style,\n isScrolling: isScrolling,\n isVisible: isVisible,\n key: key,\n parent: parent\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setRef\", function (ref) {\n _this.Grid = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (_ref2) {\n var clientHeight = _ref2.clientHeight,\n scrollHeight = _ref2.scrollHeight,\n scrollTop = _ref2.scrollTop;\n var onScroll = _this.props.onScroll;\n onScroll({\n clientHeight: clientHeight,\n scrollHeight: scrollHeight,\n scrollTop: scrollTop\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onSectionRendered\", function (_ref3) {\n var rowOverscanStartIndex = _ref3.rowOverscanStartIndex,\n rowOverscanStopIndex = _ref3.rowOverscanStopIndex,\n rowStartIndex = _ref3.rowStartIndex,\n rowStopIndex = _ref3.rowStopIndex;\n var onRowsRendered = _this.props.onRowsRendered;\n onRowsRendered({\n overscanStartIndex: rowOverscanStartIndex,\n overscanStopIndex: rowOverscanStopIndex,\n startIndex: rowStartIndex,\n stopIndex: rowStopIndex\n });\n });\n\n return _this;\n }\n\n _createClass(List, [{\n key: \"forceUpdateGrid\",\n value: function forceUpdateGrid() {\n if (this.Grid) {\n this.Grid.forceUpdate();\n }\n }\n /** See Grid#getOffsetForCell */\n\n }, {\n key: \"getOffsetForRow\",\n value: function getOffsetForRow(_ref4) {\n var alignment = _ref4.alignment,\n index = _ref4.index;\n\n if (this.Grid) {\n var _this$Grid$getOffsetF = this.Grid.getOffsetForCell({\n alignment: alignment,\n rowIndex: index,\n columnIndex: 0\n }),\n scrollTop = _this$Grid$getOffsetF.scrollTop;\n\n return scrollTop;\n }\n\n return 0;\n }\n /** CellMeasurer compatibility */\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender(_ref5) {\n var columnIndex = _ref5.columnIndex,\n rowIndex = _ref5.rowIndex;\n\n if (this.Grid) {\n this.Grid.invalidateCellSizeAfterRender({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n /** See Grid#measureAllCells */\n\n }, {\n key: \"measureAllRows\",\n value: function measureAllRows() {\n if (this.Grid) {\n this.Grid.measureAllCells();\n }\n }\n /** CellMeasurer compatibility */\n\n }, {\n key: \"recomputeGridSize\",\n value: function recomputeGridSize() {\n var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref6$columnIndex = _ref6.columnIndex,\n columnIndex = _ref6$columnIndex === void 0 ? 0 : _ref6$columnIndex,\n _ref6$rowIndex = _ref6.rowIndex,\n rowIndex = _ref6$rowIndex === void 0 ? 0 : _ref6$rowIndex;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n /** See Grid#recomputeGridSize */\n\n }, {\n key: \"recomputeRowHeights\",\n value: function recomputeRowHeights() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: index,\n columnIndex: 0\n });\n }\n }\n /** See Grid#scrollToPosition */\n\n }, {\n key: \"scrollToPosition\",\n value: function scrollToPosition() {\n var scrollTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToPosition({\n scrollTop: scrollTop\n });\n }\n }\n /** See Grid#scrollToCell */\n\n }, {\n key: \"scrollToRow\",\n value: function scrollToRow() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToCell({\n columnIndex: 0,\n rowIndex: index\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n className = _this$props.className,\n noRowsRenderer = _this$props.noRowsRenderer,\n scrollToIndex = _this$props.scrollToIndex,\n width = _this$props.width;\n var classNames = clsx('ReactVirtualized__List', className);\n return React.createElement(Grid, _extends({}, this.props, {\n autoContainerWidth: true,\n cellRenderer: this._cellRenderer,\n className: classNames,\n columnWidth: width,\n columnCount: 1,\n noContentRenderer: noRowsRenderer,\n onScroll: this._onScroll,\n onSectionRendered: this._onSectionRendered,\n ref: this._setRef,\n scrollToRow: scrollToIndex\n }));\n }\n }]);\n\n return List;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"aria-label\": PropTypes.string,\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height\n * of rows can stretch the window. Intended for use with WindowScroller\n */\n \"autoHeight\": PropTypes.bool.isRequired,\n\n /** Optional CSS class name */\n \"className\": PropTypes.string,\n\n /**\n * Used to estimate the total height of a List before all of its rows have actually been measured.\n * The estimated total height is adjusted as rows are rendered.\n */\n \"estimatedRowSize\": PropTypes.number.isRequired,\n\n /** Height constraint for list (determines how many actual rows are rendered) */\n \"height\": PropTypes.number.isRequired,\n\n /** Optional renderer to be used in place of rows when rowCount is 0 */\n \"noRowsRenderer\": function noRowsRenderer() {\n return (typeof bpfrpt_proptype_NoContentRenderer === \"function\" ? bpfrpt_proptype_NoContentRenderer.isRequired ? bpfrpt_proptype_NoContentRenderer.isRequired : bpfrpt_proptype_NoContentRenderer : PropTypes.shape(bpfrpt_proptype_NoContentRenderer).isRequired).apply(this, arguments);\n },\n\n /** Callback invoked with information about the slice of rows that were just rendered. */\n \"onRowsRendered\": PropTypes.func.isRequired,\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n */\n \"onScroll\": PropTypes.func.isRequired,\n\n /** See Grid#overscanIndicesGetter */\n \"overscanIndicesGetter\": function overscanIndicesGetter() {\n return (typeof bpfrpt_proptype_OverscanIndicesGetter === \"function\" ? bpfrpt_proptype_OverscanIndicesGetter.isRequired ? bpfrpt_proptype_OverscanIndicesGetter.isRequired : bpfrpt_proptype_OverscanIndicesGetter : PropTypes.shape(bpfrpt_proptype_OverscanIndicesGetter).isRequired).apply(this, arguments);\n },\n\n /**\n * Number of rows to render above/below the visible bounds of the list.\n * These rows can help for smoother scrolling on touch devices.\n */\n \"overscanRowCount\": PropTypes.number.isRequired,\n\n /** Either a fixed row height (number) or a function that returns the height of a row given its index. */\n \"rowHeight\": function rowHeight() {\n return (typeof bpfrpt_proptype_CellSize === \"function\" ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n },\n\n /** Responsible for rendering a row given an index; ({ index: number }): node */\n \"rowRenderer\": function rowRenderer() {\n return (typeof bpfrpt_proptype_RowRenderer === \"function\" ? bpfrpt_proptype_RowRenderer.isRequired ? bpfrpt_proptype_RowRenderer.isRequired : bpfrpt_proptype_RowRenderer : PropTypes.shape(bpfrpt_proptype_RowRenderer).isRequired).apply(this, arguments);\n },\n\n /** Number of rows in list. */\n \"rowCount\": PropTypes.number.isRequired,\n\n /** See Grid#scrollToAlignment */\n \"scrollToAlignment\": function scrollToAlignment() {\n return (typeof bpfrpt_proptype_Alignment === \"function\" ? bpfrpt_proptype_Alignment.isRequired ? bpfrpt_proptype_Alignment.isRequired : bpfrpt_proptype_Alignment : PropTypes.shape(bpfrpt_proptype_Alignment).isRequired).apply(this, arguments);\n },\n\n /** Row index to ensure visible (by forcefully scrolling if necessary) */\n \"scrollToIndex\": PropTypes.number.isRequired,\n\n /** Vertical offset. */\n \"scrollTop\": PropTypes.number,\n\n /** Optional inline style */\n \"style\": PropTypes.object.isRequired,\n\n /** Tab index for focus */\n \"tabIndex\": PropTypes.number,\n\n /** Width of list */\n \"width\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(List, \"defaultProps\", {\n autoHeight: false,\n estimatedRowSize: 30,\n onScroll: function onScroll() {},\n noRowsRenderer: function noRowsRenderer() {\n return null;\n },\n onRowsRendered: function onRowsRendered() {},\n overscanIndicesGetter: accessibilityOverscanIndicesGetter,\n overscanRowCount: 10,\n scrollToAlignment: 'auto',\n scrollToIndex: -1,\n style: {}\n});\n\nexport { List as default };\nimport { bpfrpt_proptype_NoContentRenderer } from \"../Grid\";\nimport { bpfrpt_proptype_Alignment } from \"../Grid\";\nimport { bpfrpt_proptype_CellSize } from \"../Grid\";\nimport { bpfrpt_proptype_CellPosition } from \"../Grid\";\nimport { bpfrpt_proptype_OverscanIndicesGetter } from \"../Grid\";\nimport { bpfrpt_proptype_RenderedSection } from \"../Grid\";\nimport { bpfrpt_proptype_CellRendererParams } from \"../Grid\";\nimport { bpfrpt_proptype_Scroll as bpfrpt_proptype_GridScroll } from \"../Grid\";\nimport { bpfrpt_proptype_RowRenderer } from \"./types\";\nimport { bpfrpt_proptype_RenderedRows } from \"./types\";\nimport { bpfrpt_proptype_Scroll } from \"./types\";\nimport PropTypes from \"prop-types\";","/**\n * Binary Search Bounds\n * https://github.com/mikolalysenko/binary-search-bounds\n * Mikola Lysenko\n *\n * Inlined because of Content Security Policy issue caused by the use of `new Function(...)` syntax.\n * Issue reported here: https://github.com/mikolalysenko/binary-search-bounds/issues/5\n **/\nfunction _GEA(a, l, h, y) {\n var i = h + 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x >= y) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n\n return i;\n}\n\nfunction _GEP(a, l, h, y, c) {\n var i = h + 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (c(x, y) >= 0) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n\n return i;\n}\n\nfunction dispatchBsearchGE(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _GEP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _GEA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _GTA(a, l, h, y) {\n var i = h + 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x > y) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n\n return i;\n}\n\nfunction _GTP(a, l, h, y, c) {\n var i = h + 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (c(x, y) > 0) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n\n return i;\n}\n\nfunction dispatchBsearchGT(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _GTP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _GTA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _LTA(a, l, h, y) {\n var i = l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x < y) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return i;\n}\n\nfunction _LTP(a, l, h, y, c) {\n var i = l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (c(x, y) < 0) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return i;\n}\n\nfunction dispatchBsearchLT(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _LTP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _LTA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _LEA(a, l, h, y) {\n var i = l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x <= y) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return i;\n}\n\nfunction _LEP(a, l, h, y, c) {\n var i = l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (c(x, y) <= 0) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return i;\n}\n\nfunction dispatchBsearchLE(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _LEP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _LEA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _EQA(a, l, h, y) {\n l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x === y) {\n return m;\n } else if (x <= y) {\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return -1;\n}\n\nfunction _EQP(a, l, h, y, c) {\n l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n var p = c(x, y);\n\n if (p === 0) {\n return m;\n } else if (p <= 0) {\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return -1;\n}\n\nfunction dispatchBsearchEQ(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _EQP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _EQA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nexport default {\n ge: dispatchBsearchGE,\n gt: dispatchBsearchGT,\n lt: dispatchBsearchLT,\n le: dispatchBsearchLE,\n eq: dispatchBsearchEQ\n};","/**\n * Binary Search Bounds\n * https://github.com/mikolalysenko/interval-tree-1d\n * Mikola Lysenko\n *\n * Inlined because of Content Security Policy issue caused by the use of `new Function(...)` syntax in an upstream dependency.\n * Issue reported here: https://github.com/mikolalysenko/binary-search-bounds/issues/5\n **/\nimport bounds from './binarySearchBounds';\nvar NOT_FOUND = 0;\nvar SUCCESS = 1;\nvar EMPTY = 2;\n\nfunction IntervalTreeNode(mid, left, right, leftPoints, rightPoints) {\n this.mid = mid;\n this.left = left;\n this.right = right;\n this.leftPoints = leftPoints;\n this.rightPoints = rightPoints;\n this.count = (left ? left.count : 0) + (right ? right.count : 0) + leftPoints.length;\n}\n\nvar proto = IntervalTreeNode.prototype;\n\nfunction copy(a, b) {\n a.mid = b.mid;\n a.left = b.left;\n a.right = b.right;\n a.leftPoints = b.leftPoints;\n a.rightPoints = b.rightPoints;\n a.count = b.count;\n}\n\nfunction rebuild(node, intervals) {\n var ntree = createIntervalTree(intervals);\n node.mid = ntree.mid;\n node.left = ntree.left;\n node.right = ntree.right;\n node.leftPoints = ntree.leftPoints;\n node.rightPoints = ntree.rightPoints;\n node.count = ntree.count;\n}\n\nfunction rebuildWithInterval(node, interval) {\n var intervals = node.intervals([]);\n intervals.push(interval);\n rebuild(node, intervals);\n}\n\nfunction rebuildWithoutInterval(node, interval) {\n var intervals = node.intervals([]);\n var idx = intervals.indexOf(interval);\n\n if (idx < 0) {\n return NOT_FOUND;\n }\n\n intervals.splice(idx, 1);\n rebuild(node, intervals);\n return SUCCESS;\n}\n\nproto.intervals = function (result) {\n result.push.apply(result, this.leftPoints);\n\n if (this.left) {\n this.left.intervals(result);\n }\n\n if (this.right) {\n this.right.intervals(result);\n }\n\n return result;\n};\n\nproto.insert = function (interval) {\n var weight = this.count - this.leftPoints.length;\n this.count += 1;\n\n if (interval[1] < this.mid) {\n if (this.left) {\n if (4 * (this.left.count + 1) > 3 * (weight + 1)) {\n rebuildWithInterval(this, interval);\n } else {\n this.left.insert(interval);\n }\n } else {\n this.left = createIntervalTree([interval]);\n }\n } else if (interval[0] > this.mid) {\n if (this.right) {\n if (4 * (this.right.count + 1) > 3 * (weight + 1)) {\n rebuildWithInterval(this, interval);\n } else {\n this.right.insert(interval);\n }\n } else {\n this.right = createIntervalTree([interval]);\n }\n } else {\n var l = bounds.ge(this.leftPoints, interval, compareBegin);\n var r = bounds.ge(this.rightPoints, interval, compareEnd);\n this.leftPoints.splice(l, 0, interval);\n this.rightPoints.splice(r, 0, interval);\n }\n};\n\nproto.remove = function (interval) {\n var weight = this.count - this.leftPoints;\n\n if (interval[1] < this.mid) {\n if (!this.left) {\n return NOT_FOUND;\n }\n\n var rw = this.right ? this.right.count : 0;\n\n if (4 * rw > 3 * (weight - 1)) {\n return rebuildWithoutInterval(this, interval);\n }\n\n var r = this.left.remove(interval);\n\n if (r === EMPTY) {\n this.left = null;\n this.count -= 1;\n return SUCCESS;\n } else if (r === SUCCESS) {\n this.count -= 1;\n }\n\n return r;\n } else if (interval[0] > this.mid) {\n if (!this.right) {\n return NOT_FOUND;\n }\n\n var lw = this.left ? this.left.count : 0;\n\n if (4 * lw > 3 * (weight - 1)) {\n return rebuildWithoutInterval(this, interval);\n }\n\n var r = this.right.remove(interval);\n\n if (r === EMPTY) {\n this.right = null;\n this.count -= 1;\n return SUCCESS;\n } else if (r === SUCCESS) {\n this.count -= 1;\n }\n\n return r;\n } else {\n if (this.count === 1) {\n if (this.leftPoints[0] === interval) {\n return EMPTY;\n } else {\n return NOT_FOUND;\n }\n }\n\n if (this.leftPoints.length === 1 && this.leftPoints[0] === interval) {\n if (this.left && this.right) {\n var p = this;\n var n = this.left;\n\n while (n.right) {\n p = n;\n n = n.right;\n }\n\n if (p === this) {\n n.right = this.right;\n } else {\n var l = this.left;\n var r = this.right;\n p.count -= n.count;\n p.right = n.left;\n n.left = l;\n n.right = r;\n }\n\n copy(this, n);\n this.count = (this.left ? this.left.count : 0) + (this.right ? this.right.count : 0) + this.leftPoints.length;\n } else if (this.left) {\n copy(this, this.left);\n } else {\n copy(this, this.right);\n }\n\n return SUCCESS;\n }\n\n for (var l = bounds.ge(this.leftPoints, interval, compareBegin); l < this.leftPoints.length; ++l) {\n if (this.leftPoints[l][0] !== interval[0]) {\n break;\n }\n\n if (this.leftPoints[l] === interval) {\n this.count -= 1;\n this.leftPoints.splice(l, 1);\n\n for (var r = bounds.ge(this.rightPoints, interval, compareEnd); r < this.rightPoints.length; ++r) {\n if (this.rightPoints[r][1] !== interval[1]) {\n break;\n } else if (this.rightPoints[r] === interval) {\n this.rightPoints.splice(r, 1);\n return SUCCESS;\n }\n }\n }\n }\n\n return NOT_FOUND;\n }\n};\n\nfunction reportLeftRange(arr, hi, cb) {\n for (var i = 0; i < arr.length && arr[i][0] <= hi; ++i) {\n var r = cb(arr[i]);\n\n if (r) {\n return r;\n }\n }\n}\n\nfunction reportRightRange(arr, lo, cb) {\n for (var i = arr.length - 1; i >= 0 && arr[i][1] >= lo; --i) {\n var r = cb(arr[i]);\n\n if (r) {\n return r;\n }\n }\n}\n\nfunction reportRange(arr, cb) {\n for (var i = 0; i < arr.length; ++i) {\n var r = cb(arr[i]);\n\n if (r) {\n return r;\n }\n }\n}\n\nproto.queryPoint = function (x, cb) {\n if (x < this.mid) {\n if (this.left) {\n var r = this.left.queryPoint(x, cb);\n\n if (r) {\n return r;\n }\n }\n\n return reportLeftRange(this.leftPoints, x, cb);\n } else if (x > this.mid) {\n if (this.right) {\n var r = this.right.queryPoint(x, cb);\n\n if (r) {\n return r;\n }\n }\n\n return reportRightRange(this.rightPoints, x, cb);\n } else {\n return reportRange(this.leftPoints, cb);\n }\n};\n\nproto.queryInterval = function (lo, hi, cb) {\n if (lo < this.mid && this.left) {\n var r = this.left.queryInterval(lo, hi, cb);\n\n if (r) {\n return r;\n }\n }\n\n if (hi > this.mid && this.right) {\n var r = this.right.queryInterval(lo, hi, cb);\n\n if (r) {\n return r;\n }\n }\n\n if (hi < this.mid) {\n return reportLeftRange(this.leftPoints, hi, cb);\n } else if (lo > this.mid) {\n return reportRightRange(this.rightPoints, lo, cb);\n } else {\n return reportRange(this.leftPoints, cb);\n }\n};\n\nfunction compareNumbers(a, b) {\n return a - b;\n}\n\nfunction compareBegin(a, b) {\n var d = a[0] - b[0];\n\n if (d) {\n return d;\n }\n\n return a[1] - b[1];\n}\n\nfunction compareEnd(a, b) {\n var d = a[1] - b[1];\n\n if (d) {\n return d;\n }\n\n return a[0] - b[0];\n}\n\nfunction createIntervalTree(intervals) {\n if (intervals.length === 0) {\n return null;\n }\n\n var pts = [];\n\n for (var i = 0; i < intervals.length; ++i) {\n pts.push(intervals[i][0], intervals[i][1]);\n }\n\n pts.sort(compareNumbers);\n var mid = pts[pts.length >> 1];\n var leftIntervals = [];\n var rightIntervals = [];\n var centerIntervals = [];\n\n for (var i = 0; i < intervals.length; ++i) {\n var s = intervals[i];\n\n if (s[1] < mid) {\n leftIntervals.push(s);\n } else if (mid < s[0]) {\n rightIntervals.push(s);\n } else {\n centerIntervals.push(s);\n }\n } //Split center intervals\n\n\n var leftPoints = centerIntervals;\n var rightPoints = centerIntervals.slice();\n leftPoints.sort(compareBegin);\n rightPoints.sort(compareEnd);\n return new IntervalTreeNode(mid, createIntervalTree(leftIntervals), createIntervalTree(rightIntervals), leftPoints, rightPoints);\n} //User friendly wrapper that makes it possible to support empty trees\n\n\nfunction IntervalTree(root) {\n this.root = root;\n}\n\nvar tproto = IntervalTree.prototype;\n\ntproto.insert = function (interval) {\n if (this.root) {\n this.root.insert(interval);\n } else {\n this.root = new IntervalTreeNode(interval[0], null, null, [interval], [interval]);\n }\n};\n\ntproto.remove = function (interval) {\n if (this.root) {\n var r = this.root.remove(interval);\n\n if (r === EMPTY) {\n this.root = null;\n }\n\n return r !== NOT_FOUND;\n }\n\n return false;\n};\n\ntproto.queryPoint = function (p, cb) {\n if (this.root) {\n return this.root.queryPoint(p, cb);\n }\n};\n\ntproto.queryInterval = function (lo, hi, cb) {\n if (lo <= hi && this.root) {\n return this.root.queryInterval(lo, hi, cb);\n }\n};\n\nObject.defineProperty(tproto, 'count', {\n get: function get() {\n if (this.root) {\n return this.root.count;\n }\n\n return 0;\n }\n});\nObject.defineProperty(tproto, 'intervals', {\n get: function get() {\n if (this.root) {\n return this.root.intervals([]);\n }\n\n return [];\n }\n});\nexport default function createWrapper(intervals) {\n if (!intervals || intervals.length === 0) {\n return new IntervalTree(null);\n }\n\n return new IntervalTree(createIntervalTree(intervals));\n}","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport createIntervalTree from '../vendor/intervalTree';\n\n// Position cache requirements:\n// O(log(n)) lookup of cells to render for a given viewport size\n// O(1) lookup of shortest measured column (so we know when to enter phase 1)\nvar PositionCache =\n/*#__PURE__*/\nfunction () {\n function PositionCache() {\n _classCallCheck(this, PositionCache);\n\n _defineProperty(this, \"_columnSizeMap\", {});\n\n _defineProperty(this, \"_intervalTree\", createIntervalTree());\n\n _defineProperty(this, \"_leftMap\", {});\n }\n\n _createClass(PositionCache, [{\n key: \"estimateTotalHeight\",\n value: function estimateTotalHeight(cellCount, columnCount, defaultCellHeight) {\n var unmeasuredCellCount = cellCount - this.count;\n return this.tallestColumnSize + Math.ceil(unmeasuredCellCount / columnCount) * defaultCellHeight;\n } // Render all cells visible within the viewport range defined.\n\n }, {\n key: \"range\",\n value: function range(scrollTop, clientHeight, renderCallback) {\n var _this = this;\n\n this._intervalTree.queryInterval(scrollTop, scrollTop + clientHeight, function (_ref) {\n var _ref2 = _slicedToArray(_ref, 3),\n top = _ref2[0],\n _ = _ref2[1],\n index = _ref2[2];\n\n return renderCallback(index, _this._leftMap[index], top);\n });\n }\n }, {\n key: \"setPosition\",\n value: function setPosition(index, left, top, height) {\n this._intervalTree.insert([top, top + height, index]);\n\n this._leftMap[index] = left;\n var columnSizeMap = this._columnSizeMap;\n var columnHeight = columnSizeMap[left];\n\n if (columnHeight === undefined) {\n columnSizeMap[left] = top + height;\n } else {\n columnSizeMap[left] = Math.max(columnHeight, top + height);\n }\n }\n }, {\n key: \"count\",\n get: function get() {\n return this._intervalTree.count;\n }\n }, {\n key: \"shortestColumnSize\",\n get: function get() {\n var columnSizeMap = this._columnSizeMap;\n var size = 0;\n\n for (var i in columnSizeMap) {\n var height = columnSizeMap[i];\n size = size === 0 ? height : Math.min(size, height);\n }\n\n return size;\n }\n }, {\n key: \"tallestColumnSize\",\n get: function get() {\n var columnSizeMap = this._columnSizeMap;\n var size = 0;\n\n for (var i in columnSizeMap) {\n var height = columnSizeMap[i];\n size = Math.max(size, height);\n }\n\n return size;\n }\n }]);\n\n return PositionCache;\n}();\n\nexport { PositionCache as default };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport clsx from 'clsx';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport PositionCache from './PositionCache';\nimport { requestAnimationTimeout, cancelAnimationTimeout } from '../utils/requestAnimationTimeout';\nvar emptyObject = {};\n/**\n * Specifies the number of miliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nexport var DEFAULT_SCROLLING_RESET_TIME_INTERVAL = 150;\n/**\n * This component efficiently displays arbitrarily positioned cells using windowing techniques.\n * Cell position is determined by an injected `cellPositioner` property.\n * Windowing is vertical; this component does not support horizontal scrolling.\n *\n * Rendering occurs in two phases:\n * 1) First pass uses estimated cell sizes (provided by the cache) to determine how many cells to measure in a batch.\n * Batch size is chosen using a fast, naive layout algorithm that stacks images in order until the viewport has been filled.\n * After measurement is complete (componentDidMount or componentDidUpdate) this component evaluates positioned cells\n * in order to determine if another measurement pass is required (eg if actual cell sizes were less than estimated sizes).\n * All measurements are permanently cached (keyed by `keyMapper`) for performance purposes.\n * 2) Second pass uses the external `cellPositioner` to layout cells.\n * At this time the positioner has access to cached size measurements for all cells.\n * The positions it returns are cached by Masonry for fast access later.\n * Phase one is repeated if the user scrolls beyond the current layout's bounds.\n * If the layout is invalidated due to eg a resize, cached positions can be cleared using `recomputeCellPositions()`.\n *\n * Animation constraints:\n * Simple animations are supported (eg translate/slide into place on initial reveal).\n * More complex animations are not (eg flying from one position to another on resize).\n *\n * Layout constraints:\n * This component supports multi-column layout.\n * The height of each item may vary.\n * The width of each item must not exceed the width of the column it is \"in\".\n * The left position of all items within a column must align.\n * (Items may not span multiple columns.)\n */\n\nvar Masonry = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Masonry, _React$PureComponent);\n\n function Masonry() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Masonry);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Masonry)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isScrolling: false,\n scrollTop: 0\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_debounceResetIsScrollingId\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_invalidateOnUpdateStartIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_invalidateOnUpdateStopIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_positionCache\", new PositionCache());\n\n _defineProperty(_assertThisInitialized(_this), \"_startIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_startIndexMemoized\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_stopIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_stopIndexMemoized\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_debounceResetIsScrollingCallback\", function () {\n _this.setState({\n isScrolling: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setScrollingContainerRef\", function (ref) {\n _this._scrollingContainer = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (event) {\n var height = _this.props.height;\n var eventScrollTop = event.currentTarget.scrollTop; // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n // This causes a series of rapid renders that is slow for long lists.\n // We can avoid that by doing some simple bounds checking to ensure that scroll offsets never exceed their bounds.\n\n var scrollTop = Math.min(Math.max(0, _this._getEstimatedTotalHeight() - height), eventScrollTop); // On iOS, we can arrive at negative offsets by swiping past the start or end.\n // Avoid re-rendering in this case as it can cause problems; see #532 for more.\n\n if (eventScrollTop !== scrollTop) {\n return;\n } // Prevent pointer events from interrupting a smooth scroll\n\n\n _this._debounceResetIsScrolling(); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n // Don't force a re-render if this is the case.\n // The mouse may move faster then the animation frame does.\n // Use requestAnimationFrame to avoid over-updating.\n\n\n if (_this.state.scrollTop !== scrollTop) {\n _this.setState({\n isScrolling: true,\n scrollTop: scrollTop\n });\n }\n });\n\n return _this;\n }\n\n _createClass(Masonry, [{\n key: \"clearCellPositions\",\n value: function clearCellPositions() {\n this._positionCache = new PositionCache();\n this.forceUpdate();\n } // HACK This method signature was intended for Grid\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender(_ref) {\n var index = _ref.rowIndex;\n\n if (this._invalidateOnUpdateStartIndex === null) {\n this._invalidateOnUpdateStartIndex = index;\n this._invalidateOnUpdateStopIndex = index;\n } else {\n this._invalidateOnUpdateStartIndex = Math.min(this._invalidateOnUpdateStartIndex, index);\n this._invalidateOnUpdateStopIndex = Math.max(this._invalidateOnUpdateStopIndex, index);\n }\n }\n }, {\n key: \"recomputeCellPositions\",\n value: function recomputeCellPositions() {\n var stopIndex = this._positionCache.count - 1;\n this._positionCache = new PositionCache();\n\n this._populatePositionCache(0, stopIndex);\n\n this.forceUpdate();\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._checkInvalidateOnUpdate();\n\n this._invokeOnScrollCallback();\n\n this._invokeOnCellsRenderedCallback();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n this._checkInvalidateOnUpdate();\n\n this._invokeOnScrollCallback();\n\n this._invokeOnCellsRenderedCallback();\n\n if (this.props.scrollTop !== prevProps.scrollTop) {\n this._debounceResetIsScrolling();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._debounceResetIsScrollingId) {\n cancelAnimationTimeout(this._debounceResetIsScrollingId);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n autoHeight = _this$props.autoHeight,\n cellCount = _this$props.cellCount,\n cellMeasurerCache = _this$props.cellMeasurerCache,\n cellRenderer = _this$props.cellRenderer,\n className = _this$props.className,\n height = _this$props.height,\n id = _this$props.id,\n keyMapper = _this$props.keyMapper,\n overscanByPixels = _this$props.overscanByPixels,\n role = _this$props.role,\n style = _this$props.style,\n tabIndex = _this$props.tabIndex,\n width = _this$props.width,\n rowDirection = _this$props.rowDirection;\n var _this$state = this.state,\n isScrolling = _this$state.isScrolling,\n scrollTop = _this$state.scrollTop;\n var children = [];\n\n var estimateTotalHeight = this._getEstimatedTotalHeight();\n\n var shortestColumnSize = this._positionCache.shortestColumnSize;\n var measuredCellCount = this._positionCache.count;\n var startIndex = 0;\n var stopIndex;\n\n this._positionCache.range(Math.max(0, scrollTop - overscanByPixels), height + overscanByPixels * 2, function (index, left, top) {\n var _style;\n\n if (typeof stopIndex === 'undefined') {\n startIndex = index;\n stopIndex = index;\n } else {\n startIndex = Math.min(startIndex, index);\n stopIndex = Math.max(stopIndex, index);\n }\n\n children.push(cellRenderer({\n index: index,\n isScrolling: isScrolling,\n key: keyMapper(index),\n parent: _this2,\n style: (_style = {\n height: cellMeasurerCache.getHeight(index)\n }, _defineProperty(_style, rowDirection === 'ltr' ? 'left' : 'right', left), _defineProperty(_style, \"position\", 'absolute'), _defineProperty(_style, \"top\", top), _defineProperty(_style, \"width\", cellMeasurerCache.getWidth(index)), _style)\n }));\n }); // We need to measure additional cells for this layout\n\n\n if (shortestColumnSize < scrollTop + height + overscanByPixels && measuredCellCount < cellCount) {\n var batchSize = Math.min(cellCount - measuredCellCount, Math.ceil((scrollTop + height + overscanByPixels - shortestColumnSize) / cellMeasurerCache.defaultHeight * width / cellMeasurerCache.defaultWidth));\n\n for (var _index = measuredCellCount; _index < measuredCellCount + batchSize; _index++) {\n stopIndex = _index;\n children.push(cellRenderer({\n index: _index,\n isScrolling: isScrolling,\n key: keyMapper(_index),\n parent: this,\n style: {\n width: cellMeasurerCache.getWidth(_index)\n }\n }));\n }\n }\n\n this._startIndex = startIndex;\n this._stopIndex = stopIndex;\n return React.createElement(\"div\", {\n ref: this._setScrollingContainerRef,\n \"aria-label\": this.props['aria-label'],\n className: clsx('ReactVirtualized__Masonry', className),\n id: id,\n onScroll: this._onScroll,\n role: role,\n style: _objectSpread({\n boxSizing: 'border-box',\n direction: 'ltr',\n height: autoHeight ? 'auto' : height,\n overflowX: 'hidden',\n overflowY: estimateTotalHeight < height ? 'hidden' : 'auto',\n position: 'relative',\n width: width,\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform'\n }, style),\n tabIndex: tabIndex\n }, React.createElement(\"div\", {\n className: \"ReactVirtualized__Masonry__innerScrollContainer\",\n style: {\n width: '100%',\n height: estimateTotalHeight,\n maxWidth: '100%',\n maxHeight: estimateTotalHeight,\n overflow: 'hidden',\n pointerEvents: isScrolling ? 'none' : '',\n position: 'relative'\n }\n }, children));\n }\n }, {\n key: \"_checkInvalidateOnUpdate\",\n value: function _checkInvalidateOnUpdate() {\n if (typeof this._invalidateOnUpdateStartIndex === 'number') {\n var startIndex = this._invalidateOnUpdateStartIndex;\n var stopIndex = this._invalidateOnUpdateStopIndex;\n this._invalidateOnUpdateStartIndex = null;\n this._invalidateOnUpdateStopIndex = null; // Query external layout logic for position of newly-measured cells\n\n this._populatePositionCache(startIndex, stopIndex);\n\n this.forceUpdate();\n }\n }\n }, {\n key: \"_debounceResetIsScrolling\",\n value: function _debounceResetIsScrolling() {\n var scrollingResetTimeInterval = this.props.scrollingResetTimeInterval;\n\n if (this._debounceResetIsScrollingId) {\n cancelAnimationTimeout(this._debounceResetIsScrollingId);\n }\n\n this._debounceResetIsScrollingId = requestAnimationTimeout(this._debounceResetIsScrollingCallback, scrollingResetTimeInterval);\n }\n }, {\n key: \"_getEstimatedTotalHeight\",\n value: function _getEstimatedTotalHeight() {\n var _this$props2 = this.props,\n cellCount = _this$props2.cellCount,\n cellMeasurerCache = _this$props2.cellMeasurerCache,\n width = _this$props2.width;\n var estimatedColumnCount = Math.max(1, Math.floor(width / cellMeasurerCache.defaultWidth));\n return this._positionCache.estimateTotalHeight(cellCount, estimatedColumnCount, cellMeasurerCache.defaultHeight);\n }\n }, {\n key: \"_invokeOnScrollCallback\",\n value: function _invokeOnScrollCallback() {\n var _this$props3 = this.props,\n height = _this$props3.height,\n onScroll = _this$props3.onScroll;\n var scrollTop = this.state.scrollTop;\n\n if (this._onScrollMemoized !== scrollTop) {\n onScroll({\n clientHeight: height,\n scrollHeight: this._getEstimatedTotalHeight(),\n scrollTop: scrollTop\n });\n this._onScrollMemoized = scrollTop;\n }\n }\n }, {\n key: \"_invokeOnCellsRenderedCallback\",\n value: function _invokeOnCellsRenderedCallback() {\n if (this._startIndexMemoized !== this._startIndex || this._stopIndexMemoized !== this._stopIndex) {\n var onCellsRendered = this.props.onCellsRendered;\n onCellsRendered({\n startIndex: this._startIndex,\n stopIndex: this._stopIndex\n });\n this._startIndexMemoized = this._startIndex;\n this._stopIndexMemoized = this._stopIndex;\n }\n }\n }, {\n key: \"_populatePositionCache\",\n value: function _populatePositionCache(startIndex, stopIndex) {\n var _this$props4 = this.props,\n cellMeasurerCache = _this$props4.cellMeasurerCache,\n cellPositioner = _this$props4.cellPositioner;\n\n for (var _index2 = startIndex; _index2 <= stopIndex; _index2++) {\n var _cellPositioner = cellPositioner(_index2),\n left = _cellPositioner.left,\n top = _cellPositioner.top;\n\n this._positionCache.setPosition(_index2, left, top, cellMeasurerCache.getHeight(_index2));\n }\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.scrollTop !== undefined && prevState.scrollTop !== nextProps.scrollTop) {\n return {\n isScrolling: true,\n scrollTop: nextProps.scrollTop\n };\n }\n\n return null;\n }\n }]);\n\n return Masonry;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"autoHeight\": PropTypes.bool.isRequired,\n \"cellCount\": PropTypes.number.isRequired,\n \"cellMeasurerCache\": function cellMeasurerCache() {\n return (typeof CellMeasurerCache === \"function\" ? PropTypes.instanceOf(CellMeasurerCache).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"cellPositioner\": function cellPositioner() {\n return (typeof Positioner === \"function\" ? PropTypes.instanceOf(Positioner).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"cellRenderer\": function cellRenderer() {\n return (typeof CellRenderer === \"function\" ? PropTypes.instanceOf(CellRenderer).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"className\": PropTypes.string,\n \"height\": PropTypes.number.isRequired,\n \"id\": PropTypes.string,\n \"keyMapper\": function keyMapper() {\n return (typeof KeyMapper === \"function\" ? PropTypes.instanceOf(KeyMapper).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"onCellsRendered\": function onCellsRendered() {\n return (typeof OnCellsRenderedCallback === \"function\" ? PropTypes.instanceOf(OnCellsRenderedCallback) : PropTypes.any).apply(this, arguments);\n },\n \"onScroll\": function onScroll() {\n return (typeof OnScrollCallback === \"function\" ? PropTypes.instanceOf(OnScrollCallback) : PropTypes.any).apply(this, arguments);\n },\n \"overscanByPixels\": PropTypes.number.isRequired,\n \"role\": PropTypes.string.isRequired,\n \"scrollingResetTimeInterval\": PropTypes.number.isRequired,\n \"style\": function style(props, propName, componentName) {\n if (!Object.prototype.hasOwnProperty.call(props, propName)) {\n throw new Error(\"Prop `\".concat(propName, \"` has type 'any' or 'mixed', but was not provided to `\").concat(componentName, \"`. Pass undefined or any other value.\"));\n }\n },\n \"tabIndex\": PropTypes.number.isRequired,\n \"width\": PropTypes.number.isRequired,\n \"rowDirection\": PropTypes.string.isRequired,\n \"scrollTop\": PropTypes.number\n}), _temp);\n\n_defineProperty(Masonry, \"defaultProps\", {\n autoHeight: false,\n keyMapper: identity,\n onCellsRendered: noop,\n onScroll: noop,\n overscanByPixels: 20,\n role: 'grid',\n scrollingResetTimeInterval: DEFAULT_SCROLLING_RESET_TIME_INTERVAL,\n style: emptyObject,\n tabIndex: 0,\n rowDirection: 'ltr'\n});\n\nfunction identity(value) {\n return value;\n}\n\nfunction noop() {}\n\nvar bpfrpt_proptype_CellMeasurerCache = process.env.NODE_ENV === 'production' ? null : {\n \"defaultHeight\": PropTypes.number.isRequired,\n \"defaultWidth\": PropTypes.number.isRequired,\n \"getHeight\": PropTypes.func.isRequired,\n \"getWidth\": PropTypes.func.isRequired\n};\npolyfill(Masonry);\nexport default Masonry;\nvar bpfrpt_proptype_Positioner = process.env.NODE_ENV === 'production' ? null : PropTypes.func;\nimport { bpfrpt_proptype_AnimationTimeoutId } from \"../utils/requestAnimationTimeout\";\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_CellMeasurerCache };\nexport { bpfrpt_proptype_Positioner };","import createCellPositioner from './createCellPositioner';\nimport Masonry from './Masonry';\nexport default Masonry;\nexport { createCellPositioner, Masonry };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { CellMeasurerCache } from '../CellMeasurer';\n\n/**\n * Caches measurements for a given cell.\n */\nvar CellMeasurerCacheDecorator =\n/*#__PURE__*/\nfunction () {\n function CellMeasurerCacheDecorator() {\n var _this = this;\n\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, CellMeasurerCacheDecorator);\n\n _defineProperty(this, \"_cellMeasurerCache\", void 0);\n\n _defineProperty(this, \"_columnIndexOffset\", void 0);\n\n _defineProperty(this, \"_rowIndexOffset\", void 0);\n\n _defineProperty(this, \"columnWidth\", function (_ref) {\n var index = _ref.index;\n\n _this._cellMeasurerCache.columnWidth({\n index: index + _this._columnIndexOffset\n });\n });\n\n _defineProperty(this, \"rowHeight\", function (_ref2) {\n var index = _ref2.index;\n\n _this._cellMeasurerCache.rowHeight({\n index: index + _this._rowIndexOffset\n });\n });\n\n var cellMeasurerCache = params.cellMeasurerCache,\n _params$columnIndexOf = params.columnIndexOffset,\n columnIndexOffset = _params$columnIndexOf === void 0 ? 0 : _params$columnIndexOf,\n _params$rowIndexOffse = params.rowIndexOffset,\n rowIndexOffset = _params$rowIndexOffse === void 0 ? 0 : _params$rowIndexOffse;\n this._cellMeasurerCache = cellMeasurerCache;\n this._columnIndexOffset = columnIndexOffset;\n this._rowIndexOffset = rowIndexOffset;\n }\n\n _createClass(CellMeasurerCacheDecorator, [{\n key: \"clear\",\n value: function clear(rowIndex, columnIndex) {\n this._cellMeasurerCache.clear(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: \"clearAll\",\n value: function clearAll() {\n this._cellMeasurerCache.clearAll();\n }\n }, {\n key: \"hasFixedHeight\",\n value: function hasFixedHeight() {\n return this._cellMeasurerCache.hasFixedHeight();\n }\n }, {\n key: \"hasFixedWidth\",\n value: function hasFixedWidth() {\n return this._cellMeasurerCache.hasFixedWidth();\n }\n }, {\n key: \"getHeight\",\n value: function getHeight(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return this._cellMeasurerCache.getHeight(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: \"getWidth\",\n value: function getWidth(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return this._cellMeasurerCache.getWidth(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: \"has\",\n value: function has(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return this._cellMeasurerCache.has(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: \"set\",\n value: function set(rowIndex, columnIndex, width, height) {\n this._cellMeasurerCache.set(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset, width, height);\n }\n }, {\n key: \"defaultHeight\",\n get: function get() {\n return this._cellMeasurerCache.defaultHeight;\n }\n }, {\n key: \"defaultWidth\",\n get: function get() {\n return this._cellMeasurerCache.defaultWidth;\n }\n }]);\n\n return CellMeasurerCacheDecorator;\n}();\n\nexport { CellMeasurerCacheDecorator as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport CellMeasurerCacheDecorator from './CellMeasurerCacheDecorator';\nimport Grid from '../Grid';\nvar SCROLLBAR_SIZE_BUFFER = 20;\n/**\n * Renders 1, 2, or 4 Grids depending on configuration.\n * A main (body) Grid will always be rendered.\n * Optionally, 1-2 Grids for sticky header rows will also be rendered.\n * If no sticky columns, only 1 sticky header Grid will be rendered.\n * If sticky columns, 2 sticky header Grids will be rendered.\n */\n\nvar MultiGrid =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(MultiGrid, _React$PureComponent);\n\n function MultiGrid(props, context) {\n var _this;\n\n _classCallCheck(this, MultiGrid);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(MultiGrid).call(this, props, context));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n scrollLeft: 0,\n scrollTop: 0,\n scrollbarSize: 0,\n showHorizontalScrollbar: false,\n showVerticalScrollbar: false\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateColumnIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateRowIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_bottomLeftGridRef\", function (ref) {\n _this._bottomLeftGrid = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_bottomRightGridRef\", function (ref) {\n _this._bottomRightGrid = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_cellRendererBottomLeftGrid\", function (_ref) {\n var rowIndex = _ref.rowIndex,\n rest = _objectWithoutProperties(_ref, [\"rowIndex\"]);\n\n var _this$props = _this.props,\n cellRenderer = _this$props.cellRenderer,\n fixedRowCount = _this$props.fixedRowCount,\n rowCount = _this$props.rowCount;\n\n if (rowIndex === rowCount - fixedRowCount) {\n return React.createElement(\"div\", {\n key: rest.key,\n style: _objectSpread({}, rest.style, {\n height: SCROLLBAR_SIZE_BUFFER\n })\n });\n } else {\n return cellRenderer(_objectSpread({}, rest, {\n parent: _assertThisInitialized(_this),\n rowIndex: rowIndex + fixedRowCount\n }));\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_cellRendererBottomRightGrid\", function (_ref2) {\n var columnIndex = _ref2.columnIndex,\n rowIndex = _ref2.rowIndex,\n rest = _objectWithoutProperties(_ref2, [\"columnIndex\", \"rowIndex\"]);\n\n var _this$props2 = _this.props,\n cellRenderer = _this$props2.cellRenderer,\n fixedColumnCount = _this$props2.fixedColumnCount,\n fixedRowCount = _this$props2.fixedRowCount;\n return cellRenderer(_objectSpread({}, rest, {\n columnIndex: columnIndex + fixedColumnCount,\n parent: _assertThisInitialized(_this),\n rowIndex: rowIndex + fixedRowCount\n }));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_cellRendererTopRightGrid\", function (_ref3) {\n var columnIndex = _ref3.columnIndex,\n rest = _objectWithoutProperties(_ref3, [\"columnIndex\"]);\n\n var _this$props3 = _this.props,\n cellRenderer = _this$props3.cellRenderer,\n columnCount = _this$props3.columnCount,\n fixedColumnCount = _this$props3.fixedColumnCount;\n\n if (columnIndex === columnCount - fixedColumnCount) {\n return React.createElement(\"div\", {\n key: rest.key,\n style: _objectSpread({}, rest.style, {\n width: SCROLLBAR_SIZE_BUFFER\n })\n });\n } else {\n return cellRenderer(_objectSpread({}, rest, {\n columnIndex: columnIndex + fixedColumnCount,\n parent: _assertThisInitialized(_this)\n }));\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_columnWidthRightGrid\", function (_ref4) {\n var index = _ref4.index;\n var _this$props4 = _this.props,\n columnCount = _this$props4.columnCount,\n fixedColumnCount = _this$props4.fixedColumnCount,\n columnWidth = _this$props4.columnWidth;\n var _this$state = _this.state,\n scrollbarSize = _this$state.scrollbarSize,\n showHorizontalScrollbar = _this$state.showHorizontalScrollbar; // An extra cell is added to the count\n // This gives the smaller Grid extra room for offset,\n // In case the main (bottom right) Grid has a scrollbar\n // If no scrollbar, the extra space is overflow:hidden anyway\n\n if (showHorizontalScrollbar && index === columnCount - fixedColumnCount) {\n return scrollbarSize;\n }\n\n return typeof columnWidth === 'function' ? columnWidth({\n index: index + fixedColumnCount\n }) : columnWidth;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (scrollInfo) {\n var scrollLeft = scrollInfo.scrollLeft,\n scrollTop = scrollInfo.scrollTop;\n\n _this.setState({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n\n var onScroll = _this.props.onScroll;\n\n if (onScroll) {\n onScroll(scrollInfo);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollbarPresenceChange\", function (_ref5) {\n var horizontal = _ref5.horizontal,\n size = _ref5.size,\n vertical = _ref5.vertical;\n var _this$state2 = _this.state,\n showHorizontalScrollbar = _this$state2.showHorizontalScrollbar,\n showVerticalScrollbar = _this$state2.showVerticalScrollbar;\n\n if (horizontal !== showHorizontalScrollbar || vertical !== showVerticalScrollbar) {\n _this.setState({\n scrollbarSize: size,\n showHorizontalScrollbar: horizontal,\n showVerticalScrollbar: vertical\n });\n\n var onScrollbarPresenceChange = _this.props.onScrollbarPresenceChange;\n\n if (typeof onScrollbarPresenceChange === 'function') {\n onScrollbarPresenceChange({\n horizontal: horizontal,\n size: size,\n vertical: vertical\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollLeft\", function (scrollInfo) {\n var scrollLeft = scrollInfo.scrollLeft;\n\n _this._onScroll({\n scrollLeft: scrollLeft,\n scrollTop: _this.state.scrollTop\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollTop\", function (scrollInfo) {\n var scrollTop = scrollInfo.scrollTop;\n\n _this._onScroll({\n scrollTop: scrollTop,\n scrollLeft: _this.state.scrollLeft\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_rowHeightBottomGrid\", function (_ref6) {\n var index = _ref6.index;\n var _this$props5 = _this.props,\n fixedRowCount = _this$props5.fixedRowCount,\n rowCount = _this$props5.rowCount,\n rowHeight = _this$props5.rowHeight;\n var _this$state3 = _this.state,\n scrollbarSize = _this$state3.scrollbarSize,\n showVerticalScrollbar = _this$state3.showVerticalScrollbar; // An extra cell is added to the count\n // This gives the smaller Grid extra room for offset,\n // In case the main (bottom right) Grid has a scrollbar\n // If no scrollbar, the extra space is overflow:hidden anyway\n\n if (showVerticalScrollbar && index === rowCount - fixedRowCount) {\n return scrollbarSize;\n }\n\n return typeof rowHeight === 'function' ? rowHeight({\n index: index + fixedRowCount\n }) : rowHeight;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_topLeftGridRef\", function (ref) {\n _this._topLeftGrid = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_topRightGridRef\", function (ref) {\n _this._topRightGrid = ref;\n });\n\n var deferredMeasurementCache = props.deferredMeasurementCache,\n _fixedColumnCount = props.fixedColumnCount,\n _fixedRowCount = props.fixedRowCount;\n\n _this._maybeCalculateCachedStyles(true);\n\n if (deferredMeasurementCache) {\n _this._deferredMeasurementCacheBottomLeftGrid = _fixedRowCount > 0 ? new CellMeasurerCacheDecorator({\n cellMeasurerCache: deferredMeasurementCache,\n columnIndexOffset: 0,\n rowIndexOffset: _fixedRowCount\n }) : deferredMeasurementCache;\n _this._deferredMeasurementCacheBottomRightGrid = _fixedColumnCount > 0 || _fixedRowCount > 0 ? new CellMeasurerCacheDecorator({\n cellMeasurerCache: deferredMeasurementCache,\n columnIndexOffset: _fixedColumnCount,\n rowIndexOffset: _fixedRowCount\n }) : deferredMeasurementCache;\n _this._deferredMeasurementCacheTopRightGrid = _fixedColumnCount > 0 ? new CellMeasurerCacheDecorator({\n cellMeasurerCache: deferredMeasurementCache,\n columnIndexOffset: _fixedColumnCount,\n rowIndexOffset: 0\n }) : deferredMeasurementCache;\n }\n\n return _this;\n }\n\n _createClass(MultiGrid, [{\n key: \"forceUpdateGrids\",\n value: function forceUpdateGrids() {\n this._bottomLeftGrid && this._bottomLeftGrid.forceUpdate();\n this._bottomRightGrid && this._bottomRightGrid.forceUpdate();\n this._topLeftGrid && this._topLeftGrid.forceUpdate();\n this._topRightGrid && this._topRightGrid.forceUpdate();\n }\n /** See Grid#invalidateCellSizeAfterRender */\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender() {\n var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref7$columnIndex = _ref7.columnIndex,\n columnIndex = _ref7$columnIndex === void 0 ? 0 : _ref7$columnIndex,\n _ref7$rowIndex = _ref7.rowIndex,\n rowIndex = _ref7$rowIndex === void 0 ? 0 : _ref7$rowIndex;\n\n this._deferredInvalidateColumnIndex = typeof this._deferredInvalidateColumnIndex === 'number' ? Math.min(this._deferredInvalidateColumnIndex, columnIndex) : columnIndex;\n this._deferredInvalidateRowIndex = typeof this._deferredInvalidateRowIndex === 'number' ? Math.min(this._deferredInvalidateRowIndex, rowIndex) : rowIndex;\n }\n /** See Grid#measureAllCells */\n\n }, {\n key: \"measureAllCells\",\n value: function measureAllCells() {\n this._bottomLeftGrid && this._bottomLeftGrid.measureAllCells();\n this._bottomRightGrid && this._bottomRightGrid.measureAllCells();\n this._topLeftGrid && this._topLeftGrid.measureAllCells();\n this._topRightGrid && this._topRightGrid.measureAllCells();\n }\n /** See Grid#recomputeGridSize */\n\n }, {\n key: \"recomputeGridSize\",\n value: function recomputeGridSize() {\n var _ref8 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref8$columnIndex = _ref8.columnIndex,\n columnIndex = _ref8$columnIndex === void 0 ? 0 : _ref8$columnIndex,\n _ref8$rowIndex = _ref8.rowIndex,\n rowIndex = _ref8$rowIndex === void 0 ? 0 : _ref8$rowIndex;\n\n var _this$props6 = this.props,\n fixedColumnCount = _this$props6.fixedColumnCount,\n fixedRowCount = _this$props6.fixedRowCount;\n var adjustedColumnIndex = Math.max(0, columnIndex - fixedColumnCount);\n var adjustedRowIndex = Math.max(0, rowIndex - fixedRowCount);\n this._bottomLeftGrid && this._bottomLeftGrid.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: adjustedRowIndex\n });\n this._bottomRightGrid && this._bottomRightGrid.recomputeGridSize({\n columnIndex: adjustedColumnIndex,\n rowIndex: adjustedRowIndex\n });\n this._topLeftGrid && this._topLeftGrid.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n this._topRightGrid && this._topRightGrid.recomputeGridSize({\n columnIndex: adjustedColumnIndex,\n rowIndex: rowIndex\n });\n this._leftGridWidth = null;\n this._topGridHeight = null;\n\n this._maybeCalculateCachedStyles(true);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props7 = this.props,\n scrollLeft = _this$props7.scrollLeft,\n scrollTop = _this$props7.scrollTop;\n\n if (scrollLeft > 0 || scrollTop > 0) {\n var newState = {};\n\n if (scrollLeft > 0) {\n newState.scrollLeft = scrollLeft;\n }\n\n if (scrollTop > 0) {\n newState.scrollTop = scrollTop;\n }\n\n this.setState(newState);\n }\n\n this._handleInvalidatedGridSize();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._handleInvalidatedGridSize();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props8 = this.props,\n onScroll = _this$props8.onScroll,\n onSectionRendered = _this$props8.onSectionRendered,\n onScrollbarPresenceChange = _this$props8.onScrollbarPresenceChange,\n scrollLeftProp = _this$props8.scrollLeft,\n scrollToColumn = _this$props8.scrollToColumn,\n scrollTopProp = _this$props8.scrollTop,\n scrollToRow = _this$props8.scrollToRow,\n rest = _objectWithoutProperties(_this$props8, [\"onScroll\", \"onSectionRendered\", \"onScrollbarPresenceChange\", \"scrollLeft\", \"scrollToColumn\", \"scrollTop\", \"scrollToRow\"]);\n\n this._prepareForRender(); // Don't render any of our Grids if there are no cells.\n // This mirrors what Grid does,\n // And prevents us from recording inaccurage measurements when used with CellMeasurer.\n\n\n if (this.props.width === 0 || this.props.height === 0) {\n return null;\n } // scrollTop and scrollLeft props are explicitly filtered out and ignored\n\n\n var _this$state4 = this.state,\n scrollLeft = _this$state4.scrollLeft,\n scrollTop = _this$state4.scrollTop;\n return React.createElement(\"div\", {\n style: this._containerOuterStyle\n }, React.createElement(\"div\", {\n style: this._containerTopStyle\n }, this._renderTopLeftGrid(rest), this._renderTopRightGrid(_objectSpread({}, rest, {\n onScroll: onScroll,\n scrollLeft: scrollLeft\n }))), React.createElement(\"div\", {\n style: this._containerBottomStyle\n }, this._renderBottomLeftGrid(_objectSpread({}, rest, {\n onScroll: onScroll,\n scrollTop: scrollTop\n })), this._renderBottomRightGrid(_objectSpread({}, rest, {\n onScroll: onScroll,\n onSectionRendered: onSectionRendered,\n scrollLeft: scrollLeft,\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow,\n scrollTop: scrollTop\n }))));\n }\n }, {\n key: \"_getBottomGridHeight\",\n value: function _getBottomGridHeight(props) {\n var height = props.height;\n\n var topGridHeight = this._getTopGridHeight(props);\n\n return height - topGridHeight;\n }\n }, {\n key: \"_getLeftGridWidth\",\n value: function _getLeftGridWidth(props) {\n var fixedColumnCount = props.fixedColumnCount,\n columnWidth = props.columnWidth;\n\n if (this._leftGridWidth == null) {\n if (typeof columnWidth === 'function') {\n var leftGridWidth = 0;\n\n for (var index = 0; index < fixedColumnCount; index++) {\n leftGridWidth += columnWidth({\n index: index\n });\n }\n\n this._leftGridWidth = leftGridWidth;\n } else {\n this._leftGridWidth = columnWidth * fixedColumnCount;\n }\n }\n\n return this._leftGridWidth;\n }\n }, {\n key: \"_getRightGridWidth\",\n value: function _getRightGridWidth(props) {\n var width = props.width;\n\n var leftGridWidth = this._getLeftGridWidth(props);\n\n return width - leftGridWidth;\n }\n }, {\n key: \"_getTopGridHeight\",\n value: function _getTopGridHeight(props) {\n var fixedRowCount = props.fixedRowCount,\n rowHeight = props.rowHeight;\n\n if (this._topGridHeight == null) {\n if (typeof rowHeight === 'function') {\n var topGridHeight = 0;\n\n for (var index = 0; index < fixedRowCount; index++) {\n topGridHeight += rowHeight({\n index: index\n });\n }\n\n this._topGridHeight = topGridHeight;\n } else {\n this._topGridHeight = rowHeight * fixedRowCount;\n }\n }\n\n return this._topGridHeight;\n }\n }, {\n key: \"_handleInvalidatedGridSize\",\n value: function _handleInvalidatedGridSize() {\n if (typeof this._deferredInvalidateColumnIndex === 'number') {\n var columnIndex = this._deferredInvalidateColumnIndex;\n var rowIndex = this._deferredInvalidateRowIndex;\n this._deferredInvalidateColumnIndex = null;\n this._deferredInvalidateRowIndex = null;\n this.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n this.forceUpdate();\n }\n }\n /**\n * Avoid recreating inline styles each render; this bypasses Grid's shallowCompare.\n * This method recalculates styles only when specific props change.\n */\n\n }, {\n key: \"_maybeCalculateCachedStyles\",\n value: function _maybeCalculateCachedStyles(resetAll) {\n var _this$props9 = this.props,\n columnWidth = _this$props9.columnWidth,\n enableFixedColumnScroll = _this$props9.enableFixedColumnScroll,\n enableFixedRowScroll = _this$props9.enableFixedRowScroll,\n height = _this$props9.height,\n fixedColumnCount = _this$props9.fixedColumnCount,\n fixedRowCount = _this$props9.fixedRowCount,\n rowHeight = _this$props9.rowHeight,\n style = _this$props9.style,\n styleBottomLeftGrid = _this$props9.styleBottomLeftGrid,\n styleBottomRightGrid = _this$props9.styleBottomRightGrid,\n styleTopLeftGrid = _this$props9.styleTopLeftGrid,\n styleTopRightGrid = _this$props9.styleTopRightGrid,\n width = _this$props9.width;\n var sizeChange = resetAll || height !== this._lastRenderedHeight || width !== this._lastRenderedWidth;\n var leftSizeChange = resetAll || columnWidth !== this._lastRenderedColumnWidth || fixedColumnCount !== this._lastRenderedFixedColumnCount;\n var topSizeChange = resetAll || fixedRowCount !== this._lastRenderedFixedRowCount || rowHeight !== this._lastRenderedRowHeight;\n\n if (resetAll || sizeChange || style !== this._lastRenderedStyle) {\n this._containerOuterStyle = _objectSpread({\n height: height,\n overflow: 'visible',\n // Let :focus outline show through\n width: width\n }, style);\n }\n\n if (resetAll || sizeChange || topSizeChange) {\n this._containerTopStyle = {\n height: this._getTopGridHeight(this.props),\n position: 'relative',\n width: width\n };\n this._containerBottomStyle = {\n height: height - this._getTopGridHeight(this.props),\n overflow: 'visible',\n // Let :focus outline show through\n position: 'relative',\n width: width\n };\n }\n\n if (resetAll || styleBottomLeftGrid !== this._lastRenderedStyleBottomLeftGrid) {\n this._bottomLeftGridStyle = _objectSpread({\n left: 0,\n overflowX: 'hidden',\n overflowY: enableFixedColumnScroll ? 'auto' : 'hidden',\n position: 'absolute'\n }, styleBottomLeftGrid);\n }\n\n if (resetAll || leftSizeChange || styleBottomRightGrid !== this._lastRenderedStyleBottomRightGrid) {\n this._bottomRightGridStyle = _objectSpread({\n left: this._getLeftGridWidth(this.props),\n position: 'absolute'\n }, styleBottomRightGrid);\n }\n\n if (resetAll || styleTopLeftGrid !== this._lastRenderedStyleTopLeftGrid) {\n this._topLeftGridStyle = _objectSpread({\n left: 0,\n overflowX: 'hidden',\n overflowY: 'hidden',\n position: 'absolute',\n top: 0\n }, styleTopLeftGrid);\n }\n\n if (resetAll || leftSizeChange || styleTopRightGrid !== this._lastRenderedStyleTopRightGrid) {\n this._topRightGridStyle = _objectSpread({\n left: this._getLeftGridWidth(this.props),\n overflowX: enableFixedRowScroll ? 'auto' : 'hidden',\n overflowY: 'hidden',\n position: 'absolute',\n top: 0\n }, styleTopRightGrid);\n }\n\n this._lastRenderedColumnWidth = columnWidth;\n this._lastRenderedFixedColumnCount = fixedColumnCount;\n this._lastRenderedFixedRowCount = fixedRowCount;\n this._lastRenderedHeight = height;\n this._lastRenderedRowHeight = rowHeight;\n this._lastRenderedStyle = style;\n this._lastRenderedStyleBottomLeftGrid = styleBottomLeftGrid;\n this._lastRenderedStyleBottomRightGrid = styleBottomRightGrid;\n this._lastRenderedStyleTopLeftGrid = styleTopLeftGrid;\n this._lastRenderedStyleTopRightGrid = styleTopRightGrid;\n this._lastRenderedWidth = width;\n }\n }, {\n key: \"_prepareForRender\",\n value: function _prepareForRender() {\n if (this._lastRenderedColumnWidth !== this.props.columnWidth || this._lastRenderedFixedColumnCount !== this.props.fixedColumnCount) {\n this._leftGridWidth = null;\n }\n\n if (this._lastRenderedFixedRowCount !== this.props.fixedRowCount || this._lastRenderedRowHeight !== this.props.rowHeight) {\n this._topGridHeight = null;\n }\n\n this._maybeCalculateCachedStyles();\n\n this._lastRenderedColumnWidth = this.props.columnWidth;\n this._lastRenderedFixedColumnCount = this.props.fixedColumnCount;\n this._lastRenderedFixedRowCount = this.props.fixedRowCount;\n this._lastRenderedRowHeight = this.props.rowHeight;\n }\n }, {\n key: \"_renderBottomLeftGrid\",\n value: function _renderBottomLeftGrid(props) {\n var enableFixedColumnScroll = props.enableFixedColumnScroll,\n fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount,\n rowCount = props.rowCount,\n hideBottomLeftGridScrollbar = props.hideBottomLeftGridScrollbar;\n var showVerticalScrollbar = this.state.showVerticalScrollbar;\n\n if (!fixedColumnCount) {\n return null;\n }\n\n var additionalRowCount = showVerticalScrollbar ? 1 : 0,\n height = this._getBottomGridHeight(props),\n width = this._getLeftGridWidth(props),\n scrollbarSize = this.state.showVerticalScrollbar ? this.state.scrollbarSize : 0,\n gridWidth = hideBottomLeftGridScrollbar ? width + scrollbarSize : width;\n\n var bottomLeftGrid = React.createElement(Grid, _extends({}, props, {\n cellRenderer: this._cellRendererBottomLeftGrid,\n className: this.props.classNameBottomLeftGrid,\n columnCount: fixedColumnCount,\n deferredMeasurementCache: this._deferredMeasurementCacheBottomLeftGrid,\n height: height,\n onScroll: enableFixedColumnScroll ? this._onScrollTop : undefined,\n ref: this._bottomLeftGridRef,\n rowCount: Math.max(0, rowCount - fixedRowCount) + additionalRowCount,\n rowHeight: this._rowHeightBottomGrid,\n style: this._bottomLeftGridStyle,\n tabIndex: null,\n width: gridWidth\n }));\n\n if (hideBottomLeftGridScrollbar) {\n return React.createElement(\"div\", {\n className: \"BottomLeftGrid_ScrollWrapper\",\n style: _objectSpread({}, this._bottomLeftGridStyle, {\n height: height,\n width: width,\n overflowY: 'hidden'\n })\n }, bottomLeftGrid);\n }\n\n return bottomLeftGrid;\n }\n }, {\n key: \"_renderBottomRightGrid\",\n value: function _renderBottomRightGrid(props) {\n var columnCount = props.columnCount,\n fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount,\n rowCount = props.rowCount,\n scrollToColumn = props.scrollToColumn,\n scrollToRow = props.scrollToRow;\n return React.createElement(Grid, _extends({}, props, {\n cellRenderer: this._cellRendererBottomRightGrid,\n className: this.props.classNameBottomRightGrid,\n columnCount: Math.max(0, columnCount - fixedColumnCount),\n columnWidth: this._columnWidthRightGrid,\n deferredMeasurementCache: this._deferredMeasurementCacheBottomRightGrid,\n height: this._getBottomGridHeight(props),\n onScroll: this._onScroll,\n onScrollbarPresenceChange: this._onScrollbarPresenceChange,\n ref: this._bottomRightGridRef,\n rowCount: Math.max(0, rowCount - fixedRowCount),\n rowHeight: this._rowHeightBottomGrid,\n scrollToColumn: scrollToColumn - fixedColumnCount,\n scrollToRow: scrollToRow - fixedRowCount,\n style: this._bottomRightGridStyle,\n width: this._getRightGridWidth(props)\n }));\n }\n }, {\n key: \"_renderTopLeftGrid\",\n value: function _renderTopLeftGrid(props) {\n var fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount;\n\n if (!fixedColumnCount || !fixedRowCount) {\n return null;\n }\n\n return React.createElement(Grid, _extends({}, props, {\n className: this.props.classNameTopLeftGrid,\n columnCount: fixedColumnCount,\n height: this._getTopGridHeight(props),\n ref: this._topLeftGridRef,\n rowCount: fixedRowCount,\n style: this._topLeftGridStyle,\n tabIndex: null,\n width: this._getLeftGridWidth(props)\n }));\n }\n }, {\n key: \"_renderTopRightGrid\",\n value: function _renderTopRightGrid(props) {\n var columnCount = props.columnCount,\n enableFixedRowScroll = props.enableFixedRowScroll,\n fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount,\n scrollLeft = props.scrollLeft,\n hideTopRightGridScrollbar = props.hideTopRightGridScrollbar;\n var _this$state5 = this.state,\n showHorizontalScrollbar = _this$state5.showHorizontalScrollbar,\n scrollbarSize = _this$state5.scrollbarSize;\n\n if (!fixedRowCount) {\n return null;\n }\n\n var additionalColumnCount = showHorizontalScrollbar ? 1 : 0,\n height = this._getTopGridHeight(props),\n width = this._getRightGridWidth(props),\n additionalHeight = showHorizontalScrollbar ? scrollbarSize : 0;\n\n var gridHeight = height,\n style = this._topRightGridStyle;\n\n if (hideTopRightGridScrollbar) {\n gridHeight = height + additionalHeight;\n style = _objectSpread({}, this._topRightGridStyle, {\n left: 0\n });\n }\n\n var topRightGrid = React.createElement(Grid, _extends({}, props, {\n cellRenderer: this._cellRendererTopRightGrid,\n className: this.props.classNameTopRightGrid,\n columnCount: Math.max(0, columnCount - fixedColumnCount) + additionalColumnCount,\n columnWidth: this._columnWidthRightGrid,\n deferredMeasurementCache: this._deferredMeasurementCacheTopRightGrid,\n height: gridHeight,\n onScroll: enableFixedRowScroll ? this._onScrollLeft : undefined,\n ref: this._topRightGridRef,\n rowCount: fixedRowCount,\n scrollLeft: scrollLeft,\n style: style,\n tabIndex: null,\n width: width\n }));\n\n if (hideTopRightGridScrollbar) {\n return React.createElement(\"div\", {\n className: \"TopRightGrid_ScrollWrapper\",\n style: _objectSpread({}, this._topRightGridStyle, {\n height: height,\n width: width,\n overflowX: 'hidden'\n })\n }, topRightGrid);\n }\n\n return topRightGrid;\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.scrollLeft !== prevState.scrollLeft || nextProps.scrollTop !== prevState.scrollTop) {\n return {\n scrollLeft: nextProps.scrollLeft != null && nextProps.scrollLeft >= 0 ? nextProps.scrollLeft : prevState.scrollLeft,\n scrollTop: nextProps.scrollTop != null && nextProps.scrollTop >= 0 ? nextProps.scrollTop : prevState.scrollTop\n };\n }\n\n return null;\n }\n }]);\n\n return MultiGrid;\n}(React.PureComponent);\n\n_defineProperty(MultiGrid, \"defaultProps\", {\n classNameBottomLeftGrid: '',\n classNameBottomRightGrid: '',\n classNameTopLeftGrid: '',\n classNameTopRightGrid: '',\n enableFixedColumnScroll: false,\n enableFixedRowScroll: false,\n fixedColumnCount: 0,\n fixedRowCount: 0,\n scrollToColumn: -1,\n scrollToRow: -1,\n style: {},\n styleBottomLeftGrid: {},\n styleBottomRightGrid: {},\n styleTopLeftGrid: {},\n styleTopRightGrid: {},\n hideTopRightGridScrollbar: false,\n hideBottomLeftGridScrollbar: false\n});\n\nMultiGrid.propTypes = process.env.NODE_ENV !== \"production\" ? {\n classNameBottomLeftGrid: PropTypes.string.isRequired,\n classNameBottomRightGrid: PropTypes.string.isRequired,\n classNameTopLeftGrid: PropTypes.string.isRequired,\n classNameTopRightGrid: PropTypes.string.isRequired,\n enableFixedColumnScroll: PropTypes.bool.isRequired,\n enableFixedRowScroll: PropTypes.bool.isRequired,\n fixedColumnCount: PropTypes.number.isRequired,\n fixedRowCount: PropTypes.number.isRequired,\n onScrollbarPresenceChange: PropTypes.func,\n style: PropTypes.object.isRequired,\n styleBottomLeftGrid: PropTypes.object.isRequired,\n styleBottomRightGrid: PropTypes.object.isRequired,\n styleTopLeftGrid: PropTypes.object.isRequired,\n styleTopRightGrid: PropTypes.object.isRequired,\n hideTopRightGridScrollbar: PropTypes.bool,\n hideBottomLeftGridScrollbar: PropTypes.bool\n} : {};\npolyfill(MultiGrid);\nexport default MultiGrid;","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n/**\n * HOC that simplifies the process of synchronizing scrolling between two or more virtualized components.\n */\n\nvar ScrollSync =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(ScrollSync, _React$PureComponent);\n\n function ScrollSync(props, context) {\n var _this;\n\n _classCallCheck(this, ScrollSync);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ScrollSync).call(this, props, context));\n _this.state = {\n clientHeight: 0,\n clientWidth: 0,\n scrollHeight: 0,\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0\n };\n _this._onScroll = _this._onScroll.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(ScrollSync, [{\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var _this$state = this.state,\n clientHeight = _this$state.clientHeight,\n clientWidth = _this$state.clientWidth,\n scrollHeight = _this$state.scrollHeight,\n scrollLeft = _this$state.scrollLeft,\n scrollTop = _this$state.scrollTop,\n scrollWidth = _this$state.scrollWidth;\n return children({\n clientHeight: clientHeight,\n clientWidth: clientWidth,\n onScroll: this._onScroll,\n scrollHeight: scrollHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: scrollWidth\n });\n }\n }, {\n key: \"_onScroll\",\n value: function _onScroll(_ref) {\n var clientHeight = _ref.clientHeight,\n clientWidth = _ref.clientWidth,\n scrollHeight = _ref.scrollHeight,\n scrollLeft = _ref.scrollLeft,\n scrollTop = _ref.scrollTop,\n scrollWidth = _ref.scrollWidth;\n this.setState({\n clientHeight: clientHeight,\n clientWidth: clientWidth,\n scrollHeight: scrollHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: scrollWidth\n });\n }\n }]);\n\n return ScrollSync;\n}(React.PureComponent);\n\nexport { ScrollSync as default };\nScrollSync.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Function responsible for rendering 2 or more virtualized components.\n * This function should implement the following signature:\n * ({ onScroll, scrollLeft, scrollTop }) => PropTypes.element\n */\n children: PropTypes.func.isRequired\n} : {};","import * as React from 'react';\nexport default function defaultHeaderRowRenderer(_ref) {\n var className = _ref.className,\n columns = _ref.columns,\n style = _ref.style;\n return React.createElement(\"div\", {\n className: className,\n role: \"row\",\n style: style\n }, columns);\n}\ndefaultHeaderRowRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_HeaderRowRendererParams === PropTypes.any ? {} : bpfrpt_proptype_HeaderRowRendererParams;\nimport { bpfrpt_proptype_HeaderRowRendererParams } from \"./types\";\nimport PropTypes from \"prop-types\";","var SortDirection = {\n /**\n * Sort items in ascending order.\n * This means arranging from the lowest value to the highest (e.g. a-z, 0-9).\n */\n ASC: 'ASC',\n\n /**\n * Sort items in descending order.\n * This means arranging from the highest value to the lowest (e.g. z-a, 9-0).\n */\n DESC: 'DESC'\n};\nexport default SortDirection;","import clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport SortDirection from './SortDirection';\n/**\n * Displayed beside a header to indicate that a Table is currently sorted by this column.\n */\n\nexport default function SortIndicator(_ref) {\n var sortDirection = _ref.sortDirection;\n var classNames = clsx('ReactVirtualized__Table__sortableHeaderIcon', {\n 'ReactVirtualized__Table__sortableHeaderIcon--ASC': sortDirection === SortDirection.ASC,\n 'ReactVirtualized__Table__sortableHeaderIcon--DESC': sortDirection === SortDirection.DESC\n });\n return React.createElement(\"svg\", {\n className: classNames,\n width: 18,\n height: 18,\n viewBox: \"0 0 24 24\"\n }, sortDirection === SortDirection.ASC ? React.createElement(\"path\", {\n d: \"M7 14l5-5 5 5z\"\n }) : React.createElement(\"path\", {\n d: \"M7 10l5 5 5-5z\"\n }), React.createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }));\n}\nSortIndicator.propTypes = process.env.NODE_ENV !== \"production\" ? {\n sortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC])\n} : {};","import * as React from 'react';\nimport SortIndicator from './SortIndicator';\n\n/**\n * Default table header renderer.\n */\nexport default function defaultHeaderRenderer(_ref) {\n var dataKey = _ref.dataKey,\n label = _ref.label,\n sortBy = _ref.sortBy,\n sortDirection = _ref.sortDirection;\n var showSortIndicator = sortBy === dataKey;\n var children = [React.createElement(\"span\", {\n className: \"ReactVirtualized__Table__headerTruncatedText\",\n key: \"label\",\n title: typeof label === 'string' ? label : null\n }, label)];\n\n if (showSortIndicator) {\n children.push(React.createElement(SortIndicator, {\n key: \"SortIndicator\",\n sortDirection: sortDirection\n }));\n }\n\n return children;\n}\ndefaultHeaderRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_HeaderRendererParams === PropTypes.any ? {} : bpfrpt_proptype_HeaderRendererParams;\nimport { bpfrpt_proptype_HeaderRendererParams } from \"./types\";\nimport PropTypes from \"prop-types\";","import _extends from \"@babel/runtime/helpers/extends\";\nimport * as React from 'react';\n\n/**\n * Default row renderer for Table.\n */\nexport default function defaultRowRenderer(_ref) {\n var className = _ref.className,\n columns = _ref.columns,\n index = _ref.index,\n key = _ref.key,\n onRowClick = _ref.onRowClick,\n onRowDoubleClick = _ref.onRowDoubleClick,\n onRowMouseOut = _ref.onRowMouseOut,\n onRowMouseOver = _ref.onRowMouseOver,\n onRowRightClick = _ref.onRowRightClick,\n rowData = _ref.rowData,\n style = _ref.style;\n var a11yProps = {\n 'aria-rowindex': index + 1\n };\n\n if (onRowClick || onRowDoubleClick || onRowMouseOut || onRowMouseOver || onRowRightClick) {\n a11yProps['aria-label'] = 'row';\n a11yProps.tabIndex = 0;\n\n if (onRowClick) {\n a11yProps.onClick = function (event) {\n return onRowClick({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n\n if (onRowDoubleClick) {\n a11yProps.onDoubleClick = function (event) {\n return onRowDoubleClick({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n\n if (onRowMouseOut) {\n a11yProps.onMouseOut = function (event) {\n return onRowMouseOut({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n\n if (onRowMouseOver) {\n a11yProps.onMouseOver = function (event) {\n return onRowMouseOver({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n\n if (onRowRightClick) {\n a11yProps.onContextMenu = function (event) {\n return onRowRightClick({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n }\n\n return React.createElement(\"div\", _extends({}, a11yProps, {\n className: className,\n key: key,\n role: \"row\",\n style: style\n }), columns);\n}\ndefaultRowRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_RowRendererParams === PropTypes.any ? {} : bpfrpt_proptype_RowRendererParams;\nimport { bpfrpt_proptype_RowRendererParams } from \"./types\";\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport defaultHeaderRenderer from './defaultHeaderRenderer';\nimport defaultCellRenderer from './defaultCellRenderer';\nimport defaultCellDataGetter from './defaultCellDataGetter';\nimport SortDirection from './SortDirection';\n/**\n * Describes the header and cell contents of a table column.\n */\n\nvar Column =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(Column, _React$Component);\n\n function Column() {\n _classCallCheck(this, Column);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Column).apply(this, arguments));\n }\n\n return Column;\n}(React.Component);\n\n_defineProperty(Column, \"defaultProps\", {\n cellDataGetter: defaultCellDataGetter,\n cellRenderer: defaultCellRenderer,\n defaultSortDirection: SortDirection.ASC,\n flexGrow: 0,\n flexShrink: 1,\n headerRenderer: defaultHeaderRenderer,\n style: {}\n});\n\nexport { Column as default };\nColumn.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** Optional aria-label value to set on the column header */\n 'aria-label': PropTypes.string,\n\n /**\n * Callback responsible for returning a cell's data, given its :dataKey\n * ({ columnData: any, dataKey: string, rowData: any }): any\n */\n cellDataGetter: PropTypes.func,\n\n /**\n * Callback responsible for rendering a cell's contents.\n * ({ cellData: any, columnData: any, dataKey: string, rowData: any, rowIndex: number }): node\n */\n cellRenderer: PropTypes.func,\n\n /** Optional CSS class to apply to cell */\n className: PropTypes.string,\n\n /** Optional additional data passed to this column's :cellDataGetter */\n columnData: PropTypes.object,\n\n /** Uniquely identifies the row-data attribute corresponding to this cell */\n dataKey: PropTypes.any.isRequired,\n\n /** Optional direction to be used when clicked the first time */\n defaultSortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC]),\n\n /** If sort is enabled for the table at large, disable it for this column */\n disableSort: PropTypes.bool,\n\n /** Flex grow style; defaults to 0 */\n flexGrow: PropTypes.number,\n\n /** Flex shrink style; defaults to 1 */\n flexShrink: PropTypes.number,\n\n /** Optional CSS class to apply to this column's header */\n headerClassName: PropTypes.string,\n\n /**\n * Optional callback responsible for rendering a column header contents.\n * ({ columnData: object, dataKey: string, disableSort: boolean, label: node, sortBy: string, sortDirection: string }): PropTypes.node\n */\n headerRenderer: PropTypes.func.isRequired,\n\n /** Optional inline style to apply to this column's header */\n headerStyle: PropTypes.object,\n\n /** Optional id to set on the column header */\n id: PropTypes.string,\n\n /** Header label for this column */\n label: PropTypes.node,\n\n /** Maximum width of column; this property will only be used if :flexGrow is > 0. */\n maxWidth: PropTypes.number,\n\n /** Minimum width of column. */\n minWidth: PropTypes.number,\n\n /** Optional inline style to apply to cell */\n style: PropTypes.object,\n\n /** Flex basis (width) for this column; This value can grow or shrink based on :flexGrow and :flexShrink properties. */\n width: PropTypes.number.isRequired\n} : {};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport clsx from 'clsx';\nimport Column from './Column';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { findDOMNode } from 'react-dom';\nimport Grid, { accessibilityOverscanIndicesGetter } from '../Grid';\nimport defaultRowRenderer from './defaultRowRenderer';\nimport defaultHeaderRowRenderer from './defaultHeaderRowRenderer';\nimport SortDirection from './SortDirection';\n/**\n * Table component with fixed headers and virtualized rows for improved performance with large data sets.\n * This component expects explicit width, height, and padding parameters.\n */\n\nvar Table =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Table, _React$PureComponent);\n\n function Table(props) {\n var _this;\n\n _classCallCheck(this, Table);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Table).call(this, props));\n _this.state = {\n scrollbarWidth: 0\n };\n _this._createColumn = _this._createColumn.bind(_assertThisInitialized(_this));\n _this._createRow = _this._createRow.bind(_assertThisInitialized(_this));\n _this._onScroll = _this._onScroll.bind(_assertThisInitialized(_this));\n _this._onSectionRendered = _this._onSectionRendered.bind(_assertThisInitialized(_this));\n _this._setRef = _this._setRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(Table, [{\n key: \"forceUpdateGrid\",\n value: function forceUpdateGrid() {\n if (this.Grid) {\n this.Grid.forceUpdate();\n }\n }\n /** See Grid#getOffsetForCell */\n\n }, {\n key: \"getOffsetForRow\",\n value: function getOffsetForRow(_ref) {\n var alignment = _ref.alignment,\n index = _ref.index;\n\n if (this.Grid) {\n var _this$Grid$getOffsetF = this.Grid.getOffsetForCell({\n alignment: alignment,\n rowIndex: index\n }),\n scrollTop = _this$Grid$getOffsetF.scrollTop;\n\n return scrollTop;\n }\n\n return 0;\n }\n /** CellMeasurer compatibility */\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender(_ref2) {\n var columnIndex = _ref2.columnIndex,\n rowIndex = _ref2.rowIndex;\n\n if (this.Grid) {\n this.Grid.invalidateCellSizeAfterRender({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n /** See Grid#measureAllCells */\n\n }, {\n key: \"measureAllRows\",\n value: function measureAllRows() {\n if (this.Grid) {\n this.Grid.measureAllCells();\n }\n }\n /** CellMeasurer compatibility */\n\n }, {\n key: \"recomputeGridSize\",\n value: function recomputeGridSize() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$columnIndex = _ref3.columnIndex,\n columnIndex = _ref3$columnIndex === void 0 ? 0 : _ref3$columnIndex,\n _ref3$rowIndex = _ref3.rowIndex,\n rowIndex = _ref3$rowIndex === void 0 ? 0 : _ref3$rowIndex;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n /** See Grid#recomputeGridSize */\n\n }, {\n key: \"recomputeRowHeights\",\n value: function recomputeRowHeights() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: index\n });\n }\n }\n /** See Grid#scrollToPosition */\n\n }, {\n key: \"scrollToPosition\",\n value: function scrollToPosition() {\n var scrollTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToPosition({\n scrollTop: scrollTop\n });\n }\n }\n /** See Grid#scrollToCell */\n\n }, {\n key: \"scrollToRow\",\n value: function scrollToRow() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToCell({\n columnIndex: 0,\n rowIndex: index\n });\n }\n }\n }, {\n key: \"getScrollbarWidth\",\n value: function getScrollbarWidth() {\n if (this.Grid) {\n var _Grid = findDOMNode(this.Grid);\n\n var clientWidth = _Grid.clientWidth || 0;\n var offsetWidth = _Grid.offsetWidth || 0;\n return offsetWidth - clientWidth;\n }\n\n return 0;\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._setScrollbarWidth();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._setScrollbarWidth();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n children = _this$props.children,\n className = _this$props.className,\n disableHeader = _this$props.disableHeader,\n gridClassName = _this$props.gridClassName,\n gridStyle = _this$props.gridStyle,\n headerHeight = _this$props.headerHeight,\n headerRowRenderer = _this$props.headerRowRenderer,\n height = _this$props.height,\n id = _this$props.id,\n noRowsRenderer = _this$props.noRowsRenderer,\n rowClassName = _this$props.rowClassName,\n rowStyle = _this$props.rowStyle,\n scrollToIndex = _this$props.scrollToIndex,\n style = _this$props.style,\n width = _this$props.width;\n var scrollbarWidth = this.state.scrollbarWidth;\n var availableRowsHeight = disableHeader ? height : height - headerHeight;\n var rowClass = typeof rowClassName === 'function' ? rowClassName({\n index: -1\n }) : rowClassName;\n var rowStyleObject = typeof rowStyle === 'function' ? rowStyle({\n index: -1\n }) : rowStyle; // Precompute and cache column styles before rendering rows and columns to speed things up\n\n this._cachedColumnStyles = [];\n React.Children.toArray(children).forEach(function (column, index) {\n var flexStyles = _this2._getFlexStyleForColumn(column, column.props.style);\n\n _this2._cachedColumnStyles[index] = _objectSpread({\n overflow: 'hidden'\n }, flexStyles);\n }); // Note that we specify :rowCount, :scrollbarWidth, :sortBy, and :sortDirection as properties on Grid even though these have nothing to do with Grid.\n // This is done because Grid is a pure component and won't update unless its properties or state has changed.\n // Any property that should trigger a re-render of Grid then is specified here to avoid a stale display.\n\n return React.createElement(\"div\", {\n \"aria-label\": this.props['aria-label'],\n \"aria-labelledby\": this.props['aria-labelledby'],\n \"aria-colcount\": React.Children.toArray(children).length,\n \"aria-rowcount\": this.props.rowCount,\n className: clsx('ReactVirtualized__Table', className),\n id: id,\n role: \"grid\",\n style: style\n }, !disableHeader && headerRowRenderer({\n className: clsx('ReactVirtualized__Table__headerRow', rowClass),\n columns: this._getHeaderColumns(),\n style: _objectSpread({\n height: headerHeight,\n overflow: 'hidden',\n paddingRight: scrollbarWidth,\n width: width\n }, rowStyleObject)\n }), React.createElement(Grid, _extends({}, this.props, {\n \"aria-readonly\": null,\n autoContainerWidth: true,\n className: clsx('ReactVirtualized__Table__Grid', gridClassName),\n cellRenderer: this._createRow,\n columnWidth: width,\n columnCount: 1,\n height: availableRowsHeight,\n id: undefined,\n noContentRenderer: noRowsRenderer,\n onScroll: this._onScroll,\n onSectionRendered: this._onSectionRendered,\n ref: this._setRef,\n role: \"rowgroup\",\n scrollbarWidth: scrollbarWidth,\n scrollToRow: scrollToIndex,\n style: _objectSpread({}, gridStyle, {\n overflowX: 'hidden'\n })\n })));\n }\n }, {\n key: \"_createColumn\",\n value: function _createColumn(_ref4) {\n var column = _ref4.column,\n columnIndex = _ref4.columnIndex,\n isScrolling = _ref4.isScrolling,\n parent = _ref4.parent,\n rowData = _ref4.rowData,\n rowIndex = _ref4.rowIndex;\n var onColumnClick = this.props.onColumnClick;\n var _column$props = column.props,\n cellDataGetter = _column$props.cellDataGetter,\n cellRenderer = _column$props.cellRenderer,\n className = _column$props.className,\n columnData = _column$props.columnData,\n dataKey = _column$props.dataKey,\n id = _column$props.id;\n var cellData = cellDataGetter({\n columnData: columnData,\n dataKey: dataKey,\n rowData: rowData\n });\n var renderedCell = cellRenderer({\n cellData: cellData,\n columnData: columnData,\n columnIndex: columnIndex,\n dataKey: dataKey,\n isScrolling: isScrolling,\n parent: parent,\n rowData: rowData,\n rowIndex: rowIndex\n });\n\n var onClick = function onClick(event) {\n onColumnClick && onColumnClick({\n columnData: columnData,\n dataKey: dataKey,\n event: event\n });\n };\n\n var style = this._cachedColumnStyles[columnIndex];\n var title = typeof renderedCell === 'string' ? renderedCell : null; // Avoid using object-spread syntax with multiple objects here,\n // Since it results in an extra method call to 'babel-runtime/helpers/extends'\n // See PR https://github.com/bvaughn/react-virtualized/pull/942\n\n return React.createElement(\"div\", {\n \"aria-colindex\": columnIndex + 1,\n \"aria-describedby\": id,\n className: clsx('ReactVirtualized__Table__rowColumn', className),\n key: 'Row' + rowIndex + '-' + 'Col' + columnIndex,\n onClick: onClick,\n role: \"gridcell\",\n style: style,\n title: title\n }, renderedCell);\n }\n }, {\n key: \"_createHeader\",\n value: function _createHeader(_ref5) {\n var column = _ref5.column,\n index = _ref5.index;\n var _this$props2 = this.props,\n headerClassName = _this$props2.headerClassName,\n headerStyle = _this$props2.headerStyle,\n onHeaderClick = _this$props2.onHeaderClick,\n sort = _this$props2.sort,\n sortBy = _this$props2.sortBy,\n sortDirection = _this$props2.sortDirection;\n var _column$props2 = column.props,\n columnData = _column$props2.columnData,\n dataKey = _column$props2.dataKey,\n defaultSortDirection = _column$props2.defaultSortDirection,\n disableSort = _column$props2.disableSort,\n headerRenderer = _column$props2.headerRenderer,\n id = _column$props2.id,\n label = _column$props2.label;\n var sortEnabled = !disableSort && sort;\n var classNames = clsx('ReactVirtualized__Table__headerColumn', headerClassName, column.props.headerClassName, {\n ReactVirtualized__Table__sortableHeaderColumn: sortEnabled\n });\n\n var style = this._getFlexStyleForColumn(column, _objectSpread({}, headerStyle, {}, column.props.headerStyle));\n\n var renderedHeader = headerRenderer({\n columnData: columnData,\n dataKey: dataKey,\n disableSort: disableSort,\n label: label,\n sortBy: sortBy,\n sortDirection: sortDirection\n });\n var headerOnClick, headerOnKeyDown, headerTabIndex, headerAriaSort, headerAriaLabel;\n\n if (sortEnabled || onHeaderClick) {\n // If this is a sortable header, clicking it should update the table data's sorting.\n var isFirstTimeSort = sortBy !== dataKey; // If this is the firstTime sort of this column, use the column default sort order.\n // Otherwise, invert the direction of the sort.\n\n var newSortDirection = isFirstTimeSort ? defaultSortDirection : sortDirection === SortDirection.DESC ? SortDirection.ASC : SortDirection.DESC;\n\n var onClick = function onClick(event) {\n sortEnabled && sort({\n defaultSortDirection: defaultSortDirection,\n event: event,\n sortBy: dataKey,\n sortDirection: newSortDirection\n });\n onHeaderClick && onHeaderClick({\n columnData: columnData,\n dataKey: dataKey,\n event: event\n });\n };\n\n var onKeyDown = function onKeyDown(event) {\n if (event.key === 'Enter' || event.key === ' ') {\n onClick(event);\n }\n };\n\n headerAriaLabel = column.props['aria-label'] || label || dataKey;\n headerAriaSort = 'none';\n headerTabIndex = 0;\n headerOnClick = onClick;\n headerOnKeyDown = onKeyDown;\n }\n\n if (sortBy === dataKey) {\n headerAriaSort = sortDirection === SortDirection.ASC ? 'ascending' : 'descending';\n } // Avoid using object-spread syntax with multiple objects here,\n // Since it results in an extra method call to 'babel-runtime/helpers/extends'\n // See PR https://github.com/bvaughn/react-virtualized/pull/942\n\n\n return React.createElement(\"div\", {\n \"aria-label\": headerAriaLabel,\n \"aria-sort\": headerAriaSort,\n className: classNames,\n id: id,\n key: 'Header-Col' + index,\n onClick: headerOnClick,\n onKeyDown: headerOnKeyDown,\n role: \"columnheader\",\n style: style,\n tabIndex: headerTabIndex\n }, renderedHeader);\n }\n }, {\n key: \"_createRow\",\n value: function _createRow(_ref6) {\n var _this3 = this;\n\n var index = _ref6.rowIndex,\n isScrolling = _ref6.isScrolling,\n key = _ref6.key,\n parent = _ref6.parent,\n style = _ref6.style;\n var _this$props3 = this.props,\n children = _this$props3.children,\n onRowClick = _this$props3.onRowClick,\n onRowDoubleClick = _this$props3.onRowDoubleClick,\n onRowRightClick = _this$props3.onRowRightClick,\n onRowMouseOver = _this$props3.onRowMouseOver,\n onRowMouseOut = _this$props3.onRowMouseOut,\n rowClassName = _this$props3.rowClassName,\n rowGetter = _this$props3.rowGetter,\n rowRenderer = _this$props3.rowRenderer,\n rowStyle = _this$props3.rowStyle;\n var scrollbarWidth = this.state.scrollbarWidth;\n var rowClass = typeof rowClassName === 'function' ? rowClassName({\n index: index\n }) : rowClassName;\n var rowStyleObject = typeof rowStyle === 'function' ? rowStyle({\n index: index\n }) : rowStyle;\n var rowData = rowGetter({\n index: index\n });\n var columns = React.Children.toArray(children).map(function (column, columnIndex) {\n return _this3._createColumn({\n column: column,\n columnIndex: columnIndex,\n isScrolling: isScrolling,\n parent: parent,\n rowData: rowData,\n rowIndex: index,\n scrollbarWidth: scrollbarWidth\n });\n });\n var className = clsx('ReactVirtualized__Table__row', rowClass);\n\n var flattenedStyle = _objectSpread({}, style, {\n height: this._getRowHeight(index),\n overflow: 'hidden',\n paddingRight: scrollbarWidth\n }, rowStyleObject);\n\n return rowRenderer({\n className: className,\n columns: columns,\n index: index,\n isScrolling: isScrolling,\n key: key,\n onRowClick: onRowClick,\n onRowDoubleClick: onRowDoubleClick,\n onRowRightClick: onRowRightClick,\n onRowMouseOver: onRowMouseOver,\n onRowMouseOut: onRowMouseOut,\n rowData: rowData,\n style: flattenedStyle\n });\n }\n /**\n * Determines the flex-shrink, flex-grow, and width values for a cell (header or column).\n */\n\n }, {\n key: \"_getFlexStyleForColumn\",\n value: function _getFlexStyleForColumn(column) {\n var customStyle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var flexValue = \"\".concat(column.props.flexGrow, \" \").concat(column.props.flexShrink, \" \").concat(column.props.width, \"px\");\n\n var style = _objectSpread({}, customStyle, {\n flex: flexValue,\n msFlex: flexValue,\n WebkitFlex: flexValue\n });\n\n if (column.props.maxWidth) {\n style.maxWidth = column.props.maxWidth;\n }\n\n if (column.props.minWidth) {\n style.minWidth = column.props.minWidth;\n }\n\n return style;\n }\n }, {\n key: \"_getHeaderColumns\",\n value: function _getHeaderColumns() {\n var _this4 = this;\n\n var _this$props4 = this.props,\n children = _this$props4.children,\n disableHeader = _this$props4.disableHeader;\n var items = disableHeader ? [] : React.Children.toArray(children);\n return items.map(function (column, index) {\n return _this4._createHeader({\n column: column,\n index: index\n });\n });\n }\n }, {\n key: \"_getRowHeight\",\n value: function _getRowHeight(rowIndex) {\n var rowHeight = this.props.rowHeight;\n return typeof rowHeight === 'function' ? rowHeight({\n index: rowIndex\n }) : rowHeight;\n }\n }, {\n key: \"_onScroll\",\n value: function _onScroll(_ref7) {\n var clientHeight = _ref7.clientHeight,\n scrollHeight = _ref7.scrollHeight,\n scrollTop = _ref7.scrollTop;\n var onScroll = this.props.onScroll;\n onScroll({\n clientHeight: clientHeight,\n scrollHeight: scrollHeight,\n scrollTop: scrollTop\n });\n }\n }, {\n key: \"_onSectionRendered\",\n value: function _onSectionRendered(_ref8) {\n var rowOverscanStartIndex = _ref8.rowOverscanStartIndex,\n rowOverscanStopIndex = _ref8.rowOverscanStopIndex,\n rowStartIndex = _ref8.rowStartIndex,\n rowStopIndex = _ref8.rowStopIndex;\n var onRowsRendered = this.props.onRowsRendered;\n onRowsRendered({\n overscanStartIndex: rowOverscanStartIndex,\n overscanStopIndex: rowOverscanStopIndex,\n startIndex: rowStartIndex,\n stopIndex: rowStopIndex\n });\n }\n }, {\n key: \"_setRef\",\n value: function _setRef(ref) {\n this.Grid = ref;\n }\n }, {\n key: \"_setScrollbarWidth\",\n value: function _setScrollbarWidth() {\n var scrollbarWidth = this.getScrollbarWidth();\n this.setState({\n scrollbarWidth: scrollbarWidth\n });\n }\n }]);\n\n return Table;\n}(React.PureComponent);\n\n_defineProperty(Table, \"defaultProps\", {\n disableHeader: false,\n estimatedRowSize: 30,\n headerHeight: 0,\n headerStyle: {},\n noRowsRenderer: function noRowsRenderer() {\n return null;\n },\n onRowsRendered: function onRowsRendered() {\n return null;\n },\n onScroll: function onScroll() {\n return null;\n },\n overscanIndicesGetter: accessibilityOverscanIndicesGetter,\n overscanRowCount: 10,\n rowRenderer: defaultRowRenderer,\n headerRowRenderer: defaultHeaderRowRenderer,\n rowStyle: {},\n scrollToAlignment: 'auto',\n scrollToIndex: -1,\n style: {}\n});\n\nexport { Table as default };\nTable.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** This is just set on the grid top element. */\n 'aria-label': PropTypes.string,\n\n /** This is just set on the grid top element. */\n 'aria-labelledby': PropTypes.string,\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height\n * of rows can stretch the window. Intended for use with WindowScroller\n */\n autoHeight: PropTypes.bool,\n\n /** One or more Columns describing the data displayed in this row */\n children: function children(props) {\n var children = React.Children.toArray(props.children);\n\n for (var i = 0; i < children.length; i++) {\n var childType = children[i].type;\n\n if (childType !== Column && !(childType.prototype instanceof Column)) {\n return new Error('Table only accepts children of type Column');\n }\n }\n },\n\n /** Optional CSS class name */\n className: PropTypes.string,\n\n /** Disable rendering the header at all */\n disableHeader: PropTypes.bool,\n\n /**\n * Used to estimate the total height of a Table before all of its rows have actually been measured.\n * The estimated total height is adjusted as rows are rendered.\n */\n estimatedRowSize: PropTypes.number.isRequired,\n\n /** Optional custom CSS class name to attach to inner Grid element. */\n gridClassName: PropTypes.string,\n\n /** Optional inline style to attach to inner Grid element. */\n gridStyle: PropTypes.object,\n\n /** Optional CSS class to apply to all column headers */\n headerClassName: PropTypes.string,\n\n /** Fixed height of header row */\n headerHeight: PropTypes.number.isRequired,\n\n /**\n * Responsible for rendering a table row given an array of columns:\n * Should implement the following interface: ({\n * className: string,\n * columns: any[],\n * style: any\n * }): PropTypes.node\n */\n headerRowRenderer: PropTypes.func,\n\n /** Optional custom inline style to attach to table header columns. */\n headerStyle: PropTypes.object,\n\n /** Fixed/available height for out DOM element */\n height: PropTypes.number.isRequired,\n\n /** Optional id */\n id: PropTypes.string,\n\n /** Optional renderer to be used in place of table body rows when rowCount is 0 */\n noRowsRenderer: PropTypes.func,\n\n /**\n * Optional callback when a column is clicked.\n * ({ columnData: any, dataKey: string }): void\n */\n onColumnClick: PropTypes.func,\n\n /**\n * Optional callback when a column's header is clicked.\n * ({ columnData: any, dataKey: string }): void\n */\n onHeaderClick: PropTypes.func,\n\n /**\n * Callback invoked when a user clicks on a table row.\n * ({ index: number }): void\n */\n onRowClick: PropTypes.func,\n\n /**\n * Callback invoked when a user double-clicks on a table row.\n * ({ index: number }): void\n */\n onRowDoubleClick: PropTypes.func,\n\n /**\n * Callback invoked when the mouse leaves a table row.\n * ({ index: number }): void\n */\n onRowMouseOut: PropTypes.func,\n\n /**\n * Callback invoked when a user moves the mouse over a table row.\n * ({ index: number }): void\n */\n onRowMouseOver: PropTypes.func,\n\n /**\n * Callback invoked when a user right-clicks on a table row.\n * ({ index: number }): void\n */\n onRowRightClick: PropTypes.func,\n\n /**\n * Callback invoked with information about the slice of rows that were just rendered.\n * ({ startIndex, stopIndex }): void\n */\n onRowsRendered: PropTypes.func,\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n * ({ clientHeight, scrollHeight, scrollTop }): void\n */\n onScroll: PropTypes.func.isRequired,\n\n /** See Grid#overscanIndicesGetter */\n overscanIndicesGetter: PropTypes.func.isRequired,\n\n /**\n * Number of rows to render above/below the visible bounds of the list.\n * These rows can help for smoother scrolling on touch devices.\n */\n overscanRowCount: PropTypes.number.isRequired,\n\n /**\n * Optional CSS class to apply to all table rows (including the header row).\n * This property can be a CSS class name (string) or a function that returns a class name.\n * If a function is provided its signature should be: ({ index: number }): string\n */\n rowClassName: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n\n /**\n * Callback responsible for returning a data row given an index.\n * ({ index: number }): any\n */\n rowGetter: PropTypes.func.isRequired,\n\n /**\n * Either a fixed row height (number) or a function that returns the height of a row given its index.\n * ({ index: number }): number\n */\n rowHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.func]).isRequired,\n\n /** Number of rows in table. */\n rowCount: PropTypes.number.isRequired,\n\n /**\n * Responsible for rendering a table row given an array of columns:\n * Should implement the following interface: ({\n * className: string,\n * columns: Array,\n * index: number,\n * isScrolling: boolean,\n * onRowClick: ?Function,\n * onRowDoubleClick: ?Function,\n * onRowMouseOver: ?Function,\n * onRowMouseOut: ?Function,\n * rowData: any,\n * style: any\n * }): PropTypes.node\n */\n rowRenderer: PropTypes.func,\n\n /** Optional custom inline style to attach to table rows. */\n rowStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired,\n\n /** See Grid#scrollToAlignment */\n scrollToAlignment: PropTypes.oneOf(['auto', 'end', 'start', 'center']).isRequired,\n\n /** Row index to ensure visible (by forcefully scrolling if necessary) */\n scrollToIndex: PropTypes.number.isRequired,\n\n /** Vertical offset. */\n scrollTop: PropTypes.number,\n\n /**\n * Sort function to be called if a sortable header is clicked.\n * Should implement the following interface: ({\n * defaultSortDirection: 'ASC' | 'DESC',\n * event: MouseEvent,\n * sortBy: string,\n * sortDirection: SortDirection\n * }): void\n */\n sort: PropTypes.func,\n\n /** Table data is currently sorted by this :dataKey (if it is sorted at all) */\n sortBy: PropTypes.string,\n\n /** Table data is currently sorted in this direction (if it is sorted at all) */\n sortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC]),\n\n /** Optional inline style */\n style: PropTypes.object,\n\n /** Tab index for focus */\n tabIndex: PropTypes.number,\n\n /** Width of list */\n width: PropTypes.number.isRequired\n} : {};\nimport { bpfrpt_proptype_CellPosition } from \"../Grid\";","/**\n * Default accessor for returning a cell value for a given attribute.\n * This function expects to operate on either a vanilla Object or an Immutable Map.\n * You should override the column's cellDataGetter if your data is some other type of object.\n */\nexport default function defaultCellDataGetter(_ref) {\n var dataKey = _ref.dataKey,\n rowData = _ref.rowData;\n\n if (typeof rowData.get === 'function') {\n return rowData.get(dataKey);\n } else {\n return rowData[dataKey];\n }\n}\nimport { bpfrpt_proptype_CellDataGetterParams } from \"./types\";","/**\n * Default cell renderer that displays an attribute as a simple string\n * You should override the column's cellRenderer if your data is some other type of object.\n */\nexport default function defaultCellRenderer(_ref) {\n var cellData = _ref.cellData;\n\n if (cellData == null) {\n return '';\n } else {\n return String(cellData);\n }\n}\nimport { bpfrpt_proptype_CellRendererParams } from \"./types\";","import createMultiSort from './createMultiSort';\nimport defaultCellDataGetter from './defaultCellDataGetter';\nimport defaultCellRenderer from './defaultCellRenderer';\nimport defaultHeaderRowRenderer from './defaultHeaderRowRenderer.js';\nimport defaultHeaderRenderer from './defaultHeaderRenderer';\nimport defaultRowRenderer from './defaultRowRenderer';\nimport Column from './Column';\nimport SortDirection from './SortDirection';\nimport SortIndicator from './SortIndicator';\nimport Table from './Table';\nexport default Table;\nexport { createMultiSort, defaultCellDataGetter, defaultCellRenderer, defaultHeaderRowRenderer, defaultHeaderRenderer, defaultRowRenderer, Column, SortDirection, SortIndicator, Table };","import { requestAnimationTimeout, cancelAnimationTimeout } from '../../utils/requestAnimationTimeout';\nvar mountedInstances = [];\nvar originalBodyPointerEvents = null;\nvar disablePointerEventsTimeoutId = null;\n\nfunction enablePointerEventsIfDisabled() {\n if (disablePointerEventsTimeoutId) {\n disablePointerEventsTimeoutId = null;\n\n if (document.body && originalBodyPointerEvents != null) {\n document.body.style.pointerEvents = originalBodyPointerEvents;\n }\n\n originalBodyPointerEvents = null;\n }\n}\n\nfunction enablePointerEventsAfterDelayCallback() {\n enablePointerEventsIfDisabled();\n mountedInstances.forEach(function (instance) {\n return instance.__resetIsScrolling();\n });\n}\n\nfunction enablePointerEventsAfterDelay() {\n if (disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(disablePointerEventsTimeoutId);\n }\n\n var maximumTimeout = 0;\n mountedInstances.forEach(function (instance) {\n maximumTimeout = Math.max(maximumTimeout, instance.props.scrollingResetTimeInterval);\n });\n disablePointerEventsTimeoutId = requestAnimationTimeout(enablePointerEventsAfterDelayCallback, maximumTimeout);\n}\n\nfunction onScrollWindow(event) {\n if (event.currentTarget === window && originalBodyPointerEvents == null && document.body) {\n originalBodyPointerEvents = document.body.style.pointerEvents;\n document.body.style.pointerEvents = 'none';\n }\n\n enablePointerEventsAfterDelay();\n mountedInstances.forEach(function (instance) {\n if (instance.props.scrollElement === event.currentTarget) {\n instance.__handleWindowScrollEvent();\n }\n });\n}\n\nexport function registerScrollListener(component, element) {\n if (!mountedInstances.some(function (instance) {\n return instance.props.scrollElement === element;\n })) {\n element.addEventListener('scroll', onScrollWindow);\n }\n\n mountedInstances.push(component);\n}\nexport function unregisterScrollListener(component, element) {\n mountedInstances = mountedInstances.filter(function (instance) {\n return instance !== component;\n });\n\n if (!mountedInstances.length) {\n element.removeEventListener('scroll', onScrollWindow);\n\n if (disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(disablePointerEventsTimeoutId);\n enablePointerEventsIfDisabled();\n }\n }\n}\nimport { bpfrpt_proptype_WindowScroller } from \"../WindowScroller.js\";","/**\n * Gets the dimensions of the element, accounting for API differences between\n * `window` and other DOM elements.\n */\n// TODO Move this into WindowScroller and import from there\nvar isWindow = function isWindow(element) {\n return element === window;\n};\n\nvar getBoundingBox = function getBoundingBox(element) {\n return element.getBoundingClientRect();\n};\n\nexport function getDimensions(scrollElement, props) {\n if (!scrollElement) {\n return {\n height: props.serverHeight,\n width: props.serverWidth\n };\n } else if (isWindow(scrollElement)) {\n var _window = window,\n innerHeight = _window.innerHeight,\n innerWidth = _window.innerWidth;\n return {\n height: typeof innerHeight === 'number' ? innerHeight : 0,\n width: typeof innerWidth === 'number' ? innerWidth : 0\n };\n } else {\n return getBoundingBox(scrollElement);\n }\n}\n/**\n * Gets the vertical and horizontal position of an element within its scroll container.\n * Elements that have been “scrolled past” return negative values.\n * Handles edge-case where a user is navigating back (history) from an already-scrolled page.\n * In this case the body’s top or left position will be a negative number and this element’s top or left will be increased (by that amount).\n */\n\nexport function getPositionOffset(element, container) {\n if (isWindow(container) && document.documentElement) {\n var containerElement = document.documentElement;\n var elementRect = getBoundingBox(element);\n var containerRect = getBoundingBox(containerElement);\n return {\n top: elementRect.top - containerRect.top,\n left: elementRect.left - containerRect.left\n };\n } else {\n var scrollOffset = getScrollOffset(container);\n\n var _elementRect = getBoundingBox(element);\n\n var _containerRect = getBoundingBox(container);\n\n return {\n top: _elementRect.top + scrollOffset.top - _containerRect.top,\n left: _elementRect.left + scrollOffset.left - _containerRect.left\n };\n }\n}\n/**\n * Gets the vertical and horizontal scroll amount of the element, accounting for IE compatibility\n * and API differences between `window` and other DOM elements.\n */\n\nexport function getScrollOffset(element) {\n if (isWindow(element) && document.documentElement) {\n return {\n top: 'scrollY' in window ? window.scrollY : document.documentElement.scrollTop,\n left: 'scrollX' in window ? window.scrollX : document.documentElement.scrollLeft\n };\n } else {\n return {\n top: element.scrollTop,\n left: element.scrollLeft\n };\n }\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { registerScrollListener, unregisterScrollListener } from './utils/onScroll';\nimport { getDimensions, getPositionOffset, getScrollOffset } from './utils/dimensions';\nimport createDetectElementResize from '../vendor/detectElementResize';\n\n/**\n * Specifies the number of miliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\nexport var IS_SCROLLING_TIMEOUT = 150;\n\nvar getWindow = function getWindow() {\n return typeof window !== 'undefined' ? window : undefined;\n};\n\nvar WindowScroller = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(WindowScroller, _React$PureComponent);\n\n function WindowScroller() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, WindowScroller);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(WindowScroller)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"_window\", getWindow());\n\n _defineProperty(_assertThisInitialized(_this), \"_isMounted\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_positionFromTop\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_positionFromLeft\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_detectElementResize\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_child\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"state\", _objectSpread({}, getDimensions(_this.props.scrollElement, _this.props), {\n isScrolling: false,\n scrollLeft: 0,\n scrollTop: 0\n }));\n\n _defineProperty(_assertThisInitialized(_this), \"_registerChild\", function (element) {\n if (element && !(element instanceof Element)) {\n console.warn('WindowScroller registerChild expects to be passed Element or null');\n }\n\n _this._child = element;\n\n _this.updatePosition();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onChildScroll\", function (_ref) {\n var scrollTop = _ref.scrollTop;\n\n if (_this.state.scrollTop === scrollTop) {\n return;\n }\n\n var scrollElement = _this.props.scrollElement;\n\n if (scrollElement) {\n if (typeof scrollElement.scrollTo === 'function') {\n scrollElement.scrollTo(0, scrollTop + _this._positionFromTop);\n } else {\n scrollElement.scrollTop = scrollTop + _this._positionFromTop;\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_registerResizeListener\", function (element) {\n if (element === window) {\n window.addEventListener('resize', _this._onResize, false);\n } else {\n _this._detectElementResize.addResizeListener(element, _this._onResize);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_unregisterResizeListener\", function (element) {\n if (element === window) {\n window.removeEventListener('resize', _this._onResize, false);\n } else if (element) {\n _this._detectElementResize.removeResizeListener(element, _this._onResize);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onResize\", function () {\n _this.updatePosition();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"__handleWindowScrollEvent\", function () {\n if (!_this._isMounted) {\n return;\n }\n\n var onScroll = _this.props.onScroll;\n var scrollElement = _this.props.scrollElement;\n\n if (scrollElement) {\n var scrollOffset = getScrollOffset(scrollElement);\n var scrollLeft = Math.max(0, scrollOffset.left - _this._positionFromLeft);\n var scrollTop = Math.max(0, scrollOffset.top - _this._positionFromTop);\n\n _this.setState({\n isScrolling: true,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n\n onScroll({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"__resetIsScrolling\", function () {\n _this.setState({\n isScrolling: false\n });\n });\n\n return _this;\n }\n\n _createClass(WindowScroller, [{\n key: \"updatePosition\",\n value: function updatePosition() {\n var scrollElement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props.scrollElement;\n var onResize = this.props.onResize;\n var _this$state = this.state,\n height = _this$state.height,\n width = _this$state.width;\n var thisNode = this._child || ReactDOM.findDOMNode(this);\n\n if (thisNode instanceof Element && scrollElement) {\n var offset = getPositionOffset(thisNode, scrollElement);\n this._positionFromTop = offset.top;\n this._positionFromLeft = offset.left;\n }\n\n var dimensions = getDimensions(scrollElement, this.props);\n\n if (height !== dimensions.height || width !== dimensions.width) {\n this.setState({\n height: dimensions.height,\n width: dimensions.width\n });\n onResize({\n height: dimensions.height,\n width: dimensions.width\n });\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var scrollElement = this.props.scrollElement;\n this._detectElementResize = createDetectElementResize();\n this.updatePosition(scrollElement);\n\n if (scrollElement) {\n registerScrollListener(this, scrollElement);\n\n this._registerResizeListener(scrollElement);\n }\n\n this._isMounted = true;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var scrollElement = this.props.scrollElement;\n var prevScrollElement = prevProps.scrollElement;\n\n if (prevScrollElement !== scrollElement && prevScrollElement != null && scrollElement != null) {\n this.updatePosition(scrollElement);\n unregisterScrollListener(this, prevScrollElement);\n registerScrollListener(this, scrollElement);\n\n this._unregisterResizeListener(prevScrollElement);\n\n this._registerResizeListener(scrollElement);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var scrollElement = this.props.scrollElement;\n\n if (scrollElement) {\n unregisterScrollListener(this, scrollElement);\n\n this._unregisterResizeListener(scrollElement);\n }\n\n this._isMounted = false;\n }\n }, {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var _this$state2 = this.state,\n isScrolling = _this$state2.isScrolling,\n scrollTop = _this$state2.scrollTop,\n scrollLeft = _this$state2.scrollLeft,\n height = _this$state2.height,\n width = _this$state2.width;\n return children({\n onChildScroll: this._onChildScroll,\n registerChild: this._registerChild,\n height: height,\n isScrolling: isScrolling,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n width: width\n });\n }\n }]);\n\n return WindowScroller;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n /**\n * Function responsible for rendering children.\n * This function should implement the following signature:\n * ({ height, isScrolling, scrollLeft, scrollTop, width }) => PropTypes.element\n */\n \"children\": PropTypes.func.isRequired,\n\n /** Callback to be invoked on-resize: ({ height, width }) */\n \"onResize\": PropTypes.func.isRequired,\n\n /** Callback to be invoked on-scroll: ({ scrollLeft, scrollTop }) */\n \"onScroll\": PropTypes.func.isRequired,\n\n /** Element to attach scroll event listeners. Defaults to window. */\n \"scrollElement\": PropTypes.oneOfType([PropTypes.any, function () {\n return (typeof Element === \"function\" ? PropTypes.instanceOf(Element) : PropTypes.any).apply(this, arguments);\n }]),\n\n /**\n * Wait this amount of time after the last scroll event before resetting child `pointer-events`.\n */\n \"scrollingResetTimeInterval\": PropTypes.number.isRequired,\n\n /** Height used for server-side rendering */\n \"serverHeight\": PropTypes.number.isRequired,\n\n /** Width used for server-side rendering */\n \"serverWidth\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(WindowScroller, \"defaultProps\", {\n onResize: function onResize() {},\n onScroll: function onScroll() {},\n scrollingResetTimeInterval: IS_SCROLLING_TIMEOUT,\n scrollElement: getWindow(),\n serverHeight: 0,\n serverWidth: 0\n});\n\nexport { WindowScroller as default };\nimport PropTypes from \"prop-types\";"],"names":["getInputAdornmentUtilityClass","slot","generateUtilityClass","_span","generateUtilityClasses","_excluded","InputAdornmentRoot","styled","name","overridesResolver","props","styles","ownerState","root","concat","capitalize","position","disablePointerEvents","variant","_ref","theme","_extends","display","height","maxHeight","alignItems","whiteSpace","color","vars","palette","action","active","_defineProperty","inputAdornmentClasses","positionStart","hiddenLabel","marginTop","marginRight","marginLeft","pointerEvents","React","inProps","ref","useThemeProps","children","className","_props$component","component","_props$disablePointer","_props$disableTypogra","disableTypography","variantProp","other","_objectWithoutPropertiesLoose","muiFormControl","useFormControl","size","classes","slots","composeClasses","useUtilityClasses","_jsx","FormControlContext","Provider","value","as","clsx","_jsxs","Typography","componentWillMount","state","this","constructor","getDerivedStateFromProps","undefined","setState","componentWillReceiveProps","nextProps","prevState","bind","componentWillUpdate","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","polyfill","Component","prototype","isReactComponent","Error","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","componentName","displayName","newApiName","componentDidUpdate","maybeSnapshot","snapshot","call","__suppressDeprecationWarning","calculateSizeAndPositionDataAndUpdateScrollOffset","cellCount","cellSize","computeMetadataCallback","computeMetadataCallbackProps","nextCellsCount","nextCellSize","nextScrollToIndex","scrollToIndex","updateScrollOffsetForScrollToIndex","CellSizeAndPositionManager","cellSizeGetter","estimatedCellSize","_classCallCheck","_cellSizeGetter","_cellCount","_estimatedCellSize","_createClass","key","_ref2","_lastMeasuredIndex","index","lastMeasuredCellSizeAndPosition","getSizeAndPositionOfLastMeasuredCell","offset","i","isNaN","_cellSizeAndPositionData","_lastBatchedIndex","_ref3","_ref3$align","align","containerSize","currentOffset","targetIndex","idealOffset","datum","getSizeAndPositionOfCell","maxOffset","minOffset","Math","max","min","totalSize","getTotalSize","params","start","_findNearestCell","stop","high","low","middle","floor","interval","_binarySearch","lastMeasuredIndex","_exponentialSearch","getMaxElementSize","window","chrome","ScalingCellSizeAndPositionManager","_ref$maxScrollSize","maxScrollSize","_objectWithoutProperties","_cellSizeAndPositionManager","_maxScrollSize","configure","getCellCount","getEstimatedCellSize","getLastMeasuredIndex","safeTotalSize","offsetPercentage","_getOffsetPercentage","round","_safeOffsetToOffset","getUpdatedOffsetForIndex","_offsetToSafeOffset","_ref4","getVisibleCellRange","resetCell","_ref5","_ref6","_ref7","createCallbackMemoizer","requireAllKeys","arguments","length","cachedIndices","callback","indices","keys","Object","allInitialized","every","Array","isArray","indexChanged","some","cachedValue","join","updateScrollIndexHelper","cellSizeAndPositionManager","previousCellsCount","previousCellSize","previousScrollToAlignment","previousScrollToIndex","previousSize","scrollOffset","scrollToAlignment","sizeJustIncreasedFromZero","updateScrollIndexCallback","hasScrollToIndex","win","document","createElement","scrollbarSize","recalc","canUseDOM","scrollDiv","style","top","width","overflow","body","appendChild","offsetWidth","clientWidth","removeChild","_class","_temp","request","self","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","setTimeout","cancel","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","oCancelAnimationFrame","msCancelAnimationFrame","id","clearTimeout","raf","caf","cancelAnimationTimeout","frame","requestAnimationTimeout","delay","Promise","resolve","then","Date","now","timeout","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","source","forEach","getOwnPropertyDescriptors","defineProperties","defineProperty","SCROLL_POSITION_CHANGE_REASONS","Grid","_React$PureComponent","_this","_possibleConstructorReturn","_getPrototypeOf","_assertThisInitialized","_disablePointerEventsTimeoutId","isScrolling","needToResetStyleCache","onSectionRendered","_onGridRenderedMemoizer","columnOverscanStartIndex","_columnStartIndex","columnOverscanStopIndex","_columnStopIndex","columnStartIndex","_renderedColumnStartIndex","columnStopIndex","_renderedColumnStopIndex","rowOverscanStartIndex","_rowStartIndex","rowOverscanStopIndex","_rowStopIndex","rowStartIndex","_renderedRowStartIndex","rowStopIndex","_renderedRowStopIndex","_scrollingContainer","event","handleScrollEvent","columnSizeAndPositionManager","columnCount","_wrapSizeGetter","columnWidth","_getEstimatedColumnSize","rowSizeAndPositionManager","rowCount","rowHeight","_getEstimatedRowSize","instanceProps","prevColumnWidth","prevRowHeight","prevColumnCount","prevRowCount","prevIsScrolling","prevScrollToColumn","scrollToColumn","prevScrollToRow","scrollToRow","scrollbarSizeMeasured","scrollDirectionHorizontal","scrollDirectionVertical","scrollLeft","scrollTop","scrollPositionChangeReason","_initialScrollTop","_getCalculatedScrollTop","_initialScrollLeft","_getCalculatedScrollLeft","_inherits","_ref$alignment","alignment","_ref$columnIndex","columnIndex","_ref$rowIndex","rowIndex","offsetProps","_ref2$scrollLeft","scrollLeftParam","_ref2$scrollTop","scrollTopParam","_debounceScrollEnded","_this$props","autoHeight","autoWidth","totalRowsHeight","totalColumnsWidth","newState","_invokeOnScrollMemoizer","_deferredInvalidateColumnIndex","_deferredInvalidateRowIndex","_this$props2","_ref4$columnIndex","_ref4$rowIndex","_this$props3","_recomputeScrollLeftFlag","_recomputeScrollTopFlag","_styleCache","_cellCache","forceUpdate","_updateScrollLeftForScrollToColumn","_updateScrollTopForScrollToRow","_this$props4","getScrollbarSize","_handleInvalidatedGridSize","stateUpdate","_getScrollToPositionStateUpdate","sizeIsBiggerThanZero","_invokeOnGridRenderedHelper","_maybeCallOnScrollbarPresenceChange","_this2","_this$props5","_this$state","columnOrRowCountJustIncreasedFromZero","_this$props6","autoContainerWidth","containerProps","containerRole","containerStyle","noContentRenderer","role","tabIndex","_this$state2","_isScrolling","gridStyle","boxSizing","direction","WebkitOverflowScrolling","willChange","_resetStyleCache","_calculateChildrenToRender","verticalScrollBarSize","horizontalScrollBarSize","_horizontalScrollBarSize","_verticalScrollBarSize","_scrollbarPresenceChanged","overflowX","overflowY","childrenToDisplay","_childrenToDisplay","showNoContentRenderer","_setScrollingContainerRef","onScroll","_onScroll","maxWidth","cellRenderer","cellRangeRenderer","deferredMeasurementCache","overscanColumnCount","overscanIndicesGetter","overscanRowCount","isScrollingOptOut","visibleColumnIndices","visibleRowIndices","horizontalOffsetAdjustment","getOffsetAdjustment","verticalOffsetAdjustment","overscanColumnIndices","overscanCellsCount","scrollDirection","startIndex","stopIndex","overscanRowIndices","overscanStartIndex","overscanStopIndex","hasFixedHeight","has","hasFixedWidth","cellCache","parent","styleCache","scrollingResetTimeInterval","_debounceScrollEndedCallback","recomputeGridSize","_this3","_onScrollMemoizer","_this3$props","clientHeight","scrollHeight","scrollWidth","hasOwnProperty","Boolean","onScrollbarPresenceChange","horizontal","vertical","_ref8","_getScrollLeftForScrollToColumnStateUpdate","_getScrollTopForScrollToRowStateUpdate","assign","maybeStateA","maybeStateB","estimatedColumnSize","estimatedRowSize","_ref9","finalColumn","scrollBarSize","calculatedScrollLeft","finalRow","calculatedScrollTop","renderedCells","areOffsetsAdjusted","canCacheStyle","rowDatum","columnDatum","isVisible","left","cellRendererParams","renderedCell","defaultOverscanIndicesGetter","ArrowKeyStepper","_getPrototypeOf2","_len","args","_key","disabled","mode","_this$_getScrollState","_getScrollState","scrollToColumnPrevious","scrollToRowPrevious","_this$_getScrollState2","preventDefault","_updateScrollState","_this$_getScrollState3","onKeyDown","_onKeyDown","_onSectionRendered","isControlled","onScrollToChange","createDetectElementResize","nonce","hostWindow","_window","attachEvent","global","requestFrame","fn","cancelFrame","resetTriggers","element","triggers","__resizeTriggers__","expand","firstElementChild","contract","lastElementChild","expandChild","offsetHeight","scrollListener","e","indexOf","__resizeRAF__","__resizeLast__","checkTriggers","__resizeListeners__","animation","keyframeprefix","animationstartevent","domPrefixes","split","startEvents","elm","animationName","toLowerCase","animationKeyframes","animationStyle","addResizeListener","doc","ownerDocument","elementStyle","getComputedStyle","getElementById","css","head","getElementsByTagName","type","setAttribute","styleSheet","cssText","createTextNode","createStyles","resizeTriggersHtml","trustedTypes","staticPolicy","createPolicy","createHTML","innerHTML","addEventListener","__animationListener__","removeResizeListener","detachEvent","splice","removeEventListener","AutoSizer","_React$Component","defaultHeight","defaultWidth","disableHeight","disableWidth","onResize","_parentNode","paddingLeft","parseInt","paddingRight","paddingTop","paddingBottom","newHeight","newWidth","autoSizer","_autoSizer","parentNode","defaultView","HTMLElement","_detectElementResize","_onResize","outerStyle","childParams","_setRef","CellMeasurer","cache","_this$props$columnInd","_this$props$rowIndex","_this$_getCellMeasure","_getCellMeasurements","getHeight","getWidth","set","Element","console","warn","_child","_maybeMeasureCell","measure","_measure","registerChild","_registerChild","node","findDOMNode","styleWidth","styleHeight","ceil","_this$props2$columnIn","_this$props2$rowIndex","_this$_getCellMeasure2","invalidateCellSizeAfterRender","CellMeasurerCache","_keyMapper","_columnWidthCache","_defaultWidth","_rowHeightCache","_defaultHeight","fixedHeight","fixedWidth","keyMapper","minHeight","minWidth","_hasFixedHeight","_hasFixedWidth","_minHeight","_minWidth","defaultKeyMapper","_cellHeightCache","_cellWidthCache","_updateCachedColumnAndRowSizes","_rowCount","_columnCount","_key2","columnKey","_i","rowKey","get","CollectionView","cellLayoutManager","_onSectionRenderedMemoizer","getLastRenderedIndices","scrollToCell","scrollPosition","getScrollPositionForCell","cellIndex","_setScrollPosition","_enablePointerEventsAfterDelay","isScrollingChange","_scrollbarSize","_cellLayoutManager$ge","totalHeight","totalWidth","cancelable","_scrollbarSizeMeasured","_calculateSizeAndPositionDataOnNextUpdate","_updateScrollPositionForScrollToCell","_invokeOnSectionRenderedHelper","_cellLayoutManager$ge2","horizontalOverscanSize","verticalOverscanSize","_this$state3","_lastRenderedCellCount","_lastRenderedCellLayoutManager","calculateSizeAndPositionData","_cellLayoutManager$ge3","right","bottom","cellRenderers","x","y","collectionStyle","propTypes","Section","_indexMap","_indices","SectionManager","sectionSize","_sectionSize","_cellMetadata","_sections","getSections","section","getCellIndices","map","sectionXStart","sectionXStop","sectionYStart","sectionYStop","sections","sectionX","sectionY","toString","cellMetadatum","addCellIndex","_ref$align","cellOffset","Collection","context","_lastRenderedCellIndices","_isScrollingChange","_setCollectionViewRef","_collectionView","recomputeCellSizesAndPositions","data","cellSizeAndPositionGetter","cellMetadata","sectionManager","registerCell","_calculateSizeAndPositionData","_sectionManager","_height","_width","cellGroupRenderer","getCellMetadata","cellRendererProps","ColumnSizer","columnMaxWidth","columnMinWidth","_registeredChild","safeColumnMinWidth","safeColumnMaxWidth","adjustedWidth","getColumnWidth","child","InfiniteLoader","_loadMoreRowsMemoizer","_onRowsRendered","autoReload","_doStuff","_lastRenderedStartIndex","_lastRenderedStopIndex","onRowsRendered","unloadedRanges","loadMoreRows","unloadedRange","promise","lastRenderedStartIndex","lastRenderedStopIndex","isRangeVisible","currentIndex","recomputeSize","recomputeRowHeights","forceUpdateReactVirtualizedComponent","isRowLoaded","minimumBatchSize","threshold","rangeStartIndex","rangeStopIndex","potentialStopIndex","_index","firstUnloadedRange","_index2","scanForUnloadedRanges","squashedUnloadedRanges","_toConsumableArray","_loadUnloadedRanges","registeredChild","List","rowRenderer","widthDescriptor","writable","getOffsetForCell","measureAllCells","_ref6$columnIndex","_ref6$rowIndex","scrollToPosition","noRowsRenderer","classNames","_cellRenderer","accessibilityOverscanIndicesGetter","ge","a","c","l","h","m","_GEP","_GEA","gt","_GTP","_GTA","lt","_LTP","_LTA","le","_LEP","_LEA","eq","p","_EQP","_EQA","IntervalTreeNode","mid","leftPoints","rightPoints","count","proto","copy","b","rebuild","intervals","ntree","createIntervalTree","rebuildWithInterval","rebuildWithoutInterval","idx","reportLeftRange","arr","hi","cb","r","reportRightRange","lo","reportRange","compareNumbers","compareBegin","d","compareEnd","pts","sort","leftIntervals","rightIntervals","centerIntervals","s","slice","IntervalTree","result","insert","weight","bounds","remove","n","queryPoint","queryInterval","tproto","PositionCache","defaultCellHeight","unmeasuredCellCount","tallestColumnSize","renderCallback","_intervalTree","_slicedToArray","_leftMap","columnSizeMap","_columnSizeMap","columnHeight","Masonry","eventScrollTop","currentTarget","_getEstimatedTotalHeight","_debounceResetIsScrolling","_positionCache","_invalidateOnUpdateStartIndex","_invalidateOnUpdateStopIndex","_populatePositionCache","_checkInvalidateOnUpdate","_invokeOnScrollCallback","_invokeOnCellsRenderedCallback","_debounceResetIsScrollingId","cellMeasurerCache","overscanByPixels","rowDirection","estimateTotalHeight","shortestColumnSize","measuredCellCount","range","_style","batchSize","_startIndex","_stopIndex","_debounceResetIsScrollingCallback","estimatedColumnCount","_onScrollMemoized","_startIndexMemoized","_stopIndexMemoized","onCellsRendered","cellPositioner","_cellPositioner","setPosition","noop","CellMeasurerCacheDecorator","_cellMeasurerCache","_columnIndexOffset","_rowIndexOffset","_params$columnIndexOf","columnIndexOffset","_params$rowIndexOffse","rowIndexOffset","clear","clearAll","MultiGrid","showHorizontalScrollbar","showVerticalScrollbar","_bottomLeftGrid","_bottomRightGrid","rest","fixedRowCount","fixedColumnCount","scrollInfo","_topLeftGrid","_topRightGrid","_fixedColumnCount","_fixedRowCount","_maybeCalculateCachedStyles","_deferredMeasurementCacheBottomLeftGrid","_deferredMeasurementCacheBottomRightGrid","_deferredMeasurementCacheTopRightGrid","_ref7$columnIndex","_ref7$rowIndex","_ref8$columnIndex","_ref8$rowIndex","adjustedColumnIndex","adjustedRowIndex","_leftGridWidth","_topGridHeight","_this$props7","_this$props8","_prepareForRender","_this$state4","_containerOuterStyle","_containerTopStyle","_renderTopLeftGrid","_renderTopRightGrid","_containerBottomStyle","_renderBottomLeftGrid","_renderBottomRightGrid","_getTopGridHeight","leftGridWidth","_getLeftGridWidth","topGridHeight","resetAll","_this$props9","enableFixedColumnScroll","enableFixedRowScroll","styleBottomLeftGrid","styleBottomRightGrid","styleTopLeftGrid","styleTopRightGrid","sizeChange","_lastRenderedHeight","_lastRenderedWidth","leftSizeChange","_lastRenderedColumnWidth","_lastRenderedFixedColumnCount","topSizeChange","_lastRenderedFixedRowCount","_lastRenderedRowHeight","_lastRenderedStyle","_lastRenderedStyleBottomLeftGrid","_bottomLeftGridStyle","_lastRenderedStyleBottomRightGrid","_bottomRightGridStyle","_lastRenderedStyleTopLeftGrid","_topLeftGridStyle","_lastRenderedStyleTopRightGrid","_topRightGridStyle","hideBottomLeftGridScrollbar","additionalRowCount","_getBottomGridHeight","gridWidth","bottomLeftGrid","_cellRendererBottomLeftGrid","classNameBottomLeftGrid","_onScrollTop","_bottomLeftGridRef","_rowHeightBottomGrid","_cellRendererBottomRightGrid","classNameBottomRightGrid","_columnWidthRightGrid","_onScrollbarPresenceChange","_bottomRightGridRef","_getRightGridWidth","classNameTopLeftGrid","_topLeftGridRef","hideTopRightGridScrollbar","_this$state5","additionalColumnCount","additionalHeight","gridHeight","topRightGrid","_cellRendererTopRightGrid","classNameTopRightGrid","_onScrollLeft","_topRightGridRef","ScrollSync","defaultHeaderRowRenderer","columns","ASC","DESC","SortIndicator","sortDirection","SortDirection","viewBox","fill","defaultHeaderRenderer","dataKey","label","sortBy","showSortIndicator","title","defaultRowRenderer","onRowClick","onRowDoubleClick","onRowMouseOut","onRowMouseOver","onRowRightClick","rowData","a11yProps","onClick","onDoubleClick","onMouseOut","onMouseOver","onContextMenu","Column","cellDataGetter","cellData","String","defaultSortDirection","flexGrow","flexShrink","headerRenderer","Table","scrollbarWidth","_createColumn","_createRow","_ref3$columnIndex","_ref3$rowIndex","_Grid","_setScrollbarWidth","disableHeader","gridClassName","headerHeight","headerRowRenderer","rowClassName","rowStyle","availableRowsHeight","rowClass","rowStyleObject","_cachedColumnStyles","toArray","column","flexStyles","_getFlexStyleForColumn","_getHeaderColumns","onColumnClick","_column$props","columnData","headerOnClick","headerOnKeyDown","headerTabIndex","headerAriaSort","headerAriaLabel","headerClassName","headerStyle","onHeaderClick","_column$props2","disableSort","sortEnabled","ReactVirtualized__Table__sortableHeaderColumn","renderedHeader","newSortDirection","rowGetter","flattenedStyle","_getRowHeight","customStyle","flexValue","flex","msFlex","WebkitFlex","_this4","_createHeader","getScrollbarWidth","mountedInstances","originalBodyPointerEvents","disablePointerEventsTimeoutId","enablePointerEventsIfDisabled","enablePointerEventsAfterDelayCallback","instance","__resetIsScrolling","onScrollWindow","maximumTimeout","enablePointerEventsAfterDelay","scrollElement","__handleWindowScrollEvent","registerScrollListener","unregisterScrollListener","isWindow","getBoundingBox","getBoundingClientRect","getDimensions","innerHeight","innerWidth","serverHeight","serverWidth","getScrollOffset","documentElement","scrollY","scrollX","getWindow","WindowScroller","updatePosition","scrollTo","_positionFromTop","_isMounted","_positionFromLeft","thisNode","ReactDOM","container","containerElement","elementRect","containerRect","_elementRect","_containerRect","getPositionOffset","dimensions","_registerResizeListener","prevScrollElement","_unregisterResizeListener","onChildScroll","_onChildScroll"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/426.97329da0.chunk.js b/web-app/build/static/js/426.97329da0.chunk.js new file mode 100644 index 00000000000..580d64b7139 --- /dev/null +++ b/web-app/build/static/js/426.97329da0.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[426],{426:(e,n,s)=>{s.r(n),s.d(n,{default:()=>u});var t=s(72791),c=s(78687),a=s(57689),l=s(11135),i=s(25787),o=s(23814),r=s(61889),d=s(45248),x=s(81207),h=s(41320),j=s(5450),Z=s(87995),p=s(80184);const g=(0,c.$j)((e=>({loadingTenant:e.tenants.loadingTenant})),null),u=(0,i.Z)((e=>(0,l.Z)({...o.OR,...o.qg,...o.VX,...o.Bz})))(g((e=>{let{classes:n}=e;const s=(0,h.TL)(),l=(0,a.UO)(),i=(0,c.v9)((e=>e.tenants.loadingTenant)),[o,g]=(0,t.useState)([]),[u,m]=(0,t.useState)(!0),v=l.tenantName||"",f=l.tenantNamespace||"";return(0,t.useEffect)((()=>{i&&m(!0)}),[i]),(0,t.useEffect)((()=>{u&&x.Z.invoke("GET","/api/v1/namespaces/".concat(f,"/tenants/").concat(v,"/events")).then((e=>{for(let n=0;n{s((0,Z.Ih)(e)),m(!1)}))}),[u,f,v,s]),(0,p.jsxs)(t.Fragment,{children:[(0,p.jsx)("h1",{className:n.sectionTitle,children:"Events"}),(0,p.jsx)(r.ZP,{item:!0,xs:12,children:(0,p.jsx)(j.Z,{events:o,loading:u})})]})})))},5450:(e,n,s)=>{s.d(n,{Z:()=>v});var t=s(72791),c=s(57482),a=s(79836),l=s(53382),i=s(53994),o=s(56890),r=s(35855),d=s(64554),x=s(56125),h=s(20890),j=s(85172),Z=s(95678),p=s(39281),g=s(35527),u=s(80184);const m=e=>{const{event:n}=e,[s,c]=t.useState(!1);return(0,u.jsxs)(t.Fragment,{children:[(0,u.jsxs)(r.Z,{sx:{"& > *":{borderBottom:"unset"},cursor:"pointer"},children:[(0,u.jsx)(i.Z,{component:"th",scope:"row",onClick:()=>c(!s),children:n.event_type}),(0,u.jsx)(i.Z,{onClick:()=>c(!s),children:n.reason}),(0,u.jsx)(i.Z,{onClick:()=>c(!s),children:n.seen}),(0,u.jsx)(i.Z,{onClick:()=>c(!s),children:n.message.length>=30?"".concat(n.message.slice(0,30),"..."):n.message}),(0,u.jsx)(i.Z,{onClick:()=>c(!s),children:s?(0,u.jsx)(Z.Z,{}):(0,u.jsx)(j.Z,{})})]}),(0,u.jsx)(r.Z,{children:(0,u.jsx)(i.Z,{style:{paddingBottom:0,paddingTop:0},colSpan:5,children:(0,u.jsx)(x.Z,{in:s,timeout:"auto",unmountOnExit:!0,children:(0,u.jsx)(d.Z,{sx:{margin:1},children:(0,u.jsx)(h.Z,{style:{background:"#efefef",border:"1px solid #dedede",padding:4,fontSize:14,color:"#666666"},children:n.message})})})})})]})},v=e=>{let{events:n,loading:s}=e;return s?(0,u.jsx)(c.Z,{}):(0,u.jsx)(p.Z,{component:g.Z,children:(0,u.jsxs)(a.Z,{"aria-label":"collapsible table",children:[(0,u.jsx)(o.Z,{children:(0,u.jsxs)(r.Z,{children:[(0,u.jsx)(i.Z,{children:"Type"}),(0,u.jsx)(i.Z,{children:"Reason"}),(0,u.jsx)(i.Z,{children:"Age"}),(0,u.jsx)(i.Z,{children:"Message"}),(0,u.jsx)(i.Z,{})]})}),(0,u.jsx)(l.Z,{children:n.map((e=>(0,u.jsx)(m,{event:e},"".concat(e.event_type,"-").concat(e.seen))))})]})})}}}]); +//# sourceMappingURL=426.97329da0.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/426.97329da0.chunk.js.map b/web-app/build/static/js/426.97329da0.chunk.js.map new file mode 100644 index 00000000000..3847369d855 --- /dev/null +++ b/web-app/build/static/js/426.97329da0.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/426.97329da0.chunk.js","mappings":"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","sources":["screens/Console/Tenants/TenantDetails/TenantEvents.tsx","screens/Console/Tenants/TenantDetails/events/EventsList.tsx"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { connect, useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport { useParams } from \"react-router-dom\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n actionsTray,\n containerForHeader,\n searchField,\n tableStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport Grid from \"@mui/material/Grid\";\nimport { IEvent } from \"../ListTenants/types\";\nimport { niceDays } from \"../../../../common/utils\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport api from \"../../../../common/api\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport EventsList from \"./events/EventsList\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\n\ninterface ITenantEventsProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...actionsTray,\n ...searchField,\n ...tableStyles,\n ...containerForHeader,\n });\n\nconst TenantEvents = ({ classes }: ITenantEventsProps) => {\n const dispatch = useAppDispatch();\n const params = useParams();\n\n const loadingTenant = useSelector(\n (state: AppState) => state.tenants.loadingTenant,\n );\n\n const [events, setEvents] = useState([]);\n const [loading, setLoading] = useState(true);\n const tenantName = params.tenantName || \"\";\n const tenantNamespace = params.tenantNamespace || \"\";\n\n useEffect(() => {\n if (loadingTenant) {\n setLoading(true);\n }\n }, [loadingTenant]);\n\n useEffect(() => {\n if (loading) {\n api\n .invoke(\n \"GET\",\n `/api/v1/namespaces/${tenantNamespace}/tenants/${tenantName}/events`,\n )\n .then((res: IEvent[]) => {\n for (let i = 0; i < res.length; i++) {\n let currentTime = (Date.now() / 1000) | 0;\n\n res[i].seen = niceDays((currentTime - res[i].last_seen).toString());\n }\n setEvents(res);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, tenantNamespace, tenantName, dispatch]);\n\n return (\n \n

Events

\n \n \n \n
\n );\n};\nconst mapState = (state: AppState) => ({\n loadingTenant: state.tenants.loadingTenant,\n});\nconst connector = connect(mapState, null);\n\nexport default withStyles(styles)(connector(TenantEvents));\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { LinearProgress } from \"@mui/material\";\nimport { IEvent } from \"../../ListTenants/types\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TableRow from \"@mui/material/TableRow\";\nimport Box from \"@mui/material/Box\";\nimport Collapse from \"@mui/material/Collapse\";\nimport Typography from \"@mui/material/Typography\";\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\nimport KeyboardArrowUpIcon from \"@mui/icons-material/KeyboardArrowUp\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport Paper from \"@mui/material/Paper\";\n\ninterface IEventsListProps {\n events: IEvent[];\n loading: boolean;\n}\n\nconst Event = (props: { event: IEvent }) => {\n const { event } = props;\n const [open, setOpen] = React.useState(false);\n\n return (\n \n *\": { borderBottom: \"unset\" }, cursor: \"pointer\" }}>\n setOpen(!open)}>\n {event.event_type}\n \n setOpen(!open)}>{event.reason}\n setOpen(!open)}>{event.seen}\n setOpen(!open)}>\n {event.message.length >= 30\n ? `${event.message.slice(0, 30)}...`\n : event.message}\n \n setOpen(!open)}>\n {open ? : }\n \n \n \n \n \n \n \n {event.message}\n \n \n \n \n \n \n );\n};\n\nconst EventsList = ({ events, loading }: IEventsListProps) => {\n if (loading) {\n return ;\n }\n return (\n \n \n \n \n Type\n Reason\n Age\n Message\n \n \n \n \n {events.map((event) => (\n \n ))}\n \n
\n
\n );\n};\n\nexport default EventsList;\n"],"names":["connector","connect","state","loadingTenant","tenants","withStyles","theme","createStyles","actionsTray","searchField","tableStyles","containerForHeader","_ref","classes","dispatch","useAppDispatch","params","useParams","useSelector","events","setEvents","useState","loading","setLoading","tenantName","tenantNamespace","useEffect","api","invoke","concat","then","res","i","length","currentTime","Date","now","seen","niceDays","last_seen","toString","catch","err","setErrorSnackMessage","_jsxs","React","children","_jsx","className","sectionTitle","Grid","item","xs","EventsList","Event","props","event","open","setOpen","TableRow","sx","borderBottom","cursor","TableCell","component","scope","onClick","event_type","reason","message","slice","KeyboardArrowUpIcon","KeyboardArrowDownIcon","style","paddingBottom","paddingTop","colSpan","Collapse","in","timeout","unmountOnExit","Box","margin","Typography","background","border","padding","fontSize","color","LinearProgress","TableContainer","Paper","Table","TableHead","TableBody","map"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/426.b7b6b84b.chunk.js b/web-app/build/static/js/426.b7b6b84b.chunk.js deleted file mode 100644 index 5b5ced9487c..00000000000 --- a/web-app/build/static/js/426.b7b6b84b.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[426],{426:function(n,e,t){t.r(e);var s=t(29439),c=t(1413),r=t(72791),i=t(78687),a=t(57689),o=t(11135),l=t(25787),u=t(23814),d=t(61889),Z=t(45248),x=t(81207),h=t(41320),j=t(5450),f=t(87995),p=t(80184),g=(0,i.$j)((function(n){return{loadingTenant:n.tenants.loadingTenant}}),null);e.default=(0,l.Z)((function(n){return(0,o.Z)((0,c.Z)((0,c.Z)((0,c.Z)((0,c.Z)({},u.OR),u.qg),u.VX),u.Bz))}))(g((function(n){var e=n.classes,t=(0,h.TL)(),c=(0,a.UO)(),o=(0,i.v9)((function(n){return n.tenants.loadingTenant})),l=(0,r.useState)([]),u=(0,s.Z)(l,2),g=u[0],m=u[1],v=(0,r.useState)(!0),k=(0,s.Z)(v,2),b=k[0],T=k[1],C=c.tenantName||"",w=c.tenantNamespace||"";return(0,r.useEffect)((function(){o&&T(!0)}),[o]),(0,r.useEffect)((function(){b&&x.Z.invoke("GET","/api/v1/namespaces/".concat(w,"/tenants/").concat(C,"/events")).then((function(n){for(var e=0;e *":{borderBottom:"unset"},cursor:"pointer"},children:[(0,g.jsx)(o.Z,{component:"th",scope:"row",onClick:function(){return a(!i)},children:e.event_type}),(0,g.jsx)(o.Z,{onClick:function(){return a(!i)},children:e.reason}),(0,g.jsx)(o.Z,{onClick:function(){return a(!i)},children:e.seen}),(0,g.jsx)(o.Z,{onClick:function(){return a(!i)},children:e.message.length>=30?"".concat(e.message.slice(0,30),"..."):e.message}),(0,g.jsx)(o.Z,{onClick:function(){return a(!i)},children:i?(0,g.jsx)(j.Z,{}):(0,g.jsx)(h.Z,{})})]}),(0,g.jsx)(u.Z,{children:(0,g.jsx)(o.Z,{style:{paddingBottom:0,paddingTop:0},colSpan:5,children:(0,g.jsx)(Z.Z,{in:i,timeout:"auto",unmountOnExit:!0,children:(0,g.jsx)(d.Z,{sx:{margin:1},children:(0,g.jsx)(x.Z,{style:{background:"#efefef",border:"1px solid #dedede",padding:4,fontSize:14,color:"#666666"},children:e.message})})})})})]})};e.Z=function(n){var e=n.events;return n.loading?(0,g.jsx)(r.Z,{}):(0,g.jsx)(f.Z,{component:p.Z,children:(0,g.jsxs)(i.Z,{"aria-label":"collapsible table",children:[(0,g.jsx)(l.Z,{children:(0,g.jsxs)(u.Z,{children:[(0,g.jsx)(o.Z,{children:"Type"}),(0,g.jsx)(o.Z,{children:"Reason"}),(0,g.jsx)(o.Z,{children:"Age"}),(0,g.jsx)(o.Z,{children:"Message"}),(0,g.jsx)(o.Z,{})]})}),(0,g.jsx)(a.Z,{children:e.map((function(n){return(0,g.jsx)(m,{event:n},"".concat(n.event_type,"-").concat(n.seen))}))})]})})}}}]); -//# sourceMappingURL=426.b7b6b84b.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/426.b7b6b84b.chunk.js.map b/web-app/build/static/js/426.b7b6b84b.chunk.js.map deleted file mode 100644 index 116a43deb8c..00000000000 --- a/web-app/build/static/js/426.b7b6b84b.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/426.b7b6b84b.chunk.js","mappings":"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","sources":["screens/Console/Tenants/TenantDetails/TenantEvents.tsx","screens/Console/Tenants/TenantDetails/events/EventsList.tsx"],"sourcesContent":["// This file is part of MinIO Operator\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { connect, useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport { useParams } from \"react-router-dom\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n actionsTray,\n containerForHeader,\n searchField,\n tableStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport Grid from \"@mui/material/Grid\";\nimport { IEvent } from \"../ListTenants/types\";\nimport { niceDays } from \"../../../../common/utils\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport api from \"../../../../common/api\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport EventsList from \"./events/EventsList\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\n\ninterface ITenantEventsProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...actionsTray,\n ...searchField,\n ...tableStyles,\n ...containerForHeader,\n });\n\nconst TenantEvents = ({ classes }: ITenantEventsProps) => {\n const dispatch = useAppDispatch();\n const params = useParams();\n\n const loadingTenant = useSelector(\n (state: AppState) => state.tenants.loadingTenant,\n );\n\n const [events, setEvents] = useState([]);\n const [loading, setLoading] = useState(true);\n const tenantName = params.tenantName || \"\";\n const tenantNamespace = params.tenantNamespace || \"\";\n\n useEffect(() => {\n if (loadingTenant) {\n setLoading(true);\n }\n }, [loadingTenant]);\n\n useEffect(() => {\n if (loading) {\n api\n .invoke(\n \"GET\",\n `/api/v1/namespaces/${tenantNamespace}/tenants/${tenantName}/events`,\n )\n .then((res: IEvent[]) => {\n for (let i = 0; i < res.length; i++) {\n let currentTime = (Date.now() / 1000) | 0;\n\n res[i].seen = niceDays((currentTime - res[i].last_seen).toString());\n }\n setEvents(res);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, tenantNamespace, tenantName, dispatch]);\n\n return (\n \n

Events

\n \n \n \n
\n );\n};\nconst mapState = (state: AppState) => ({\n loadingTenant: state.tenants.loadingTenant,\n});\nconst connector = connect(mapState, null);\n\nexport default withStyles(styles)(connector(TenantEvents));\n","// This file is part of MinIO Operator\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { LinearProgress } from \"@mui/material\";\nimport { IEvent } from \"../../ListTenants/types\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TableRow from \"@mui/material/TableRow\";\nimport Box from \"@mui/material/Box\";\nimport Collapse from \"@mui/material/Collapse\";\nimport Typography from \"@mui/material/Typography\";\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\nimport KeyboardArrowUpIcon from \"@mui/icons-material/KeyboardArrowUp\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport Paper from \"@mui/material/Paper\";\n\ninterface IEventsListProps {\n events: IEvent[];\n loading: boolean;\n}\n\nconst Event = (props: { event: IEvent }) => {\n const { event } = props;\n const [open, setOpen] = React.useState(false);\n\n return (\n \n *\": { borderBottom: \"unset\" }, cursor: \"pointer\" }}>\n setOpen(!open)}>\n {event.event_type}\n \n setOpen(!open)}>{event.reason}\n setOpen(!open)}>{event.seen}\n setOpen(!open)}>\n {event.message.length >= 30\n ? `${event.message.slice(0, 30)}...`\n : event.message}\n \n setOpen(!open)}>\n {open ? : }\n \n \n \n \n \n \n \n {event.message}\n \n \n \n \n \n \n );\n};\n\nconst EventsList = ({ events, loading }: IEventsListProps) => {\n if (loading) {\n return ;\n }\n return (\n \n \n \n \n Type\n Reason\n Age\n Message\n \n \n \n \n {events.map((event) => (\n \n ))}\n \n
\n
\n );\n};\n\nexport default EventsList;\n"],"names":["connector","connect","state","loadingTenant","tenants","withStyles","theme","createStyles","_objectSpread","actionsTray","searchField","tableStyles","containerForHeader","_ref","classes","dispatch","useAppDispatch","params","useParams","useSelector","_useState","useState","_useState2","_slicedToArray","events","setEvents","_useState3","_useState4","loading","setLoading","tenantName","tenantNamespace","useEffect","api","invoke","concat","then","res","i","length","currentTime","Date","now","seen","niceDays","last_seen","toString","catch","err","setErrorSnackMessage","_jsxs","React","children","_jsx","className","sectionTitle","Grid","item","xs","EventsList","Event","props","event","_React$useState","_React$useState2","open","setOpen","TableRow","sx","borderBottom","cursor","TableCell","component","scope","onClick","event_type","reason","message","slice","KeyboardArrowUpIcon","KeyboardArrowDownIcon","style","paddingBottom","paddingTop","colSpan","Collapse","in","timeout","unmountOnExit","Box","margin","Typography","background","border","padding","fontSize","color","LinearProgress","TableContainer","Paper","Table","TableHead","TableBody","map"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/455.1793f7b1.chunk.js b/web-app/build/static/js/455.1793f7b1.chunk.js new file mode 100644 index 00000000000..6b28cf08aaf --- /dev/null +++ b/web-app/build/static/js/455.1793f7b1.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[455],{79762:(e,t,n)=>{n.d(t,{Z:()=>l});var r=n(72791);var o=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]&&arguments[0];this._memoizedUnloadedRanges=[],e&&this._ensureRowsLoaded(this._lastRenderedStartIndex,this._lastRenderedStopIndex)}},{key:"componentDidMount",value:function(){0}},{key:"render",value:function(){return(0,this.props.children)({onItemsRendered:this._onItemsRendered,ref:this._setRef})}},{key:"_ensureRowsLoaded",value:function(e,t){var n=this.props,r=n.isItemLoaded,o=n.itemCount,i=n.minimumBatchSize,l=void 0===i?10:i,s=n.threshold,a=void 0===s?15:s,c=function(e){for(var t=e.isItemLoaded,n=e.itemCount,r=e.minimumBatchSize,o=e.startIndex,i=e.stopIndex,l=[],s=null,a=null,c=o;c<=i;c++)t(c)?null!==a&&(l.push(s,a),s=a=null):(a=c,null===s&&(s=c));if(null!==a){for(var u=Math.min(Math.max(a,s+r-1),n-1),d=a+1;d<=u&&!t(d);d++)a=d;l.push(s,a)}if(l.length)for(;l[1]-l[0]+10;){var f=l[0]-1;if(t(f))break;l[0]=f}return l}({isItemLoaded:r,itemCount:o,minimumBatchSize:l,startIndex:Math.max(0,e-a),stopIndex:Math.min(o-1,t+a)});(this._memoizedUnloadedRanges.length!==c.length||this._memoizedUnloadedRanges.some((function(e,t){return c[t]!==e})))&&(this._memoizedUnloadedRanges=c,this._loadUnloadedRanges(c))}},{key:"_loadUnloadedRanges",value:function(e){for(var t=this,n=this.props.loadMoreItems||this.props.loadMoreRows,r=function(r){var o=e[r],i=e[r+1],l=n(o,i);null!=l&&l.then((function(){if(function(e){var t=e.lastRenderedStartIndex,n=e.lastRenderedStopIndex,r=e.startIndex,o=e.stopIndex;return!(r>n||o{n.d(t,{t7:()=>I});var r=n(87462),o=n(97326),i=n(94578),l=Number.isNaN||function(e){return"number"===typeof e&&e!==e};function s(e,t){if(e.length!==t.length)return!1;for(var n=0;n=t?e.call(null):r.id=requestAnimationFrame(o)}))};return r}var h=-1;function p(e){if(void 0===e&&(e=!1),-1===h||e){var t=document.createElement("div"),n=t.style;n.width="50px",n.height="50px",n.overflow="scroll",document.body.appendChild(t),h=t.offsetWidth-t.clientWidth,document.body.removeChild(t)}return h}var m=null;function v(e){if(void 0===e&&(e=!1),null===m||e){var t=document.createElement("div"),n=t.style;n.width="50px",n.height="50px",n.overflow="scroll",n.direction="rtl";var r=document.createElement("div"),o=r.style;return o.width="100px",o.height="100px",t.appendChild(r),document.body.appendChild(t),t.scrollLeft>0?m="positive-descending":(t.scrollLeft=1,m=0===t.scrollLeft?"negative":"positive-ascending"),document.body.removeChild(t),m}return m}var g=function(e,t){return e};function S(e){var t,n=e.getItemOffset,l=e.getEstimatedTotalSize,s=e.getItemSize,u=e.getOffsetForIndexAndAlignment,h=e.getStartIndexForOffset,m=e.getStopIndexForStartIndex,S=e.initInstanceProps,I=e.shouldResetStyleCacheOnItemSizeChange,y=e.validateProps;return t=function(e){function t(t){var r;return(r=e.call(this,t)||this)._instanceProps=S(r.props,(0,o.Z)(r)),r._outerRef=void 0,r._resetIsScrollingTimeoutId=null,r.state={instance:(0,o.Z)(r),isScrolling:!1,scrollDirection:"forward",scrollOffset:"number"===typeof r.props.initialScrollOffset?r.props.initialScrollOffset:0,scrollUpdateWasRequested:!1},r._callOnItemsRendered=void 0,r._callOnItemsRendered=a((function(e,t,n,o){return r.props.onItemsRendered({overscanStartIndex:e,overscanStopIndex:t,visibleStartIndex:n,visibleStopIndex:o})})),r._callOnScroll=void 0,r._callOnScroll=a((function(e,t,n){return r.props.onScroll({scrollDirection:e,scrollOffset:t,scrollUpdateWasRequested:n})})),r._getItemStyle=void 0,r._getItemStyle=function(e){var t,o=r.props,i=o.direction,l=o.itemSize,a=o.layout,c=r._getItemStyleCache(I&&l,I&&a,I&&i);if(c.hasOwnProperty(e))t=c[e];else{var u=n(r.props,e,r._instanceProps),d=s(r.props,e,r._instanceProps),f="horizontal"===i||"horizontal"===a,h="rtl"===i,p=f?u:0;c[e]=t={position:"absolute",left:h?void 0:p,right:h?p:void 0,top:f?0:u,height:f?"100%":d,width:f?d:"100%"}}return t},r._getItemStyleCache=void 0,r._getItemStyleCache=a((function(e,t,n){return{}})),r._onScrollHorizontal=function(e){var t=e.currentTarget,n=t.clientWidth,o=t.scrollLeft,i=t.scrollWidth;r.setState((function(e){if(e.scrollOffset===o)return null;var t=r.props.direction,l=o;if("rtl"===t)switch(v()){case"negative":l=-o;break;case"positive-descending":l=i-n-o}return l=Math.max(0,Math.min(l,i-n)),{isScrolling:!0,scrollDirection:e.scrollOffsets.clientWidth?p():0:s.scrollHeight>s.clientHeight?p():0}this.scrollTo(u(this.props,e,t,i,this._instanceProps,l))},R.componentDidMount=function(){var e=this.props,t=e.direction,n=e.initialScrollOffset,r=e.layout;if("number"===typeof n&&null!=this._outerRef){var o=this._outerRef;"horizontal"===t||"horizontal"===r?o.scrollLeft=n:o.scrollTop=n}this._callPropsCallbacks()},R.componentDidUpdate=function(){var e=this.props,t=e.direction,n=e.layout,r=this.state,o=r.scrollOffset;if(r.scrollUpdateWasRequested&&null!=this._outerRef){var i=this._outerRef;if("horizontal"===t||"horizontal"===n)if("rtl"===t)switch(v()){case"negative":i.scrollLeft=-o;break;case"positive-ascending":i.scrollLeft=o;break;default:var l=i.clientWidth,s=i.scrollWidth;i.scrollLeft=s-l-o}else i.scrollLeft=o;else i.scrollTop=o}this._callPropsCallbacks()},R.componentWillUnmount=function(){null!==this._resetIsScrollingTimeoutId&&d(this._resetIsScrollingTimeoutId)},R.render=function(){var e=this.props,t=e.children,n=e.className,o=e.direction,i=e.height,s=e.innerRef,a=e.innerElementType,u=e.innerTagName,d=e.itemCount,f=e.itemData,h=e.itemKey,p=void 0===h?g:h,m=e.layout,v=e.outerElementType,S=e.outerTagName,_=e.style,I=e.useIsScrolling,y=e.width,R=this.state.isScrolling,x="horizontal"===o||"horizontal"===m,b=x?this._onScrollHorizontal:this._onScrollVertical,w=this._getRangeToRender(),O=w[0],C=w[1],z=[];if(d>0)for(var M=O;M<=C;M++)z.push((0,c.createElement)(t,{data:f,key:p(M,f),index:M,isScrolling:I?R:void 0,style:this._getItemStyle(M)}));var T=l(this.props,this._instanceProps);return(0,c.createElement)(v||S||"div",{className:n,onScroll:b,ref:this._outerRefSetter,style:(0,r.Z)({position:"relative",height:i,width:y,overflow:"auto",WebkitOverflowScrolling:"touch",willChange:"transform",direction:o},_)},(0,c.createElement)(a||u||"div",{children:z,ref:s,style:{height:x?"100%":T,pointerEvents:R?"none":void 0,width:x?T:"100%"}}))},R._callPropsCallbacks=function(){if("function"===typeof this.props.onItemsRendered&&this.props.itemCount>0){var e=this._getRangeToRender(),t=e[0],n=e[1],r=e[2],o=e[3];this._callOnItemsRendered(t,n,r,o)}if("function"===typeof this.props.onScroll){var i=this.state,l=i.scrollDirection,s=i.scrollOffset,a=i.scrollUpdateWasRequested;this._callOnScroll(l,s,a)}},R._getRangeToRender=function(){var e=this.props,t=e.itemCount,n=e.overscanCount,r=this.state,o=r.isScrolling,i=r.scrollDirection,l=r.scrollOffset;if(0===t)return[0,0,0,0];var s=h(this.props,l,this._instanceProps),a=m(this.props,s,l,this._instanceProps),c=o&&"backward"!==i?1:Math.max(1,n),u=o&&"forward"!==i?1:Math.max(1,n);return[Math.max(0,s-c),Math.max(0,Math.min(t-1,a+u)),s,a]},t}(c.PureComponent),t.defaultProps={direction:"ltr",itemData:void 0,layout:"vertical",overscanCount:2,useIsScrolling:!1},t}var _=function(e,t){e.children,e.direction,e.height,e.layout,e.innerTagName,e.outerTagName,e.width,t.instance},I=S({getItemOffset:function(e,t){return t*e.itemSize},getItemSize:function(e,t){return e.itemSize},getEstimatedTotalSize:function(e){var t=e.itemCount;return e.itemSize*t},getOffsetForIndexAndAlignment:function(e,t,n,r,o,i){var l=e.direction,s=e.height,a=e.itemCount,c=e.itemSize,u=e.layout,d=e.width,f="horizontal"===l||"horizontal"===u?d:s,h=Math.max(0,a*c-f),p=Math.min(h,t*c),m=Math.max(0,t*c-f+c+i);switch("smart"===n&&(n=r>=m-f&&r<=p+f?"auto":"center"),n){case"start":return p;case"end":return m;case"center":var v=Math.round(m+(p-m)/2);return vh+Math.floor(f/2)?h:v;default:return r>=m&&r<=p?r:r lastRenderedStopIndex || stopIndex < lastRenderedStartIndex);\n}\n\nfunction scanForUnloadedRanges(_ref) {\n var isItemLoaded = _ref.isItemLoaded,\n itemCount = _ref.itemCount,\n minimumBatchSize = _ref.minimumBatchSize,\n startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n\n var unloadedRanges = [];\n\n var rangeStartIndex = null;\n var rangeStopIndex = null;\n\n for (var _index = startIndex; _index <= stopIndex; _index++) {\n var loaded = isItemLoaded(_index);\n\n if (!loaded) {\n rangeStopIndex = _index;\n if (rangeStartIndex === null) {\n rangeStartIndex = _index;\n }\n } else if (rangeStopIndex !== null) {\n unloadedRanges.push(rangeStartIndex, rangeStopIndex);\n\n rangeStartIndex = rangeStopIndex = null;\n }\n }\n\n // If :rangeStopIndex is not null it means we haven't ran out of unloaded rows.\n // Scan forward to try filling our :minimumBatchSize.\n if (rangeStopIndex !== null) {\n var potentialStopIndex = Math.min(Math.max(rangeStopIndex, rangeStartIndex + minimumBatchSize - 1), itemCount - 1);\n\n for (var _index2 = rangeStopIndex + 1; _index2 <= potentialStopIndex; _index2++) {\n if (!isItemLoaded(_index2)) {\n rangeStopIndex = _index2;\n } else {\n break;\n }\n }\n\n unloadedRanges.push(rangeStartIndex, rangeStopIndex);\n }\n\n // Check to see if our first range ended prematurely.\n // In this case we should scan backwards to try filling our :minimumBatchSize.\n if (unloadedRanges.length) {\n while (unloadedRanges[1] - unloadedRanges[0] + 1 < minimumBatchSize && unloadedRanges[0] > 0) {\n var _index3 = unloadedRanges[0] - 1;\n\n if (!isItemLoaded(_index3)) {\n unloadedRanges[0] = _index3;\n } else {\n break;\n }\n }\n }\n\n return unloadedRanges;\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\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 return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar InfiniteLoader = function (_PureComponent) {\n inherits(InfiniteLoader, _PureComponent);\n\n function InfiniteLoader() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, InfiniteLoader);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = InfiniteLoader.__proto__ || Object.getPrototypeOf(InfiniteLoader)).call.apply(_ref, [this].concat(args))), _this), _this._lastRenderedStartIndex = -1, _this._lastRenderedStopIndex = -1, _this._memoizedUnloadedRanges = [], _this._onItemsRendered = function (_ref2) {\n var visibleStartIndex = _ref2.visibleStartIndex,\n visibleStopIndex = _ref2.visibleStopIndex;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!isInteger(visibleStartIndex) || !isInteger(visibleStopIndex)) {\n console.warn('Invalid onItemsRendered signature; please refer to InfiniteLoader documentation.');\n }\n\n if (typeof _this.props.loadMoreRows === 'function') {\n console.warn('InfiniteLoader \"loadMoreRows\" prop has been renamed to \"loadMoreItems\".');\n }\n }\n\n _this._lastRenderedStartIndex = visibleStartIndex;\n _this._lastRenderedStopIndex = visibleStopIndex;\n\n _this._ensureRowsLoaded(visibleStartIndex, visibleStopIndex);\n }, _this._setRef = function (listRef) {\n _this._listRef = listRef;\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n createClass(InfiniteLoader, [{\n key: 'resetloadMoreItemsCache',\n value: function resetloadMoreItemsCache() {\n var autoReload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n this._memoizedUnloadedRanges = [];\n\n if (autoReload) {\n this._ensureRowsLoaded(this._lastRenderedStartIndex, this._lastRenderedStopIndex);\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (process.env.NODE_ENV !== 'production') {\n if (this._listRef == null) {\n console.warn('Invalid list ref; please refer to InfiniteLoader documentation.');\n }\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var children = this.props.children;\n\n\n return children({\n onItemsRendered: this._onItemsRendered,\n ref: this._setRef\n });\n }\n }, {\n key: '_ensureRowsLoaded',\n value: function _ensureRowsLoaded(startIndex, stopIndex) {\n var _props = this.props,\n isItemLoaded = _props.isItemLoaded,\n itemCount = _props.itemCount,\n _props$minimumBatchSi = _props.minimumBatchSize,\n minimumBatchSize = _props$minimumBatchSi === undefined ? 10 : _props$minimumBatchSi,\n _props$threshold = _props.threshold,\n threshold = _props$threshold === undefined ? 15 : _props$threshold;\n\n\n var unloadedRanges = scanForUnloadedRanges({\n isItemLoaded: isItemLoaded,\n itemCount: itemCount,\n minimumBatchSize: minimumBatchSize,\n startIndex: Math.max(0, startIndex - threshold),\n stopIndex: Math.min(itemCount - 1, stopIndex + threshold)\n });\n\n // Avoid calling load-rows unless range has changed.\n // This shouldn't be strictly necessary, but is maybe nice to do.\n if (this._memoizedUnloadedRanges.length !== unloadedRanges.length || this._memoizedUnloadedRanges.some(function (startOrStop, index) {\n return unloadedRanges[index] !== startOrStop;\n })) {\n this._memoizedUnloadedRanges = unloadedRanges;\n this._loadUnloadedRanges(unloadedRanges);\n }\n }\n }, {\n key: '_loadUnloadedRanges',\n value: function _loadUnloadedRanges(unloadedRanges) {\n var _this2 = this;\n\n // loadMoreRows was renamed to loadMoreItems in v1.0.3; will be removed in v2.0\n var loadMoreItems = this.props.loadMoreItems || this.props.loadMoreRows;\n\n var _loop = function _loop(i) {\n var startIndex = unloadedRanges[i];\n var stopIndex = unloadedRanges[i + 1];\n var promise = loadMoreItems(startIndex, stopIndex);\n if (promise != null) {\n promise.then(function () {\n // Refresh the visible rows if any of them have just been loaded.\n // Otherwise they will remain in their unloaded visual state.\n if (isRangeVisible({\n lastRenderedStartIndex: _this2._lastRenderedStartIndex,\n lastRenderedStopIndex: _this2._lastRenderedStopIndex,\n startIndex: startIndex,\n stopIndex: stopIndex\n })) {\n // Handle an unmount while promises are still in flight.\n if (_this2._listRef == null) {\n return;\n }\n\n // Resize cached row sizes for VariableSizeList,\n // otherwise just re-render the list.\n if (typeof _this2._listRef.resetAfterIndex === 'function') {\n _this2._listRef.resetAfterIndex(startIndex, true);\n } else {\n // HACK reset temporarily cached item styles to force PureComponent to re-render.\n // This is pretty gross, but I'm okay with it for now.\n // Don't judge me.\n if (typeof _this2._listRef._getItemStyleCache === 'function') {\n _this2._listRef._getItemStyleCache(-1);\n }\n _this2._listRef.forceUpdate();\n }\n }\n });\n }\n };\n\n for (var i = 0; i < unloadedRanges.length; i += 2) {\n _loop(i);\n }\n }\n }]);\n return InfiniteLoader;\n}(PureComponent);\n\nexport default InfiniteLoader;\n","var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\n","// @flow\n\n// Animation frame based implementation of setTimeout.\n// Inspired by Joe Lambert, https://gist.github.com/joelambert/1002116#file-requesttimeout-js\n\nconst hasNativePerformanceNow =\n typeof performance === 'object' && typeof performance.now === 'function';\n\nconst now = hasNativePerformanceNow\n ? () => performance.now()\n : () => Date.now();\n\nexport type TimeoutID = {|\n id: AnimationFrameID,\n|};\n\nexport function cancelTimeout(timeoutID: TimeoutID) {\n cancelAnimationFrame(timeoutID.id);\n}\n\nexport function requestTimeout(callback: Function, delay: number): TimeoutID {\n const start = now();\n\n function tick() {\n if (now() - start >= delay) {\n callback.call(null);\n } else {\n timeoutID.id = requestAnimationFrame(tick);\n }\n }\n\n const timeoutID: TimeoutID = {\n id: requestAnimationFrame(tick),\n };\n\n return timeoutID;\n}\n","// @flow\n\nlet size: number = -1;\n\n// This utility copied from \"dom-helpers\" package.\nexport function getScrollbarSize(recalculate?: boolean = false): number {\n if (size === -1 || recalculate) {\n const div = document.createElement('div');\n const style = div.style;\n style.width = '50px';\n style.height = '50px';\n style.overflow = 'scroll';\n\n ((document.body: any): HTMLBodyElement).appendChild(div);\n\n size = div.offsetWidth - div.clientWidth;\n\n ((document.body: any): HTMLBodyElement).removeChild(div);\n }\n\n return size;\n}\n\nexport type RTLOffsetType =\n | 'negative'\n | 'positive-descending'\n | 'positive-ascending';\n\nlet cachedRTLResult: RTLOffsetType | null = null;\n\n// TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n// Chrome does not seem to adhere; its scrollLeft values are positive (measured relative to the left).\n// Safari's elastic bounce makes detecting this even more complicated wrt potential false positives.\n// The safest way to check this is to intentionally set a negative offset,\n// and then verify that the subsequent \"scroll\" event matches the negative offset.\n// If it does not match, then we can assume a non-standard RTL scroll implementation.\nexport function getRTLOffsetType(recalculate?: boolean = false): RTLOffsetType {\n if (cachedRTLResult === null || recalculate) {\n const outerDiv = document.createElement('div');\n const outerStyle = outerDiv.style;\n outerStyle.width = '50px';\n outerStyle.height = '50px';\n outerStyle.overflow = 'scroll';\n outerStyle.direction = 'rtl';\n\n const innerDiv = document.createElement('div');\n const innerStyle = innerDiv.style;\n innerStyle.width = '100px';\n innerStyle.height = '100px';\n\n outerDiv.appendChild(innerDiv);\n\n ((document.body: any): HTMLBodyElement).appendChild(outerDiv);\n\n if (outerDiv.scrollLeft > 0) {\n cachedRTLResult = 'positive-descending';\n } else {\n outerDiv.scrollLeft = 1;\n if (outerDiv.scrollLeft === 0) {\n cachedRTLResult = 'negative';\n } else {\n cachedRTLResult = 'positive-ascending';\n }\n }\n\n ((document.body: any): HTMLBodyElement).removeChild(outerDiv);\n\n return cachedRTLResult;\n }\n\n return cachedRTLResult;\n}\n","// @flow\n\nimport memoizeOne from 'memoize-one';\nimport { createElement, PureComponent } from 'react';\nimport { cancelTimeout, requestTimeout } from './timer';\nimport { getScrollbarSize, getRTLOffsetType } from './domHelpers';\n\nimport type { TimeoutID } from './timer';\n\ntype Direction = 'ltr' | 'rtl';\nexport type ScrollToAlign = 'auto' | 'smart' | 'center' | 'start' | 'end';\n\ntype itemSize = number | ((index: number) => number);\n\ntype RenderComponentProps = {|\n columnIndex: number,\n data: T,\n isScrolling?: boolean,\n rowIndex: number,\n style: Object,\n|};\nexport type RenderComponent = React$ComponentType<\n $Shape>\n>;\n\ntype ScrollDirection = 'forward' | 'backward';\n\ntype OnItemsRenderedCallback = ({\n overscanColumnStartIndex: number,\n overscanColumnStopIndex: number,\n overscanRowStartIndex: number,\n overscanRowStopIndex: number,\n visibleColumnStartIndex: number,\n visibleColumnStopIndex: number,\n visibleRowStartIndex: number,\n visibleRowStopIndex: number,\n}) => void;\ntype OnScrollCallback = ({\n horizontalScrollDirection: ScrollDirection,\n scrollLeft: number,\n scrollTop: number,\n scrollUpdateWasRequested: boolean,\n verticalScrollDirection: ScrollDirection,\n}) => void;\n\ntype ScrollEvent = SyntheticEvent;\ntype ItemStyleCache = { [key: string]: Object };\n\ntype OuterProps = {|\n children: React$Node,\n className: string | void,\n onScroll: ScrollEvent => void,\n style: {\n [string]: mixed,\n },\n|};\n\ntype InnerProps = {|\n children: React$Node,\n style: {\n [string]: mixed,\n },\n|};\n\nexport type Props = {|\n children: RenderComponent,\n className?: string,\n columnCount: number,\n columnWidth: itemSize,\n direction: Direction,\n height: number,\n initialScrollLeft?: number,\n initialScrollTop?: number,\n innerRef?: any,\n innerElementType?: string | React$AbstractComponent,\n innerTagName?: string, // deprecated\n itemData: T,\n itemKey?: (params: {|\n columnIndex: number,\n data: T,\n rowIndex: number,\n |}) => any,\n onItemsRendered?: OnItemsRenderedCallback,\n onScroll?: OnScrollCallback,\n outerRef?: any,\n outerElementType?: string | React$AbstractComponent,\n outerTagName?: string, // deprecated\n overscanColumnCount?: number,\n overscanColumnsCount?: number, // deprecated\n overscanCount?: number, // deprecated\n overscanRowCount?: number,\n overscanRowsCount?: number, // deprecated\n rowCount: number,\n rowHeight: itemSize,\n style?: Object,\n useIsScrolling: boolean,\n width: number,\n|};\n\ntype State = {|\n instance: any,\n isScrolling: boolean,\n horizontalScrollDirection: ScrollDirection,\n scrollLeft: number,\n scrollTop: number,\n scrollUpdateWasRequested: boolean,\n verticalScrollDirection: ScrollDirection,\n|};\n\ntype getItemOffset = (\n props: Props,\n index: number,\n instanceProps: any\n) => number;\ntype getItemSize = (\n props: Props,\n index: number,\n instanceProps: any\n) => number;\ntype getEstimatedTotalSize = (props: Props, instanceProps: any) => number;\ntype GetOffsetForItemAndAlignment = (\n props: Props,\n index: number,\n align: ScrollToAlign,\n scrollOffset: number,\n instanceProps: any,\n scrollbarSize: number\n) => number;\ntype GetStartIndexForOffset = (\n props: Props,\n offset: number,\n instanceProps: any\n) => number;\ntype GetStopIndexForStartIndex = (\n props: Props,\n startIndex: number,\n scrollOffset: number,\n instanceProps: any\n) => number;\ntype InitInstanceProps = (props: Props, instance: any) => any;\ntype ValidateProps = (props: Props) => void;\n\nconst IS_SCROLLING_DEBOUNCE_INTERVAL = 150;\n\nconst defaultItemKey = ({ columnIndex, data, rowIndex }) =>\n `${rowIndex}:${columnIndex}`;\n\n// In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\nlet devWarningsOverscanCount = null;\nlet devWarningsOverscanRowsColumnsCount = null;\nlet devWarningsTagName = null;\nif (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n devWarningsOverscanCount = new WeakSet();\n devWarningsOverscanRowsColumnsCount = new WeakSet();\n devWarningsTagName = new WeakSet();\n }\n}\n\nexport default function createGridComponent({\n getColumnOffset,\n getColumnStartIndexForOffset,\n getColumnStopIndexForStartIndex,\n getColumnWidth,\n getEstimatedTotalHeight,\n getEstimatedTotalWidth,\n getOffsetForColumnAndAlignment,\n getOffsetForRowAndAlignment,\n getRowHeight,\n getRowOffset,\n getRowStartIndexForOffset,\n getRowStopIndexForStartIndex,\n initInstanceProps,\n shouldResetStyleCacheOnItemSizeChange,\n validateProps,\n}: {|\n getColumnOffset: getItemOffset,\n getColumnStartIndexForOffset: GetStartIndexForOffset,\n getColumnStopIndexForStartIndex: GetStopIndexForStartIndex,\n getColumnWidth: getItemSize,\n getEstimatedTotalHeight: getEstimatedTotalSize,\n getEstimatedTotalWidth: getEstimatedTotalSize,\n getOffsetForColumnAndAlignment: GetOffsetForItemAndAlignment,\n getOffsetForRowAndAlignment: GetOffsetForItemAndAlignment,\n getRowOffset: getItemOffset,\n getRowHeight: getItemSize,\n getRowStartIndexForOffset: GetStartIndexForOffset,\n getRowStopIndexForStartIndex: GetStopIndexForStartIndex,\n initInstanceProps: InitInstanceProps,\n shouldResetStyleCacheOnItemSizeChange: boolean,\n validateProps: ValidateProps,\n|}) {\n return class Grid extends PureComponent, State> {\n _instanceProps: any = initInstanceProps(this.props, this);\n _resetIsScrollingTimeoutId: TimeoutID | null = null;\n _outerRef: ?HTMLDivElement;\n\n static defaultProps = {\n direction: 'ltr',\n itemData: undefined,\n useIsScrolling: false,\n };\n\n state: State = {\n instance: this,\n isScrolling: false,\n horizontalScrollDirection: 'forward',\n scrollLeft:\n typeof this.props.initialScrollLeft === 'number'\n ? this.props.initialScrollLeft\n : 0,\n scrollTop:\n typeof this.props.initialScrollTop === 'number'\n ? this.props.initialScrollTop\n : 0,\n scrollUpdateWasRequested: false,\n verticalScrollDirection: 'forward',\n };\n\n // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n constructor(props: Props) {\n super(props);\n }\n\n static getDerivedStateFromProps(\n nextProps: Props,\n prevState: State\n ): $Shape | null {\n validateSharedProps(nextProps, prevState);\n validateProps(nextProps);\n return null;\n }\n\n scrollTo({\n scrollLeft,\n scrollTop,\n }: {\n scrollLeft: number,\n scrollTop: number,\n }): void {\n if (scrollLeft !== undefined) {\n scrollLeft = Math.max(0, scrollLeft);\n }\n if (scrollTop !== undefined) {\n scrollTop = Math.max(0, scrollTop);\n }\n\n this.setState(prevState => {\n if (scrollLeft === undefined) {\n scrollLeft = prevState.scrollLeft;\n }\n if (scrollTop === undefined) {\n scrollTop = prevState.scrollTop;\n }\n\n if (\n prevState.scrollLeft === scrollLeft &&\n prevState.scrollTop === scrollTop\n ) {\n return null;\n }\n\n return {\n horizontalScrollDirection:\n prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollUpdateWasRequested: true,\n verticalScrollDirection:\n prevState.scrollTop < scrollTop ? 'forward' : 'backward',\n };\n }, this._resetIsScrollingDebounced);\n }\n\n scrollToItem({\n align = 'auto',\n columnIndex,\n rowIndex,\n }: {\n align: ScrollToAlign,\n columnIndex?: number,\n rowIndex?: number,\n }): void {\n const { columnCount, height, rowCount, width } = this.props;\n const { scrollLeft, scrollTop } = this.state;\n const scrollbarSize = getScrollbarSize();\n\n if (columnIndex !== undefined) {\n columnIndex = Math.max(0, Math.min(columnIndex, columnCount - 1));\n }\n if (rowIndex !== undefined) {\n rowIndex = Math.max(0, Math.min(rowIndex, rowCount - 1));\n }\n\n const estimatedTotalHeight = getEstimatedTotalHeight(\n this.props,\n this._instanceProps\n );\n const estimatedTotalWidth = getEstimatedTotalWidth(\n this.props,\n this._instanceProps\n );\n\n // The scrollbar size should be considered when scrolling an item into view,\n // to ensure it's fully visible.\n // But we only need to account for its size when it's actually visible.\n const horizontalScrollbarSize =\n estimatedTotalWidth > width ? scrollbarSize : 0;\n const verticalScrollbarSize =\n estimatedTotalHeight > height ? scrollbarSize : 0;\n\n this.scrollTo({\n scrollLeft:\n columnIndex !== undefined\n ? getOffsetForColumnAndAlignment(\n this.props,\n columnIndex,\n align,\n scrollLeft,\n this._instanceProps,\n verticalScrollbarSize\n )\n : scrollLeft,\n scrollTop:\n rowIndex !== undefined\n ? getOffsetForRowAndAlignment(\n this.props,\n rowIndex,\n align,\n scrollTop,\n this._instanceProps,\n horizontalScrollbarSize\n )\n : scrollTop,\n });\n }\n\n componentDidMount() {\n const { initialScrollLeft, initialScrollTop } = this.props;\n\n if (this._outerRef != null) {\n const outerRef = ((this._outerRef: any): HTMLElement);\n if (typeof initialScrollLeft === 'number') {\n outerRef.scrollLeft = initialScrollLeft;\n }\n if (typeof initialScrollTop === 'number') {\n outerRef.scrollTop = initialScrollTop;\n }\n }\n\n this._callPropsCallbacks();\n }\n\n componentDidUpdate() {\n const { direction } = this.props;\n const { scrollLeft, scrollTop, scrollUpdateWasRequested } = this.state;\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n const outerRef = ((this._outerRef: any): HTMLElement);\n if (direction === 'rtl') {\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollLeft;\n break;\n case 'positive-ascending':\n outerRef.scrollLeft = scrollLeft;\n break;\n default:\n const { clientWidth, scrollWidth } = outerRef;\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n } else {\n outerRef.scrollLeft = Math.max(0, scrollLeft);\n }\n\n outerRef.scrollTop = Math.max(0, scrollTop);\n }\n\n this._callPropsCallbacks();\n }\n\n componentWillUnmount() {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n }\n\n render() {\n const {\n children,\n className,\n columnCount,\n direction,\n height,\n innerRef,\n innerElementType,\n innerTagName,\n itemData,\n itemKey = defaultItemKey,\n outerElementType,\n outerTagName,\n rowCount,\n style,\n useIsScrolling,\n width,\n } = this.props;\n const { isScrolling } = this.state;\n\n const [\n columnStartIndex,\n columnStopIndex,\n ] = this._getHorizontalRangeToRender();\n const [rowStartIndex, rowStopIndex] = this._getVerticalRangeToRender();\n\n const items = [];\n if (columnCount > 0 && rowCount) {\n for (\n let rowIndex = rowStartIndex;\n rowIndex <= rowStopIndex;\n rowIndex++\n ) {\n for (\n let columnIndex = columnStartIndex;\n columnIndex <= columnStopIndex;\n columnIndex++\n ) {\n items.push(\n createElement(children, {\n columnIndex,\n data: itemData,\n isScrolling: useIsScrolling ? isScrolling : undefined,\n key: itemKey({ columnIndex, data: itemData, rowIndex }),\n rowIndex,\n style: this._getItemStyle(rowIndex, columnIndex),\n })\n );\n }\n }\n }\n\n // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n const estimatedTotalHeight = getEstimatedTotalHeight(\n this.props,\n this._instanceProps\n );\n const estimatedTotalWidth = getEstimatedTotalWidth(\n this.props,\n this._instanceProps\n );\n\n return createElement(\n outerElementType || outerTagName || 'div',\n {\n className,\n onScroll: this._onScroll,\n ref: this._outerRefSetter,\n style: {\n position: 'relative',\n height,\n width,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction,\n ...style,\n },\n },\n createElement(innerElementType || innerTagName || 'div', {\n children: items,\n ref: innerRef,\n style: {\n height: estimatedTotalHeight,\n pointerEvents: isScrolling ? 'none' : undefined,\n width: estimatedTotalWidth,\n },\n })\n );\n }\n\n _callOnItemsRendered: (\n overscanColumnStartIndex: number,\n overscanColumnStopIndex: number,\n overscanRowStartIndex: number,\n overscanRowStopIndex: number,\n visibleColumnStartIndex: number,\n visibleColumnStopIndex: number,\n visibleRowStartIndex: number,\n visibleRowStopIndex: number\n ) => void;\n _callOnItemsRendered = memoizeOne(\n (\n overscanColumnStartIndex: number,\n overscanColumnStopIndex: number,\n overscanRowStartIndex: number,\n overscanRowStopIndex: number,\n visibleColumnStartIndex: number,\n visibleColumnStopIndex: number,\n visibleRowStartIndex: number,\n visibleRowStopIndex: number\n ) =>\n ((this.props.onItemsRendered: any): OnItemsRenderedCallback)({\n overscanColumnStartIndex,\n overscanColumnStopIndex,\n overscanRowStartIndex,\n overscanRowStopIndex,\n visibleColumnStartIndex,\n visibleColumnStopIndex,\n visibleRowStartIndex,\n visibleRowStopIndex,\n })\n );\n\n _callOnScroll: (\n scrollLeft: number,\n scrollTop: number,\n horizontalScrollDirection: ScrollDirection,\n verticalScrollDirection: ScrollDirection,\n scrollUpdateWasRequested: boolean\n ) => void;\n _callOnScroll = memoizeOne(\n (\n scrollLeft: number,\n scrollTop: number,\n horizontalScrollDirection: ScrollDirection,\n verticalScrollDirection: ScrollDirection,\n scrollUpdateWasRequested: boolean\n ) =>\n ((this.props.onScroll: any): OnScrollCallback)({\n horizontalScrollDirection,\n scrollLeft,\n scrollTop,\n verticalScrollDirection,\n scrollUpdateWasRequested,\n })\n );\n\n _callPropsCallbacks() {\n const { columnCount, onItemsRendered, onScroll, rowCount } = this.props;\n\n if (typeof onItemsRendered === 'function') {\n if (columnCount > 0 && rowCount > 0) {\n const [\n overscanColumnStartIndex,\n overscanColumnStopIndex,\n visibleColumnStartIndex,\n visibleColumnStopIndex,\n ] = this._getHorizontalRangeToRender();\n const [\n overscanRowStartIndex,\n overscanRowStopIndex,\n visibleRowStartIndex,\n visibleRowStopIndex,\n ] = this._getVerticalRangeToRender();\n this._callOnItemsRendered(\n overscanColumnStartIndex,\n overscanColumnStopIndex,\n overscanRowStartIndex,\n overscanRowStopIndex,\n visibleColumnStartIndex,\n visibleColumnStopIndex,\n visibleRowStartIndex,\n visibleRowStopIndex\n );\n }\n }\n\n if (typeof onScroll === 'function') {\n const {\n horizontalScrollDirection,\n scrollLeft,\n scrollTop,\n scrollUpdateWasRequested,\n verticalScrollDirection,\n } = this.state;\n this._callOnScroll(\n scrollLeft,\n scrollTop,\n horizontalScrollDirection,\n verticalScrollDirection,\n scrollUpdateWasRequested\n );\n }\n }\n\n // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n _getItemStyle: (rowIndex: number, columnIndex: number) => Object;\n _getItemStyle = (rowIndex: number, columnIndex: number): Object => {\n const { columnWidth, direction, rowHeight } = this.props;\n\n const itemStyleCache = this._getItemStyleCache(\n shouldResetStyleCacheOnItemSizeChange && columnWidth,\n shouldResetStyleCacheOnItemSizeChange && direction,\n shouldResetStyleCacheOnItemSizeChange && rowHeight\n );\n\n const key = `${rowIndex}:${columnIndex}`;\n\n let style;\n if (itemStyleCache.hasOwnProperty(key)) {\n style = itemStyleCache[key];\n } else {\n const offset = getColumnOffset(\n this.props,\n columnIndex,\n this._instanceProps\n );\n const isRtl = direction === 'rtl';\n itemStyleCache[key] = style = {\n position: 'absolute',\n left: isRtl ? undefined : offset,\n right: isRtl ? offset : undefined,\n top: getRowOffset(this.props, rowIndex, this._instanceProps),\n height: getRowHeight(this.props, rowIndex, this._instanceProps),\n width: getColumnWidth(this.props, columnIndex, this._instanceProps),\n };\n }\n\n return style;\n };\n\n _getItemStyleCache: (_: any, __: any, ___: any) => ItemStyleCache;\n _getItemStyleCache = memoizeOne((_: any, __: any, ___: any) => ({}));\n\n _getHorizontalRangeToRender(): [number, number, number, number] {\n const {\n columnCount,\n overscanColumnCount,\n overscanColumnsCount,\n overscanCount,\n rowCount,\n } = this.props;\n const { horizontalScrollDirection, isScrolling, scrollLeft } = this.state;\n\n const overscanCountResolved: number =\n overscanColumnCount || overscanColumnsCount || overscanCount || 1;\n\n if (columnCount === 0 || rowCount === 0) {\n return [0, 0, 0, 0];\n }\n\n const startIndex = getColumnStartIndexForOffset(\n this.props,\n scrollLeft,\n this._instanceProps\n );\n const stopIndex = getColumnStopIndexForStartIndex(\n this.props,\n startIndex,\n scrollLeft,\n this._instanceProps\n );\n\n // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n const overscanBackward =\n !isScrolling || horizontalScrollDirection === 'backward'\n ? Math.max(1, overscanCountResolved)\n : 1;\n const overscanForward =\n !isScrolling || horizontalScrollDirection === 'forward'\n ? Math.max(1, overscanCountResolved)\n : 1;\n\n return [\n Math.max(0, startIndex - overscanBackward),\n Math.max(0, Math.min(columnCount - 1, stopIndex + overscanForward)),\n startIndex,\n stopIndex,\n ];\n }\n\n _getVerticalRangeToRender(): [number, number, number, number] {\n const {\n columnCount,\n overscanCount,\n overscanRowCount,\n overscanRowsCount,\n rowCount,\n } = this.props;\n const { isScrolling, verticalScrollDirection, scrollTop } = this.state;\n\n const overscanCountResolved: number =\n overscanRowCount || overscanRowsCount || overscanCount || 1;\n\n if (columnCount === 0 || rowCount === 0) {\n return [0, 0, 0, 0];\n }\n\n const startIndex = getRowStartIndexForOffset(\n this.props,\n scrollTop,\n this._instanceProps\n );\n const stopIndex = getRowStopIndexForStartIndex(\n this.props,\n startIndex,\n scrollTop,\n this._instanceProps\n );\n\n // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n const overscanBackward =\n !isScrolling || verticalScrollDirection === 'backward'\n ? Math.max(1, overscanCountResolved)\n : 1;\n const overscanForward =\n !isScrolling || verticalScrollDirection === 'forward'\n ? Math.max(1, overscanCountResolved)\n : 1;\n\n return [\n Math.max(0, startIndex - overscanBackward),\n Math.max(0, Math.min(rowCount - 1, stopIndex + overscanForward)),\n startIndex,\n stopIndex,\n ];\n }\n\n _onScroll = (event: ScrollEvent): void => {\n const {\n clientHeight,\n clientWidth,\n scrollLeft,\n scrollTop,\n scrollHeight,\n scrollWidth,\n } = event.currentTarget;\n this.setState(prevState => {\n if (\n prevState.scrollLeft === scrollLeft &&\n prevState.scrollTop === scrollTop\n ) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n const { direction } = this.props;\n\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n let calculatedScrollLeft = scrollLeft;\n if (direction === 'rtl') {\n switch (getRTLOffsetType()) {\n case 'negative':\n calculatedScrollLeft = -scrollLeft;\n break;\n case 'positive-descending':\n calculatedScrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n calculatedScrollLeft = Math.max(\n 0,\n Math.min(calculatedScrollLeft, scrollWidth - clientWidth)\n );\n const calculatedScrollTop = Math.max(\n 0,\n Math.min(scrollTop, scrollHeight - clientHeight)\n );\n\n return {\n isScrolling: true,\n horizontalScrollDirection:\n prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n scrollLeft: calculatedScrollLeft,\n scrollTop: calculatedScrollTop,\n verticalScrollDirection:\n prevState.scrollTop < scrollTop ? 'forward' : 'backward',\n scrollUpdateWasRequested: false,\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _outerRefSetter = (ref: any): void => {\n const { outerRef } = this.props;\n\n this._outerRef = ((ref: any): HTMLDivElement);\n\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (\n outerRef != null &&\n typeof outerRef === 'object' &&\n outerRef.hasOwnProperty('current')\n ) {\n outerRef.current = ref;\n }\n };\n\n _resetIsScrollingDebounced = () => {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n\n this._resetIsScrollingTimeoutId = requestTimeout(\n this._resetIsScrolling,\n IS_SCROLLING_DEBOUNCE_INTERVAL\n );\n };\n\n _resetIsScrolling = () => {\n this._resetIsScrollingTimeoutId = null;\n\n this.setState({ isScrolling: false }, () => {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n this._getItemStyleCache(-1);\n });\n };\n };\n}\n\nconst validateSharedProps = (\n {\n children,\n direction,\n height,\n innerTagName,\n outerTagName,\n overscanColumnsCount,\n overscanCount,\n overscanRowsCount,\n width,\n }: Props,\n { instance }: State\n): void => {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof overscanCount === 'number') {\n if (devWarningsOverscanCount && !devWarningsOverscanCount.has(instance)) {\n devWarningsOverscanCount.add(instance);\n console.warn(\n 'The overscanCount prop has been deprecated. ' +\n 'Please use the overscanColumnCount and overscanRowCount props instead.'\n );\n }\n }\n\n if (\n typeof overscanColumnsCount === 'number' ||\n typeof overscanRowsCount === 'number'\n ) {\n if (\n devWarningsOverscanRowsColumnsCount &&\n !devWarningsOverscanRowsColumnsCount.has(instance)\n ) {\n devWarningsOverscanRowsColumnsCount.add(instance);\n console.warn(\n 'The overscanColumnsCount and overscanRowsCount props have been deprecated. ' +\n 'Please use the overscanColumnCount and overscanRowCount props instead.'\n );\n }\n }\n\n if (innerTagName != null || outerTagName != null) {\n if (devWarningsTagName && !devWarningsTagName.has(instance)) {\n devWarningsTagName.add(instance);\n console.warn(\n 'The innerTagName and outerTagName props have been deprecated. ' +\n 'Please use the innerElementType and outerElementType props instead.'\n );\n }\n }\n\n if (children == null) {\n throw Error(\n 'An invalid \"children\" prop has been specified. ' +\n 'Value should be a React component. ' +\n `\"${children === null ? 'null' : typeof children}\" was specified.`\n );\n }\n\n switch (direction) {\n case 'ltr':\n case 'rtl':\n // Valid values\n break;\n default:\n throw Error(\n 'An invalid \"direction\" prop has been specified. ' +\n 'Value should be either \"ltr\" or \"rtl\". ' +\n `\"${direction}\" was specified.`\n );\n }\n\n if (typeof width !== 'number') {\n throw Error(\n 'An invalid \"width\" prop has been specified. ' +\n 'Grids must specify a number for width. ' +\n `\"${width === null ? 'null' : typeof width}\" was specified.`\n );\n }\n\n if (typeof height !== 'number') {\n throw Error(\n 'An invalid \"height\" prop has been specified. ' +\n 'Grids must specify a number for height. ' +\n `\"${height === null ? 'null' : typeof height}\" was specified.`\n );\n }\n }\n};\n","// @flow\n\nimport memoizeOne from 'memoize-one';\nimport { createElement, PureComponent } from 'react';\nimport { cancelTimeout, requestTimeout } from './timer';\nimport { getScrollbarSize, getRTLOffsetType } from './domHelpers';\n\nimport type { TimeoutID } from './timer';\n\nexport type ScrollToAlign = 'auto' | 'smart' | 'center' | 'start' | 'end';\n\ntype itemSize = number | ((index: number) => number);\n// TODO Deprecate directions \"horizontal\" and \"vertical\"\ntype Direction = 'ltr' | 'rtl' | 'horizontal' | 'vertical';\ntype Layout = 'horizontal' | 'vertical';\n\ntype RenderComponentProps = {|\n data: T,\n index: number,\n isScrolling?: boolean,\n style: Object,\n|};\ntype RenderComponent = React$ComponentType<$Shape>>;\n\ntype ScrollDirection = 'forward' | 'backward';\n\ntype onItemsRenderedCallback = ({\n overscanStartIndex: number,\n overscanStopIndex: number,\n visibleStartIndex: number,\n visibleStopIndex: number,\n}) => void;\ntype onScrollCallback = ({\n scrollDirection: ScrollDirection,\n scrollOffset: number,\n scrollUpdateWasRequested: boolean,\n}) => void;\n\ntype ScrollEvent = SyntheticEvent;\ntype ItemStyleCache = { [index: number]: Object };\n\ntype OuterProps = {|\n children: React$Node,\n className: string | void,\n onScroll: ScrollEvent => void,\n style: {\n [string]: mixed,\n },\n|};\n\ntype InnerProps = {|\n children: React$Node,\n style: {\n [string]: mixed,\n },\n|};\n\nexport type Props = {|\n children: RenderComponent,\n className?: string,\n direction: Direction,\n height: number | string,\n initialScrollOffset?: number,\n innerRef?: any,\n innerElementType?: string | React$AbstractComponent,\n innerTagName?: string, // deprecated\n itemCount: number,\n itemData: T,\n itemKey?: (index: number, data: T) => any,\n itemSize: itemSize,\n layout: Layout,\n onItemsRendered?: onItemsRenderedCallback,\n onScroll?: onScrollCallback,\n outerRef?: any,\n outerElementType?: string | React$AbstractComponent,\n outerTagName?: string, // deprecated\n overscanCount: number,\n style?: Object,\n useIsScrolling: boolean,\n width: number | string,\n|};\n\ntype State = {|\n instance: any,\n isScrolling: boolean,\n scrollDirection: ScrollDirection,\n scrollOffset: number,\n scrollUpdateWasRequested: boolean,\n|};\n\ntype GetItemOffset = (\n props: Props,\n index: number,\n instanceProps: any\n) => number;\ntype GetItemSize = (\n props: Props,\n index: number,\n instanceProps: any\n) => number;\ntype GetEstimatedTotalSize = (props: Props, instanceProps: any) => number;\ntype GetOffsetForIndexAndAlignment = (\n props: Props,\n index: number,\n align: ScrollToAlign,\n scrollOffset: number,\n instanceProps: any\n) => number;\ntype GetStartIndexForOffset = (\n props: Props,\n offset: number,\n instanceProps: any\n) => number;\ntype GetStopIndexForStartIndex = (\n props: Props,\n startIndex: number,\n scrollOffset: number,\n instanceProps: any\n) => number;\ntype InitInstanceProps = (props: Props, instance: any) => any;\ntype ValidateProps = (props: Props) => void;\n\nconst IS_SCROLLING_DEBOUNCE_INTERVAL = 150;\n\nconst defaultItemKey = (index: number, data: any) => index;\n\n// In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\nlet devWarningsDirection = null;\nlet devWarningsTagName = null;\nif (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n devWarningsDirection = new WeakSet();\n devWarningsTagName = new WeakSet();\n }\n}\n\nexport default function createListComponent({\n getItemOffset,\n getEstimatedTotalSize,\n getItemSize,\n getOffsetForIndexAndAlignment,\n getStartIndexForOffset,\n getStopIndexForStartIndex,\n initInstanceProps,\n shouldResetStyleCacheOnItemSizeChange,\n validateProps,\n}: {|\n getItemOffset: GetItemOffset,\n getEstimatedTotalSize: GetEstimatedTotalSize,\n getItemSize: GetItemSize,\n getOffsetForIndexAndAlignment: GetOffsetForIndexAndAlignment,\n getStartIndexForOffset: GetStartIndexForOffset,\n getStopIndexForStartIndex: GetStopIndexForStartIndex,\n initInstanceProps: InitInstanceProps,\n shouldResetStyleCacheOnItemSizeChange: boolean,\n validateProps: ValidateProps,\n|}) {\n return class List extends PureComponent, State> {\n _instanceProps: any = initInstanceProps(this.props, this);\n _outerRef: ?HTMLDivElement;\n _resetIsScrollingTimeoutId: TimeoutID | null = null;\n\n static defaultProps = {\n direction: 'ltr',\n itemData: undefined,\n layout: 'vertical',\n overscanCount: 2,\n useIsScrolling: false,\n };\n\n state: State = {\n instance: this,\n isScrolling: false,\n scrollDirection: 'forward',\n scrollOffset:\n typeof this.props.initialScrollOffset === 'number'\n ? this.props.initialScrollOffset\n : 0,\n scrollUpdateWasRequested: false,\n };\n\n // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n constructor(props: Props) {\n super(props);\n }\n\n static getDerivedStateFromProps(\n nextProps: Props,\n prevState: State\n ): $Shape | null {\n validateSharedProps(nextProps, prevState);\n validateProps(nextProps);\n return null;\n }\n\n scrollTo(scrollOffset: number): void {\n scrollOffset = Math.max(0, scrollOffset);\n\n this.setState(prevState => {\n if (prevState.scrollOffset === scrollOffset) {\n return null;\n }\n return {\n scrollDirection:\n prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: true,\n };\n }, this._resetIsScrollingDebounced);\n }\n\n scrollToItem(index: number, align: ScrollToAlign = 'auto'): void {\n const { itemCount, layout } = this.props;\n const { scrollOffset } = this.state;\n\n index = Math.max(0, Math.min(index, itemCount - 1));\n\n // The scrollbar size should be considered when scrolling an item into view, to ensure it's fully visible.\n // But we only need to account for its size when it's actually visible.\n // This is an edge case for lists; normally they only scroll in the dominant direction.\n let scrollbarSize = 0;\n if (this._outerRef) {\n const outerRef = ((this._outerRef: any): HTMLElement);\n if (layout === 'vertical') {\n scrollbarSize =\n outerRef.scrollWidth > outerRef.clientWidth\n ? getScrollbarSize()\n : 0;\n } else {\n scrollbarSize =\n outerRef.scrollHeight > outerRef.clientHeight\n ? getScrollbarSize()\n : 0;\n }\n }\n\n this.scrollTo(\n getOffsetForIndexAndAlignment(\n this.props,\n index,\n align,\n scrollOffset,\n this._instanceProps,\n scrollbarSize\n )\n );\n }\n\n componentDidMount() {\n const { direction, initialScrollOffset, layout } = this.props;\n\n if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n const outerRef = ((this._outerRef: any): HTMLElement);\n // TODO Deprecate direction \"horizontal\"\n if (direction === 'horizontal' || layout === 'horizontal') {\n outerRef.scrollLeft = initialScrollOffset;\n } else {\n outerRef.scrollTop = initialScrollOffset;\n }\n }\n\n this._callPropsCallbacks();\n }\n\n componentDidUpdate() {\n const { direction, layout } = this.props;\n const { scrollOffset, scrollUpdateWasRequested } = this.state;\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n const outerRef = ((this._outerRef: any): HTMLElement);\n\n // TODO Deprecate direction \"horizontal\"\n if (direction === 'horizontal' || layout === 'horizontal') {\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollOffset;\n break;\n case 'positive-ascending':\n outerRef.scrollLeft = scrollOffset;\n break;\n default:\n const { clientWidth, scrollWidth } = outerRef;\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollOffset;\n break;\n }\n } else {\n outerRef.scrollLeft = scrollOffset;\n }\n } else {\n outerRef.scrollTop = scrollOffset;\n }\n }\n\n this._callPropsCallbacks();\n }\n\n componentWillUnmount() {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n }\n\n render() {\n const {\n children,\n className,\n direction,\n height,\n innerRef,\n innerElementType,\n innerTagName,\n itemCount,\n itemData,\n itemKey = defaultItemKey,\n layout,\n outerElementType,\n outerTagName,\n style,\n useIsScrolling,\n width,\n } = this.props;\n const { isScrolling } = this.state;\n\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal =\n direction === 'horizontal' || layout === 'horizontal';\n\n const onScroll = isHorizontal\n ? this._onScrollHorizontal\n : this._onScrollVertical;\n\n const [startIndex, stopIndex] = this._getRangeToRender();\n\n const items = [];\n if (itemCount > 0) {\n for (let index = startIndex; index <= stopIndex; index++) {\n items.push(\n createElement(children, {\n data: itemData,\n key: itemKey(index, itemData),\n index,\n isScrolling: useIsScrolling ? isScrolling : undefined,\n style: this._getItemStyle(index),\n })\n );\n }\n }\n\n // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n const estimatedTotalSize = getEstimatedTotalSize(\n this.props,\n this._instanceProps\n );\n\n return createElement(\n outerElementType || outerTagName || 'div',\n {\n className,\n onScroll,\n ref: this._outerRefSetter,\n style: {\n position: 'relative',\n height,\n width,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction,\n ...style,\n },\n },\n createElement(innerElementType || innerTagName || 'div', {\n children: items,\n ref: innerRef,\n style: {\n height: isHorizontal ? '100%' : estimatedTotalSize,\n pointerEvents: isScrolling ? 'none' : undefined,\n width: isHorizontal ? estimatedTotalSize : '100%',\n },\n })\n );\n }\n\n _callOnItemsRendered: (\n overscanStartIndex: number,\n overscanStopIndex: number,\n visibleStartIndex: number,\n visibleStopIndex: number\n ) => void;\n _callOnItemsRendered = memoizeOne(\n (\n overscanStartIndex: number,\n overscanStopIndex: number,\n visibleStartIndex: number,\n visibleStopIndex: number\n ) =>\n ((this.props.onItemsRendered: any): onItemsRenderedCallback)({\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex,\n })\n );\n\n _callOnScroll: (\n scrollDirection: ScrollDirection,\n scrollOffset: number,\n scrollUpdateWasRequested: boolean\n ) => void;\n _callOnScroll = memoizeOne(\n (\n scrollDirection: ScrollDirection,\n scrollOffset: number,\n scrollUpdateWasRequested: boolean\n ) =>\n ((this.props.onScroll: any): onScrollCallback)({\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n })\n );\n\n _callPropsCallbacks() {\n if (typeof this.props.onItemsRendered === 'function') {\n const { itemCount } = this.props;\n if (itemCount > 0) {\n const [\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex,\n ] = this._getRangeToRender();\n this._callOnItemsRendered(\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex\n );\n }\n }\n\n if (typeof this.props.onScroll === 'function') {\n const {\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n } = this.state;\n this._callOnScroll(\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested\n );\n }\n }\n\n // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n _getItemStyle: (index: number) => Object;\n _getItemStyle = (index: number): Object => {\n const { direction, itemSize, layout } = this.props;\n\n const itemStyleCache = this._getItemStyleCache(\n shouldResetStyleCacheOnItemSizeChange && itemSize,\n shouldResetStyleCacheOnItemSizeChange && layout,\n shouldResetStyleCacheOnItemSizeChange && direction\n );\n\n let style;\n if (itemStyleCache.hasOwnProperty(index)) {\n style = itemStyleCache[index];\n } else {\n const offset = getItemOffset(this.props, index, this._instanceProps);\n const size = getItemSize(this.props, index, this._instanceProps);\n\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal =\n direction === 'horizontal' || layout === 'horizontal';\n\n const isRtl = direction === 'rtl';\n const offsetHorizontal = isHorizontal ? offset : 0;\n itemStyleCache[index] = style = {\n position: 'absolute',\n left: isRtl ? undefined : offsetHorizontal,\n right: isRtl ? offsetHorizontal : undefined,\n top: !isHorizontal ? offset : 0,\n height: !isHorizontal ? size : '100%',\n width: isHorizontal ? size : '100%',\n };\n }\n\n return style;\n };\n\n _getItemStyleCache: (_: any, __: any, ___: any) => ItemStyleCache;\n _getItemStyleCache = memoizeOne((_: any, __: any, ___: any) => ({}));\n\n _getRangeToRender(): [number, number, number, number] {\n const { itemCount, overscanCount } = this.props;\n const { isScrolling, scrollDirection, scrollOffset } = this.state;\n\n if (itemCount === 0) {\n return [0, 0, 0, 0];\n }\n\n const startIndex = getStartIndexForOffset(\n this.props,\n scrollOffset,\n this._instanceProps\n );\n const stopIndex = getStopIndexForStartIndex(\n this.props,\n startIndex,\n scrollOffset,\n this._instanceProps\n );\n\n // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n const overscanBackward =\n !isScrolling || scrollDirection === 'backward'\n ? Math.max(1, overscanCount)\n : 1;\n const overscanForward =\n !isScrolling || scrollDirection === 'forward'\n ? Math.max(1, overscanCount)\n : 1;\n\n return [\n Math.max(0, startIndex - overscanBackward),\n Math.max(0, Math.min(itemCount - 1, stopIndex + overscanForward)),\n startIndex,\n stopIndex,\n ];\n }\n\n _onScrollHorizontal = (event: ScrollEvent): void => {\n const { clientWidth, scrollLeft, scrollWidth } = event.currentTarget;\n this.setState(prevState => {\n if (prevState.scrollOffset === scrollLeft) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n const { direction } = this.props;\n\n let scrollOffset = scrollLeft;\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n switch (getRTLOffsetType()) {\n case 'negative':\n scrollOffset = -scrollLeft;\n break;\n case 'positive-descending':\n scrollOffset = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n scrollOffset = Math.max(\n 0,\n Math.min(scrollOffset, scrollWidth - clientWidth)\n );\n\n return {\n isScrolling: true,\n scrollDirection:\n prevState.scrollOffset < scrollLeft ? 'forward' : 'backward',\n scrollOffset,\n scrollUpdateWasRequested: false,\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _onScrollVertical = (event: ScrollEvent): void => {\n const { clientHeight, scrollHeight, scrollTop } = event.currentTarget;\n this.setState(prevState => {\n if (prevState.scrollOffset === scrollTop) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n const scrollOffset = Math.max(\n 0,\n Math.min(scrollTop, scrollHeight - clientHeight)\n );\n\n return {\n isScrolling: true,\n scrollDirection:\n prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset,\n scrollUpdateWasRequested: false,\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _outerRefSetter = (ref: any): void => {\n const { outerRef } = this.props;\n\n this._outerRef = ((ref: any): HTMLDivElement);\n\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (\n outerRef != null &&\n typeof outerRef === 'object' &&\n outerRef.hasOwnProperty('current')\n ) {\n outerRef.current = ref;\n }\n };\n\n _resetIsScrollingDebounced = () => {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n\n this._resetIsScrollingTimeoutId = requestTimeout(\n this._resetIsScrolling,\n IS_SCROLLING_DEBOUNCE_INTERVAL\n );\n };\n\n _resetIsScrolling = () => {\n this._resetIsScrollingTimeoutId = null;\n\n this.setState({ isScrolling: false }, () => {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n this._getItemStyleCache(-1, null);\n });\n };\n };\n}\n\n// NOTE: I considered further wrapping individual items with a pure ListItem component.\n// This would avoid ever calling the render function for the same index more than once,\n// But it would also add the overhead of a lot of components/fibers.\n// I assume people already do this (render function returning a class component),\n// So my doing it would just unnecessarily double the wrappers.\n\nconst validateSharedProps = (\n {\n children,\n direction,\n height,\n layout,\n innerTagName,\n outerTagName,\n width,\n }: Props,\n { instance }: State\n): void => {\n if (process.env.NODE_ENV !== 'production') {\n if (innerTagName != null || outerTagName != null) {\n if (devWarningsTagName && !devWarningsTagName.has(instance)) {\n devWarningsTagName.add(instance);\n console.warn(\n 'The innerTagName and outerTagName props have been deprecated. ' +\n 'Please use the innerElementType and outerElementType props instead.'\n );\n }\n }\n\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n\n switch (direction) {\n case 'horizontal':\n case 'vertical':\n if (devWarningsDirection && !devWarningsDirection.has(instance)) {\n devWarningsDirection.add(instance);\n console.warn(\n 'The direction prop should be either \"ltr\" (default) or \"rtl\". ' +\n 'Please use the layout prop to specify \"vertical\" (default) or \"horizontal\" orientation.'\n );\n }\n break;\n case 'ltr':\n case 'rtl':\n // Valid values\n break;\n default:\n throw Error(\n 'An invalid \"direction\" prop has been specified. ' +\n 'Value should be either \"ltr\" or \"rtl\". ' +\n `\"${direction}\" was specified.`\n );\n }\n\n switch (layout) {\n case 'horizontal':\n case 'vertical':\n // Valid values\n break;\n default:\n throw Error(\n 'An invalid \"layout\" prop has been specified. ' +\n 'Value should be either \"horizontal\" or \"vertical\". ' +\n `\"${layout}\" was specified.`\n );\n }\n\n if (children == null) {\n throw Error(\n 'An invalid \"children\" prop has been specified. ' +\n 'Value should be a React component. ' +\n `\"${children === null ? 'null' : typeof children}\" was specified.`\n );\n }\n\n if (isHorizontal && typeof width !== 'number') {\n throw Error(\n 'An invalid \"width\" prop has been specified. ' +\n 'Horizontal lists must specify a number for width. ' +\n `\"${width === null ? 'null' : typeof width}\" was specified.`\n );\n } else if (!isHorizontal && typeof height !== 'number') {\n throw Error(\n 'An invalid \"height\" prop has been specified. ' +\n 'Vertical lists must specify a number for height. ' +\n `\"${height === null ? 'null' : typeof height}\" was specified.`\n );\n }\n }\n};\n","// @flow\n\nimport createListComponent from './createListComponent';\n\nimport type { Props, ScrollToAlign } from './createListComponent';\n\ntype InstanceProps = any;\n\nconst FixedSizeList = createListComponent({\n getItemOffset: ({ itemSize }: Props, index: number): number =>\n index * ((itemSize: any): number),\n\n getItemSize: ({ itemSize }: Props, index: number): number =>\n ((itemSize: any): number),\n\n getEstimatedTotalSize: ({ itemCount, itemSize }: Props) =>\n ((itemSize: any): number) * itemCount,\n\n getOffsetForIndexAndAlignment: (\n { direction, height, itemCount, itemSize, layout, width }: Props,\n index: number,\n align: ScrollToAlign,\n scrollOffset: number,\n instanceProps: InstanceProps,\n scrollbarSize: number\n ): number => {\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n const size = (((isHorizontal ? width : height): any): number);\n const lastItemOffset = Math.max(\n 0,\n itemCount * ((itemSize: any): number) - size\n );\n const maxOffset = Math.min(\n lastItemOffset,\n index * ((itemSize: any): number)\n );\n const minOffset = Math.max(\n 0,\n index * ((itemSize: any): number) -\n size +\n ((itemSize: any): number) +\n scrollbarSize\n );\n\n if (align === 'smart') {\n if (\n scrollOffset >= minOffset - size &&\n scrollOffset <= maxOffset + size\n ) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n case 'end':\n return minOffset;\n case 'center': {\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n const middleOffset = Math.round(\n minOffset + (maxOffset - minOffset) / 2\n );\n if (middleOffset < Math.ceil(size / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastItemOffset + Math.floor(size / 2)) {\n return lastItemOffset; // near the end\n } else {\n return middleOffset;\n }\n }\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n }\n },\n\n getStartIndexForOffset: (\n { itemCount, itemSize }: Props,\n offset: number\n ): number =>\n Math.max(\n 0,\n Math.min(itemCount - 1, Math.floor(offset / ((itemSize: any): number)))\n ),\n\n getStopIndexForStartIndex: (\n { direction, height, itemCount, itemSize, layout, width }: Props,\n startIndex: number,\n scrollOffset: number\n ): number => {\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n const offset = startIndex * ((itemSize: any): number);\n const size = (((isHorizontal ? width : height): any): number);\n const numVisibleItems = Math.ceil(\n (size + scrollOffset - offset) / ((itemSize: any): number)\n );\n return Math.max(\n 0,\n Math.min(\n itemCount - 1,\n startIndex + numVisibleItems - 1 // -1 is because stop index is inclusive\n )\n );\n },\n\n initInstanceProps(props: Props): any {\n // Noop\n },\n\n shouldResetStyleCacheOnItemSizeChange: true,\n\n validateProps: ({ itemSize }: Props): void => {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof itemSize !== 'number') {\n throw Error(\n 'An invalid \"itemSize\" prop has been specified. ' +\n 'Value should be a number. ' +\n `\"${itemSize === null ? 'null' : typeof itemSize}\" was specified.`\n );\n }\n }\n },\n});\n\nexport default FixedSizeList;\n"],"names":["createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","Constructor","protoProps","staticProps","prototype","possibleConstructorReturn","self","call","ReferenceError","_PureComponent","InfiniteLoader","_ref","_temp","_this","instance","TypeError","classCallCheck","this","_len","arguments","args","Array","_key","__proto__","getPrototypeOf","apply","concat","_lastRenderedStartIndex","_lastRenderedStopIndex","_memoizedUnloadedRanges","_onItemsRendered","_ref2","visibleStartIndex","visibleStopIndex","_ensureRowsLoaded","_setRef","listRef","_listRef","subClass","superClass","create","constructor","value","setPrototypeOf","inherits","autoReload","undefined","process","children","onItemsRendered","ref","startIndex","stopIndex","_props","isItemLoaded","itemCount","_props$minimumBatchSi","minimumBatchSize","_props$threshold","threshold","unloadedRanges","rangeStartIndex","rangeStopIndex","_index","push","potentialStopIndex","Math","min","max","_index2","_index3","scanForUnloadedRanges","some","startOrStop","index","_loadUnloadedRanges","_this2","loadMoreItems","loadMoreRows","_loop","promise","then","lastRenderedStartIndex","lastRenderedStopIndex","isRangeVisible","resetAfterIndex","_getItemStyleCache","forceUpdate","PureComponent","safeIsNaN","Number","isNaN","areInputsEqual","newInputs","lastInputs","first","second","resultFn","isEqual","lastThis","lastResult","lastArgs","calledOnce","newArgs","_i","now","performance","Date","cancelTimeout","timeoutID","cancelAnimationFrame","id","requestTimeout","callback","delay","start","requestAnimationFrame","tick","size","getScrollbarSize","recalculate","div","document","createElement","style","width","height","overflow","body","appendChild","offsetWidth","clientWidth","removeChild","cachedRTLResult","getRTLOffsetType","outerDiv","outerStyle","direction","innerDiv","innerStyle","scrollLeft","defaultItemKey$1","data","createListComponent","_class","getItemOffset","getEstimatedTotalSize","getItemSize","getOffsetForIndexAndAlignment","getStartIndexForOffset","getStopIndexForStartIndex","initInstanceProps","shouldResetStyleCacheOnItemSizeChange","validateProps","List","_instanceProps","_assertThisInitialized","_outerRef","_resetIsScrollingTimeoutId","state","isScrolling","scrollDirection","scrollOffset","initialScrollOffset","scrollUpdateWasRequested","_callOnItemsRendered","memoizeOne","overscanStartIndex","overscanStopIndex","_callOnScroll","onScroll","_getItemStyle","_this$props","itemSize","layout","itemStyleCache","hasOwnProperty","_offset","isHorizontal","isRtl","offsetHorizontal","position","left","right","top","_","__","___","_onScrollHorizontal","event","_event$currentTarget","currentTarget","scrollWidth","setState","prevState","_resetIsScrollingDebounced","_onScrollVertical","_event$currentTarget2","clientHeight","scrollHeight","scrollTop","_outerRefSetter","outerRef","current","_resetIsScrolling","_inheritsLoose","getDerivedStateFromProps","nextProps","validateSharedProps$1","_proto","scrollTo","scrollToItem","align","_this$props2","scrollbarSize","componentDidMount","_this$props3","_callPropsCallbacks","componentDidUpdate","_this$props4","_this$state","componentWillUnmount","render","_this$props5","className","innerRef","innerElementType","innerTagName","itemData","_this$props5$itemKey","itemKey","outerElementType","outerTagName","useIsScrolling","_this$_getRangeToRend","_getRangeToRender","items","estimatedTotalSize","_extends","WebkitOverflowScrolling","willChange","pointerEvents","_this$_getRangeToRend2","_overscanStartIndex","_overscanStopIndex","_visibleStartIndex","_visibleStopIndex","_this$state2","_scrollDirection","_scrollOffset","_scrollUpdateWasRequested","_this$props6","overscanCount","_this$state3","overscanBackward","overscanForward","defaultProps","_ref3","FixedSizeList","_ref4","instanceProps","lastItemOffset","maxOffset","minOffset","middleOffset","round","ceil","floor","_ref5","offset","_ref6","numVisibleItems","_ref7"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/455.36b87621.chunk.js b/web-app/build/static/js/455.36b87621.chunk.js deleted file mode 100644 index 70e2140a65a..00000000000 --- a/web-app/build/static/js/455.36b87621.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[455],{79762:function(e,t,n){var r=n(72791);var o=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]&&arguments[0];this._memoizedUnloadedRanges=[],e&&this._ensureRowsLoaded(this._lastRenderedStartIndex,this._lastRenderedStopIndex)}},{key:"componentDidMount",value:function(){0}},{key:"render",value:function(){return(0,this.props.children)({onItemsRendered:this._onItemsRendered,ref:this._setRef})}},{key:"_ensureRowsLoaded",value:function(e,t){var n=this.props,r=n.isItemLoaded,o=n.itemCount,i=n.minimumBatchSize,l=void 0===i?10:i,s=n.threshold,a=void 0===s?15:s,c=function(e){for(var t=e.isItemLoaded,n=e.itemCount,r=e.minimumBatchSize,o=e.startIndex,i=e.stopIndex,l=[],s=null,a=null,c=o;c<=i;c++)t(c)?null!==a&&(l.push(s,a),s=a=null):(a=c,null===s&&(s=c));if(null!==a){for(var u=Math.min(Math.max(a,s+r-1),n-1),d=a+1;d<=u&&!t(d);d++)a=d;l.push(s,a)}if(l.length)for(;l[1]-l[0]+10;){var f=l[0]-1;if(t(f))break;l[0]=f}return l}({isItemLoaded:r,itemCount:o,minimumBatchSize:l,startIndex:Math.max(0,e-a),stopIndex:Math.min(o-1,t+a)});(this._memoizedUnloadedRanges.length!==c.length||this._memoizedUnloadedRanges.some((function(e,t){return c[t]!==e})))&&(this._memoizedUnloadedRanges=c,this._loadUnloadedRanges(c))}},{key:"_loadUnloadedRanges",value:function(e){for(var t=this,n=this.props.loadMoreItems||this.props.loadMoreRows,r=function(r){var o=e[r],i=e[r+1],l=n(o,i);null!=l&&l.then((function(){if(function(e){var t=e.lastRenderedStartIndex,n=e.lastRenderedStopIndex,r=e.startIndex,o=e.stopIndex;return!(r>n||o=t?e.call(null):r.id=requestAnimationFrame(o)}))};return r}var h=-1;function p(e){if(void 0===e&&(e=!1),-1===h||e){var t=document.createElement("div"),n=t.style;n.width="50px",n.height="50px",n.overflow="scroll",document.body.appendChild(t),h=t.offsetWidth-t.clientWidth,document.body.removeChild(t)}return h}var m=null;function v(e){if(void 0===e&&(e=!1),null===m||e){var t=document.createElement("div"),n=t.style;n.width="50px",n.height="50px",n.overflow="scroll",n.direction="rtl";var r=document.createElement("div"),o=r.style;return o.width="100px",o.height="100px",t.appendChild(r),document.body.appendChild(t),t.scrollLeft>0?m="positive-descending":(t.scrollLeft=1,m=0===t.scrollLeft?"negative":"positive-ascending"),document.body.removeChild(t),m}return m}var g=function(e,t){return e};function S(e){var t,n=e.getItemOffset,l=e.getEstimatedTotalSize,s=e.getItemSize,u=e.getOffsetForIndexAndAlignment,h=e.getStartIndexForOffset,m=e.getStopIndexForStartIndex,S=e.initInstanceProps,I=e.shouldResetStyleCacheOnItemSizeChange,y=e.validateProps;return t=function(e){function t(t){var r;return(r=e.call(this,t)||this)._instanceProps=S(r.props,(0,o.Z)(r)),r._outerRef=void 0,r._resetIsScrollingTimeoutId=null,r.state={instance:(0,o.Z)(r),isScrolling:!1,scrollDirection:"forward",scrollOffset:"number"===typeof r.props.initialScrollOffset?r.props.initialScrollOffset:0,scrollUpdateWasRequested:!1},r._callOnItemsRendered=void 0,r._callOnItemsRendered=a((function(e,t,n,o){return r.props.onItemsRendered({overscanStartIndex:e,overscanStopIndex:t,visibleStartIndex:n,visibleStopIndex:o})})),r._callOnScroll=void 0,r._callOnScroll=a((function(e,t,n){return r.props.onScroll({scrollDirection:e,scrollOffset:t,scrollUpdateWasRequested:n})})),r._getItemStyle=void 0,r._getItemStyle=function(e){var t,o=r.props,i=o.direction,l=o.itemSize,a=o.layout,c=r._getItemStyleCache(I&&l,I&&a,I&&i);if(c.hasOwnProperty(e))t=c[e];else{var u=n(r.props,e,r._instanceProps),d=s(r.props,e,r._instanceProps),f="horizontal"===i||"horizontal"===a,h="rtl"===i,p=f?u:0;c[e]=t={position:"absolute",left:h?void 0:p,right:h?p:void 0,top:f?0:u,height:f?"100%":d,width:f?d:"100%"}}return t},r._getItemStyleCache=void 0,r._getItemStyleCache=a((function(e,t,n){return{}})),r._onScrollHorizontal=function(e){var t=e.currentTarget,n=t.clientWidth,o=t.scrollLeft,i=t.scrollWidth;r.setState((function(e){if(e.scrollOffset===o)return null;var t=r.props.direction,l=o;if("rtl"===t)switch(v()){case"negative":l=-o;break;case"positive-descending":l=i-n-o}return l=Math.max(0,Math.min(l,i-n)),{isScrolling:!0,scrollDirection:e.scrollOffsets.clientWidth?p():0:s.scrollHeight>s.clientHeight?p():0}this.scrollTo(u(this.props,e,t,i,this._instanceProps,l))},R.componentDidMount=function(){var e=this.props,t=e.direction,n=e.initialScrollOffset,r=e.layout;if("number"===typeof n&&null!=this._outerRef){var o=this._outerRef;"horizontal"===t||"horizontal"===r?o.scrollLeft=n:o.scrollTop=n}this._callPropsCallbacks()},R.componentDidUpdate=function(){var e=this.props,t=e.direction,n=e.layout,r=this.state,o=r.scrollOffset;if(r.scrollUpdateWasRequested&&null!=this._outerRef){var i=this._outerRef;if("horizontal"===t||"horizontal"===n)if("rtl"===t)switch(v()){case"negative":i.scrollLeft=-o;break;case"positive-ascending":i.scrollLeft=o;break;default:var l=i.clientWidth,s=i.scrollWidth;i.scrollLeft=s-l-o}else i.scrollLeft=o;else i.scrollTop=o}this._callPropsCallbacks()},R.componentWillUnmount=function(){null!==this._resetIsScrollingTimeoutId&&d(this._resetIsScrollingTimeoutId)},R.render=function(){var e=this.props,t=e.children,n=e.className,o=e.direction,i=e.height,s=e.innerRef,a=e.innerElementType,u=e.innerTagName,d=e.itemCount,f=e.itemData,h=e.itemKey,p=void 0===h?g:h,m=e.layout,v=e.outerElementType,S=e.outerTagName,_=e.style,I=e.useIsScrolling,y=e.width,R=this.state.isScrolling,x="horizontal"===o||"horizontal"===m,b=x?this._onScrollHorizontal:this._onScrollVertical,w=this._getRangeToRender(),O=w[0],C=w[1],z=[];if(d>0)for(var M=O;M<=C;M++)z.push((0,c.createElement)(t,{data:f,key:p(M,f),index:M,isScrolling:I?R:void 0,style:this._getItemStyle(M)}));var T=l(this.props,this._instanceProps);return(0,c.createElement)(v||S||"div",{className:n,onScroll:b,ref:this._outerRefSetter,style:(0,r.Z)({position:"relative",height:i,width:y,overflow:"auto",WebkitOverflowScrolling:"touch",willChange:"transform",direction:o},_)},(0,c.createElement)(a||u||"div",{children:z,ref:s,style:{height:x?"100%":T,pointerEvents:R?"none":void 0,width:x?T:"100%"}}))},R._callPropsCallbacks=function(){if("function"===typeof this.props.onItemsRendered&&this.props.itemCount>0){var e=this._getRangeToRender(),t=e[0],n=e[1],r=e[2],o=e[3];this._callOnItemsRendered(t,n,r,o)}if("function"===typeof this.props.onScroll){var i=this.state,l=i.scrollDirection,s=i.scrollOffset,a=i.scrollUpdateWasRequested;this._callOnScroll(l,s,a)}},R._getRangeToRender=function(){var e=this.props,t=e.itemCount,n=e.overscanCount,r=this.state,o=r.isScrolling,i=r.scrollDirection,l=r.scrollOffset;if(0===t)return[0,0,0,0];var s=h(this.props,l,this._instanceProps),a=m(this.props,s,l,this._instanceProps),c=o&&"backward"!==i?1:Math.max(1,n),u=o&&"forward"!==i?1:Math.max(1,n);return[Math.max(0,s-c),Math.max(0,Math.min(t-1,a+u)),s,a]},t}(c.PureComponent),t.defaultProps={direction:"ltr",itemData:void 0,layout:"vertical",overscanCount:2,useIsScrolling:!1},t}var _=function(e,t){e.children,e.direction,e.height,e.layout,e.innerTagName,e.outerTagName,e.width,t.instance},I=S({getItemOffset:function(e,t){return t*e.itemSize},getItemSize:function(e,t){return e.itemSize},getEstimatedTotalSize:function(e){var t=e.itemCount;return e.itemSize*t},getOffsetForIndexAndAlignment:function(e,t,n,r,o,i){var l=e.direction,s=e.height,a=e.itemCount,c=e.itemSize,u=e.layout,d=e.width,f="horizontal"===l||"horizontal"===u?d:s,h=Math.max(0,a*c-f),p=Math.min(h,t*c),m=Math.max(0,t*c-f+c+i);switch("smart"===n&&(n=r>=m-f&&r<=p+f?"auto":"center"),n){case"start":return p;case"end":return m;case"center":var v=Math.round(m+(p-m)/2);return vh+Math.floor(f/2)?h:v;default:return r>=m&&r<=p?r:r lastRenderedStopIndex || stopIndex < lastRenderedStartIndex);\n}\n\nfunction scanForUnloadedRanges(_ref) {\n var isItemLoaded = _ref.isItemLoaded,\n itemCount = _ref.itemCount,\n minimumBatchSize = _ref.minimumBatchSize,\n startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n\n var unloadedRanges = [];\n\n var rangeStartIndex = null;\n var rangeStopIndex = null;\n\n for (var _index = startIndex; _index <= stopIndex; _index++) {\n var loaded = isItemLoaded(_index);\n\n if (!loaded) {\n rangeStopIndex = _index;\n if (rangeStartIndex === null) {\n rangeStartIndex = _index;\n }\n } else if (rangeStopIndex !== null) {\n unloadedRanges.push(rangeStartIndex, rangeStopIndex);\n\n rangeStartIndex = rangeStopIndex = null;\n }\n }\n\n // If :rangeStopIndex is not null it means we haven't ran out of unloaded rows.\n // Scan forward to try filling our :minimumBatchSize.\n if (rangeStopIndex !== null) {\n var potentialStopIndex = Math.min(Math.max(rangeStopIndex, rangeStartIndex + minimumBatchSize - 1), itemCount - 1);\n\n for (var _index2 = rangeStopIndex + 1; _index2 <= potentialStopIndex; _index2++) {\n if (!isItemLoaded(_index2)) {\n rangeStopIndex = _index2;\n } else {\n break;\n }\n }\n\n unloadedRanges.push(rangeStartIndex, rangeStopIndex);\n }\n\n // Check to see if our first range ended prematurely.\n // In this case we should scan backwards to try filling our :minimumBatchSize.\n if (unloadedRanges.length) {\n while (unloadedRanges[1] - unloadedRanges[0] + 1 < minimumBatchSize && unloadedRanges[0] > 0) {\n var _index3 = unloadedRanges[0] - 1;\n\n if (!isItemLoaded(_index3)) {\n unloadedRanges[0] = _index3;\n } else {\n break;\n }\n }\n }\n\n return unloadedRanges;\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\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 return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar InfiniteLoader = function (_PureComponent) {\n inherits(InfiniteLoader, _PureComponent);\n\n function InfiniteLoader() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, InfiniteLoader);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = InfiniteLoader.__proto__ || Object.getPrototypeOf(InfiniteLoader)).call.apply(_ref, [this].concat(args))), _this), _this._lastRenderedStartIndex = -1, _this._lastRenderedStopIndex = -1, _this._memoizedUnloadedRanges = [], _this._onItemsRendered = function (_ref2) {\n var visibleStartIndex = _ref2.visibleStartIndex,\n visibleStopIndex = _ref2.visibleStopIndex;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!isInteger(visibleStartIndex) || !isInteger(visibleStopIndex)) {\n console.warn('Invalid onItemsRendered signature; please refer to InfiniteLoader documentation.');\n }\n\n if (typeof _this.props.loadMoreRows === 'function') {\n console.warn('InfiniteLoader \"loadMoreRows\" prop has been renamed to \"loadMoreItems\".');\n }\n }\n\n _this._lastRenderedStartIndex = visibleStartIndex;\n _this._lastRenderedStopIndex = visibleStopIndex;\n\n _this._ensureRowsLoaded(visibleStartIndex, visibleStopIndex);\n }, _this._setRef = function (listRef) {\n _this._listRef = listRef;\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n createClass(InfiniteLoader, [{\n key: 'resetloadMoreItemsCache',\n value: function resetloadMoreItemsCache() {\n var autoReload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n this._memoizedUnloadedRanges = [];\n\n if (autoReload) {\n this._ensureRowsLoaded(this._lastRenderedStartIndex, this._lastRenderedStopIndex);\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (process.env.NODE_ENV !== 'production') {\n if (this._listRef == null) {\n console.warn('Invalid list ref; please refer to InfiniteLoader documentation.');\n }\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var children = this.props.children;\n\n\n return children({\n onItemsRendered: this._onItemsRendered,\n ref: this._setRef\n });\n }\n }, {\n key: '_ensureRowsLoaded',\n value: function _ensureRowsLoaded(startIndex, stopIndex) {\n var _props = this.props,\n isItemLoaded = _props.isItemLoaded,\n itemCount = _props.itemCount,\n _props$minimumBatchSi = _props.minimumBatchSize,\n minimumBatchSize = _props$minimumBatchSi === undefined ? 10 : _props$minimumBatchSi,\n _props$threshold = _props.threshold,\n threshold = _props$threshold === undefined ? 15 : _props$threshold;\n\n\n var unloadedRanges = scanForUnloadedRanges({\n isItemLoaded: isItemLoaded,\n itemCount: itemCount,\n minimumBatchSize: minimumBatchSize,\n startIndex: Math.max(0, startIndex - threshold),\n stopIndex: Math.min(itemCount - 1, stopIndex + threshold)\n });\n\n // Avoid calling load-rows unless range has changed.\n // This shouldn't be strictly necessary, but is maybe nice to do.\n if (this._memoizedUnloadedRanges.length !== unloadedRanges.length || this._memoizedUnloadedRanges.some(function (startOrStop, index) {\n return unloadedRanges[index] !== startOrStop;\n })) {\n this._memoizedUnloadedRanges = unloadedRanges;\n this._loadUnloadedRanges(unloadedRanges);\n }\n }\n }, {\n key: '_loadUnloadedRanges',\n value: function _loadUnloadedRanges(unloadedRanges) {\n var _this2 = this;\n\n // loadMoreRows was renamed to loadMoreItems in v1.0.3; will be removed in v2.0\n var loadMoreItems = this.props.loadMoreItems || this.props.loadMoreRows;\n\n var _loop = function _loop(i) {\n var startIndex = unloadedRanges[i];\n var stopIndex = unloadedRanges[i + 1];\n var promise = loadMoreItems(startIndex, stopIndex);\n if (promise != null) {\n promise.then(function () {\n // Refresh the visible rows if any of them have just been loaded.\n // Otherwise they will remain in their unloaded visual state.\n if (isRangeVisible({\n lastRenderedStartIndex: _this2._lastRenderedStartIndex,\n lastRenderedStopIndex: _this2._lastRenderedStopIndex,\n startIndex: startIndex,\n stopIndex: stopIndex\n })) {\n // Handle an unmount while promises are still in flight.\n if (_this2._listRef == null) {\n return;\n }\n\n // Resize cached row sizes for VariableSizeList,\n // otherwise just re-render the list.\n if (typeof _this2._listRef.resetAfterIndex === 'function') {\n _this2._listRef.resetAfterIndex(startIndex, true);\n } else {\n // HACK reset temporarily cached item styles to force PureComponent to re-render.\n // This is pretty gross, but I'm okay with it for now.\n // Don't judge me.\n if (typeof _this2._listRef._getItemStyleCache === 'function') {\n _this2._listRef._getItemStyleCache(-1);\n }\n _this2._listRef.forceUpdate();\n }\n }\n });\n }\n };\n\n for (var i = 0; i < unloadedRanges.length; i += 2) {\n _loop(i);\n }\n }\n }]);\n return InfiniteLoader;\n}(PureComponent);\n\nexport default InfiniteLoader;\n","var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\n","// @flow\n\n// Animation frame based implementation of setTimeout.\n// Inspired by Joe Lambert, https://gist.github.com/joelambert/1002116#file-requesttimeout-js\n\nconst hasNativePerformanceNow =\n typeof performance === 'object' && typeof performance.now === 'function';\n\nconst now = hasNativePerformanceNow\n ? () => performance.now()\n : () => Date.now();\n\nexport type TimeoutID = {|\n id: AnimationFrameID,\n|};\n\nexport function cancelTimeout(timeoutID: TimeoutID) {\n cancelAnimationFrame(timeoutID.id);\n}\n\nexport function requestTimeout(callback: Function, delay: number): TimeoutID {\n const start = now();\n\n function tick() {\n if (now() - start >= delay) {\n callback.call(null);\n } else {\n timeoutID.id = requestAnimationFrame(tick);\n }\n }\n\n const timeoutID: TimeoutID = {\n id: requestAnimationFrame(tick),\n };\n\n return timeoutID;\n}\n","// @flow\n\nlet size: number = -1;\n\n// This utility copied from \"dom-helpers\" package.\nexport function getScrollbarSize(recalculate?: boolean = false): number {\n if (size === -1 || recalculate) {\n const div = document.createElement('div');\n const style = div.style;\n style.width = '50px';\n style.height = '50px';\n style.overflow = 'scroll';\n\n ((document.body: any): HTMLBodyElement).appendChild(div);\n\n size = div.offsetWidth - div.clientWidth;\n\n ((document.body: any): HTMLBodyElement).removeChild(div);\n }\n\n return size;\n}\n\nexport type RTLOffsetType =\n | 'negative'\n | 'positive-descending'\n | 'positive-ascending';\n\nlet cachedRTLResult: RTLOffsetType | null = null;\n\n// TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n// Chrome does not seem to adhere; its scrollLeft values are positive (measured relative to the left).\n// Safari's elastic bounce makes detecting this even more complicated wrt potential false positives.\n// The safest way to check this is to intentionally set a negative offset,\n// and then verify that the subsequent \"scroll\" event matches the negative offset.\n// If it does not match, then we can assume a non-standard RTL scroll implementation.\nexport function getRTLOffsetType(recalculate?: boolean = false): RTLOffsetType {\n if (cachedRTLResult === null || recalculate) {\n const outerDiv = document.createElement('div');\n const outerStyle = outerDiv.style;\n outerStyle.width = '50px';\n outerStyle.height = '50px';\n outerStyle.overflow = 'scroll';\n outerStyle.direction = 'rtl';\n\n const innerDiv = document.createElement('div');\n const innerStyle = innerDiv.style;\n innerStyle.width = '100px';\n innerStyle.height = '100px';\n\n outerDiv.appendChild(innerDiv);\n\n ((document.body: any): HTMLBodyElement).appendChild(outerDiv);\n\n if (outerDiv.scrollLeft > 0) {\n cachedRTLResult = 'positive-descending';\n } else {\n outerDiv.scrollLeft = 1;\n if (outerDiv.scrollLeft === 0) {\n cachedRTLResult = 'negative';\n } else {\n cachedRTLResult = 'positive-ascending';\n }\n }\n\n ((document.body: any): HTMLBodyElement).removeChild(outerDiv);\n\n return cachedRTLResult;\n }\n\n return cachedRTLResult;\n}\n","// @flow\n\nimport memoizeOne from 'memoize-one';\nimport { createElement, PureComponent } from 'react';\nimport { cancelTimeout, requestTimeout } from './timer';\nimport { getScrollbarSize, getRTLOffsetType } from './domHelpers';\n\nimport type { TimeoutID } from './timer';\n\ntype Direction = 'ltr' | 'rtl';\nexport type ScrollToAlign = 'auto' | 'smart' | 'center' | 'start' | 'end';\n\ntype itemSize = number | ((index: number) => number);\n\ntype RenderComponentProps = {|\n columnIndex: number,\n data: T,\n isScrolling?: boolean,\n rowIndex: number,\n style: Object,\n|};\nexport type RenderComponent = React$ComponentType<\n $Shape>\n>;\n\ntype ScrollDirection = 'forward' | 'backward';\n\ntype OnItemsRenderedCallback = ({\n overscanColumnStartIndex: number,\n overscanColumnStopIndex: number,\n overscanRowStartIndex: number,\n overscanRowStopIndex: number,\n visibleColumnStartIndex: number,\n visibleColumnStopIndex: number,\n visibleRowStartIndex: number,\n visibleRowStopIndex: number,\n}) => void;\ntype OnScrollCallback = ({\n horizontalScrollDirection: ScrollDirection,\n scrollLeft: number,\n scrollTop: number,\n scrollUpdateWasRequested: boolean,\n verticalScrollDirection: ScrollDirection,\n}) => void;\n\ntype ScrollEvent = SyntheticEvent;\ntype ItemStyleCache = { [key: string]: Object };\n\ntype OuterProps = {|\n children: React$Node,\n className: string | void,\n onScroll: ScrollEvent => void,\n style: {\n [string]: mixed,\n },\n|};\n\ntype InnerProps = {|\n children: React$Node,\n style: {\n [string]: mixed,\n },\n|};\n\nexport type Props = {|\n children: RenderComponent,\n className?: string,\n columnCount: number,\n columnWidth: itemSize,\n direction: Direction,\n height: number,\n initialScrollLeft?: number,\n initialScrollTop?: number,\n innerRef?: any,\n innerElementType?: string | React$AbstractComponent,\n innerTagName?: string, // deprecated\n itemData: T,\n itemKey?: (params: {|\n columnIndex: number,\n data: T,\n rowIndex: number,\n |}) => any,\n onItemsRendered?: OnItemsRenderedCallback,\n onScroll?: OnScrollCallback,\n outerRef?: any,\n outerElementType?: string | React$AbstractComponent,\n outerTagName?: string, // deprecated\n overscanColumnCount?: number,\n overscanColumnsCount?: number, // deprecated\n overscanCount?: number, // deprecated\n overscanRowCount?: number,\n overscanRowsCount?: number, // deprecated\n rowCount: number,\n rowHeight: itemSize,\n style?: Object,\n useIsScrolling: boolean,\n width: number,\n|};\n\ntype State = {|\n instance: any,\n isScrolling: boolean,\n horizontalScrollDirection: ScrollDirection,\n scrollLeft: number,\n scrollTop: number,\n scrollUpdateWasRequested: boolean,\n verticalScrollDirection: ScrollDirection,\n|};\n\ntype getItemOffset = (\n props: Props,\n index: number,\n instanceProps: any\n) => number;\ntype getItemSize = (\n props: Props,\n index: number,\n instanceProps: any\n) => number;\ntype getEstimatedTotalSize = (props: Props, instanceProps: any) => number;\ntype GetOffsetForItemAndAlignment = (\n props: Props,\n index: number,\n align: ScrollToAlign,\n scrollOffset: number,\n instanceProps: any,\n scrollbarSize: number\n) => number;\ntype GetStartIndexForOffset = (\n props: Props,\n offset: number,\n instanceProps: any\n) => number;\ntype GetStopIndexForStartIndex = (\n props: Props,\n startIndex: number,\n scrollOffset: number,\n instanceProps: any\n) => number;\ntype InitInstanceProps = (props: Props, instance: any) => any;\ntype ValidateProps = (props: Props) => void;\n\nconst IS_SCROLLING_DEBOUNCE_INTERVAL = 150;\n\nconst defaultItemKey = ({ columnIndex, data, rowIndex }) =>\n `${rowIndex}:${columnIndex}`;\n\n// In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\nlet devWarningsOverscanCount = null;\nlet devWarningsOverscanRowsColumnsCount = null;\nlet devWarningsTagName = null;\nif (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n devWarningsOverscanCount = new WeakSet();\n devWarningsOverscanRowsColumnsCount = new WeakSet();\n devWarningsTagName = new WeakSet();\n }\n}\n\nexport default function createGridComponent({\n getColumnOffset,\n getColumnStartIndexForOffset,\n getColumnStopIndexForStartIndex,\n getColumnWidth,\n getEstimatedTotalHeight,\n getEstimatedTotalWidth,\n getOffsetForColumnAndAlignment,\n getOffsetForRowAndAlignment,\n getRowHeight,\n getRowOffset,\n getRowStartIndexForOffset,\n getRowStopIndexForStartIndex,\n initInstanceProps,\n shouldResetStyleCacheOnItemSizeChange,\n validateProps,\n}: {|\n getColumnOffset: getItemOffset,\n getColumnStartIndexForOffset: GetStartIndexForOffset,\n getColumnStopIndexForStartIndex: GetStopIndexForStartIndex,\n getColumnWidth: getItemSize,\n getEstimatedTotalHeight: getEstimatedTotalSize,\n getEstimatedTotalWidth: getEstimatedTotalSize,\n getOffsetForColumnAndAlignment: GetOffsetForItemAndAlignment,\n getOffsetForRowAndAlignment: GetOffsetForItemAndAlignment,\n getRowOffset: getItemOffset,\n getRowHeight: getItemSize,\n getRowStartIndexForOffset: GetStartIndexForOffset,\n getRowStopIndexForStartIndex: GetStopIndexForStartIndex,\n initInstanceProps: InitInstanceProps,\n shouldResetStyleCacheOnItemSizeChange: boolean,\n validateProps: ValidateProps,\n|}) {\n return class Grid extends PureComponent, State> {\n _instanceProps: any = initInstanceProps(this.props, this);\n _resetIsScrollingTimeoutId: TimeoutID | null = null;\n _outerRef: ?HTMLDivElement;\n\n static defaultProps = {\n direction: 'ltr',\n itemData: undefined,\n useIsScrolling: false,\n };\n\n state: State = {\n instance: this,\n isScrolling: false,\n horizontalScrollDirection: 'forward',\n scrollLeft:\n typeof this.props.initialScrollLeft === 'number'\n ? this.props.initialScrollLeft\n : 0,\n scrollTop:\n typeof this.props.initialScrollTop === 'number'\n ? this.props.initialScrollTop\n : 0,\n scrollUpdateWasRequested: false,\n verticalScrollDirection: 'forward',\n };\n\n // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n constructor(props: Props) {\n super(props);\n }\n\n static getDerivedStateFromProps(\n nextProps: Props,\n prevState: State\n ): $Shape | null {\n validateSharedProps(nextProps, prevState);\n validateProps(nextProps);\n return null;\n }\n\n scrollTo({\n scrollLeft,\n scrollTop,\n }: {\n scrollLeft: number,\n scrollTop: number,\n }): void {\n if (scrollLeft !== undefined) {\n scrollLeft = Math.max(0, scrollLeft);\n }\n if (scrollTop !== undefined) {\n scrollTop = Math.max(0, scrollTop);\n }\n\n this.setState(prevState => {\n if (scrollLeft === undefined) {\n scrollLeft = prevState.scrollLeft;\n }\n if (scrollTop === undefined) {\n scrollTop = prevState.scrollTop;\n }\n\n if (\n prevState.scrollLeft === scrollLeft &&\n prevState.scrollTop === scrollTop\n ) {\n return null;\n }\n\n return {\n horizontalScrollDirection:\n prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollUpdateWasRequested: true,\n verticalScrollDirection:\n prevState.scrollTop < scrollTop ? 'forward' : 'backward',\n };\n }, this._resetIsScrollingDebounced);\n }\n\n scrollToItem({\n align = 'auto',\n columnIndex,\n rowIndex,\n }: {\n align: ScrollToAlign,\n columnIndex?: number,\n rowIndex?: number,\n }): void {\n const { columnCount, height, rowCount, width } = this.props;\n const { scrollLeft, scrollTop } = this.state;\n const scrollbarSize = getScrollbarSize();\n\n if (columnIndex !== undefined) {\n columnIndex = Math.max(0, Math.min(columnIndex, columnCount - 1));\n }\n if (rowIndex !== undefined) {\n rowIndex = Math.max(0, Math.min(rowIndex, rowCount - 1));\n }\n\n const estimatedTotalHeight = getEstimatedTotalHeight(\n this.props,\n this._instanceProps\n );\n const estimatedTotalWidth = getEstimatedTotalWidth(\n this.props,\n this._instanceProps\n );\n\n // The scrollbar size should be considered when scrolling an item into view,\n // to ensure it's fully visible.\n // But we only need to account for its size when it's actually visible.\n const horizontalScrollbarSize =\n estimatedTotalWidth > width ? scrollbarSize : 0;\n const verticalScrollbarSize =\n estimatedTotalHeight > height ? scrollbarSize : 0;\n\n this.scrollTo({\n scrollLeft:\n columnIndex !== undefined\n ? getOffsetForColumnAndAlignment(\n this.props,\n columnIndex,\n align,\n scrollLeft,\n this._instanceProps,\n verticalScrollbarSize\n )\n : scrollLeft,\n scrollTop:\n rowIndex !== undefined\n ? getOffsetForRowAndAlignment(\n this.props,\n rowIndex,\n align,\n scrollTop,\n this._instanceProps,\n horizontalScrollbarSize\n )\n : scrollTop,\n });\n }\n\n componentDidMount() {\n const { initialScrollLeft, initialScrollTop } = this.props;\n\n if (this._outerRef != null) {\n const outerRef = ((this._outerRef: any): HTMLElement);\n if (typeof initialScrollLeft === 'number') {\n outerRef.scrollLeft = initialScrollLeft;\n }\n if (typeof initialScrollTop === 'number') {\n outerRef.scrollTop = initialScrollTop;\n }\n }\n\n this._callPropsCallbacks();\n }\n\n componentDidUpdate() {\n const { direction } = this.props;\n const { scrollLeft, scrollTop, scrollUpdateWasRequested } = this.state;\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n const outerRef = ((this._outerRef: any): HTMLElement);\n if (direction === 'rtl') {\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollLeft;\n break;\n case 'positive-ascending':\n outerRef.scrollLeft = scrollLeft;\n break;\n default:\n const { clientWidth, scrollWidth } = outerRef;\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n } else {\n outerRef.scrollLeft = Math.max(0, scrollLeft);\n }\n\n outerRef.scrollTop = Math.max(0, scrollTop);\n }\n\n this._callPropsCallbacks();\n }\n\n componentWillUnmount() {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n }\n\n render() {\n const {\n children,\n className,\n columnCount,\n direction,\n height,\n innerRef,\n innerElementType,\n innerTagName,\n itemData,\n itemKey = defaultItemKey,\n outerElementType,\n outerTagName,\n rowCount,\n style,\n useIsScrolling,\n width,\n } = this.props;\n const { isScrolling } = this.state;\n\n const [\n columnStartIndex,\n columnStopIndex,\n ] = this._getHorizontalRangeToRender();\n const [rowStartIndex, rowStopIndex] = this._getVerticalRangeToRender();\n\n const items = [];\n if (columnCount > 0 && rowCount) {\n for (\n let rowIndex = rowStartIndex;\n rowIndex <= rowStopIndex;\n rowIndex++\n ) {\n for (\n let columnIndex = columnStartIndex;\n columnIndex <= columnStopIndex;\n columnIndex++\n ) {\n items.push(\n createElement(children, {\n columnIndex,\n data: itemData,\n isScrolling: useIsScrolling ? isScrolling : undefined,\n key: itemKey({ columnIndex, data: itemData, rowIndex }),\n rowIndex,\n style: this._getItemStyle(rowIndex, columnIndex),\n })\n );\n }\n }\n }\n\n // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n const estimatedTotalHeight = getEstimatedTotalHeight(\n this.props,\n this._instanceProps\n );\n const estimatedTotalWidth = getEstimatedTotalWidth(\n this.props,\n this._instanceProps\n );\n\n return createElement(\n outerElementType || outerTagName || 'div',\n {\n className,\n onScroll: this._onScroll,\n ref: this._outerRefSetter,\n style: {\n position: 'relative',\n height,\n width,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction,\n ...style,\n },\n },\n createElement(innerElementType || innerTagName || 'div', {\n children: items,\n ref: innerRef,\n style: {\n height: estimatedTotalHeight,\n pointerEvents: isScrolling ? 'none' : undefined,\n width: estimatedTotalWidth,\n },\n })\n );\n }\n\n _callOnItemsRendered: (\n overscanColumnStartIndex: number,\n overscanColumnStopIndex: number,\n overscanRowStartIndex: number,\n overscanRowStopIndex: number,\n visibleColumnStartIndex: number,\n visibleColumnStopIndex: number,\n visibleRowStartIndex: number,\n visibleRowStopIndex: number\n ) => void;\n _callOnItemsRendered = memoizeOne(\n (\n overscanColumnStartIndex: number,\n overscanColumnStopIndex: number,\n overscanRowStartIndex: number,\n overscanRowStopIndex: number,\n visibleColumnStartIndex: number,\n visibleColumnStopIndex: number,\n visibleRowStartIndex: number,\n visibleRowStopIndex: number\n ) =>\n ((this.props.onItemsRendered: any): OnItemsRenderedCallback)({\n overscanColumnStartIndex,\n overscanColumnStopIndex,\n overscanRowStartIndex,\n overscanRowStopIndex,\n visibleColumnStartIndex,\n visibleColumnStopIndex,\n visibleRowStartIndex,\n visibleRowStopIndex,\n })\n );\n\n _callOnScroll: (\n scrollLeft: number,\n scrollTop: number,\n horizontalScrollDirection: ScrollDirection,\n verticalScrollDirection: ScrollDirection,\n scrollUpdateWasRequested: boolean\n ) => void;\n _callOnScroll = memoizeOne(\n (\n scrollLeft: number,\n scrollTop: number,\n horizontalScrollDirection: ScrollDirection,\n verticalScrollDirection: ScrollDirection,\n scrollUpdateWasRequested: boolean\n ) =>\n ((this.props.onScroll: any): OnScrollCallback)({\n horizontalScrollDirection,\n scrollLeft,\n scrollTop,\n verticalScrollDirection,\n scrollUpdateWasRequested,\n })\n );\n\n _callPropsCallbacks() {\n const { columnCount, onItemsRendered, onScroll, rowCount } = this.props;\n\n if (typeof onItemsRendered === 'function') {\n if (columnCount > 0 && rowCount > 0) {\n const [\n overscanColumnStartIndex,\n overscanColumnStopIndex,\n visibleColumnStartIndex,\n visibleColumnStopIndex,\n ] = this._getHorizontalRangeToRender();\n const [\n overscanRowStartIndex,\n overscanRowStopIndex,\n visibleRowStartIndex,\n visibleRowStopIndex,\n ] = this._getVerticalRangeToRender();\n this._callOnItemsRendered(\n overscanColumnStartIndex,\n overscanColumnStopIndex,\n overscanRowStartIndex,\n overscanRowStopIndex,\n visibleColumnStartIndex,\n visibleColumnStopIndex,\n visibleRowStartIndex,\n visibleRowStopIndex\n );\n }\n }\n\n if (typeof onScroll === 'function') {\n const {\n horizontalScrollDirection,\n scrollLeft,\n scrollTop,\n scrollUpdateWasRequested,\n verticalScrollDirection,\n } = this.state;\n this._callOnScroll(\n scrollLeft,\n scrollTop,\n horizontalScrollDirection,\n verticalScrollDirection,\n scrollUpdateWasRequested\n );\n }\n }\n\n // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n _getItemStyle: (rowIndex: number, columnIndex: number) => Object;\n _getItemStyle = (rowIndex: number, columnIndex: number): Object => {\n const { columnWidth, direction, rowHeight } = this.props;\n\n const itemStyleCache = this._getItemStyleCache(\n shouldResetStyleCacheOnItemSizeChange && columnWidth,\n shouldResetStyleCacheOnItemSizeChange && direction,\n shouldResetStyleCacheOnItemSizeChange && rowHeight\n );\n\n const key = `${rowIndex}:${columnIndex}`;\n\n let style;\n if (itemStyleCache.hasOwnProperty(key)) {\n style = itemStyleCache[key];\n } else {\n const offset = getColumnOffset(\n this.props,\n columnIndex,\n this._instanceProps\n );\n const isRtl = direction === 'rtl';\n itemStyleCache[key] = style = {\n position: 'absolute',\n left: isRtl ? undefined : offset,\n right: isRtl ? offset : undefined,\n top: getRowOffset(this.props, rowIndex, this._instanceProps),\n height: getRowHeight(this.props, rowIndex, this._instanceProps),\n width: getColumnWidth(this.props, columnIndex, this._instanceProps),\n };\n }\n\n return style;\n };\n\n _getItemStyleCache: (_: any, __: any, ___: any) => ItemStyleCache;\n _getItemStyleCache = memoizeOne((_: any, __: any, ___: any) => ({}));\n\n _getHorizontalRangeToRender(): [number, number, number, number] {\n const {\n columnCount,\n overscanColumnCount,\n overscanColumnsCount,\n overscanCount,\n rowCount,\n } = this.props;\n const { horizontalScrollDirection, isScrolling, scrollLeft } = this.state;\n\n const overscanCountResolved: number =\n overscanColumnCount || overscanColumnsCount || overscanCount || 1;\n\n if (columnCount === 0 || rowCount === 0) {\n return [0, 0, 0, 0];\n }\n\n const startIndex = getColumnStartIndexForOffset(\n this.props,\n scrollLeft,\n this._instanceProps\n );\n const stopIndex = getColumnStopIndexForStartIndex(\n this.props,\n startIndex,\n scrollLeft,\n this._instanceProps\n );\n\n // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n const overscanBackward =\n !isScrolling || horizontalScrollDirection === 'backward'\n ? Math.max(1, overscanCountResolved)\n : 1;\n const overscanForward =\n !isScrolling || horizontalScrollDirection === 'forward'\n ? Math.max(1, overscanCountResolved)\n : 1;\n\n return [\n Math.max(0, startIndex - overscanBackward),\n Math.max(0, Math.min(columnCount - 1, stopIndex + overscanForward)),\n startIndex,\n stopIndex,\n ];\n }\n\n _getVerticalRangeToRender(): [number, number, number, number] {\n const {\n columnCount,\n overscanCount,\n overscanRowCount,\n overscanRowsCount,\n rowCount,\n } = this.props;\n const { isScrolling, verticalScrollDirection, scrollTop } = this.state;\n\n const overscanCountResolved: number =\n overscanRowCount || overscanRowsCount || overscanCount || 1;\n\n if (columnCount === 0 || rowCount === 0) {\n return [0, 0, 0, 0];\n }\n\n const startIndex = getRowStartIndexForOffset(\n this.props,\n scrollTop,\n this._instanceProps\n );\n const stopIndex = getRowStopIndexForStartIndex(\n this.props,\n startIndex,\n scrollTop,\n this._instanceProps\n );\n\n // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n const overscanBackward =\n !isScrolling || verticalScrollDirection === 'backward'\n ? Math.max(1, overscanCountResolved)\n : 1;\n const overscanForward =\n !isScrolling || verticalScrollDirection === 'forward'\n ? Math.max(1, overscanCountResolved)\n : 1;\n\n return [\n Math.max(0, startIndex - overscanBackward),\n Math.max(0, Math.min(rowCount - 1, stopIndex + overscanForward)),\n startIndex,\n stopIndex,\n ];\n }\n\n _onScroll = (event: ScrollEvent): void => {\n const {\n clientHeight,\n clientWidth,\n scrollLeft,\n scrollTop,\n scrollHeight,\n scrollWidth,\n } = event.currentTarget;\n this.setState(prevState => {\n if (\n prevState.scrollLeft === scrollLeft &&\n prevState.scrollTop === scrollTop\n ) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n const { direction } = this.props;\n\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n let calculatedScrollLeft = scrollLeft;\n if (direction === 'rtl') {\n switch (getRTLOffsetType()) {\n case 'negative':\n calculatedScrollLeft = -scrollLeft;\n break;\n case 'positive-descending':\n calculatedScrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n calculatedScrollLeft = Math.max(\n 0,\n Math.min(calculatedScrollLeft, scrollWidth - clientWidth)\n );\n const calculatedScrollTop = Math.max(\n 0,\n Math.min(scrollTop, scrollHeight - clientHeight)\n );\n\n return {\n isScrolling: true,\n horizontalScrollDirection:\n prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n scrollLeft: calculatedScrollLeft,\n scrollTop: calculatedScrollTop,\n verticalScrollDirection:\n prevState.scrollTop < scrollTop ? 'forward' : 'backward',\n scrollUpdateWasRequested: false,\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _outerRefSetter = (ref: any): void => {\n const { outerRef } = this.props;\n\n this._outerRef = ((ref: any): HTMLDivElement);\n\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (\n outerRef != null &&\n typeof outerRef === 'object' &&\n outerRef.hasOwnProperty('current')\n ) {\n outerRef.current = ref;\n }\n };\n\n _resetIsScrollingDebounced = () => {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n\n this._resetIsScrollingTimeoutId = requestTimeout(\n this._resetIsScrolling,\n IS_SCROLLING_DEBOUNCE_INTERVAL\n );\n };\n\n _resetIsScrolling = () => {\n this._resetIsScrollingTimeoutId = null;\n\n this.setState({ isScrolling: false }, () => {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n this._getItemStyleCache(-1);\n });\n };\n };\n}\n\nconst validateSharedProps = (\n {\n children,\n direction,\n height,\n innerTagName,\n outerTagName,\n overscanColumnsCount,\n overscanCount,\n overscanRowsCount,\n width,\n }: Props,\n { instance }: State\n): void => {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof overscanCount === 'number') {\n if (devWarningsOverscanCount && !devWarningsOverscanCount.has(instance)) {\n devWarningsOverscanCount.add(instance);\n console.warn(\n 'The overscanCount prop has been deprecated. ' +\n 'Please use the overscanColumnCount and overscanRowCount props instead.'\n );\n }\n }\n\n if (\n typeof overscanColumnsCount === 'number' ||\n typeof overscanRowsCount === 'number'\n ) {\n if (\n devWarningsOverscanRowsColumnsCount &&\n !devWarningsOverscanRowsColumnsCount.has(instance)\n ) {\n devWarningsOverscanRowsColumnsCount.add(instance);\n console.warn(\n 'The overscanColumnsCount and overscanRowsCount props have been deprecated. ' +\n 'Please use the overscanColumnCount and overscanRowCount props instead.'\n );\n }\n }\n\n if (innerTagName != null || outerTagName != null) {\n if (devWarningsTagName && !devWarningsTagName.has(instance)) {\n devWarningsTagName.add(instance);\n console.warn(\n 'The innerTagName and outerTagName props have been deprecated. ' +\n 'Please use the innerElementType and outerElementType props instead.'\n );\n }\n }\n\n if (children == null) {\n throw Error(\n 'An invalid \"children\" prop has been specified. ' +\n 'Value should be a React component. ' +\n `\"${children === null ? 'null' : typeof children}\" was specified.`\n );\n }\n\n switch (direction) {\n case 'ltr':\n case 'rtl':\n // Valid values\n break;\n default:\n throw Error(\n 'An invalid \"direction\" prop has been specified. ' +\n 'Value should be either \"ltr\" or \"rtl\". ' +\n `\"${direction}\" was specified.`\n );\n }\n\n if (typeof width !== 'number') {\n throw Error(\n 'An invalid \"width\" prop has been specified. ' +\n 'Grids must specify a number for width. ' +\n `\"${width === null ? 'null' : typeof width}\" was specified.`\n );\n }\n\n if (typeof height !== 'number') {\n throw Error(\n 'An invalid \"height\" prop has been specified. ' +\n 'Grids must specify a number for height. ' +\n `\"${height === null ? 'null' : typeof height}\" was specified.`\n );\n }\n }\n};\n","// @flow\n\nimport memoizeOne from 'memoize-one';\nimport { createElement, PureComponent } from 'react';\nimport { cancelTimeout, requestTimeout } from './timer';\nimport { getScrollbarSize, getRTLOffsetType } from './domHelpers';\n\nimport type { TimeoutID } from './timer';\n\nexport type ScrollToAlign = 'auto' | 'smart' | 'center' | 'start' | 'end';\n\ntype itemSize = number | ((index: number) => number);\n// TODO Deprecate directions \"horizontal\" and \"vertical\"\ntype Direction = 'ltr' | 'rtl' | 'horizontal' | 'vertical';\ntype Layout = 'horizontal' | 'vertical';\n\ntype RenderComponentProps = {|\n data: T,\n index: number,\n isScrolling?: boolean,\n style: Object,\n|};\ntype RenderComponent = React$ComponentType<$Shape>>;\n\ntype ScrollDirection = 'forward' | 'backward';\n\ntype onItemsRenderedCallback = ({\n overscanStartIndex: number,\n overscanStopIndex: number,\n visibleStartIndex: number,\n visibleStopIndex: number,\n}) => void;\ntype onScrollCallback = ({\n scrollDirection: ScrollDirection,\n scrollOffset: number,\n scrollUpdateWasRequested: boolean,\n}) => void;\n\ntype ScrollEvent = SyntheticEvent;\ntype ItemStyleCache = { [index: number]: Object };\n\ntype OuterProps = {|\n children: React$Node,\n className: string | void,\n onScroll: ScrollEvent => void,\n style: {\n [string]: mixed,\n },\n|};\n\ntype InnerProps = {|\n children: React$Node,\n style: {\n [string]: mixed,\n },\n|};\n\nexport type Props = {|\n children: RenderComponent,\n className?: string,\n direction: Direction,\n height: number | string,\n initialScrollOffset?: number,\n innerRef?: any,\n innerElementType?: string | React$AbstractComponent,\n innerTagName?: string, // deprecated\n itemCount: number,\n itemData: T,\n itemKey?: (index: number, data: T) => any,\n itemSize: itemSize,\n layout: Layout,\n onItemsRendered?: onItemsRenderedCallback,\n onScroll?: onScrollCallback,\n outerRef?: any,\n outerElementType?: string | React$AbstractComponent,\n outerTagName?: string, // deprecated\n overscanCount: number,\n style?: Object,\n useIsScrolling: boolean,\n width: number | string,\n|};\n\ntype State = {|\n instance: any,\n isScrolling: boolean,\n scrollDirection: ScrollDirection,\n scrollOffset: number,\n scrollUpdateWasRequested: boolean,\n|};\n\ntype GetItemOffset = (\n props: Props,\n index: number,\n instanceProps: any\n) => number;\ntype GetItemSize = (\n props: Props,\n index: number,\n instanceProps: any\n) => number;\ntype GetEstimatedTotalSize = (props: Props, instanceProps: any) => number;\ntype GetOffsetForIndexAndAlignment = (\n props: Props,\n index: number,\n align: ScrollToAlign,\n scrollOffset: number,\n instanceProps: any\n) => number;\ntype GetStartIndexForOffset = (\n props: Props,\n offset: number,\n instanceProps: any\n) => number;\ntype GetStopIndexForStartIndex = (\n props: Props,\n startIndex: number,\n scrollOffset: number,\n instanceProps: any\n) => number;\ntype InitInstanceProps = (props: Props, instance: any) => any;\ntype ValidateProps = (props: Props) => void;\n\nconst IS_SCROLLING_DEBOUNCE_INTERVAL = 150;\n\nconst defaultItemKey = (index: number, data: any) => index;\n\n// In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\nlet devWarningsDirection = null;\nlet devWarningsTagName = null;\nif (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n devWarningsDirection = new WeakSet();\n devWarningsTagName = new WeakSet();\n }\n}\n\nexport default function createListComponent({\n getItemOffset,\n getEstimatedTotalSize,\n getItemSize,\n getOffsetForIndexAndAlignment,\n getStartIndexForOffset,\n getStopIndexForStartIndex,\n initInstanceProps,\n shouldResetStyleCacheOnItemSizeChange,\n validateProps,\n}: {|\n getItemOffset: GetItemOffset,\n getEstimatedTotalSize: GetEstimatedTotalSize,\n getItemSize: GetItemSize,\n getOffsetForIndexAndAlignment: GetOffsetForIndexAndAlignment,\n getStartIndexForOffset: GetStartIndexForOffset,\n getStopIndexForStartIndex: GetStopIndexForStartIndex,\n initInstanceProps: InitInstanceProps,\n shouldResetStyleCacheOnItemSizeChange: boolean,\n validateProps: ValidateProps,\n|}) {\n return class List extends PureComponent, State> {\n _instanceProps: any = initInstanceProps(this.props, this);\n _outerRef: ?HTMLDivElement;\n _resetIsScrollingTimeoutId: TimeoutID | null = null;\n\n static defaultProps = {\n direction: 'ltr',\n itemData: undefined,\n layout: 'vertical',\n overscanCount: 2,\n useIsScrolling: false,\n };\n\n state: State = {\n instance: this,\n isScrolling: false,\n scrollDirection: 'forward',\n scrollOffset:\n typeof this.props.initialScrollOffset === 'number'\n ? this.props.initialScrollOffset\n : 0,\n scrollUpdateWasRequested: false,\n };\n\n // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n constructor(props: Props) {\n super(props);\n }\n\n static getDerivedStateFromProps(\n nextProps: Props,\n prevState: State\n ): $Shape | null {\n validateSharedProps(nextProps, prevState);\n validateProps(nextProps);\n return null;\n }\n\n scrollTo(scrollOffset: number): void {\n scrollOffset = Math.max(0, scrollOffset);\n\n this.setState(prevState => {\n if (prevState.scrollOffset === scrollOffset) {\n return null;\n }\n return {\n scrollDirection:\n prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: true,\n };\n }, this._resetIsScrollingDebounced);\n }\n\n scrollToItem(index: number, align: ScrollToAlign = 'auto'): void {\n const { itemCount, layout } = this.props;\n const { scrollOffset } = this.state;\n\n index = Math.max(0, Math.min(index, itemCount - 1));\n\n // The scrollbar size should be considered when scrolling an item into view, to ensure it's fully visible.\n // But we only need to account for its size when it's actually visible.\n // This is an edge case for lists; normally they only scroll in the dominant direction.\n let scrollbarSize = 0;\n if (this._outerRef) {\n const outerRef = ((this._outerRef: any): HTMLElement);\n if (layout === 'vertical') {\n scrollbarSize =\n outerRef.scrollWidth > outerRef.clientWidth\n ? getScrollbarSize()\n : 0;\n } else {\n scrollbarSize =\n outerRef.scrollHeight > outerRef.clientHeight\n ? getScrollbarSize()\n : 0;\n }\n }\n\n this.scrollTo(\n getOffsetForIndexAndAlignment(\n this.props,\n index,\n align,\n scrollOffset,\n this._instanceProps,\n scrollbarSize\n )\n );\n }\n\n componentDidMount() {\n const { direction, initialScrollOffset, layout } = this.props;\n\n if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n const outerRef = ((this._outerRef: any): HTMLElement);\n // TODO Deprecate direction \"horizontal\"\n if (direction === 'horizontal' || layout === 'horizontal') {\n outerRef.scrollLeft = initialScrollOffset;\n } else {\n outerRef.scrollTop = initialScrollOffset;\n }\n }\n\n this._callPropsCallbacks();\n }\n\n componentDidUpdate() {\n const { direction, layout } = this.props;\n const { scrollOffset, scrollUpdateWasRequested } = this.state;\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n const outerRef = ((this._outerRef: any): HTMLElement);\n\n // TODO Deprecate direction \"horizontal\"\n if (direction === 'horizontal' || layout === 'horizontal') {\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollOffset;\n break;\n case 'positive-ascending':\n outerRef.scrollLeft = scrollOffset;\n break;\n default:\n const { clientWidth, scrollWidth } = outerRef;\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollOffset;\n break;\n }\n } else {\n outerRef.scrollLeft = scrollOffset;\n }\n } else {\n outerRef.scrollTop = scrollOffset;\n }\n }\n\n this._callPropsCallbacks();\n }\n\n componentWillUnmount() {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n }\n\n render() {\n const {\n children,\n className,\n direction,\n height,\n innerRef,\n innerElementType,\n innerTagName,\n itemCount,\n itemData,\n itemKey = defaultItemKey,\n layout,\n outerElementType,\n outerTagName,\n style,\n useIsScrolling,\n width,\n } = this.props;\n const { isScrolling } = this.state;\n\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal =\n direction === 'horizontal' || layout === 'horizontal';\n\n const onScroll = isHorizontal\n ? this._onScrollHorizontal\n : this._onScrollVertical;\n\n const [startIndex, stopIndex] = this._getRangeToRender();\n\n const items = [];\n if (itemCount > 0) {\n for (let index = startIndex; index <= stopIndex; index++) {\n items.push(\n createElement(children, {\n data: itemData,\n key: itemKey(index, itemData),\n index,\n isScrolling: useIsScrolling ? isScrolling : undefined,\n style: this._getItemStyle(index),\n })\n );\n }\n }\n\n // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n const estimatedTotalSize = getEstimatedTotalSize(\n this.props,\n this._instanceProps\n );\n\n return createElement(\n outerElementType || outerTagName || 'div',\n {\n className,\n onScroll,\n ref: this._outerRefSetter,\n style: {\n position: 'relative',\n height,\n width,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction,\n ...style,\n },\n },\n createElement(innerElementType || innerTagName || 'div', {\n children: items,\n ref: innerRef,\n style: {\n height: isHorizontal ? '100%' : estimatedTotalSize,\n pointerEvents: isScrolling ? 'none' : undefined,\n width: isHorizontal ? estimatedTotalSize : '100%',\n },\n })\n );\n }\n\n _callOnItemsRendered: (\n overscanStartIndex: number,\n overscanStopIndex: number,\n visibleStartIndex: number,\n visibleStopIndex: number\n ) => void;\n _callOnItemsRendered = memoizeOne(\n (\n overscanStartIndex: number,\n overscanStopIndex: number,\n visibleStartIndex: number,\n visibleStopIndex: number\n ) =>\n ((this.props.onItemsRendered: any): onItemsRenderedCallback)({\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex,\n })\n );\n\n _callOnScroll: (\n scrollDirection: ScrollDirection,\n scrollOffset: number,\n scrollUpdateWasRequested: boolean\n ) => void;\n _callOnScroll = memoizeOne(\n (\n scrollDirection: ScrollDirection,\n scrollOffset: number,\n scrollUpdateWasRequested: boolean\n ) =>\n ((this.props.onScroll: any): onScrollCallback)({\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n })\n );\n\n _callPropsCallbacks() {\n if (typeof this.props.onItemsRendered === 'function') {\n const { itemCount } = this.props;\n if (itemCount > 0) {\n const [\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex,\n ] = this._getRangeToRender();\n this._callOnItemsRendered(\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex\n );\n }\n }\n\n if (typeof this.props.onScroll === 'function') {\n const {\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n } = this.state;\n this._callOnScroll(\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested\n );\n }\n }\n\n // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n _getItemStyle: (index: number) => Object;\n _getItemStyle = (index: number): Object => {\n const { direction, itemSize, layout } = this.props;\n\n const itemStyleCache = this._getItemStyleCache(\n shouldResetStyleCacheOnItemSizeChange && itemSize,\n shouldResetStyleCacheOnItemSizeChange && layout,\n shouldResetStyleCacheOnItemSizeChange && direction\n );\n\n let style;\n if (itemStyleCache.hasOwnProperty(index)) {\n style = itemStyleCache[index];\n } else {\n const offset = getItemOffset(this.props, index, this._instanceProps);\n const size = getItemSize(this.props, index, this._instanceProps);\n\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal =\n direction === 'horizontal' || layout === 'horizontal';\n\n const isRtl = direction === 'rtl';\n const offsetHorizontal = isHorizontal ? offset : 0;\n itemStyleCache[index] = style = {\n position: 'absolute',\n left: isRtl ? undefined : offsetHorizontal,\n right: isRtl ? offsetHorizontal : undefined,\n top: !isHorizontal ? offset : 0,\n height: !isHorizontal ? size : '100%',\n width: isHorizontal ? size : '100%',\n };\n }\n\n return style;\n };\n\n _getItemStyleCache: (_: any, __: any, ___: any) => ItemStyleCache;\n _getItemStyleCache = memoizeOne((_: any, __: any, ___: any) => ({}));\n\n _getRangeToRender(): [number, number, number, number] {\n const { itemCount, overscanCount } = this.props;\n const { isScrolling, scrollDirection, scrollOffset } = this.state;\n\n if (itemCount === 0) {\n return [0, 0, 0, 0];\n }\n\n const startIndex = getStartIndexForOffset(\n this.props,\n scrollOffset,\n this._instanceProps\n );\n const stopIndex = getStopIndexForStartIndex(\n this.props,\n startIndex,\n scrollOffset,\n this._instanceProps\n );\n\n // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n const overscanBackward =\n !isScrolling || scrollDirection === 'backward'\n ? Math.max(1, overscanCount)\n : 1;\n const overscanForward =\n !isScrolling || scrollDirection === 'forward'\n ? Math.max(1, overscanCount)\n : 1;\n\n return [\n Math.max(0, startIndex - overscanBackward),\n Math.max(0, Math.min(itemCount - 1, stopIndex + overscanForward)),\n startIndex,\n stopIndex,\n ];\n }\n\n _onScrollHorizontal = (event: ScrollEvent): void => {\n const { clientWidth, scrollLeft, scrollWidth } = event.currentTarget;\n this.setState(prevState => {\n if (prevState.scrollOffset === scrollLeft) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n const { direction } = this.props;\n\n let scrollOffset = scrollLeft;\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n switch (getRTLOffsetType()) {\n case 'negative':\n scrollOffset = -scrollLeft;\n break;\n case 'positive-descending':\n scrollOffset = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n scrollOffset = Math.max(\n 0,\n Math.min(scrollOffset, scrollWidth - clientWidth)\n );\n\n return {\n isScrolling: true,\n scrollDirection:\n prevState.scrollOffset < scrollLeft ? 'forward' : 'backward',\n scrollOffset,\n scrollUpdateWasRequested: false,\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _onScrollVertical = (event: ScrollEvent): void => {\n const { clientHeight, scrollHeight, scrollTop } = event.currentTarget;\n this.setState(prevState => {\n if (prevState.scrollOffset === scrollTop) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n const scrollOffset = Math.max(\n 0,\n Math.min(scrollTop, scrollHeight - clientHeight)\n );\n\n return {\n isScrolling: true,\n scrollDirection:\n prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset,\n scrollUpdateWasRequested: false,\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _outerRefSetter = (ref: any): void => {\n const { outerRef } = this.props;\n\n this._outerRef = ((ref: any): HTMLDivElement);\n\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (\n outerRef != null &&\n typeof outerRef === 'object' &&\n outerRef.hasOwnProperty('current')\n ) {\n outerRef.current = ref;\n }\n };\n\n _resetIsScrollingDebounced = () => {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n\n this._resetIsScrollingTimeoutId = requestTimeout(\n this._resetIsScrolling,\n IS_SCROLLING_DEBOUNCE_INTERVAL\n );\n };\n\n _resetIsScrolling = () => {\n this._resetIsScrollingTimeoutId = null;\n\n this.setState({ isScrolling: false }, () => {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n this._getItemStyleCache(-1, null);\n });\n };\n };\n}\n\n// NOTE: I considered further wrapping individual items with a pure ListItem component.\n// This would avoid ever calling the render function for the same index more than once,\n// But it would also add the overhead of a lot of components/fibers.\n// I assume people already do this (render function returning a class component),\n// So my doing it would just unnecessarily double the wrappers.\n\nconst validateSharedProps = (\n {\n children,\n direction,\n height,\n layout,\n innerTagName,\n outerTagName,\n width,\n }: Props,\n { instance }: State\n): void => {\n if (process.env.NODE_ENV !== 'production') {\n if (innerTagName != null || outerTagName != null) {\n if (devWarningsTagName && !devWarningsTagName.has(instance)) {\n devWarningsTagName.add(instance);\n console.warn(\n 'The innerTagName and outerTagName props have been deprecated. ' +\n 'Please use the innerElementType and outerElementType props instead.'\n );\n }\n }\n\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n\n switch (direction) {\n case 'horizontal':\n case 'vertical':\n if (devWarningsDirection && !devWarningsDirection.has(instance)) {\n devWarningsDirection.add(instance);\n console.warn(\n 'The direction prop should be either \"ltr\" (default) or \"rtl\". ' +\n 'Please use the layout prop to specify \"vertical\" (default) or \"horizontal\" orientation.'\n );\n }\n break;\n case 'ltr':\n case 'rtl':\n // Valid values\n break;\n default:\n throw Error(\n 'An invalid \"direction\" prop has been specified. ' +\n 'Value should be either \"ltr\" or \"rtl\". ' +\n `\"${direction}\" was specified.`\n );\n }\n\n switch (layout) {\n case 'horizontal':\n case 'vertical':\n // Valid values\n break;\n default:\n throw Error(\n 'An invalid \"layout\" prop has been specified. ' +\n 'Value should be either \"horizontal\" or \"vertical\". ' +\n `\"${layout}\" was specified.`\n );\n }\n\n if (children == null) {\n throw Error(\n 'An invalid \"children\" prop has been specified. ' +\n 'Value should be a React component. ' +\n `\"${children === null ? 'null' : typeof children}\" was specified.`\n );\n }\n\n if (isHorizontal && typeof width !== 'number') {\n throw Error(\n 'An invalid \"width\" prop has been specified. ' +\n 'Horizontal lists must specify a number for width. ' +\n `\"${width === null ? 'null' : typeof width}\" was specified.`\n );\n } else if (!isHorizontal && typeof height !== 'number') {\n throw Error(\n 'An invalid \"height\" prop has been specified. ' +\n 'Vertical lists must specify a number for height. ' +\n `\"${height === null ? 'null' : typeof height}\" was specified.`\n );\n }\n }\n};\n","// @flow\n\nimport createListComponent from './createListComponent';\n\nimport type { Props, ScrollToAlign } from './createListComponent';\n\ntype InstanceProps = any;\n\nconst FixedSizeList = createListComponent({\n getItemOffset: ({ itemSize }: Props, index: number): number =>\n index * ((itemSize: any): number),\n\n getItemSize: ({ itemSize }: Props, index: number): number =>\n ((itemSize: any): number),\n\n getEstimatedTotalSize: ({ itemCount, itemSize }: Props) =>\n ((itemSize: any): number) * itemCount,\n\n getOffsetForIndexAndAlignment: (\n { direction, height, itemCount, itemSize, layout, width }: Props,\n index: number,\n align: ScrollToAlign,\n scrollOffset: number,\n instanceProps: InstanceProps,\n scrollbarSize: number\n ): number => {\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n const size = (((isHorizontal ? width : height): any): number);\n const lastItemOffset = Math.max(\n 0,\n itemCount * ((itemSize: any): number) - size\n );\n const maxOffset = Math.min(\n lastItemOffset,\n index * ((itemSize: any): number)\n );\n const minOffset = Math.max(\n 0,\n index * ((itemSize: any): number) -\n size +\n ((itemSize: any): number) +\n scrollbarSize\n );\n\n if (align === 'smart') {\n if (\n scrollOffset >= minOffset - size &&\n scrollOffset <= maxOffset + size\n ) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n case 'end':\n return minOffset;\n case 'center': {\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n const middleOffset = Math.round(\n minOffset + (maxOffset - minOffset) / 2\n );\n if (middleOffset < Math.ceil(size / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastItemOffset + Math.floor(size / 2)) {\n return lastItemOffset; // near the end\n } else {\n return middleOffset;\n }\n }\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n }\n },\n\n getStartIndexForOffset: (\n { itemCount, itemSize }: Props,\n offset: number\n ): number =>\n Math.max(\n 0,\n Math.min(itemCount - 1, Math.floor(offset / ((itemSize: any): number)))\n ),\n\n getStopIndexForStartIndex: (\n { direction, height, itemCount, itemSize, layout, width }: Props,\n startIndex: number,\n scrollOffset: number\n ): number => {\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n const offset = startIndex * ((itemSize: any): number);\n const size = (((isHorizontal ? width : height): any): number);\n const numVisibleItems = Math.ceil(\n (size + scrollOffset - offset) / ((itemSize: any): number)\n );\n return Math.max(\n 0,\n Math.min(\n itemCount - 1,\n startIndex + numVisibleItems - 1 // -1 is because stop index is inclusive\n )\n );\n },\n\n initInstanceProps(props: Props): any {\n // Noop\n },\n\n shouldResetStyleCacheOnItemSizeChange: true,\n\n validateProps: ({ itemSize }: Props): void => {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof itemSize !== 'number') {\n throw Error(\n 'An invalid \"itemSize\" prop has been specified. ' +\n 'Value should be a number. ' +\n `\"${itemSize === null ? 'null' : typeof itemSize}\" was specified.`\n );\n }\n }\n },\n});\n\nexport default FixedSizeList;\n"],"names":["createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","Constructor","protoProps","staticProps","prototype","possibleConstructorReturn","self","call","ReferenceError","InfiniteLoader","_PureComponent","_ref","_temp","_this","instance","TypeError","classCallCheck","this","_len","arguments","args","Array","_key","__proto__","getPrototypeOf","apply","concat","_lastRenderedStartIndex","_lastRenderedStopIndex","_memoizedUnloadedRanges","_onItemsRendered","_ref2","visibleStartIndex","visibleStopIndex","_ensureRowsLoaded","_setRef","listRef","_listRef","subClass","superClass","create","constructor","value","setPrototypeOf","inherits","autoReload","undefined","process","children","onItemsRendered","ref","startIndex","stopIndex","_props","isItemLoaded","itemCount","_props$minimumBatchSi","minimumBatchSize","_props$threshold","threshold","unloadedRanges","rangeStartIndex","rangeStopIndex","_index","push","potentialStopIndex","Math","min","max","_index2","_index3","scanForUnloadedRanges","some","startOrStop","index","_loadUnloadedRanges","_this2","loadMoreItems","loadMoreRows","_loop","promise","then","lastRenderedStartIndex","lastRenderedStopIndex","isRangeVisible","resetAfterIndex","_getItemStyleCache","forceUpdate","PureComponent","safeIsNaN","Number","isNaN","areInputsEqual","newInputs","lastInputs","first","second","resultFn","isEqual","lastThis","lastResult","lastArgs","calledOnce","newArgs","_i","now","performance","Date","cancelTimeout","timeoutID","cancelAnimationFrame","id","requestTimeout","callback","delay","start","requestAnimationFrame","tick","size","getScrollbarSize","recalculate","div","document","createElement","style","width","height","overflow","body","appendChild","offsetWidth","clientWidth","removeChild","cachedRTLResult","getRTLOffsetType","outerDiv","outerStyle","direction","innerDiv","innerStyle","scrollLeft","defaultItemKey$1","data","createListComponent","_class","getItemOffset","getEstimatedTotalSize","getItemSize","getOffsetForIndexAndAlignment","getStartIndexForOffset","getStopIndexForStartIndex","initInstanceProps","shouldResetStyleCacheOnItemSizeChange","validateProps","List","_instanceProps","_assertThisInitialized","_outerRef","_resetIsScrollingTimeoutId","state","isScrolling","scrollDirection","scrollOffset","initialScrollOffset","scrollUpdateWasRequested","_callOnItemsRendered","memoizeOne","overscanStartIndex","overscanStopIndex","_callOnScroll","onScroll","_getItemStyle","_this$props","itemSize","layout","itemStyleCache","hasOwnProperty","_offset","isHorizontal","isRtl","offsetHorizontal","position","left","right","top","_","__","___","_onScrollHorizontal","event","_event$currentTarget","currentTarget","scrollWidth","setState","prevState","_resetIsScrollingDebounced","_onScrollVertical","_event$currentTarget2","clientHeight","scrollHeight","scrollTop","_outerRefSetter","outerRef","current","_resetIsScrolling","_inheritsLoose","getDerivedStateFromProps","nextProps","validateSharedProps$1","_proto","scrollTo","scrollToItem","align","_this$props2","scrollbarSize","componentDidMount","_this$props3","_callPropsCallbacks","componentDidUpdate","_this$props4","_this$state","componentWillUnmount","render","_this$props5","className","innerRef","innerElementType","innerTagName","itemData","_this$props5$itemKey","itemKey","outerElementType","outerTagName","useIsScrolling","_this$_getRangeToRend","_getRangeToRender","items","estimatedTotalSize","_extends","WebkitOverflowScrolling","willChange","pointerEvents","_this$_getRangeToRend2","_overscanStartIndex","_overscanStopIndex","_visibleStartIndex","_visibleStopIndex","_this$state2","_scrollDirection","_scrollOffset","_scrollUpdateWasRequested","_this$props6","overscanCount","_this$state3","overscanBackward","overscanForward","defaultProps","_ref3","FixedSizeList","_ref4","instanceProps","lastItemOffset","maxOffset","minOffset","middleOffset","round","ceil","floor","_ref5","offset","_ref6","numVisibleItems","_ref7"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/481.e5b43da0.chunk.js b/web-app/build/static/js/481.e5b43da0.chunk.js deleted file mode 100644 index 4a05c4890a8..00000000000 --- a/web-app/build/static/js/481.e5b43da0.chunk.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see 481.e5b43da0.chunk.js.LICENSE.txt */ -(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[481],{9534:function(e,t,n){"use strict";n.d(t,{Z:function(){return Vs}});var a={};n.r(a),n.d(a,{boolean:function(){return X},booleanish:function(){return Z},commaOrSpaceSeparated:function(){return ne},commaSeparated:function(){return te},number:function(){return J},overloadedBoolean:function(){return Q},spaceSeparated:function(){return ee}});var r=n(29439),i=n(87462),o=n(63366),s=n(72791),l=n(93433),c=n(84506);function u(e){if(e)throw e}var d=n(25586),p=n(11132);function m(e){if("object"!==typeof e||null===e)return!1;var t=Object.getPrototypeOf(e);return(null===t||t===Object.prototype||null===Object.getPrototypeOf(t))&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function g(){var e=[],t={run:function(){for(var t=arguments.length,n=new Array(t),a=0;a1?l-1:0),u=1;ur.length;c&&r.push(i);try{l=e.apply(this,r)}catch(a){if(c&&n)throw a;return i(a)}c||(l instanceof Promise?l.then(o,i):l instanceof Error?i(l):o(l))}function i(e){if(!n){n=!0;for(var a=arguments.length,r=new Array(a>1?a-1:0),i=1;ie.length){for(;i--;)if(47===e.charCodeAt(i)){if(n){a=i+1;break}}else r<0&&(n=!0,r=i+1);return r<0?"":e.slice(a,r)}if(t===e)return"";var o=-1,s=t.length-1;for(;i--;)if(47===e.charCodeAt(i)){if(n){a=i+1;break}}else o<0&&(n=!0,o=i+1),s>-1&&(e.charCodeAt(i)===t.charCodeAt(s--)?s<0&&(r=i):(s=-1,r=o));a===r?r=o:r<0&&(r=e.length);return e.slice(a,r)},dirname:function(e){if(R(e),0===e.length)return".";var t,n=-1,a=e.length;for(;--a;)if(47===e.charCodeAt(a)){if(t){n=a;break}}else t||(t=!0);return n<0?47===e.charCodeAt(0)?"/":".":1===n&&47===e.charCodeAt(0)?"//":e.slice(0,n)},extname:function(e){R(e);var t,n=e.length,a=-1,r=0,i=-1,o=0;for(;n--;){var s=e.charCodeAt(n);if(47!==s)a<0&&(t=!0,a=n+1),46===s?i<0?i=n:1!==o&&(o=1):i>-1&&(o=-1);else if(t){r=n+1;break}}if(i<0||a<0||0===o||1===o&&i===a-1&&i===r+1)return"";return e.slice(i,a)},join:function(){for(var e,t=-1,n=arguments.length,a=new Array(n),r=0;r2){if((a=r.lastIndexOf("/"))!==r.length-1){a<0?(r="",i=0):i=(r=r.slice(0,a)).length-1-r.lastIndexOf("/"),o=l,s=0;continue}}else if(r.length>0){r="",i=0,o=l,s=0;continue}t&&(r=r.length>0?r+"/..":"..",i=2)}else r.length>0?r+="/"+e.slice(o+1,l):r=e.slice(o+1,l),i=l-o-1;o=l,s=0}else 46===n&&s>-1?s++:s=-1}return r}(e,!t);0!==n.length||t||(n=".");n.length>0&&47===e.charCodeAt(e.length-1)&&(n+="/");return t?"/"+n:n}(e)},sep:"/"};function R(e){if("string"!==typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}var I={cwd:function(){return"/"}};function k(e){return null!==e&&"object"===typeof e&&e.href&&e.origin}function C(e){if("string"===typeof e)e=new URL(e);else if(!k(e)){var t=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code="ERR_INVALID_ARG_TYPE",t}if("file:"!==e.protocol){var n=new TypeError("The URL must be of scheme file");throw n.code="ERR_INVALID_URL_SCHEME",n}return function(e){if(""!==e.hostname){var t=new TypeError('File URL host must be "localhost" or empty on darwin');throw t.code="ERR_INVALID_FILE_URL_HOST",t}var n=e.pathname,a=-1;for(;++a1?n-1:0),s=1;s4&&"data"===n.slice(0,4)&&Te.test(t)){if("-"===t.charAt(4)){var i=t.slice(5).replace(Se,Ne);a="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{var o=t.slice(4);if(!Se.test(o)){var s=o.replace(_e,ye);"-"!==s.charAt(0)&&(s="-"+s),t="data"+s}}r=ie}return new r(a,t)}function ye(e){return"-"+e.toLowerCase()}function Ne(e){return e.charAt(1).toUpperCase()}var Re=/[#.]/g;function Ie(e){var t=String(e||"").trim();return t?t.split(/[ \t\n\r\f]+/g):[]}function ke(e){return e.join(" ").trim()}function Ce(e){for(var t=[],n=String(e||""),a=n.indexOf(","),r=0,i=!1;!i;){-1===a&&(a=n.length,i=!0);var o=n.slice(r,a).trim();!o&&i||t.push(o),r=a+1,a=n.indexOf(",",r)}return t}function Oe(e,t){var n=t||{};return(""===e[e.length-1]?[].concat((0,l.Z)(e),[""]):e).join((n.padRight?" ":"")+","+(!1===n.padLeft?"":" ")).trim()}var ve=new Set(["menu","submit","reset","button"]),we={}.hasOwnProperty;function Le(e,t,n){var a=n&&function(e){var t={},n=-1;for(;++n2?l-2:0),u=2;u-1&&ee)return{line:t+1,column:e-(t>0?n[t-1]:0)+1,offset:e};return{line:void 0,column:void 0,offset:void 0}},toOffset:function(e){var t=e&&e.line,a=e&&e.column;if("number"===typeof t&&"number"===typeof a&&!Number.isNaN(t)&&!Number.isNaN(a)&&t-1 in n){var r=(n[t-2]||0)+a-1||0;if(r>-1&&r`",url:!1},abruptClosingOfEmptyComment:{reason:"Unexpected abruptly closed empty comment",description:"Unexpected `>` or `->`. Expected `--\x3e` to close comments"},abruptDoctypePublicIdentifier:{reason:"Unexpected abruptly closed public identifier",description:"Unexpected `>`. Expected a closing `\"` or `'` after the public identifier"},abruptDoctypeSystemIdentifier:{reason:"Unexpected abruptly closed system identifier",description:"Unexpected `>`. Expected a closing `\"` or `'` after the identifier identifier"},absenceOfDigitsInNumericCharacterReference:{reason:"Unexpected non-digit at start of numeric character reference",description:"Unexpected `%c`. Expected `[0-9]` for decimal references or `[0-9a-fA-F]` for hexadecimal references"},cdataInHtmlContent:{reason:"Unexpected CDATA section in HTML",description:"Unexpected `` in ``",description:"Unexpected text character `%c`. Only use text in `