@dovetail-v2/refine 0.4.3 → 0.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/{PodShell-43c7028e.cjs → PodShell-a335b2b2.cjs} +4 -2
  2. package/dist/{PodShell-76331418.js → PodShell-a6ed3498.js} +4 -2
  3. package/dist/components/CopyButton/index.d.ts +7 -0
  4. package/dist/components/ErrorContent/index.d.ts +3 -4
  5. package/dist/components/FormWidgets/NameInputWidget.d.ts +0 -48
  6. package/dist/components/IngressRulesComponent/PathWithCopy.d.ts +7 -0
  7. package/dist/components/ServiceComponents/index.d.ts +10 -0
  8. package/dist/components/Shell/ShellToolbar.d.ts +1 -1
  9. package/dist/components/ShowContent/fields.d.ts +4 -0
  10. package/dist/components/Table/index.d.ts +2 -2
  11. package/dist/components/index.d.ts +1 -3
  12. package/dist/contexts/component.d.ts +14 -5
  13. package/dist/contexts/index.d.ts +1 -0
  14. package/dist/hooks/useDeleteModal/index.d.ts +1 -0
  15. package/dist/hooks/useEagleTable/columns.d.ts +5 -4
  16. package/dist/hooks/useSubmitForm.d.ts +1 -1
  17. package/dist/hooks/useTableData.d.ts +1 -1
  18. package/dist/i18n.d.ts +25 -0
  19. package/dist/{index-31874f77.cjs → index-053ee180.cjs} +1 -1
  20. package/dist/{index-ab97826a.js → index-d7bc2ee6.js} +1 -1
  21. package/dist/index.d.ts +0 -1
  22. package/dist/locales/en-US/index.d.ts +12 -0
  23. package/dist/locales/zh-CN/index.d.ts +13 -0
  24. package/dist/models/daemonset-model.d.ts +0 -3
  25. package/dist/models/statefulset-model.d.ts +0 -3
  26. package/dist/models/workload-base-model.d.ts +3 -0
  27. package/dist/models/workload-model.d.ts +3 -0
  28. package/dist/pages/deployments/form/index.d.ts +2 -1
  29. package/dist/plugins/model-plugin.d.ts +1 -1
  30. package/dist/refine.cjs +1175 -1031
  31. package/dist/refine.js +1178 -1034
  32. package/dist/shell.cjs +1 -1
  33. package/dist/shell.js +1 -1
  34. package/dist/style.css +148 -4
  35. package/dist/types/resource.d.ts +9 -9
  36. package/package.json +17 -6
package/dist/refine.cjs CHANGED
@@ -20,6 +20,7 @@ const yaml$2 = require("js-yaml");
20
20
  const sunflowerAntd = require("sunflower-antd");
21
21
  const usehooksTs = require("usehooks-ts");
22
22
  const k8sApiProvider = require("k8s-api-provider");
23
+ const copyToClipboard$1 = require("copy-to-clipboard");
23
24
  const reactLogViewer = require("@patternfly/react-log-viewer");
24
25
  const reactHookForm = require("react-hook-form");
25
26
  const monaco = require("monaco-editor");
@@ -456,6 +457,18 @@ function Trans(_ref) {
456
457
  ...additionalProps
457
458
  });
458
459
  }
460
+ const add_container$1 = "Add container";
461
+ const container_index$1 = "Container {{index}}";
462
+ const container_name$1 = "Container name";
463
+ const container_image$1 = "Container image";
464
+ const advanced_settings$1 = "Advanced settings";
465
+ const app$1 = {
466
+ add_container: add_container$1,
467
+ container_index: container_index$1,
468
+ container_name: container_name$1,
469
+ container_image: container_image$1,
470
+ advanced_settings: advanced_settings$1
471
+ };
459
472
  const copy$1 = "Copy";
460
473
  const reset_arguments$1 = "Reset";
461
474
  const view_changes$1 = "Show diff";
@@ -623,7 +636,7 @@ const available_state$1 = "Available";
623
636
  const bound_state$1 = "Bound";
624
637
  const released_state$1 = "Released";
625
638
  const failed_state$1 = "Failed";
626
- const exec_pod = "Execute shell";
639
+ const exec_pod$1 = "Execute shell";
627
640
  const search$1 = "Search";
628
641
  const edit_label$1 = "Edit label";
629
642
  const csi$1 = "CSI driver";
@@ -736,6 +749,11 @@ const pause_scheduling$1 = "Suspend scheduling";
736
749
  const port_name$1 = "Port name";
737
750
  const target_port_range_limit$1 = "Only integers between 1 and 65535, or strings, are supported.";
738
751
  const service_port_name_tip$1 = "When the port count is 1, this field is optional; when it is greater than 1, this field is mandatory.";
752
+ const network_error$1 = "Network error";
753
+ const retry_when_access_data_failed$1 = "Failed to load data. Click to retry.";
754
+ const service$1 = "Service";
755
+ const ingress$1 = "Ingress";
756
+ const fstype$1 = "Filesystem type";
739
757
  const dovetail$1 = {
740
758
  copy: copy$1,
741
759
  reset_arguments: reset_arguments$1,
@@ -907,7 +925,7 @@ const dovetail$1 = {
907
925
  bound_state: bound_state$1,
908
926
  released_state: released_state$1,
909
927
  failed_state: failed_state$1,
910
- exec_pod,
928
+ exec_pod: exec_pod$1,
911
929
  search: search$1,
912
930
  edit_label: edit_label$1,
913
931
  csi: csi$1,
@@ -1019,11 +1037,29 @@ const dovetail$1 = {
1019
1037
  pause_scheduling: pause_scheduling$1,
1020
1038
  port_name: port_name$1,
1021
1039
  target_port_range_limit: target_port_range_limit$1,
1022
- service_port_name_tip: service_port_name_tip$1
1040
+ service_port_name_tip: service_port_name_tip$1,
1041
+ network_error: network_error$1,
1042
+ retry_when_access_data_failed: retry_when_access_data_failed$1,
1043
+ service: service$1,
1044
+ ingress: ingress$1,
1045
+ fstype: fstype$1
1023
1046
  };
1024
1047
  const EN = {
1048
+ app: app$1,
1025
1049
  dovetail: dovetail$1
1026
1050
  };
1051
+ const add_container = "添加容器";
1052
+ const container_index = "容器 {{index}}";
1053
+ const container_name = "容器名称";
1054
+ const container_image = "容器镜像";
1055
+ const advanced_settings = "高级设置";
1056
+ const app = {
1057
+ add_container,
1058
+ container_index,
1059
+ container_name,
1060
+ container_image,
1061
+ advanced_settings
1062
+ };
1027
1063
  const copy = "复制";
1028
1064
  const reset_arguments = "重置";
1029
1065
  const view_changes = "查看改动";
@@ -1303,6 +1339,12 @@ const no_labels = "无标签";
1303
1339
  const no_annotations = "无注解";
1304
1340
  const pause_scheduling = "暂停调度";
1305
1341
  const service_port_name_tip = "端口数量为 1 时,名称为选填项;大于 1 时,名称为必填项。";
1342
+ const exec_pod = "执行 Shell";
1343
+ const network_error = "网络错误";
1344
+ const retry_when_access_data_failed = "数据加载失败,点击重试。";
1345
+ const service = "服务";
1346
+ const ingress = "Ingress";
1347
+ const fstype = "文件系统类型";
1306
1348
  const dovetail = {
1307
1349
  copy,
1308
1350
  reset_arguments,
@@ -1585,9 +1627,16 @@ const dovetail = {
1585
1627
  no_labels,
1586
1628
  no_annotations,
1587
1629
  pause_scheduling,
1588
- service_port_name_tip
1630
+ service_port_name_tip,
1631
+ exec_pod,
1632
+ network_error,
1633
+ retry_when_access_data_failed,
1634
+ service,
1635
+ ingress,
1636
+ fstype
1589
1637
  };
1590
1638
  const ZH = {
1639
+ app,
1591
1640
  dovetail
1592
1641
  };
1593
1642
  const resources = {
@@ -7319,9 +7368,7 @@ class K8sOpenAPI {
7319
7368
  return this.schemas;
7320
7369
  }
7321
7370
  try {
7322
- const response = await fetch(
7323
- `${this.pathPrefix}${this.resourceBasePath}`
7324
- );
7371
+ const response = await fetch(`${this.pathPrefix}${this.resourceBasePath}`);
7325
7372
  const result = await response.json();
7326
7373
  this.schemas = Object.values(result.components.schemas);
7327
7374
  if (this.schemas) {
@@ -7393,33 +7440,42 @@ function useApiGroupSchema() {
7393
7440
  loading: false,
7394
7441
  error: null
7395
7442
  });
7396
- const fetchSchema = React.useCallback(async (apiGroups, schemaUrlPrefix) => {
7397
- setState((prev) => ({ ...prev, loading: true, error: null }));
7398
- try {
7399
- const results = await Promise.all(
7400
- apiGroups.map(async (apiGroup) => {
7401
- if (state2.schemasMap[apiGroup]) {
7402
- return { apiGroup, schemas: state2.schemasMap[apiGroup] };
7403
- }
7404
- const groupSchemas = await schemaStore.fetchSchemas(apiGroup, schemaUrlPrefix);
7405
- return { apiGroup, schemas: groupSchemas || [] };
7406
- })
7407
- );
7408
- const newSchemasMap = results.reduce((acc, { apiGroup, schemas }) => {
7409
- acc[apiGroup] = schemas;
7410
- return acc;
7411
- }, {});
7412
- const allSchemas = results.flatMap(({ schemas }) => schemas);
7413
- setState({
7414
- schemas: allSchemas,
7415
- schemasMap: newSchemasMap,
7416
- loading: false,
7417
- error: null
7418
- });
7419
- } catch (e2) {
7420
- setState((prev) => ({ ...prev, loading: false, error: e2 }));
7421
- }
7422
- }, [state2.schemasMap]);
7443
+ const fetchSchema = React.useCallback(
7444
+ async (apiGroups, schemaUrlPrefix) => {
7445
+ setState((prev) => ({ ...prev, loading: true, error: null }));
7446
+ try {
7447
+ const results = await Promise.all(
7448
+ apiGroups.map(async (apiGroup) => {
7449
+ if (state2.schemasMap[apiGroup]) {
7450
+ return { apiGroup, schemas: state2.schemasMap[apiGroup] };
7451
+ }
7452
+ const groupSchemas = await schemaStore.fetchSchemas(
7453
+ apiGroup,
7454
+ schemaUrlPrefix
7455
+ );
7456
+ return { apiGroup, schemas: groupSchemas || [] };
7457
+ })
7458
+ );
7459
+ const newSchemasMap = results.reduce(
7460
+ (acc, { apiGroup, schemas }) => {
7461
+ acc[apiGroup] = schemas;
7462
+ return acc;
7463
+ },
7464
+ {}
7465
+ );
7466
+ const allSchemas = results.flatMap(({ schemas }) => schemas);
7467
+ setState({
7468
+ schemas: allSchemas,
7469
+ schemasMap: newSchemasMap,
7470
+ loading: false,
7471
+ error: null
7472
+ });
7473
+ } catch (e2) {
7474
+ setState((prev) => ({ ...prev, loading: false, error: e2 }));
7475
+ }
7476
+ },
7477
+ [state2.schemasMap]
7478
+ );
7423
7479
  return { ...state2, fetchSchema };
7424
7480
  }
7425
7481
  function useSchema(options) {
@@ -7435,7 +7491,11 @@ function useSchema(options) {
7435
7491
  setLoading(true);
7436
7492
  setError(null);
7437
7493
  try {
7438
- const schema2 = await schemaStore.fetchSchema((_a2 = resource == null ? void 0 : resource.meta) == null ? void 0 : _a2.resourceBasePath, schemaUrlPrefix, (_b2 = resource == null ? void 0 : resource.meta) == null ? void 0 : _b2.kind);
7494
+ const schema2 = await schemaStore.fetchSchema(
7495
+ (_a2 = resource == null ? void 0 : resource.meta) == null ? void 0 : _a2.resourceBasePath,
7496
+ schemaUrlPrefix,
7497
+ (_b2 = resource == null ? void 0 : resource.meta) == null ? void 0 : _b2.kind
7498
+ );
7439
7499
  setSchema(schema2 || null);
7440
7500
  setError(null);
7441
7501
  } catch (e2) {
@@ -7456,6 +7516,34 @@ function useSchema(options) {
7456
7516
  fetchSchema
7457
7517
  };
7458
7518
  }
7519
+ const useDeleteManyModal = (resource, ids) => {
7520
+ const { mutate } = core.useDeleteMany();
7521
+ const [visible, setVisible] = React.useState(false);
7522
+ const { t: t2 } = common.useTranslation();
7523
+ const modalProps = {
7524
+ title: t2("dovetail.delete"),
7525
+ okText: t2("dovetail.delete"),
7526
+ okButtonProps: {
7527
+ danger: true
7528
+ },
7529
+ cancelText: t2("dovetail.cancel"),
7530
+ children: t2("dovetail.confirm_delete_text", {
7531
+ target: ids,
7532
+ interpolation: { escapeValue: false }
7533
+ }),
7534
+ onOk() {
7535
+ mutate({
7536
+ resource,
7537
+ ids
7538
+ });
7539
+ setVisible(false);
7540
+ },
7541
+ onCancel() {
7542
+ setVisible(false);
7543
+ }
7544
+ };
7545
+ return { modalProps, visible, setVisible };
7546
+ };
7459
7547
  const ConfigsContext = React.createContext({});
7460
7548
  function getCommonErrors(responseBody, i18n2) {
7461
7549
  var _a;
@@ -7499,12 +7587,16 @@ function getCommonErrors(responseBody, i18n2) {
7499
7587
  }
7500
7588
  return [
7501
7589
  i18n2.t(
7502
- [`error.${responseBody.code}`, `error.${responseBody.reason}`, responseBody.message || ""],
7590
+ [
7591
+ `error.${responseBody.code}`,
7592
+ `error.${responseBody.reason}`,
7593
+ responseBody.message || ""
7594
+ ],
7503
7595
  { fallbackLng: "" }
7504
7596
  )
7505
7597
  ];
7506
7598
  }
7507
- const tag_18x9v7m = "";
7599
+ const tag_19ts6m8 = "";
7508
7600
  const StateTagStyle = "s82411";
7509
7601
  const NameTagStyle = "n9ja9cs";
7510
7602
  function shortenedImage(image2) {
@@ -7904,48 +7996,6 @@ function NameInputWidget(props) {
7904
7996
  const { action } = core.useResource();
7905
7997
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.Input, { ...props, disabled: action === "edit" });
7906
7998
  }
7907
- const dnsSubDomainRules = [
7908
- {
7909
- required: true,
7910
- message: "名称不能为空"
7911
- },
7912
- {
7913
- pattern: /^[a-z0-9]([-.a-z0-9]*[a-z0-9])?$/,
7914
- message: "名称只能包含小写字母、数字,以及 '-' 和 '.',且必须以字母或数字开头和结束"
7915
- },
7916
- {
7917
- max: 253,
7918
- message: "名称长度不能超过253个字符"
7919
- }
7920
- ];
7921
- const rfc1123LabelRules = [
7922
- {
7923
- required: true,
7924
- message: "名称不能为空"
7925
- },
7926
- {
7927
- pattern: /^[a-z0-9]([-a-z0-9]*[a-z0-9])?$/,
7928
- message: "名称只能包含小写字母、数字,以及 '-',且以字母或数字开头和结束"
7929
- },
7930
- {
7931
- max: 63,
7932
- message: "名称长度不能超过63个字符"
7933
- }
7934
- ];
7935
- const rfc1035LabelRules = [
7936
- {
7937
- required: true,
7938
- message: "名称不能为空"
7939
- },
7940
- {
7941
- pattern: /^[a-z]([-a-z0-9]*[a-z0-9])?$/,
7942
- message: "名称只能包含小写字母、数字,以及 '-',且以字母开头,字母或数字结束"
7943
- },
7944
- {
7945
- max: 63,
7946
- message: "名称长度不能超过63个字符"
7947
- }
7948
- ];
7949
7999
  function NamespaceSelectWidget(props) {
7950
8000
  const { action } = core.useResource();
7951
8001
  const { data: data2 } = core.useList({
@@ -8007,10 +8057,13 @@ function KeyValueListWidget(props) {
8007
8057
  const onChange = React.useCallback(
8008
8058
  (newItems) => {
8009
8059
  var _a;
8010
- const newValue = newItems.reduce((result, item) => {
8011
- result[item.key] = item.value;
8012
- return result;
8013
- }, {});
8060
+ const newValue = newItems.reduce(
8061
+ (result, item) => {
8062
+ result[item.key] = item.value;
8063
+ return result;
8064
+ },
8065
+ {}
8066
+ );
8014
8067
  (_a = props.onChange) == null ? void 0 : _a.call(props, newValue);
8015
8068
  },
8016
8069
  [props]
@@ -8056,7 +8109,7 @@ function KeyValueListWidget(props) {
8056
8109
  }
8057
8110
  function MetadataForm() {
8058
8111
  return /* @__PURE__ */ common.jsxRuntimeExports.jsxs(common.jsxRuntimeExports.Fragment, { children: [
8059
- /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.Form.Item, { label: "Name", name: ["metadata", "name"], rules: rfc1123LabelRules, children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(NameInputWidget, {}) }),
8112
+ /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.Form.Item, { label: "Name", name: ["metadata", "name"], children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(NameInputWidget, {}) }),
8060
8113
  /* @__PURE__ */ common.jsxRuntimeExports.jsx(
8061
8114
  eagle.Form.Item,
8062
8115
  {
@@ -8071,6 +8124,12 @@ function MetadataForm() {
8071
8124
  ] });
8072
8125
  }
8073
8126
  const ComponentContext = React.createContext({});
8127
+ function ComponentContextProvider({
8128
+ value: value2,
8129
+ children
8130
+ }) {
8131
+ return React.createElement(ComponentContext.Provider, { value: value2 }, children);
8132
+ }
8074
8133
  const GlobalStoreContext = React.createContext({});
8075
8134
  const index_1s9fcl3 = "";
8076
8135
  const ErrorWrapper = /* @__PURE__ */ styled_default("div")({
@@ -8078,8 +8137,8 @@ const ErrorWrapper = /* @__PURE__ */ styled_default("div")({
8078
8137
  class: "egn3dbn",
8079
8138
  propsAsIs: false
8080
8139
  });
8081
- const ErrorContent = /* @__PURE__ */ styled_default("div")({
8082
- name: "ErrorContent",
8140
+ const ErrorContentBody = /* @__PURE__ */ styled_default("div")({
8141
+ name: "ErrorContentBody",
8083
8142
  class: "e136jgy8",
8084
8143
  propsAsIs: false
8085
8144
  });
@@ -8090,7 +8149,7 @@ var ErrorContentType = /* @__PURE__ */ ((ErrorContentType2) => {
8090
8149
  ErrorContentType2["Item"] = "item";
8091
8150
  return ErrorContentType2;
8092
8151
  })(ErrorContentType || {});
8093
- const WidgetErrorContent = (props) => {
8152
+ const ErrorContent = (props) => {
8094
8153
  const {
8095
8154
  refetch,
8096
8155
  errorText,
@@ -8126,7 +8185,7 @@ const WidgetErrorContent = (props) => {
8126
8185
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx(ErrorWrapper, {
8127
8186
  className: common.cx_default(props.className, type2),
8128
8187
  style: props.style,
8129
- children: /* @__PURE__ */ common.jsxRuntimeExports.jsxs(ErrorContent, {
8188
+ children: /* @__PURE__ */ common.jsxRuntimeExports.jsxs(ErrorContentBody, {
8130
8189
  className: "error-content",
8131
8190
  children: [/* @__PURE__ */ common.jsxRuntimeExports.jsx("p", {
8132
8191
  className: common.cx_default(fontMap[type2], "title", `${type2}-title`),
@@ -8196,7 +8255,7 @@ function Table$1(props) {
8196
8255
  if (loading) {
8197
8256
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.Loading, {});
8198
8257
  } else if (error) {
8199
- return /* @__PURE__ */ common.jsxRuntimeExports.jsx(WidgetErrorContent, {
8258
+ return /* @__PURE__ */ common.jsxRuntimeExports.jsx(ErrorContent, {
8200
8259
  errorText: t2("dovetail.retry_when_access_data_failed"),
8201
8260
  refetch,
8202
8261
  style: {
@@ -8204,7 +8263,7 @@ function Table$1(props) {
8204
8263
  }
8205
8264
  });
8206
8265
  } else if (dataSource.length === 0) {
8207
- return /* @__PURE__ */ common.jsxRuntimeExports.jsx(WidgetErrorContent, {
8266
+ return /* @__PURE__ */ common.jsxRuntimeExports.jsx(ErrorContent, {
8208
8267
  errorText: empty2 || t2("dovetail.empty"),
8209
8268
  style: {
8210
8269
  padding: "15px 0"
@@ -8234,21 +8293,31 @@ function Table$1(props) {
8234
8293
  })]
8235
8294
  });
8236
8295
  }
8237
- function useTableData({ data: data2, columns, pageSize = 10, defaultSorters }) {
8296
+ function useTableData({
8297
+ data: data2,
8298
+ columns,
8299
+ pageSize = 10,
8300
+ defaultSorters
8301
+ }) {
8238
8302
  const [currentPage, setCurrentPage] = React.useState(1);
8239
8303
  const [sorters, setSorters] = React.useState(defaultSorters || []);
8240
- const onSorterChange = React.useCallback((order, key2) => {
8241
- var _a;
8242
- const ORDER_MAP = {
8243
- descend: "desc",
8244
- ascend: "asc"
8245
- };
8246
- const sorters2 = [{
8247
- field: (_a = columns.find((col) => col.key === key2)) == null ? void 0 : _a.dataIndex,
8248
- order: order ? ORDER_MAP[order] : order
8249
- }];
8250
- setSorters(sorters2);
8251
- }, [columns]);
8304
+ const onSorterChange = React.useCallback(
8305
+ (order, key2) => {
8306
+ var _a;
8307
+ const ORDER_MAP = {
8308
+ descend: "desc",
8309
+ ascend: "asc"
8310
+ };
8311
+ const sorters2 = [
8312
+ {
8313
+ field: (_a = columns.find((col) => col.key === key2)) == null ? void 0 : _a.dataIndex,
8314
+ order: order ? ORDER_MAP[order] : order
8315
+ }
8316
+ ];
8317
+ setSorters(sorters2);
8318
+ },
8319
+ [columns]
8320
+ );
8252
8321
  return {
8253
8322
  data: k8sApiProvider.paginateData(
8254
8323
  {
@@ -8303,7 +8372,7 @@ const PodSelectorTable = ({ podSelectors = {} }) => {
8303
8372
  });
8304
8373
  if (datas.length === 0) {
8305
8374
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx(
8306
- WidgetErrorContent,
8375
+ ErrorContent,
8307
8376
  {
8308
8377
  errorText: t2("dovetail.no_resource", { kind: ` ${t2("dovetail.pod_selector")}` }),
8309
8378
  type: ErrorContentType.Card
@@ -8328,7 +8397,7 @@ const PodSelectorTable = ({ podSelectors = {} }) => {
8328
8397
  }
8329
8398
  );
8330
8399
  };
8331
- const PortsTable = ({ service }) => {
8400
+ const PortsTable = ({ service: service2 }) => {
8332
8401
  const { t: t2 } = common.useTranslation();
8333
8402
  const component = React.useContext(ComponentContext);
8334
8403
  const Table2 = component.Table || Table$1;
@@ -8375,7 +8444,7 @@ const PortsTable = ({ service }) => {
8375
8444
  width: 199
8376
8445
  }
8377
8446
  ];
8378
- const ports = (service._rawYaml.spec.ports || []).map((port2) => ({
8447
+ const ports = (service2._rawYaml.spec.ports || []).map((port2) => ({
8379
8448
  ...port2,
8380
8449
  id: port2.name || ""
8381
8450
  }));
@@ -8390,7 +8459,7 @@ const PortsTable = ({ service }) => {
8390
8459
  });
8391
8460
  if ((ports == null ? void 0 : ports.length) === 0) {
8392
8461
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx(
8393
- WidgetErrorContent,
8462
+ ErrorContent,
8394
8463
  {
8395
8464
  errorText: t2("dovetail.no_resource", { kind: t2("dovetail.port") }),
8396
8465
  type: ErrorContentType.Card
@@ -8512,20 +8581,22 @@ function EditFieldModal(props) {
8512
8581
  popModal();
8513
8582
  reset();
8514
8583
  }, [popModal, reset]);
8515
- return /* @__PURE__ */ common.jsxRuntimeExports.jsxs(ModalComponent, {
8584
+ return /* @__PURE__ */ common.jsxRuntimeExports.jsx(ModalComponent, {
8516
8585
  title: title || i18n2.t("dovetail.edit"),
8517
8586
  confirmLoading: submitting,
8518
8587
  onOk: onSubmit,
8519
8588
  onCancel: close2,
8520
8589
  okText: i18n2.t("dovetail.save"),
8521
8590
  destroyOnClose: true,
8522
- children: [renderContent(), /* @__PURE__ */ common.jsxRuntimeExports.jsx(FormErrorAlert, {
8523
- style: {
8524
- marginTop: 16
8525
- },
8526
- errorMsgs,
8527
- isEdit: true
8528
- })]
8591
+ children: /* @__PURE__ */ common.jsxRuntimeExports.jsxs(common.jsxRuntimeExports.Fragment, {
8592
+ children: [renderContent(), /* @__PURE__ */ common.jsxRuntimeExports.jsx(FormErrorAlert, {
8593
+ style: {
8594
+ marginTop: 16
8595
+ },
8596
+ errorMsgs,
8597
+ isEdit: true
8598
+ })]
8599
+ })
8529
8600
  });
8530
8601
  }
8531
8602
  function EditField(props) {
@@ -8790,6 +8861,38 @@ function PVCDistributeStorage({
8790
8861
  )
8791
8862
  ] });
8792
8863
  }
8864
+ const index_1oorxg6 = "";
8865
+ const CopyIconStyle = "c1oll6q9";
8866
+ const CopyButton = ({
8867
+ value: value2,
8868
+ className
8869
+ }) => {
8870
+ const {
8871
+ i18n: i18n2
8872
+ } = common.useTranslation();
8873
+ const [tooltip, setTooltip] = React.useState(i18n2.t("dovetail.copy"));
8874
+ return /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.Tooltip, {
8875
+ title: tooltip,
8876
+ onVisibleChange: (visible) => {
8877
+ if (!visible) {
8878
+ setTimeout(() => {
8879
+ setTooltip(i18n2.t("dovetail.copy"));
8880
+ }, 80);
8881
+ }
8882
+ },
8883
+ children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.Icon, {
8884
+ src: iconsReact.ClipboardCopy16GradientGrayIcon,
8885
+ hoverSrc: iconsReact.ClipboardCopy16GradientBlueIcon,
8886
+ className: common.cx_default(CopyIconStyle, className),
8887
+ iconWidth: 16,
8888
+ iconHeight: 16,
8889
+ onClick: () => {
8890
+ copyToClipboard$1(value2);
8891
+ setTooltip(i18n2.t("dovetail.copied"));
8892
+ }
8893
+ })
8894
+ });
8895
+ };
8793
8896
  class ResourceModel {
8794
8897
  constructor(_rawYaml, _globalStore) {
8795
8898
  __publicField(this, "id");
@@ -8907,74 +9010,70 @@ const BASE_INIT_VALUE = {
8907
9010
  }
8908
9011
  };
8909
9012
  const DEPLOYMENT_INIT_VALUE = {
8910
- "apiVersion": "apps/v1",
8911
- "kind": "Deployment",
8912
- "metadata": {
8913
- "name": "example",
8914
- "namespace": "default"
9013
+ apiVersion: "apps/v1",
9014
+ kind: "Deployment",
9015
+ metadata: {
9016
+ name: "example",
9017
+ namespace: "default"
8915
9018
  },
8916
- "spec": {
8917
- "selector": {
8918
- "matchLabels": {
8919
- "app": "deployment-example"
9019
+ spec: {
9020
+ selector: {
9021
+ matchLabels: {
9022
+ app: "deployment-example"
8920
9023
  }
8921
9024
  },
8922
- "replicas": 3,
8923
- "template": {
8924
- "metadata": {
8925
- "labels": {
8926
- "app": "deployment-example"
9025
+ replicas: 3,
9026
+ template: {
9027
+ metadata: {
9028
+ labels: {
9029
+ app: "deployment-example"
8927
9030
  }
8928
9031
  },
8929
- "spec": {
8930
- "containers": [
9032
+ spec: {
9033
+ containers: [
8931
9034
  {
8932
- "name": "deployment-example",
8933
- "image": "registry.smtx.io/kubesmart/bitnami/nginx:1.25.2-debian-11-r2",
8934
- "ports": [
9035
+ name: "deployment-example",
9036
+ image: "registry.smtx.io/kubesmart/bitnami/nginx:1.25.2-debian-11-r2",
9037
+ ports: [
8935
9038
  {
8936
- "containerPort": 8080,
8937
- "protocol": "TCP"
9039
+ containerPort: 8080,
9040
+ protocol: "TCP"
8938
9041
  }
8939
9042
  ]
8940
9043
  }
8941
9044
  ]
8942
9045
  }
8943
9046
  },
8944
- "strategy": {
8945
- "type": "RollingUpdate",
8946
- "rollingUpdate": {
8947
- "maxSurge": "25%",
8948
- "maxUnavailable": "25%"
9047
+ strategy: {
9048
+ type: "RollingUpdate",
9049
+ rollingUpdate: {
9050
+ maxSurge: "25%",
9051
+ maxUnavailable: "25%"
8949
9052
  }
8950
9053
  }
8951
9054
  }
8952
9055
  };
8953
9056
  const CRONJOB_INIT_VALUE = {
8954
- "apiVersion": "batch/v1",
8955
- "kind": "CronJob",
8956
- "metadata": {
8957
- "name": "example",
8958
- "namespace": "default"
9057
+ apiVersion: "batch/v1",
9058
+ kind: "CronJob",
9059
+ metadata: {
9060
+ name: "example",
9061
+ namespace: "default"
8959
9062
  },
8960
- "spec": {
8961
- "schedule": "@daily",
8962
- "jobTemplate": {
8963
- "spec": {
8964
- "template": {
8965
- "spec": {
8966
- "containers": [
9063
+ spec: {
9064
+ schedule: "@daily",
9065
+ jobTemplate: {
9066
+ spec: {
9067
+ template: {
9068
+ spec: {
9069
+ containers: [
8967
9070
  {
8968
- "name": "example",
8969
- "image": "registry.smtx.io/kubesmart/alpine:3",
8970
- "args": [
8971
- "/bin/sh",
8972
- "-c",
8973
- "date; echo Hello from the Kubernetes cluster"
8974
- ]
9071
+ name: "example",
9072
+ image: "registry.smtx.io/kubesmart/alpine:3",
9073
+ args: ["/bin/sh", "-c", "date; echo Hello from the Kubernetes cluster"]
8975
9074
  }
8976
9075
  ],
8977
- "restartPolicy": "OnFailure"
9076
+ restartPolicy: "OnFailure"
8978
9077
  }
8979
9078
  }
8980
9079
  }
@@ -8982,32 +9081,32 @@ const CRONJOB_INIT_VALUE = {
8982
9081
  }
8983
9082
  };
8984
9083
  const DAEMONSET_INIT_VALUE = {
8985
- "apiVersion": "apps/v1",
8986
- "kind": "DaemonSet",
8987
- "metadata": {
8988
- "name": "example",
8989
- "namespace": "default"
9084
+ apiVersion: "apps/v1",
9085
+ kind: "DaemonSet",
9086
+ metadata: {
9087
+ name: "example",
9088
+ namespace: "default"
8990
9089
  },
8991
- "spec": {
8992
- "selector": {
8993
- "matchLabels": {
8994
- "app": "daemonset-example"
9090
+ spec: {
9091
+ selector: {
9092
+ matchLabels: {
9093
+ app: "daemonset-example"
8995
9094
  }
8996
9095
  },
8997
- "template": {
8998
- "metadata": {
8999
- "labels": {
9000
- "app": "daemonset-example"
9096
+ template: {
9097
+ metadata: {
9098
+ labels: {
9099
+ app: "daemonset-example"
9001
9100
  }
9002
9101
  },
9003
- "spec": {
9004
- "containers": [
9102
+ spec: {
9103
+ containers: [
9005
9104
  {
9006
- "name": "daemonset-example",
9007
- "image": "registry.smtx.io/kubesmart/bitnami/nginx:1.25.2-debian-11-r2",
9008
- "ports": [
9105
+ name: "daemonset-example",
9106
+ image: "registry.smtx.io/kubesmart/bitnami/nginx:1.25.2-debian-11-r2",
9107
+ ports: [
9009
9108
  {
9010
- "containerPort": 8080
9109
+ containerPort: 8080
9011
9110
  }
9012
9111
  ]
9013
9112
  }
@@ -9017,98 +9116,86 @@ const DAEMONSET_INIT_VALUE = {
9017
9116
  }
9018
9117
  };
9019
9118
  const JOB_INIT_VALUE = {
9020
- "apiVersion": "batch/v1",
9021
- "kind": "Job",
9022
- "metadata": {
9023
- "name": "example",
9024
- "namespace": "default"
9119
+ apiVersion: "batch/v1",
9120
+ kind: "Job",
9121
+ metadata: {
9122
+ name: "example",
9123
+ namespace: "default"
9025
9124
  },
9026
- "spec": {
9027
- "selector": {},
9028
- "template": {
9029
- "metadata": {
9030
- "name": "job-example"
9125
+ spec: {
9126
+ selector: {},
9127
+ template: {
9128
+ metadata: {
9129
+ name: "job-example"
9031
9130
  },
9032
- "spec": {
9033
- "containers": [
9131
+ spec: {
9132
+ containers: [
9034
9133
  {
9035
- "name": "job-example",
9036
- "image": "registry.smtx.io/kubesmart/alpine:3",
9037
- "command": [
9038
- "/bin/sh",
9039
- "-c",
9040
- "date; echo Hello from the Kubernetes cluster"
9041
- ]
9134
+ name: "job-example",
9135
+ image: "registry.smtx.io/kubesmart/alpine:3",
9136
+ command: ["/bin/sh", "-c", "date; echo Hello from the Kubernetes cluster"]
9042
9137
  }
9043
9138
  ],
9044
- "restartPolicy": "Never"
9139
+ restartPolicy: "Never"
9045
9140
  }
9046
9141
  }
9047
9142
  }
9048
9143
  };
9049
9144
  const STATEFULSET_INIT_VALUE = {
9050
- "apiVersion": "apps/v1",
9051
- "kind": "StatefulSet",
9052
- "metadata": {
9053
- "name": "example",
9054
- "namespace": "default"
9145
+ apiVersion: "apps/v1",
9146
+ kind: "StatefulSet",
9147
+ metadata: {
9148
+ name: "example",
9149
+ namespace: "default"
9055
9150
  },
9056
- "spec": {
9057
- "serviceName": "statefulset-example",
9058
- "replicas": 3,
9059
- "selector": {
9060
- "matchLabels": {
9061
- "app": "statefulset-example"
9151
+ spec: {
9152
+ serviceName: "statefulset-example",
9153
+ replicas: 3,
9154
+ selector: {
9155
+ matchLabels: {
9156
+ app: "statefulset-example"
9062
9157
  }
9063
9158
  },
9064
- "template": {
9065
- "metadata": {
9066
- "labels": {
9067
- "app": "statefulset-example"
9159
+ template: {
9160
+ metadata: {
9161
+ labels: {
9162
+ app: "statefulset-example"
9068
9163
  }
9069
9164
  },
9070
- "spec": {
9071
- "terminationGracePeriodSeconds": 10,
9072
- "containers": [
9165
+ spec: {
9166
+ terminationGracePeriodSeconds: 10,
9167
+ containers: [
9073
9168
  {
9074
- "name": "statefulset-example",
9075
- "image": "registry.smtx.io/kubesmart/fileserver:v1.0.0",
9076
- "command": [
9077
- "dufs"
9078
- ],
9079
- "args": [
9080
- "-A",
9081
- "--render-try-index",
9082
- "/data"
9083
- ],
9084
- "ports": [
9169
+ name: "statefulset-example",
9170
+ image: "registry.smtx.io/kubesmart/fileserver:v1.0.0",
9171
+ command: ["dufs"],
9172
+ args: ["-A", "--render-try-index", "/data"],
9173
+ ports: [
9085
9174
  {
9086
- "containerPort": 5e3,
9087
- "name": "http"
9175
+ containerPort: 5e3,
9176
+ name: "http"
9088
9177
  }
9089
9178
  ],
9090
- "volumeMounts": [
9179
+ volumeMounts: [
9091
9180
  {
9092
- "name": "file",
9093
- "mountPath": "/data"
9181
+ name: "file",
9182
+ mountPath: "/data"
9094
9183
  }
9095
9184
  ]
9096
9185
  }
9097
9186
  ]
9098
9187
  }
9099
9188
  },
9100
- "volumeClaimTemplates": [
9189
+ volumeClaimTemplates: [
9101
9190
  {
9102
- "metadata": {
9103
- "name": "file"
9191
+ metadata: {
9192
+ name: "file"
9104
9193
  },
9105
- "spec": {
9106
- "accessModes": [
9107
- "ReadWriteOnce"
9108
- ],
9109
- "resources": {
9110
- "requests": {
9111
- "storage": "1Gi"
9194
+ spec: {
9195
+ accessModes: ["ReadWriteOnce"],
9196
+ resources: {
9197
+ requests: {
9198
+ storage: "1Gi"
9112
9199
  }
9113
9200
  }
9114
9201
  }
@@ -9117,37 +9204,35 @@ const STATEFULSET_INIT_VALUE = {
9117
9204
  }
9118
9205
  };
9119
9206
  const POD_INIT_VALUE = {
9120
- "apiVersion": "v1",
9121
- "kind": "Pod",
9122
- "metadata": {
9123
- "name": "example",
9124
- "namespace": "default",
9125
- "labels": {
9126
- "app": "example"
9207
+ apiVersion: "v1",
9208
+ kind: "Pod",
9209
+ metadata: {
9210
+ name: "example",
9211
+ namespace: "default",
9212
+ labels: {
9213
+ app: "example"
9127
9214
  }
9128
9215
  },
9129
- "spec": {
9130
- "securityContext": {
9131
- "runAsNonRoot": true,
9132
- "seccompProfile": {
9133
- "type": "RuntimeDefault"
9216
+ spec: {
9217
+ securityContext: {
9218
+ runAsNonRoot: true,
9219
+ seccompProfile: {
9220
+ type: "RuntimeDefault"
9134
9221
  }
9135
9222
  },
9136
- "containers": [
9223
+ containers: [
9137
9224
  {
9138
- "name": "example",
9139
- "image": "registry.smtx.io/kubesmart/bitnami/nginx:1.25.2-debian-11-r2",
9140
- "ports": [
9225
+ name: "example",
9226
+ image: "registry.smtx.io/kubesmart/bitnami/nginx:1.25.2-debian-11-r2",
9227
+ ports: [
9141
9228
  {
9142
- "containerPort": 8080
9229
+ containerPort: 8080
9143
9230
  }
9144
9231
  ],
9145
- "securityContext": {
9146
- "allowPrivilegeEscalation": false,
9147
- "capabilities": {
9148
- "drop": [
9149
- "ALL"
9150
- ]
9232
+ securityContext: {
9233
+ allowPrivilegeEscalation: false,
9234
+ capabilities: {
9235
+ drop: ["ALL"]
9151
9236
  }
9152
9237
  }
9153
9238
  }
@@ -9155,143 +9240,143 @@ const POD_INIT_VALUE = {
9155
9240
  }
9156
9241
  };
9157
9242
  const SERVICE_CLUSTER_IP_INIT_VALUE = {
9158
- "apiVersion": "v1",
9159
- "kind": "Service",
9160
- "metadata": {
9161
- "name": "example",
9162
- "namespace": "default"
9243
+ apiVersion: "v1",
9244
+ kind: "Service",
9245
+ metadata: {
9246
+ name: "example",
9247
+ namespace: "default"
9163
9248
  },
9164
- "spec": {
9165
- "selector": {
9166
- "app": "example"
9249
+ spec: {
9250
+ selector: {
9251
+ app: "example"
9167
9252
  },
9168
- "ports": [
9253
+ ports: [
9169
9254
  {
9170
- "name": "example",
9171
- "port": 8080,
9172
- "protocol": "TCP",
9173
- "targetPort": 8080
9255
+ name: "example",
9256
+ port: 8080,
9257
+ protocol: "TCP",
9258
+ targetPort: 8080
9174
9259
  }
9175
9260
  ],
9176
- "sessionAffinity": "None",
9177
- "type": "ClusterIP"
9261
+ sessionAffinity: "None",
9262
+ type: "ClusterIP"
9178
9263
  }
9179
9264
  };
9180
9265
  const SERVICE_NODE_PORT_INIT_VALUE = {
9181
- "apiVersion": "v1",
9182
- "kind": "Service",
9183
- "metadata": {
9184
- "name": "example",
9185
- "namespace": "default"
9266
+ apiVersion: "v1",
9267
+ kind: "Service",
9268
+ metadata: {
9269
+ name: "example",
9270
+ namespace: "default"
9186
9271
  },
9187
- "spec": {
9188
- "selector": {
9189
- "app": "example"
9272
+ spec: {
9273
+ selector: {
9274
+ app: "example"
9190
9275
  },
9191
- "ports": [
9276
+ ports: [
9192
9277
  {
9193
- "name": "example",
9194
- "port": 8080,
9195
- "protocol": "TCP",
9196
- "targetPort": 8080
9278
+ name: "example",
9279
+ port: 8080,
9280
+ protocol: "TCP",
9281
+ targetPort: 8080
9197
9282
  }
9198
9283
  ],
9199
- "sessionAffinity": "None",
9200
- "type": "NodePort"
9284
+ sessionAffinity: "None",
9285
+ type: "NodePort"
9201
9286
  }
9202
9287
  };
9203
9288
  const SERVICE_LOAD_BALANCER_INIT_VALUE = {
9204
- "apiVersion": "v1",
9205
- "kind": "Service",
9206
- "metadata": {
9207
- "name": "example",
9208
- "namespace": "default"
9289
+ apiVersion: "v1",
9290
+ kind: "Service",
9291
+ metadata: {
9292
+ name: "example",
9293
+ namespace: "default"
9209
9294
  },
9210
- "spec": {
9211
- "selector": {
9212
- "app": "example"
9295
+ spec: {
9296
+ selector: {
9297
+ app: "example"
9213
9298
  },
9214
- "ports": [
9299
+ ports: [
9215
9300
  {
9216
- "name": "example",
9217
- "port": 80,
9218
- "protocol": "TCP",
9219
- "targetPort": 8080
9301
+ name: "example",
9302
+ port: 80,
9303
+ protocol: "TCP",
9304
+ targetPort: 8080
9220
9305
  }
9221
9306
  ],
9222
- "sessionAffinity": "None",
9223
- "type": "LoadBalancer"
9307
+ sessionAffinity: "None",
9308
+ type: "LoadBalancer"
9224
9309
  }
9225
9310
  };
9226
9311
  const SERVICE_EXTERNAL_NAME_INIT_VALUE = {
9227
- "apiVersion": "v1",
9228
- "kind": "Service",
9229
- "metadata": {
9230
- "name": "example",
9231
- "namespace": "default"
9312
+ apiVersion: "v1",
9313
+ kind: "Service",
9314
+ metadata: {
9315
+ name: "example",
9316
+ namespace: "default"
9232
9317
  },
9233
- "spec": {
9234
- "selector": {
9235
- "app": "example"
9318
+ spec: {
9319
+ selector: {
9320
+ app: "example"
9236
9321
  },
9237
- "ports": [
9322
+ ports: [
9238
9323
  {
9239
- "name": "example",
9240
- "port": 8080,
9241
- "protocol": "TCP",
9242
- "targetPort": 8080
9324
+ name: "example",
9325
+ port: 8080,
9326
+ protocol: "TCP",
9327
+ targetPort: 8080
9243
9328
  }
9244
9329
  ],
9245
- "sessionAffinity": "None",
9246
- "type": "ExternalName",
9247
- "externalName": "app.example.com"
9330
+ sessionAffinity: "None",
9331
+ type: "ExternalName",
9332
+ externalName: "app.example.com"
9248
9333
  }
9249
9334
  };
9250
9335
  const SERVICE_HEADLESS_INIT_VALUE = {
9251
- "apiVersion": "v1",
9252
- "kind": "Service",
9253
- "metadata": {
9254
- "name": "example",
9255
- "namespace": "default"
9336
+ apiVersion: "v1",
9337
+ kind: "Service",
9338
+ metadata: {
9339
+ name: "example",
9340
+ namespace: "default"
9256
9341
  },
9257
- "spec": {
9258
- "selector": {
9259
- "app": "example"
9342
+ spec: {
9343
+ selector: {
9344
+ app: "example"
9260
9345
  },
9261
- "clusterIP": "None",
9262
- "ports": [
9346
+ clusterIP: "None",
9347
+ ports: [
9263
9348
  {
9264
- "name": "example",
9265
- "port": null,
9266
- "protocol": "TCP",
9267
- "targetPort": null
9349
+ name: "example",
9350
+ port: null,
9351
+ protocol: "TCP",
9352
+ targetPort: null
9268
9353
  }
9269
9354
  ],
9270
- "sessionAffinity": "None",
9271
- "type": "ClusterIP"
9355
+ sessionAffinity: "None",
9356
+ type: "ClusterIP"
9272
9357
  }
9273
9358
  };
9274
9359
  const INGRESS_INIT_VALUE = {
9275
- "apiVersion": "networking.k8s.io/v1",
9276
- "kind": "Ingress",
9277
- "metadata": {
9278
- "name": "example",
9279
- "namespace": "default"
9360
+ apiVersion: "networking.k8s.io/v1",
9361
+ kind: "Ingress",
9362
+ metadata: {
9363
+ name: "example",
9364
+ namespace: "default"
9280
9365
  },
9281
- "spec": {
9282
- "rules": [
9366
+ spec: {
9367
+ rules: [
9283
9368
  {
9284
- "host": "example.com",
9285
- "http": {
9286
- "paths": [
9369
+ host: "example.com",
9370
+ http: {
9371
+ paths: [
9287
9372
  {
9288
- "path": "/testpath",
9289
- "pathType": "Prefix",
9290
- "backend": {
9291
- "service": {
9292
- "name": "test",
9293
- "port": {
9294
- "number": 80
9373
+ path: "/testpath",
9374
+ pathType: "Prefix",
9375
+ backend: {
9376
+ service: {
9377
+ name: "test",
9378
+ port: {
9379
+ number: 80
9295
9380
  }
9296
9381
  }
9297
9382
  }
@@ -9303,28 +9388,28 @@ const INGRESS_INIT_VALUE = {
9303
9388
  }
9304
9389
  };
9305
9390
  const NETWORK_POLICY_INIT_VALUE = {
9306
- "apiVersion": "networking.k8s.io/v1",
9307
- "kind": "NetworkPolicy",
9308
- "metadata": {
9309
- "name": "example",
9310
- "namespace": "default"
9391
+ apiVersion: "networking.k8s.io/v1",
9392
+ kind: "NetworkPolicy",
9393
+ metadata: {
9394
+ name: "example",
9395
+ namespace: "default"
9311
9396
  },
9312
- "spec": {
9313
- "podSelector": {},
9314
- "policyTypes": []
9397
+ spec: {
9398
+ podSelector: {},
9399
+ policyTypes: []
9315
9400
  }
9316
9401
  };
9317
9402
  const CONFIG_MAP_INIT_VALUE = {
9318
- "apiVersion": "v1",
9319
- "kind": "ConfigMap",
9320
- "metadata": {
9321
- "name": "example",
9322
- "namespace": "default"
9403
+ apiVersion: "v1",
9404
+ kind: "ConfigMap",
9405
+ metadata: {
9406
+ name: "example",
9407
+ namespace: "default"
9323
9408
  },
9324
- "data": {
9325
- "key": "value"
9409
+ data: {
9410
+ key: "value"
9326
9411
  },
9327
- "immutable": false
9412
+ immutable: false
9328
9413
  };
9329
9414
  const SERVER_INSTANCE_INIT_VALUE = {
9330
9415
  apiVersion: "kubesmart.smtx.io/v1alpha1",
@@ -9346,138 +9431,136 @@ const SERVER_INSTANCE_INIT_VALUE = {
9346
9431
  };
9347
9432
  const REDEPLOY_TIMESTAMP_KEY = "kubectl.kubernetes.io/restartedAt";
9348
9433
  const SECRET_OPAQUE_INIT_VALUE = {
9349
- "apiVersion": "v1",
9350
- "kind": "Secret",
9351
- "metadata": {
9352
- "name": "example",
9353
- "namespace": "default"
9434
+ apiVersion: "v1",
9435
+ kind: "Secret",
9436
+ metadata: {
9437
+ name: "example",
9438
+ namespace: "default"
9354
9439
  },
9355
- "type": "Opaque",
9356
- "data": {
9357
- "key": "value"
9440
+ type: "Opaque",
9441
+ data: {
9442
+ key: "value"
9358
9443
  }
9359
9444
  };
9360
9445
  const SECRET_IMAGE_REPO_INIT_VALUE = {
9361
- "apiVersion": "v1",
9362
- "kind": "Secret",
9363
- "metadata": {
9364
- "name": "example",
9365
- "namespace": "default"
9446
+ apiVersion: "v1",
9447
+ kind: "Secret",
9448
+ metadata: {
9449
+ name: "example",
9450
+ namespace: "default"
9366
9451
  },
9367
- "type": "kubernetes.io/dockerconfigjson",
9368
- "data": {
9452
+ type: "kubernetes.io/dockerconfigjson",
9453
+ data: {
9369
9454
  ".dockerconfigjson": ""
9370
9455
  }
9371
9456
  };
9372
9457
  const SECRET_BASIC_AUTH_INIT_VALUE = {
9373
- "apiVersion": "v1",
9374
- "kind": "Secret",
9375
- "metadata": {
9376
- "name": "example",
9377
- "namespace": "default"
9458
+ apiVersion: "v1",
9459
+ kind: "Secret",
9460
+ metadata: {
9461
+ name: "example",
9462
+ namespace: "default"
9378
9463
  },
9379
- "type": "kubernetes.io/basic-auth",
9380
- "data": {
9381
- "username": "example",
9382
- "password": "example"
9464
+ type: "kubernetes.io/basic-auth",
9465
+ data: {
9466
+ username: "example",
9467
+ password: "example"
9383
9468
  }
9384
9469
  };
9385
9470
  const SECRET_SSH_AUTH_INIT_VALUE = {
9386
- "apiVersion": "v1",
9387
- "kind": "Secret",
9388
- "metadata": {
9389
- "name": "example",
9390
- "namespace": "default"
9471
+ apiVersion: "v1",
9472
+ kind: "Secret",
9473
+ metadata: {
9474
+ name: "example",
9475
+ namespace: "default"
9391
9476
  },
9392
- "type": "kubernetes.io/ssh-auth",
9393
- "data": {
9477
+ type: "kubernetes.io/ssh-auth",
9478
+ data: {
9394
9479
  "ssh-publickey": "",
9395
9480
  "ssh-privatekey": ""
9396
9481
  }
9397
9482
  };
9398
9483
  const SECRET_TLS_INIT_VALUE = {
9399
- "apiVersion": "v1",
9400
- "kind": "Secret",
9401
- "metadata": {
9402
- "name": "example",
9403
- "namespace": "default"
9484
+ apiVersion: "v1",
9485
+ kind: "Secret",
9486
+ metadata: {
9487
+ name: "example",
9488
+ namespace: "default"
9404
9489
  },
9405
- "type": "kubernetes.io/tls",
9406
- "data": {
9490
+ type: "kubernetes.io/tls",
9491
+ data: {
9407
9492
  "tls.crt": "",
9408
9493
  "tls.key": ""
9409
9494
  }
9410
9495
  };
9411
9496
  const SECRET_CUSTOM_INIT_VALUE = {
9412
- "apiVersion": "v1",
9413
- "kind": "Secret",
9414
- "metadata": {
9415
- "name": "example",
9416
- "namespace": "default"
9497
+ apiVersion: "v1",
9498
+ kind: "Secret",
9499
+ metadata: {
9500
+ name: "example",
9501
+ namespace: "default"
9417
9502
  },
9418
- "type": "",
9419
- "data": {}
9503
+ type: "",
9504
+ data: {}
9420
9505
  };
9421
9506
  const NODE_INIT_VALUE = {
9422
- "apiVersion": "v1",
9423
- "kind": "Node",
9424
- "metadata": {
9425
- "name": "example",
9426
- "namespace": "default"
9507
+ apiVersion: "v1",
9508
+ kind: "Node",
9509
+ metadata: {
9510
+ name: "example",
9511
+ namespace: "default"
9427
9512
  },
9428
- "spec": {}
9513
+ spec: {}
9429
9514
  };
9430
9515
  const STORAGE_CLASS_INIT_VALUE = {
9431
- "apiVersion": "storage.k8s.io/v1",
9432
- "kind": "StorageClass",
9433
- "metadata": {
9434
- "name": ""
9516
+ apiVersion: "storage.k8s.io/v1",
9517
+ kind: "StorageClass",
9518
+ metadata: {
9519
+ name: ""
9435
9520
  },
9436
- "parameters": {
9521
+ parameters: {
9437
9522
  "csi.storage.k8s.io/fstype": "ext4"
9438
9523
  },
9439
- "provisioner": "",
9440
- "reclaimPolicy": "Delete",
9441
- "allowVolumeExpansion": true,
9442
- "volumeBindingMode": "Immediate"
9524
+ provisioner: "",
9525
+ reclaimPolicy: "Delete",
9526
+ allowVolumeExpansion: true,
9527
+ volumeBindingMode: "Immediate"
9443
9528
  };
9444
9529
  const PV_INIT_VALUE = {
9445
- "apiVersion": "v1",
9446
- "kind": "PersistentVolume",
9447
- "metadata": {
9448
- "name": "pvc-hostpath"
9530
+ apiVersion: "v1",
9531
+ kind: "PersistentVolume",
9532
+ metadata: {
9533
+ name: "pvc-hostpath"
9449
9534
  },
9450
- "spec": {
9451
- "accessModes": [
9452
- "ReadWriteOnce"
9453
- ],
9454
- "capacity": {
9455
- "storage": "10Gi"
9535
+ spec: {
9536
+ accessModes: ["ReadWriteOnce"],
9537
+ capacity: {
9538
+ storage: "10Gi"
9456
9539
  },
9457
- "hostPath": {
9458
- "type": "DirectoryOrCreate",
9459
- "path": "/root/test"
9540
+ hostPath: {
9541
+ type: "DirectoryOrCreate",
9542
+ path: "/root/test"
9460
9543
  },
9461
- "persistentVolumeReclaimPolicy": "Delete",
9462
- "volumeMode": "Filesystem"
9544
+ persistentVolumeReclaimPolicy: "Delete",
9545
+ volumeMode: "Filesystem"
9463
9546
  }
9464
9547
  };
9465
9548
  const PVC_INIT_VALUE = {
9466
- "apiVersion": "v1",
9467
- "kind": "PersistentVolumeClaim",
9468
- "metadata": {
9469
- "name": "",
9470
- "namespace": "default"
9549
+ apiVersion: "v1",
9550
+ kind: "PersistentVolumeClaim",
9551
+ metadata: {
9552
+ name: "",
9553
+ namespace: "default"
9471
9554
  },
9472
- "spec": {
9473
- "accessModes": [],
9474
- "resources": {
9475
- "requests": {
9476
- "storage": "10Gi"
9555
+ spec: {
9556
+ accessModes: [],
9557
+ resources: {
9558
+ requests: {
9559
+ storage: "10Gi"
9477
9560
  }
9478
9561
  },
9479
- "storageClassName": "",
9480
- "volumeMode": "Filesystem"
9562
+ storageClassName: "",
9563
+ volumeMode: "Filesystem"
9481
9564
  }
9482
9565
  };
9483
9566
  var ResourceState = /* @__PURE__ */ ((ResourceState2) => {
@@ -9584,6 +9667,16 @@ class WorkloadBaseModel extends ResourceModel {
9584
9667
  );
9585
9668
  return (containers == null ? void 0 : containers.map((container2) => shortenedImage(container2.image || ""))) || [];
9586
9669
  }
9670
+ async fetchRestarts(selector, namespace2) {
9671
+ const pods = await this._globalStore.get("pods", {
9672
+ resourceBasePath: "/api/v1",
9673
+ kind: "Pod"
9674
+ });
9675
+ const myPods = pods.items.filter(
9676
+ (p) => matchSelector(p, selector, namespace2)
9677
+ );
9678
+ return lodashExports.sumBy(myPods, "restarts");
9679
+ }
9587
9680
  }
9588
9681
  class JobModel extends WorkloadBaseModel {
9589
9682
  constructor(_rawYaml, _globalStore) {
@@ -9595,18 +9688,11 @@ class JobModel extends WorkloadBaseModel {
9595
9688
  await this.getRestarts();
9596
9689
  }
9597
9690
  async getRestarts() {
9598
- const pods = await this._globalStore.get("pods", {
9599
- resourceBasePath: "/api/v1",
9600
- kind: "Pod"
9601
- });
9602
- const myPods = pods.items.filter(
9603
- (p) => {
9604
- var _a;
9605
- return matchSelector(p, (_a = this.spec) == null ? void 0 : _a.selector, this.metadata.namespace);
9606
- }
9691
+ var _a;
9692
+ this.restarts = await this.fetchRestarts(
9693
+ (_a = this.spec) == null ? void 0 : _a.selector,
9694
+ this.metadata.namespace
9607
9695
  );
9608
- const result = lodashExports.sumBy(myPods, "restarts");
9609
- this.restarts = result;
9610
9696
  }
9611
9697
  get duration() {
9612
9698
  var _a, _b;
@@ -9671,18 +9757,11 @@ class WorkloadModel extends WorkloadBaseModel {
9671
9757
  await this.getIngresses();
9672
9758
  }
9673
9759
  async getRestarts() {
9674
- const pods = await this._globalStore.get("pods", {
9675
- resourceBasePath: "/api/v1",
9676
- kind: "Pod"
9677
- });
9678
- const myPods = pods.items.filter(
9679
- (p) => {
9680
- var _a;
9681
- return matchSelector(p, (_a = this.spec) == null ? void 0 : _a.selector, this.metadata.namespace);
9682
- }
9760
+ var _a;
9761
+ this.restarts = await this.fetchRestarts(
9762
+ (_a = this.spec) == null ? void 0 : _a.selector,
9763
+ this.metadata.namespace
9683
9764
  );
9684
- const result = lodashExports.sumBy(myPods, "restarts");
9685
- this.restarts = result;
9686
9765
  }
9687
9766
  async getServices() {
9688
9767
  const services = await this._globalStore.get("services", {
@@ -9699,10 +9778,10 @@ class WorkloadModel extends WorkloadBaseModel {
9699
9778
  }
9700
9779
  async getIngresses() {
9701
9780
  const allIngresses = /* @__PURE__ */ new Map();
9702
- for (const service of this.services) {
9703
- for (const ingress of service.ingresses) {
9704
- const key2 = `${ingress.namespace}-${ingress.name}`;
9705
- allIngresses.set(key2, ingress);
9781
+ for (const service2 of this.services) {
9782
+ for (const ingress2 of service2.ingresses) {
9783
+ const key2 = `${ingress2.namespace}-${ingress2.name}`;
9784
+ allIngresses.set(key2, ingress2);
9706
9785
  }
9707
9786
  }
9708
9787
  this.ingresses = Array.from(allIngresses.values());
@@ -9735,6 +9814,23 @@ class WorkloadModel extends WorkloadBaseModel {
9735
9814
  }
9736
9815
  return newOne;
9737
9816
  }
9817
+ getControllerRevisions(controllerRevisions) {
9818
+ return controllerRevisions.filter(
9819
+ (cr) => {
9820
+ var _a, _b;
9821
+ return (_b = (_a = cr.metadata) == null ? void 0 : _a.ownerReferences) == null ? void 0 : _b.some(
9822
+ (ref) => ref.kind === this.kind && ref.uid === this.metadata.uid
9823
+ );
9824
+ }
9825
+ );
9826
+ }
9827
+ getRevision(controllerRevisions) {
9828
+ const myRevisions = this.getControllerRevisions(controllerRevisions);
9829
+ return myRevisions.reduce(
9830
+ (result, cr) => Math.max(result, Number(cr.revision || 0)),
9831
+ 0
9832
+ );
9833
+ }
9738
9834
  }
9739
9835
  class PodModel extends WorkloadBaseModel {
9740
9836
  constructor(_rawYaml, _globalStore) {
@@ -10011,22 +10107,6 @@ class DaemonSetModel extends WorkloadModel {
10011
10107
  super(_rawYaml, _globalStore);
10012
10108
  this._rawYaml = _rawYaml;
10013
10109
  }
10014
- getControllerRevisions(controllerVisions) {
10015
- return controllerVisions.filter(
10016
- (controllerRevision) => {
10017
- var _a, _b;
10018
- return (_b = (_a = controllerRevision.metadata) == null ? void 0 : _a.ownerReferences) == null ? void 0 : _b.some(
10019
- (ownerReference) => ownerReference.kind === "DaemonSet" && ownerReference.uid === this.metadata.uid
10020
- );
10021
- }
10022
- );
10023
- }
10024
- getRevision(controllerVisions) {
10025
- const myControllerVisions = this.getControllerRevisions(controllerVisions);
10026
- return myControllerVisions.reduce((result, controllerRevision) => {
10027
- return Math.max(result, Number(controllerRevision.revision || 0));
10028
- }, 0);
10029
- }
10030
10110
  get stateDisplay() {
10031
10111
  var _a, _b;
10032
10112
  if (((_a = this.status) == null ? void 0 : _a.desiredNumberScheduled) !== ((_b = this.status) == null ? void 0 : _b.numberReady)) {
@@ -10046,22 +10126,6 @@ class StatefulSetModel extends WorkloadModel {
10046
10126
  super(_rawYaml, _globalStore);
10047
10127
  this._rawYaml = _rawYaml;
10048
10128
  }
10049
- getControllerRevisions(controllerVisions) {
10050
- return controllerVisions.filter(
10051
- (controllerRevision) => {
10052
- var _a, _b;
10053
- return (_b = (_a = controllerRevision.metadata) == null ? void 0 : _a.ownerReferences) == null ? void 0 : _b.some(
10054
- (ownerReference) => ownerReference.kind === "StatefulSet" && ownerReference.uid === this.metadata.uid
10055
- );
10056
- }
10057
- );
10058
- }
10059
- getRevision(controllerVisions) {
10060
- const myControllerVisions = this.getControllerRevisions(controllerVisions);
10061
- return myControllerVisions.reduce((result, controllerRevision) => {
10062
- return Math.max(result, Number(controllerRevision.revision || 0));
10063
- }, 0);
10064
- }
10065
10129
  get stateDisplay() {
10066
10130
  var _a, _b, _c;
10067
10131
  if (((_a = this.spec) == null ? void 0 : _a.replicas) === 0) {
@@ -10094,11 +10158,9 @@ class ServiceModel extends ResourceModel {
10094
10158
  resourceBasePath: "/apis/networking.k8s.io/v1",
10095
10159
  kind: "Ingress"
10096
10160
  });
10097
- const myIngresses = ingresses.items.filter((ingress) => {
10098
- const rules = ingress.getFlattenedRules([]);
10099
- return rules.some(
10100
- (rule2) => rule2.serviceName === this.name
10101
- );
10161
+ const myIngresses = ingresses.items.filter((ingress2) => {
10162
+ const rules = ingress2.getFlattenedRules([]);
10163
+ return rules.some((rule2) => rule2.serviceName === this.name);
10102
10164
  });
10103
10165
  this.ingresses = myIngresses;
10104
10166
  }
@@ -10290,15 +10352,15 @@ class IngressClassModel extends ResourceModel {
10290
10352
  return (_a = this.spec) == null ? void 0 : _a.controller;
10291
10353
  }
10292
10354
  }
10293
- const index_1rec449 = "";
10355
+ const index_1tz3o5 = "";
10294
10356
  const ServiceInClusterAccessComponent = ({
10295
- service
10357
+ service: service2
10296
10358
  }) => {
10297
- const spec = service._rawYaml.spec;
10298
- switch (service.displayType) {
10359
+ const spec = service2._rawYaml.spec;
10360
+ switch (service2.displayType) {
10299
10361
  case ServiceTypeEnum.ExternalName:
10300
10362
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx(ValueDisplay, {
10301
- value: service.dnsRecord
10363
+ value: service2.dnsRecord
10302
10364
  });
10303
10365
  case ServiceTypeEnum.Headless:
10304
10366
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx(ValueDisplay, {
@@ -10314,26 +10376,59 @@ const BreakLineStyle = "b1vtjd4k";
10314
10376
  const LinkStyle$2 = "luro4rx";
10315
10377
  const ShowLinkStyle = "s1gydjqf";
10316
10378
  const DashedUnderlineSpanStyle = "dvp1i89";
10379
+ const AccessAddressStyle = "azmggeh";
10380
+ const BreakLineListStyle = "bct30qn";
10381
+ const BreakLineItemStyle = "b1m9bqu";
10382
+ const ServiceAccessAddress = ({
10383
+ children,
10384
+ copyValue
10385
+ }) => {
10386
+ return /* @__PURE__ */ common.jsxRuntimeExports.jsxs("span", {
10387
+ className: AccessAddressStyle,
10388
+ children: [children, /* @__PURE__ */ common.jsxRuntimeExports.jsx(CopyButton, {
10389
+ value: copyValue
10390
+ })]
10391
+ });
10392
+ };
10393
+ function renderAccessItems(items, separator) {
10394
+ if (!items.length) {
10395
+ return void 0;
10396
+ }
10397
+ const result = [];
10398
+ for (let i2 = 0; i2 < items.length; i2++) {
10399
+ result.push(/* @__PURE__ */ common.jsxRuntimeExports.jsx(React.Fragment, {
10400
+ children: items[i2]
10401
+ }, `item-${i2}`));
10402
+ if (i2 < items.length - 1) {
10403
+ result.push(/* @__PURE__ */ common.jsxRuntimeExports.jsx(React.Fragment, {
10404
+ children: separator
10405
+ }, `separator-${i2}`));
10406
+ }
10407
+ }
10408
+ return result;
10409
+ }
10317
10410
  const ServiceOutClusterAccessComponent = ({
10318
- service,
10411
+ service: service2,
10319
10412
  breakLine = true,
10320
10413
  clusterVip,
10321
- showDashedUnderline = true
10414
+ showDashedUnderline = true,
10415
+ showCopyButton = false
10322
10416
  }) => {
10323
- var _a, _b, _c, _d, _e;
10417
+ var _a, _b, _c, _d, _e, _f, _g;
10324
10418
  const {
10325
10419
  i18n: i18n2
10326
10420
  } = common.useTranslation();
10327
- const spec = service._rawYaml.spec;
10328
- const status = service._rawYaml.status;
10421
+ const spec = service2._rawYaml.spec;
10422
+ const status = service2._rawYaml.status;
10329
10423
  let content = "-";
10330
10424
  switch (spec.type) {
10331
10425
  case ServiceTypeEnum.NodePort:
10332
- if (!breakLine) {
10333
- content = (_a = spec.ports) == null ? void 0 : _a.filter((v) => !!v).map((p) => [/* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.Link, {
10334
- href: `http://${clusterVip}:${p.nodePort}`,
10426
+ content = (_a = spec.ports) == null ? void 0 : _a.filter((v) => !!v && v.nodePort).map((p) => {
10427
+ const address = `${clusterVip}:${p.nodePort}`;
10428
+ const link = /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.Link, {
10429
+ href: `http://${address}`,
10335
10430
  target: "_blank",
10336
- className: common.cx_default(ShowLinkStyle, eagle.Typo.Label.l4_regular_title),
10431
+ className: breakLine ? common.cx_default(eagle.Typo.Label.l4_regular_title, BreakLineStyle, LinkStyle$2) : common.cx_default(ShowLinkStyle, eagle.Typo.Label.l4_regular_title),
10337
10432
  children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.Tooltip, {
10338
10433
  title: i18n2.t("dovetail.default_http_protocol_tooltip"),
10339
10434
  children: /* @__PURE__ */ common.jsxRuntimeExports.jsx("span", {
@@ -10341,50 +10436,60 @@ const ServiceOutClusterAccessComponent = ({
10341
10436
  style: showDashedUnderline ? void 0 : {
10342
10437
  borderBottom: "none"
10343
10438
  },
10344
- children: `${clusterVip}:${p.nodePort}`
10439
+ children: address
10345
10440
  })
10346
10441
  })
10347
- }, p.name)]);
10442
+ }, p.name || p.nodePort);
10443
+ if (!showCopyButton) {
10444
+ return link;
10445
+ }
10446
+ return /* @__PURE__ */ common.jsxRuntimeExports.jsx(ServiceAccessAddress, {
10447
+ copyValue: address,
10448
+ children: link
10449
+ }, p.name || p.nodePort);
10450
+ });
10451
+ if (!breakLine) {
10348
10452
  if (content && content instanceof Array) {
10349
- const result = [];
10350
- for (let i2 = 0; i2 < content.length; i2++) {
10351
- result.push(content[i2]);
10352
- if (i2 < content.length - 1) {
10353
- result.push(", ");
10354
- }
10355
- }
10356
- content = result;
10453
+ content = renderAccessItems(content, ", ");
10357
10454
  }
10358
10455
  break;
10359
10456
  }
10360
- content = (_b = spec.ports) == null ? void 0 : _b.filter((v) => !!v).map((p) => /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.Link, {
10361
- href: `http://${clusterVip}:${p.nodePort}`,
10362
- target: "_blank",
10363
- className: common.cx_default(eagle.Typo.Label.l4_regular_title, BreakLineStyle, LinkStyle$2),
10364
- children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.Tooltip, {
10365
- title: i18n2.t("dovetail.default_http_protocol_tooltip"),
10366
- children: /* @__PURE__ */ common.jsxRuntimeExports.jsxs("span", {
10367
- className: DashedUnderlineSpanStyle,
10368
- style: showDashedUnderline ? void 0 : {
10369
- borderBottom: "none"
10370
- },
10371
- children: [clusterVip, ":", p.nodePort]
10372
- })
10373
- })
10374
- }, p.nodePort));
10375
- return /* @__PURE__ */ common.jsxRuntimeExports.jsx("ul", {
10376
- children: content
10377
- });
10457
+ if (content && content instanceof Array) {
10458
+ content = /* @__PURE__ */ common.jsxRuntimeExports.jsx("ul", {
10459
+ className: BreakLineListStyle,
10460
+ children: content.map((item, index2) => /* @__PURE__ */ common.jsxRuntimeExports.jsx("li", {
10461
+ className: BreakLineItemStyle,
10462
+ children: item
10463
+ }, `nodeport-${index2}`))
10464
+ });
10465
+ }
10466
+ break;
10378
10467
  case ServiceTypeEnum.ExternalName:
10468
+ if (showCopyButton) {
10469
+ content = renderAccessItems(((_b = spec.externalIPs) == null ? void 0 : _b.map((ip) => /* @__PURE__ */ common.jsxRuntimeExports.jsx(ServiceAccessAddress, {
10470
+ copyValue: ip,
10471
+ children: ip
10472
+ }, ip))) || [], breakLine ? "\n" : ", ");
10473
+ break;
10474
+ }
10379
10475
  content = /* @__PURE__ */ common.jsxRuntimeExports.jsx(ValueDisplay, {
10380
10476
  useOverflow: false,
10381
10477
  value: (_c = spec.externalIPs) == null ? void 0 : _c.join(breakLine ? "\n" : ", ")
10382
10478
  });
10383
10479
  break;
10384
10480
  case ServiceTypeEnum.LoadBalancer:
10481
+ if (showCopyButton) {
10482
+ content = renderAccessItems(((_e = (_d = status.loadBalancer) == null ? void 0 : _d.ingress) == null ? void 0 : _e.map(({
10483
+ ip
10484
+ }) => ip).filter((ip) => !!ip).map((ip) => /* @__PURE__ */ common.jsxRuntimeExports.jsx(ServiceAccessAddress, {
10485
+ copyValue: ip,
10486
+ children: ip
10487
+ }, ip))) || [], breakLine ? "\n" : ", ");
10488
+ break;
10489
+ }
10385
10490
  content = /* @__PURE__ */ common.jsxRuntimeExports.jsx(ValueDisplay, {
10386
10491
  useOverflow: false,
10387
- value: (_e = (_d = status.loadBalancer) == null ? void 0 : _d.ingress) == null ? void 0 : _e.map(({
10492
+ value: (_g = (_f = status.loadBalancer) == null ? void 0 : _f.ingress) == null ? void 0 : _g.map(({
10388
10493
  ip
10389
10494
  }) => ip).join(breakLine ? "\n" : ", ")
10390
10495
  });
@@ -10411,7 +10516,7 @@ const ServiceOutClusterAccessComponent = ({
10411
10516
  children: content || "-"
10412
10517
  });
10413
10518
  };
10414
- const index_1es4s7t = "";
10519
+ const index_1l1kti4 = "";
10415
10520
  const TagWrapper = "t13a6vox";
10416
10521
  const TagStyle = "t12ikbmp";
10417
10522
  const Tags = (props) => {
@@ -10629,7 +10734,7 @@ const ConditionsTable = ({ conditions = [] }) => {
10629
10734
  const currentSize = 10;
10630
10735
  if (conditionsWithId.length === 0) {
10631
10736
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx(
10632
- WidgetErrorContent,
10737
+ ErrorContent,
10633
10738
  {
10634
10739
  errorText: t2("dovetail.no_resource", { kind: t2("dovetail.condition") }),
10635
10740
  type: ErrorContentType.List
@@ -10677,42 +10782,48 @@ function immutableSet(obj, path2, value2) {
10677
10782
  return lodashEs.setWith(lodashEs.clone(obj), path2, value2, lodashEs.clone);
10678
10783
  }
10679
10784
  function usePathMap(options) {
10680
- const { pathMap, transformInitValues: transformInitValuesFromOptions, transformApplyValues: transformApplyValuesFromOptions } = options;
10681
- const transformInitValues = React.useCallback((values) => {
10682
- const initValues = values._rawYaml || values;
10683
- let result = initValues;
10684
- for (const { from, to } of pathMap || []) {
10685
- result = immutableSet(initValues, to, lodashEs.get(initValues, from));
10686
- const fromPath = [...from];
10687
- const lastKey = fromPath.pop();
10688
- if (lastKey) {
10689
- const obj = lodashEs.get(result, fromPath);
10690
- if (obj && typeof obj === "object") {
10691
- delete obj[lastKey];
10692
- }
10693
- }
10694
- }
10695
- return (transformInitValuesFromOptions == null ? void 0 : transformInitValuesFromOptions(result)) || result;
10696
- }, [transformInitValuesFromOptions, pathMap]);
10697
- const transformApplyValues = React.useCallback((values) => {
10698
- let result = values;
10699
- for (const { from, to } of pathMap || []) {
10700
- result = immutableSet(
10701
- values,
10702
- from,
10703
- lodashEs.get(result, to)
10704
- );
10705
- const toPath = [...to];
10706
- const lastKey = toPath.pop();
10707
- if (lastKey) {
10708
- const obj = lodashEs.get(result, toPath);
10709
- if (obj && typeof obj === "object") {
10710
- delete obj[lastKey];
10785
+ const {
10786
+ pathMap,
10787
+ transformInitValues: transformInitValuesFromOptions,
10788
+ transformApplyValues: transformApplyValuesFromOptions
10789
+ } = options;
10790
+ const transformInitValues = React.useCallback(
10791
+ (values) => {
10792
+ const initValues = values._rawYaml || values;
10793
+ let result = initValues;
10794
+ for (const { from, to } of pathMap || []) {
10795
+ result = immutableSet(initValues, to, lodashEs.get(initValues, from));
10796
+ const fromPath = [...from];
10797
+ const lastKey = fromPath.pop();
10798
+ if (lastKey) {
10799
+ const obj = lodashEs.get(result, fromPath);
10800
+ if (obj && typeof obj === "object") {
10801
+ delete obj[lastKey];
10802
+ }
10711
10803
  }
10712
10804
  }
10713
- }
10714
- return (transformApplyValuesFromOptions == null ? void 0 : transformApplyValuesFromOptions(result)) || result;
10715
- }, [transformApplyValuesFromOptions, pathMap]);
10805
+ return (transformInitValuesFromOptions == null ? void 0 : transformInitValuesFromOptions(result)) || result;
10806
+ },
10807
+ [transformInitValuesFromOptions, pathMap]
10808
+ );
10809
+ const transformApplyValues = React.useCallback(
10810
+ (values) => {
10811
+ let result = values;
10812
+ for (const { from, to } of pathMap || []) {
10813
+ result = immutableSet(values, from, lodashEs.get(result, to));
10814
+ const toPath = [...to];
10815
+ const lastKey = toPath.pop();
10816
+ if (lastKey) {
10817
+ const obj = lodashEs.get(result, toPath);
10818
+ if (obj && typeof obj === "object") {
10819
+ delete obj[lastKey];
10820
+ }
10821
+ }
10822
+ }
10823
+ return (transformApplyValuesFromOptions == null ? void 0 : transformApplyValuesFromOptions(result)) || result;
10824
+ },
10825
+ [transformApplyValuesFromOptions, pathMap]
10826
+ );
10716
10827
  return {
10717
10828
  transformInitValues,
10718
10829
  transformApplyValues
@@ -10775,278 +10886,276 @@ const ErrorWrapperStyle = "e19q2bnp";
10775
10886
  const YamlEditorStyle = "y16u5v3w";
10776
10887
  const MonacoYamlEditor$3 = React.lazy(() => Promise.resolve().then(() => MonacoYamlEditor$1));
10777
10888
  const MonacoYamlDiffEditor$2 = React.lazy(() => Promise.resolve().then(() => MonacoYamlDiffEditor$1));
10778
- const YamlEditorComponent = React.forwardRef(
10779
- function YamlEditorComponent2(props, ref) {
10780
- const {
10781
- title,
10782
- collapsable = true,
10783
- isDefaultCollapsed,
10784
- value: value2,
10785
- defaultValue = "",
10786
- height,
10787
- readOnly,
10788
- errorMsgs = [],
10789
- schemas,
10790
- eleRef,
10791
- className,
10792
- debounceTime,
10793
- isScrollOnFocus = true,
10794
- isHideActions = false
10795
- } = props;
10796
- const { t: t2 } = common.useTranslation();
10797
- const [isCollapsed, setIsCollapsed] = React.useState(
10798
- collapsable ? isDefaultCollapsed : false
10799
- );
10800
- const [isDiff, setIsDiff] = React.useState(false);
10801
- const [_value, _setValue] = React.useState(value2 || defaultValue);
10802
- const editorInstance = React.useRef();
10803
- const [copyTooltip, setCopyTooltip] = React.useState(t2("dovetail.copy"));
10804
- const [resetTooltip, setResetTooltip] = React.useState(t2("dovetail.reset_arguments"));
10805
- const defaultValueString = React.useMemo(() => {
10806
- if (typeof defaultValue === "string") {
10807
- return defaultValue;
10808
- }
10809
- return yaml$2.dump(defaultValue);
10810
- }, [defaultValue]);
10811
- const _valueString = React.useMemo(() => {
10812
- if (typeof _value === "string") {
10813
- return _value;
10814
- }
10815
- return yaml$2.dump(_value);
10816
- }, [_value]);
10817
- const onChange = React.useCallback(
10818
- (newVal) => {
10819
- var _a;
10820
- _setValue(newVal);
10821
- (_a = props.onChange) == null ? void 0 : _a.call(props, newVal);
10822
- },
10823
- [props.onChange]
10824
- );
10825
- const finalOnChange = React.useMemo(() => {
10826
- return debounceTime ? lodashEs.debounce(onChange, debounceTime) : onChange;
10827
- }, [onChange, debounceTime]);
10828
- const onValidate = React.useCallback(
10829
- (valid, schemaValid) => {
10830
- var _a;
10831
- (_a = props.onValidate) == null ? void 0 : _a.call(props, valid, schemaValid);
10832
- },
10833
- [props.onValidate]
10834
- );
10835
- const onEditorCreate = React.useCallback(
10836
- (editor) => {
10837
- var _a, _b, _c;
10838
- if (editor.getValue() !== _value) {
10839
- (_b = (_a = editorInstance.current) == null ? void 0 : _a.getModel()) == null ? void 0 : _b.setValue(_valueString);
10840
- }
10841
- (_c = props.onEditorCreate) == null ? void 0 : _c.call(props, editor);
10842
- },
10843
- [_value, props.onEditorCreate]
10844
- );
10845
- const getInstance = React.useCallback((ins) => {
10846
- editorInstance.current = ins;
10847
- }, []);
10848
- const getEditorValue = React.useCallback(() => {
10889
+ const YamlEditorComponent = React.forwardRef(function YamlEditorComponent2(props, ref) {
10890
+ const {
10891
+ title,
10892
+ collapsable = true,
10893
+ isDefaultCollapsed,
10894
+ value: value2,
10895
+ defaultValue = "",
10896
+ height,
10897
+ readOnly,
10898
+ errorMsgs = [],
10899
+ schemas,
10900
+ eleRef,
10901
+ className,
10902
+ debounceTime,
10903
+ isScrollOnFocus = true,
10904
+ isHideActions = false
10905
+ } = props;
10906
+ const { t: t2 } = common.useTranslation();
10907
+ const [isCollapsed, setIsCollapsed] = React.useState(
10908
+ collapsable ? isDefaultCollapsed : false
10909
+ );
10910
+ const [isDiff, setIsDiff] = React.useState(false);
10911
+ const [_value, _setValue] = React.useState(value2 || defaultValue);
10912
+ const editorInstance = React.useRef();
10913
+ const [copyTooltip, setCopyTooltip] = React.useState(t2("dovetail.copy"));
10914
+ const [resetTooltip, setResetTooltip] = React.useState(t2("dovetail.reset_arguments"));
10915
+ const defaultValueString = React.useMemo(() => {
10916
+ if (typeof defaultValue === "string") {
10917
+ return defaultValue;
10918
+ }
10919
+ return yaml$2.dump(defaultValue);
10920
+ }, [defaultValue]);
10921
+ const _valueString = React.useMemo(() => {
10922
+ if (typeof _value === "string") {
10923
+ return _value;
10924
+ }
10925
+ return yaml$2.dump(_value);
10926
+ }, [_value]);
10927
+ const onChange = React.useCallback(
10928
+ (newVal) => {
10849
10929
  var _a;
10850
- return ((_a = editorInstance.current) == null ? void 0 : _a.getValue()) ?? "";
10851
- }, []);
10852
- React.useEffect(() => {
10853
- var _a, _b;
10854
- if (value2 !== void 0 && !lodashEs.isEqual(value2, _value)) {
10855
- const valueString = typeof value2 === "string" ? value2 : yaml$2.dump(value2);
10856
- _setValue(value2);
10857
- (_b = (_a = editorInstance.current) == null ? void 0 : _a.getModel()) == null ? void 0 : _b.setValue(valueString);
10930
+ _setValue(newVal);
10931
+ (_a = props.onChange) == null ? void 0 : _a.call(props, newVal);
10932
+ },
10933
+ [props.onChange]
10934
+ );
10935
+ const finalOnChange = React.useMemo(() => {
10936
+ return debounceTime ? lodashEs.debounce(onChange, debounceTime) : onChange;
10937
+ }, [onChange, debounceTime]);
10938
+ const onValidate = React.useCallback(
10939
+ (valid, schemaValid) => {
10940
+ var _a;
10941
+ (_a = props.onValidate) == null ? void 0 : _a.call(props, valid, schemaValid);
10942
+ },
10943
+ [props.onValidate]
10944
+ );
10945
+ const onEditorCreate = React.useCallback(
10946
+ (editor) => {
10947
+ var _a, _b, _c;
10948
+ if (editor.getValue() !== _value) {
10949
+ (_b = (_a = editorInstance.current) == null ? void 0 : _a.getModel()) == null ? void 0 : _b.setValue(_valueString);
10858
10950
  }
10859
- }, [value2]);
10860
- React.useImperativeHandle(ref, () => {
10861
- return {
10862
- setValue: _setValue,
10863
- setEditorValue: (value22) => {
10864
- var _a, _b;
10865
- (_b = (_a = editorInstance.current) == null ? void 0 : _a.getModel()) == null ? void 0 : _b.setValue(value22);
10866
- },
10867
- getEditorValue,
10868
- getEditorInstance: () => editorInstance.current || null
10869
- };
10870
- });
10871
- return /* @__PURE__ */ common.jsxRuntimeExports.jsxs(
10872
- "div",
10873
- {
10874
- className: common.cx_default(WrapperStyle$4, className),
10875
- "data-is-error": !!errorMsgs.length,
10876
- ref: eleRef,
10877
- children: [
10878
- /* @__PURE__ */ common.jsxRuntimeExports.jsxs(
10879
- eagle.Space,
10880
- {
10881
- className: common.cx_default(ToolBarStyle, isCollapsed ? "collapsed" : ""),
10882
- direction: "vertical",
10883
- size: 0,
10884
- children: [
10885
- /* @__PURE__ */ common.jsxRuntimeExports.jsxs(eagle.Space, { className: ToolBarHeaderStyle, children: [
10886
- /* @__PURE__ */ common.jsxRuntimeExports.jsxs(eagle.Space, { size: 8, children: [
10887
- collapsable && /* @__PURE__ */ common.jsxRuntimeExports.jsx(
10888
- eagle.Icon,
10889
- {
10890
- src: iconsReact.HierarchyTriangleRight16GrayIcon,
10891
- hoverSrc: iconsReact.HierarchyTriangleRight16BlueIcon,
10892
- className: common.cx_default(IconStyle, isCollapsed ? "" : "arrow-down"),
10893
- iconWidth: 16,
10894
- iconHeight: 16,
10895
- onClick: () => setIsCollapsed(!isCollapsed)
10896
- }
10897
- ),
10898
- /* @__PURE__ */ common.jsxRuntimeExports.jsx("div", { className: common.cx_default(TitleStyle$1, "yaml-editor-title"), children: title || t2("dovetail.configure_file") })
10899
- ] }),
10900
- isHideActions ? null : /* @__PURE__ */ common.jsxRuntimeExports.jsxs(eagle.Space, { size: 14, children: [
10901
- isDiff ? void 0 : /* @__PURE__ */ common.jsxRuntimeExports.jsxs(common.jsxRuntimeExports.Fragment, { children: [
10902
- /* @__PURE__ */ common.jsxRuntimeExports.jsx(
10903
- eagle.Tooltip,
10904
- {
10905
- title: isCollapsed ? "" : copyTooltip,
10906
- onVisibleChange: (visible) => {
10907
- if (!visible) {
10908
- setTimeout(() => {
10909
- setCopyTooltip(t2("dovetail.copy"));
10910
- }, 80);
10911
- }
10912
- },
10913
- children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(
10914
- eagle.Icon,
10915
- {
10916
- "data-disabled": isCollapsed,
10917
- src: iconsReact.ClipboardCopy16GradientGrayIcon,
10918
- hoverSrc: isCollapsed ? void 0 : iconsReact.ClipboardCopy16GradientBlueIcon,
10919
- className: IconStyle,
10920
- iconWidth: 16,
10921
- iconHeight: 16,
10922
- onClick: () => {
10923
- if (!isCollapsed) {
10924
- copyToClipboard(getEditorValue());
10925
- setCopyTooltip(t2("dovetail.copied"));
10926
- }
10927
- }
10928
- }
10929
- )
10930
- }
10931
- ),
10932
- /* @__PURE__ */ common.jsxRuntimeExports.jsx(Separator, {}),
10933
- /* @__PURE__ */ common.jsxRuntimeExports.jsx(
10934
- eagle.Tooltip,
10935
- {
10936
- title: isCollapsed ? "" : resetTooltip,
10937
- onVisibleChange: (visible) => {
10938
- if (!visible) {
10939
- setTimeout(() => {
10940
- setResetTooltip(t2("dovetail.reset_arguments"));
10941
- }, 80);
10942
- }
10943
- },
10944
- children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(
10945
- eagle.Icon,
10946
- {
10947
- "data-disabled": isCollapsed,
10948
- src: iconsReact.Retry16GradientGrayIcon,
10949
- hoverSrc: isCollapsed ? void 0 : iconsReact.Retry16GradientBlueIcon,
10950
- className: IconStyle,
10951
- iconWidth: 16,
10952
- iconHeight: 16,
10953
- onClick: () => {
10954
- var _a;
10955
- if (!isCollapsed) {
10956
- (_a = editorInstance.current) == null ? void 0 : _a.setValue(defaultValueString);
10957
- setResetTooltip(t2("dovetail.already_reset"));
10958
- }
10959
- }
10960
- }
10961
- )
10962
- }
10963
- ),
10964
- /* @__PURE__ */ common.jsxRuntimeExports.jsx(Separator, {})
10965
- ] }),
10951
+ (_c = props.onEditorCreate) == null ? void 0 : _c.call(props, editor);
10952
+ },
10953
+ [_value, props.onEditorCreate]
10954
+ );
10955
+ const getInstance = React.useCallback((ins) => {
10956
+ editorInstance.current = ins;
10957
+ }, []);
10958
+ const getEditorValue = React.useCallback(() => {
10959
+ var _a;
10960
+ return ((_a = editorInstance.current) == null ? void 0 : _a.getValue()) ?? "";
10961
+ }, []);
10962
+ React.useEffect(() => {
10963
+ var _a, _b;
10964
+ if (value2 !== void 0 && !lodashEs.isEqual(value2, _value)) {
10965
+ const valueString = typeof value2 === "string" ? value2 : yaml$2.dump(value2);
10966
+ _setValue(value2);
10967
+ (_b = (_a = editorInstance.current) == null ? void 0 : _a.getModel()) == null ? void 0 : _b.setValue(valueString);
10968
+ }
10969
+ }, [value2]);
10970
+ React.useImperativeHandle(ref, () => {
10971
+ return {
10972
+ setValue: _setValue,
10973
+ setEditorValue: (value22) => {
10974
+ var _a, _b;
10975
+ (_b = (_a = editorInstance.current) == null ? void 0 : _a.getModel()) == null ? void 0 : _b.setValue(value22);
10976
+ },
10977
+ getEditorValue,
10978
+ getEditorInstance: () => editorInstance.current || null
10979
+ };
10980
+ });
10981
+ return /* @__PURE__ */ common.jsxRuntimeExports.jsxs(
10982
+ "div",
10983
+ {
10984
+ className: common.cx_default(WrapperStyle$4, className),
10985
+ "data-is-error": !!errorMsgs.length,
10986
+ ref: eleRef,
10987
+ children: [
10988
+ /* @__PURE__ */ common.jsxRuntimeExports.jsxs(
10989
+ eagle.Space,
10990
+ {
10991
+ className: common.cx_default(ToolBarStyle, isCollapsed ? "collapsed" : ""),
10992
+ direction: "vertical",
10993
+ size: 0,
10994
+ children: [
10995
+ /* @__PURE__ */ common.jsxRuntimeExports.jsxs(eagle.Space, { className: ToolBarHeaderStyle, children: [
10996
+ /* @__PURE__ */ common.jsxRuntimeExports.jsxs(eagle.Space, { size: 8, children: [
10997
+ collapsable && /* @__PURE__ */ common.jsxRuntimeExports.jsx(
10998
+ eagle.Icon,
10999
+ {
11000
+ src: iconsReact.HierarchyTriangleRight16GrayIcon,
11001
+ hoverSrc: iconsReact.HierarchyTriangleRight16BlueIcon,
11002
+ className: common.cx_default(IconStyle, isCollapsed ? "" : "arrow-down"),
11003
+ iconWidth: 16,
11004
+ iconHeight: 16,
11005
+ onClick: () => setIsCollapsed(!isCollapsed)
11006
+ }
11007
+ ),
11008
+ /* @__PURE__ */ common.jsxRuntimeExports.jsx("div", { className: common.cx_default(TitleStyle$1, "yaml-editor-title"), children: title || t2("dovetail.configure_file") })
11009
+ ] }),
11010
+ isHideActions ? null : /* @__PURE__ */ common.jsxRuntimeExports.jsxs(eagle.Space, { size: 14, children: [
11011
+ isDiff ? void 0 : /* @__PURE__ */ common.jsxRuntimeExports.jsxs(common.jsxRuntimeExports.Fragment, { children: [
10966
11012
  /* @__PURE__ */ common.jsxRuntimeExports.jsx(
10967
11013
  eagle.Tooltip,
10968
11014
  {
10969
- title: isCollapsed ? "" : isDiff ? t2("dovetail.back_to_edit") : t2("dovetail.view_changes"),
10970
- children: isDiff ? /* @__PURE__ */ common.jsxRuntimeExports.jsx(
11015
+ title: isCollapsed ? "" : copyTooltip,
11016
+ onVisibleChange: (visible) => {
11017
+ if (!visible) {
11018
+ setTimeout(() => {
11019
+ setCopyTooltip(t2("dovetail.copy"));
11020
+ }, 80);
11021
+ }
11022
+ },
11023
+ children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(
10971
11024
  eagle.Icon,
10972
11025
  {
10973
11026
  "data-disabled": isCollapsed,
10974
- src: iconsReact.EditPen16GradientGrayIcon,
10975
- hoverSrc: isCollapsed ? void 0 : iconsReact.EditPen16GradientBlueIcon,
11027
+ src: iconsReact.ClipboardCopy16GradientGrayIcon,
11028
+ hoverSrc: isCollapsed ? void 0 : iconsReact.ClipboardCopy16GradientBlueIcon,
10976
11029
  className: IconStyle,
10977
11030
  iconWidth: 16,
10978
11031
  iconHeight: 16,
10979
- onClick: () => isCollapsed ? void 0 : setIsDiff(false)
11032
+ onClick: () => {
11033
+ if (!isCollapsed) {
11034
+ copyToClipboard(getEditorValue());
11035
+ setCopyTooltip(t2("dovetail.copied"));
11036
+ }
11037
+ }
10980
11038
  }
10981
- ) : /* @__PURE__ */ common.jsxRuntimeExports.jsx(
11039
+ )
11040
+ }
11041
+ ),
11042
+ /* @__PURE__ */ common.jsxRuntimeExports.jsx(Separator, {}),
11043
+ /* @__PURE__ */ common.jsxRuntimeExports.jsx(
11044
+ eagle.Tooltip,
11045
+ {
11046
+ title: isCollapsed ? "" : resetTooltip,
11047
+ onVisibleChange: (visible) => {
11048
+ if (!visible) {
11049
+ setTimeout(() => {
11050
+ setResetTooltip(t2("dovetail.reset_arguments"));
11051
+ }, 80);
11052
+ }
11053
+ },
11054
+ children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(
10982
11055
  eagle.Icon,
10983
11056
  {
10984
11057
  "data-disabled": isCollapsed,
10985
- src: iconsReact.Showdiff16GradientGrayIcon,
10986
- hoverSrc: isCollapsed ? void 0 : iconsReact.Showdiff16GradientBlueIcon,
11058
+ src: iconsReact.Retry16GradientGrayIcon,
11059
+ hoverSrc: isCollapsed ? void 0 : iconsReact.Retry16GradientBlueIcon,
10987
11060
  className: IconStyle,
10988
11061
  iconWidth: 16,
10989
11062
  iconHeight: 16,
10990
- onClick: () => isCollapsed ? void 0 : setIsDiff(true)
11063
+ onClick: () => {
11064
+ var _a;
11065
+ if (!isCollapsed) {
11066
+ (_a = editorInstance.current) == null ? void 0 : _a.setValue(defaultValueString);
11067
+ setResetTooltip(t2("dovetail.already_reset"));
11068
+ }
11069
+ }
10991
11070
  }
10992
11071
  )
10993
11072
  }
10994
- )
10995
- ] })
10996
- ] }),
10997
- errorMsgs.length ? /* @__PURE__ */ common.jsxRuntimeExports.jsxs(eagle.Space, { className: ErrorWrapperStyle, size: 8, align: "start", children: [
10998
- /* @__PURE__ */ common.jsxRuntimeExports.jsx(iconsReact.XmarkFailedSeriousWarningFill16RedIcon, { className: ErrorIconStyle$1 }),
10999
- /* @__PURE__ */ common.jsxRuntimeExports.jsx("div", { children: errorMsgs.map((errorMsg, index2) => /* @__PURE__ */ common.jsxRuntimeExports.jsxs("pre", { className: ErrorMsgStyle, children: [
11000
- errorMsgs.length > 1 ? `${index2 + 1}. ` : "",
11001
- errorMsg
11002
- ] }, errorMsg)) })
11003
- ] }) : void 0
11004
- ]
11005
- }
11006
- ),
11007
- /* @__PURE__ */ common.jsxRuntimeExports.jsxs(
11008
- "div",
11009
- {
11010
- style: {
11011
- display: isCollapsed ? "none" : "block",
11012
- width: "100%",
11013
- height: height || "500px",
11014
- zIndex: 1
11015
- },
11016
- children: [
11017
- /* @__PURE__ */ common.jsxRuntimeExports.jsx(React.Suspense, { fallback: /* @__PURE__ */ common.jsxRuntimeExports.jsx("pre", { className: PlainCodeStyle, children: _valueString }), children: /* @__PURE__ */ common.jsxRuntimeExports.jsx("div", { style: { display: isDiff ? "none" : "block" }, children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(
11018
- MonacoYamlEditor$3,
11019
- {
11020
- id: props.id,
11021
- getInstance,
11022
- defaultValue: _value,
11023
- height,
11024
- onChange: finalOnChange,
11025
- onValidate,
11026
- onEditorCreate,
11027
- onBlur: props.onBlur,
11028
- schemas,
11029
- readOnly,
11030
- isScrollOnFocus
11031
- }
11032
- ) }) }),
11033
- isDiff ? /* @__PURE__ */ common.jsxRuntimeExports.jsx(React.Suspense, { fallback: /* @__PURE__ */ common.jsxRuntimeExports.jsx("pre", { className: PlainCodeStyle, children: _valueString }), children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(
11034
- MonacoYamlDiffEditor$2,
11035
- {
11036
- id: props.id,
11037
- origin: defaultValueString,
11038
- modified: _valueString,
11039
- height
11040
- }
11041
- ) }) : null
11042
- ]
11043
- }
11044
- )
11045
- ]
11046
- }
11047
- );
11048
- }
11049
- );
11073
+ ),
11074
+ /* @__PURE__ */ common.jsxRuntimeExports.jsx(Separator, {})
11075
+ ] }),
11076
+ /* @__PURE__ */ common.jsxRuntimeExports.jsx(
11077
+ eagle.Tooltip,
11078
+ {
11079
+ title: isCollapsed ? "" : isDiff ? t2("dovetail.back_to_edit") : t2("dovetail.view_changes"),
11080
+ children: isDiff ? /* @__PURE__ */ common.jsxRuntimeExports.jsx(
11081
+ eagle.Icon,
11082
+ {
11083
+ "data-disabled": isCollapsed,
11084
+ src: iconsReact.EditPen16GradientGrayIcon,
11085
+ hoverSrc: isCollapsed ? void 0 : iconsReact.EditPen16GradientBlueIcon,
11086
+ className: IconStyle,
11087
+ iconWidth: 16,
11088
+ iconHeight: 16,
11089
+ onClick: () => isCollapsed ? void 0 : setIsDiff(false)
11090
+ }
11091
+ ) : /* @__PURE__ */ common.jsxRuntimeExports.jsx(
11092
+ eagle.Icon,
11093
+ {
11094
+ "data-disabled": isCollapsed,
11095
+ src: iconsReact.Showdiff16GradientGrayIcon,
11096
+ hoverSrc: isCollapsed ? void 0 : iconsReact.Showdiff16GradientBlueIcon,
11097
+ className: IconStyle,
11098
+ iconWidth: 16,
11099
+ iconHeight: 16,
11100
+ onClick: () => isCollapsed ? void 0 : setIsDiff(true)
11101
+ }
11102
+ )
11103
+ }
11104
+ )
11105
+ ] })
11106
+ ] }),
11107
+ errorMsgs.length ? /* @__PURE__ */ common.jsxRuntimeExports.jsxs(eagle.Space, { className: ErrorWrapperStyle, size: 8, align: "start", children: [
11108
+ /* @__PURE__ */ common.jsxRuntimeExports.jsx(iconsReact.XmarkFailedSeriousWarningFill16RedIcon, { className: ErrorIconStyle$1 }),
11109
+ /* @__PURE__ */ common.jsxRuntimeExports.jsx("div", { children: errorMsgs.map((errorMsg, index2) => /* @__PURE__ */ common.jsxRuntimeExports.jsxs("pre", { className: ErrorMsgStyle, children: [
11110
+ errorMsgs.length > 1 ? `${index2 + 1}. ` : "",
11111
+ errorMsg
11112
+ ] }, errorMsg)) })
11113
+ ] }) : void 0
11114
+ ]
11115
+ }
11116
+ ),
11117
+ /* @__PURE__ */ common.jsxRuntimeExports.jsxs(
11118
+ "div",
11119
+ {
11120
+ style: {
11121
+ display: isCollapsed ? "none" : "block",
11122
+ width: "100%",
11123
+ height: height || "500px",
11124
+ zIndex: 1
11125
+ },
11126
+ children: [
11127
+ /* @__PURE__ */ common.jsxRuntimeExports.jsx(React.Suspense, { fallback: /* @__PURE__ */ common.jsxRuntimeExports.jsx("pre", { className: PlainCodeStyle, children: _valueString }), children: /* @__PURE__ */ common.jsxRuntimeExports.jsx("div", { style: { display: isDiff ? "none" : "block" }, children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(
11128
+ MonacoYamlEditor$3,
11129
+ {
11130
+ id: props.id,
11131
+ getInstance,
11132
+ defaultValue: _value,
11133
+ height,
11134
+ onChange: finalOnChange,
11135
+ onValidate,
11136
+ onEditorCreate,
11137
+ onBlur: props.onBlur,
11138
+ schemas,
11139
+ readOnly,
11140
+ isScrollOnFocus
11141
+ }
11142
+ ) }) }),
11143
+ isDiff ? /* @__PURE__ */ common.jsxRuntimeExports.jsx(React.Suspense, { fallback: /* @__PURE__ */ common.jsxRuntimeExports.jsx("pre", { className: PlainCodeStyle, children: _valueString }), children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(
11144
+ MonacoYamlDiffEditor$2,
11145
+ {
11146
+ id: props.id,
11147
+ origin: defaultValueString,
11148
+ modified: _valueString,
11149
+ height
11150
+ }
11151
+ ) }) : null
11152
+ ]
11153
+ }
11154
+ )
11155
+ ]
11156
+ }
11157
+ );
11158
+ });
11050
11159
  function copyToClipboard(text) {
11051
11160
  const input = document.createElement("textarea");
11052
11161
  input.value = text;
@@ -11119,14 +11228,7 @@ function use409Retry({
11119
11228
  function useK8sYamlEditor() {
11120
11229
  const foldSymbol = React.useCallback(function(editor, symbol) {
11121
11230
  const model = editor.getModel();
11122
- const matchs = (model == null ? void 0 : model.findMatches(
11123
- symbol,
11124
- false,
11125
- false,
11126
- false,
11127
- "",
11128
- false
11129
- ).filter((match) => match.range.startColumn === 1)) || [];
11231
+ const matchs = (model == null ? void 0 : model.findMatches(symbol, false, false, false, "", false).filter((match) => match.range.startColumn === 1)) || [];
11130
11232
  return new Promise(async (resolve, reject) => {
11131
11233
  try {
11132
11234
  for (const match of matchs) {
@@ -11140,19 +11242,22 @@ function useK8sYamlEditor() {
11140
11242
  }
11141
11243
  });
11142
11244
  }, []);
11143
- const fold2 = React.useCallback(async function(editor) {
11144
- await editor.getAction("editor.unfoldAll").run();
11145
- const symbols = [
11146
- " annotations:",
11147
- " managedFields:",
11148
- "status:",
11149
- " kubectl.kubernetes.io/last-applied-configuration:"
11150
- ];
11151
- for (const symbol of symbols) {
11152
- await foldSymbol(editor, symbol);
11153
- }
11154
- editor.setScrollPosition({ scrollTop: 0 });
11155
- }, [foldSymbol]);
11245
+ const fold2 = React.useCallback(
11246
+ async function(editor) {
11247
+ await editor.getAction("editor.unfoldAll").run();
11248
+ const symbols = [
11249
+ " annotations:",
11250
+ " managedFields:",
11251
+ "status:",
11252
+ " kubectl.kubernetes.io/last-applied-configuration:"
11253
+ ];
11254
+ for (const symbol of symbols) {
11255
+ await foldSymbol(editor, symbol);
11256
+ }
11257
+ editor.setScrollPosition({ scrollTop: 0 });
11258
+ },
11259
+ [foldSymbol]
11260
+ );
11156
11261
  return {
11157
11262
  fold: fold2
11158
11263
  };
@@ -11349,7 +11454,14 @@ const useYamlForm = ({
11349
11454
  pruneBeforeEdit(initialValues2);
11350
11455
  }
11351
11456
  return (transformInitValues == null ? void 0 : transformInitValues(initialValues2)) || initialValues2;
11352
- }, [queryResult, globalStore, initialValuesForCreate, action, initialValuesForEdit, transformInitValues]);
11457
+ }, [
11458
+ queryResult,
11459
+ globalStore,
11460
+ initialValuesForCreate,
11461
+ action,
11462
+ initialValuesForEdit,
11463
+ transformInitValues
11464
+ ]);
11353
11465
  const finalErrors = React.useMemo(() => {
11354
11466
  return lodashEs.uniq([...editorErrors, ...rulesErrors]);
11355
11467
  }, [editorErrors, rulesErrors]);
@@ -11466,13 +11578,16 @@ const useYamlForm = ({
11466
11578
  try {
11467
11579
  let hasErrors = false;
11468
11580
  setIsBeforeSubmitLoading(true);
11469
- const result = await beforeSubmit(finalValues, (errors2) => {
11470
- if (errors2 && errors2.length > 0) {
11471
- setBeforeSubmitErrors(errors2);
11472
- onBeforeSubmitError == null ? void 0 : onBeforeSubmitError(errors2);
11473
- hasErrors = true;
11581
+ const result = await beforeSubmit(
11582
+ finalValues,
11583
+ (errors2) => {
11584
+ if (errors2 && errors2.length > 0) {
11585
+ setBeforeSubmitErrors(errors2);
11586
+ onBeforeSubmitError == null ? void 0 : onBeforeSubmitError(errors2);
11587
+ hasErrors = true;
11588
+ }
11474
11589
  }
11475
- });
11590
+ );
11476
11591
  if (hasErrors) {
11477
11592
  onSubmitAbort == null ? void 0 : onSubmitAbort();
11478
11593
  return;
@@ -11667,7 +11782,7 @@ function YamlForm(props) {
11667
11782
  isEdit: action === "edit"
11668
11783
  })
11669
11784
  })]
11670
- }) : /* @__PURE__ */ common.jsxRuntimeExports.jsx(WidgetErrorContent, {
11785
+ }) : /* @__PURE__ */ common.jsxRuntimeExports.jsx(ErrorContent, {
11671
11786
  errorText: t2("dovetail.fetch_schema_fail"),
11672
11787
  refetch: fetchSchema
11673
11788
  });
@@ -11812,6 +11927,7 @@ function RawYamlFormModal(props) {
11812
11927
  },
11813
11928
  okText: ((_c = resourceConfig.formConfig) == null ? void 0 : _c.saveButtonText) || okText,
11814
11929
  destroyOnClose: true,
11930
+ isContentFull: true,
11815
11931
  children: [desc ? /* @__PURE__ */ common.jsxRuntimeExports.jsx("div", {
11816
11932
  className: FormDescStyle$1,
11817
11933
  children: desc
@@ -11854,8 +11970,9 @@ function useOpenForm() {
11854
11970
  if (formType === void 0 || formType === FormContainerType.MODAL) {
11855
11971
  pushModal({
11856
11972
  component: () => {
11857
- var _a2;
11858
- if (options == null ? void 0 : options.useYamlEditor) {
11973
+ var _a2, _b2, _c;
11974
+ const isYamlOnlyForm = ((_a2 = resourceConfig.formConfig) == null ? void 0 : _a2.formType) !== FormType.FORM && !((_b2 = resourceConfig.formConfig) == null ? void 0 : _b2.CustomFormModal);
11975
+ if ((options == null ? void 0 : options.useYamlEditor) || isYamlOnlyForm) {
11859
11976
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx(
11860
11977
  RawYamlFormModal,
11861
11978
  {
@@ -11868,7 +11985,7 @@ function useOpenForm() {
11868
11985
  }
11869
11986
  );
11870
11987
  }
11871
- const ModalComponent = ((_a2 = resourceConfig.formConfig) == null ? void 0 : _a2.CustomFormModal) || FormModal;
11988
+ const ModalComponent = ((_c = resourceConfig.formConfig) == null ? void 0 : _c.CustomFormModal) || FormModal;
11872
11989
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx(
11873
11990
  ModalComponent,
11874
11991
  {
@@ -12388,34 +12505,6 @@ function CreateButton(props) {
12388
12505
  }
12389
12506
  );
12390
12507
  }
12391
- const useDeleteManyModal = (resource, ids) => {
12392
- const { mutate } = core.useDeleteMany();
12393
- const [visible, setVisible] = React.useState(false);
12394
- const { t: t2 } = common.useTranslation();
12395
- const modalProps = {
12396
- title: t2("dovetail.delete"),
12397
- okText: t2("dovetail.delete"),
12398
- okButtonProps: {
12399
- danger: true
12400
- },
12401
- cancelText: t2("dovetail.cancel"),
12402
- children: t2("dovetail.confirm_delete_text", {
12403
- target: ids,
12404
- interpolation: { escapeValue: false }
12405
- }),
12406
- onOk() {
12407
- mutate({
12408
- resource,
12409
- ids
12410
- });
12411
- setVisible(false);
12412
- },
12413
- onCancel() {
12414
- setVisible(false);
12415
- }
12416
- };
12417
- return { modalProps, visible, setVisible };
12418
- };
12419
12508
  const DeleteManyButton = (props) => {
12420
12509
  const { resource } = core.useResource();
12421
12510
  const { t: t2 } = common.useTranslation();
@@ -12523,7 +12612,7 @@ const CronjobJobsTable = ({
12523
12612
  tableProps
12524
12613
  } = useEagleTable(params);
12525
12614
  if (!((_a = tableProps.data) == null ? void 0 : _a.length) && !tableProps.loading) {
12526
- return /* @__PURE__ */ common.jsxRuntimeExports.jsx(WidgetErrorContent, {
12615
+ return /* @__PURE__ */ common.jsxRuntimeExports.jsx(ErrorContent, {
12527
12616
  errorText: i18n2.t("dovetail.no_resource", {
12528
12617
  kind: " Job"
12529
12618
  }),
@@ -12629,7 +12718,7 @@ const EventsTable = ({ uid }) => {
12629
12718
  const Table2 = component.Table || Table$1;
12630
12719
  if (!((_a = tableProps.data) == null ? void 0 : _a.length) && !tableProps.loading) {
12631
12720
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx(
12632
- WidgetErrorContent,
12721
+ ErrorContent,
12633
12722
  {
12634
12723
  errorText: i18n2.t("dovetail.no_resource", { kind: i18n2.t("dovetail.event") }),
12635
12724
  type: ErrorContentType.List
@@ -12669,6 +12758,25 @@ function LinkFallback({
12669
12758
  children: fullPath
12670
12759
  });
12671
12760
  }
12761
+ const PathWithCopy_mkk1t8 = "";
12762
+ const PathCellStyle = "prjtqnv";
12763
+ const PathTextStyle = "pci82dd";
12764
+ const PathCopyStyle = "pmf8toc";
12765
+ const PathWithCopy = ({
12766
+ value: value2,
12767
+ children
12768
+ }) => {
12769
+ return /* @__PURE__ */ common.jsxRuntimeExports.jsxs("div", {
12770
+ className: PathCellStyle,
12771
+ children: [/* @__PURE__ */ common.jsxRuntimeExports.jsx("span", {
12772
+ className: PathTextStyle,
12773
+ children
12774
+ }), /* @__PURE__ */ common.jsxRuntimeExports.jsx(CopyButton, {
12775
+ value: value2,
12776
+ className: PathCopyStyle
12777
+ })]
12778
+ });
12779
+ };
12672
12780
  const index_x36tts = "";
12673
12781
  const LinkStyle = "l1vnw9x0";
12674
12782
  const ResourceLink = (props) => {
@@ -12719,7 +12827,7 @@ const ResourceLink = (props) => {
12719
12827
  value: ""
12720
12828
  });
12721
12829
  };
12722
- const IngressRulesTable = ({ ingress }) => {
12830
+ const IngressRulesTable = ({ ingress: ingress2 }) => {
12723
12831
  const { t: t2 } = common.useTranslation();
12724
12832
  const { data: serviceData } = core.useList({
12725
12833
  resource: "services",
@@ -12729,8 +12837,8 @@ const IngressRulesTable = ({ ingress }) => {
12729
12837
  }
12730
12838
  });
12731
12839
  const flattenedRules = React.useMemo(
12732
- () => (serviceData == null ? void 0 : serviceData.data) ? ingress.getFlattenedRules(serviceData == null ? void 0 : serviceData.data) : [],
12733
- [serviceData == null ? void 0 : serviceData.data, ingress]
12840
+ () => (serviceData == null ? void 0 : serviceData.data) ? ingress2.getFlattenedRules(serviceData == null ? void 0 : serviceData.data) : [],
12841
+ [serviceData == null ? void 0 : serviceData.data, ingress2]
12734
12842
  );
12735
12843
  const rows = React.useMemo(() => {
12736
12844
  return addId(flattenedRules || [], "fullPath");
@@ -12755,7 +12863,10 @@ const IngressRulesTable = ({ ingress }) => {
12755
12863
  width: 478,
12756
12864
  sortable: true,
12757
12865
  render(value2) {
12758
- return /* @__PURE__ */ common.jsxRuntimeExports.jsx(LinkFallback, { fullPath: value2 });
12866
+ if (!value2) {
12867
+ return /* @__PURE__ */ common.jsxRuntimeExports.jsx(ValueDisplay, { value: "" });
12868
+ }
12869
+ return /* @__PURE__ */ common.jsxRuntimeExports.jsx(PathWithCopy, { value: value2, children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(LinkFallback, { fullPath: value2 }) });
12759
12870
  }
12760
12871
  },
12761
12872
  {
@@ -12770,7 +12881,7 @@ const IngressRulesTable = ({ ingress }) => {
12770
12881
  ResourceLink,
12771
12882
  {
12772
12883
  resourceName: "services",
12773
- namespace: ingress.metadata.namespace || "default",
12884
+ namespace: ingress2.metadata.namespace || "default",
12774
12885
  name: serviceName
12775
12886
  }
12776
12887
  ) : /* @__PURE__ */ common.jsxRuntimeExports.jsx(ValueDisplay, { value: "" });
@@ -12792,14 +12903,14 @@ const IngressRulesTable = ({ ingress }) => {
12792
12903
  width: 160,
12793
12904
  render(host2) {
12794
12905
  var _a, _b;
12795
- const secretName = (_b = (_a = ingress._rawYaml.spec.tls) == null ? void 0 : _a.find(
12906
+ const secretName = (_b = (_a = ingress2._rawYaml.spec.tls) == null ? void 0 : _a.find(
12796
12907
  ({ hosts }) => hosts == null ? void 0 : hosts.includes(host2)
12797
12908
  )) == null ? void 0 : _b.secretName;
12798
12909
  return secretName ? /* @__PURE__ */ common.jsxRuntimeExports.jsx(
12799
12910
  ResourceLink,
12800
12911
  {
12801
12912
  resourceName: "secrets",
12802
- namespace: ingress.metadata.namespace || "default",
12913
+ namespace: ingress2.metadata.namespace || "default",
12803
12914
  name: secretName
12804
12915
  }
12805
12916
  ) : /* @__PURE__ */ common.jsxRuntimeExports.jsx(ValueDisplay, { value: "" });
@@ -12818,7 +12929,7 @@ const IngressRulesTable = ({ ingress }) => {
12818
12929
  });
12819
12930
  if ((rows == null ? void 0 : rows.length) === 0) {
12820
12931
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx(
12821
- WidgetErrorContent,
12932
+ ErrorContent,
12822
12933
  {
12823
12934
  errorText: t2("dovetail.no_resource", { kind: t2("dovetail.rule") }),
12824
12935
  type: ErrorContentType.List
@@ -12873,7 +12984,7 @@ const KeyValue = (props) => {
12873
12984
  }, key2);
12874
12985
  });
12875
12986
  if (!result.length) {
12876
- return /* @__PURE__ */ common.jsxRuntimeExports.jsx(WidgetErrorContent, {
12987
+ return /* @__PURE__ */ common.jsxRuntimeExports.jsx(ErrorContent, {
12877
12988
  errorText: empty2 || t2("dovetail.empty"),
12878
12989
  type: errorContent
12879
12990
  });
@@ -12970,9 +13081,7 @@ function readFileAsBase64(file) {
12970
13081
  if (isUtf8(arrayBuffer)) {
12971
13082
  resolve(await file.text());
12972
13083
  } else {
12973
- const base64String = btoa(
12974
- String.fromCharCode(...new Uint8Array(arrayBuffer))
12975
- );
13084
+ const base64String = btoa(String.fromCharCode(...new Uint8Array(arrayBuffer)));
12976
13085
  resolve(base64String);
12977
13086
  }
12978
13087
  return;
@@ -13538,7 +13647,7 @@ const NodeTaintsTable = ({
13538
13647
  });
13539
13648
  const currentSize = 10;
13540
13649
  if (taintsWithId.length === 0) {
13541
- return /* @__PURE__ */ common.jsxRuntimeExports.jsx(WidgetErrorContent, {
13650
+ return /* @__PURE__ */ common.jsxRuntimeExports.jsx(ErrorContent, {
13542
13651
  errorText: t2("dovetail.no_resource", {
13543
13652
  kind: t2("dovetail.taint")
13544
13653
  }),
@@ -13634,10 +13743,10 @@ function Table(props) {
13634
13743
  var _a2;
13635
13744
  (_a2 = tableProps.onClearSearchKeyword) == null ? void 0 : _a2.call(tableProps);
13636
13745
  };
13637
- return /* @__PURE__ */ common.jsxRuntimeExports.jsx(WidgetErrorContent, { errorText: i18n2.t("dovetail.no_search_result"), children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.Button, { onClick: onClear, type: "ordinary", children: i18n2.t("dovetail.clear_search_condition") }) });
13746
+ return /* @__PURE__ */ common.jsxRuntimeExports.jsx(ErrorContent, { errorText: i18n2.t("dovetail.no_search_result"), children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.Button, { onClick: onClear, type: "ordinary", children: i18n2.t("dovetail.clear_search_condition") }) });
13638
13747
  }
13639
13748
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx(
13640
- WidgetErrorContent,
13749
+ ErrorContent,
13641
13750
  {
13642
13751
  errorText: tableProps.empty || i18n2.t("dovetail.no_resource", { kind: resourceType }),
13643
13752
  ...errorContentProps
@@ -13729,7 +13838,7 @@ const StateTag = (props) => {
13729
13838
  }
13730
13839
  );
13731
13840
  };
13732
- const WorkloadPodsTable_975j2t = "";
13841
+ const WorkloadPodsTable_a750q3 = "";
13733
13842
  const WorkloadPodsTable = ({
13734
13843
  namespace: namespace2,
13735
13844
  selector,
@@ -13765,14 +13874,16 @@ const WorkloadPodsTable = ({
13765
13874
  kind: "Pod"
13766
13875
  },
13767
13876
  filters: {
13768
- permanent: [{
13769
- field: "",
13770
- value: "",
13771
- fn(item) {
13772
- return filter ? filter(item) : matchSelector(item, selector, namespace2);
13877
+ permanent: [
13878
+ {
13879
+ field: "",
13880
+ value: "",
13881
+ fn(item) {
13882
+ return filter ? filter(item) : matchSelector(item, selector, namespace2);
13883
+ }
13773
13884
  }
13774
13885
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
13775
- }]
13886
+ ]
13776
13887
  }
13777
13888
  }
13778
13889
  });
@@ -13780,7 +13891,7 @@ const WorkloadPodsTable = ({
13780
13891
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.Loading, {});
13781
13892
  }
13782
13893
  if (((_a = tableProps.data) == null ? void 0 : _a.length) === 0) {
13783
- return /* @__PURE__ */ common.jsxRuntimeExports.jsx(WidgetErrorContent, {
13894
+ return /* @__PURE__ */ common.jsxRuntimeExports.jsx(ErrorContent, {
13784
13895
  errorText: i18n2.t("dovetail.no_resource", {
13785
13896
  kind: ` ${i18n2.t("dovetail.pod")}`
13786
13897
  }),
@@ -14248,7 +14359,8 @@ const ServiceOutClusterAccessField = (clusterVip) => ({
14248
14359
  service: record,
14249
14360
  breakLine: false,
14250
14361
  clusterVip,
14251
- showDashedUnderline: false
14362
+ showDashedUnderline: false,
14363
+ showCopyButton: true
14252
14364
  });
14253
14365
  }
14254
14366
  });
@@ -14266,14 +14378,14 @@ const PodSelectorField = () => ({
14266
14378
  const PortsTableField = () => ({
14267
14379
  key: "ports",
14268
14380
  path: [],
14269
- renderContent: (_, service) => {
14381
+ renderContent: (_, service2) => {
14270
14382
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx("div", {
14271
14383
  style: {
14272
14384
  padding: "0 24px",
14273
14385
  height: "100%"
14274
14386
  },
14275
14387
  children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(PortsTable, {
14276
- service
14388
+ service: service2
14277
14389
  })
14278
14390
  });
14279
14391
  }
@@ -14581,7 +14693,7 @@ const LabelsAndAnnotationsShow = ({
14581
14693
  children: sksI18n.t("dovetail.label")
14582
14694
  }), Object.keys(labels || {}).length ? /* @__PURE__ */ common.jsxRuntimeExports.jsx(Tags, {
14583
14695
  value: labels
14584
- }) : /* @__PURE__ */ common.jsxRuntimeExports.jsx(WidgetErrorContent, {
14696
+ }) : /* @__PURE__ */ common.jsxRuntimeExports.jsx(ErrorContent, {
14585
14697
  errorText: sksI18n.t("dovetail.no_labels"),
14586
14698
  type: ErrorContentType.Item
14587
14699
  })]
@@ -14609,7 +14721,7 @@ const NetworkPolicyRulesViewer = ({
14609
14721
  t: t2
14610
14722
  } = common.useTranslation();
14611
14723
  if (!ingressOrEgress) {
14612
- return /* @__PURE__ */ common.jsxRuntimeExports.jsx(WidgetErrorContent, {
14724
+ return /* @__PURE__ */ common.jsxRuntimeExports.jsx(ErrorContent, {
14613
14725
  errorText: t2("dovetail.no_resource", {
14614
14726
  kind: kind || t2("dovetail.rule")
14615
14727
  }),
@@ -14804,7 +14916,7 @@ const PodLog = ({
14804
14916
  })]
14805
14917
  }), /* @__PURE__ */ common.jsxRuntimeExports.jsx("div", {
14806
14918
  className: ContentStyle$1,
14807
- children: logType === "previous" && !logs.length ? /* @__PURE__ */ common.jsxRuntimeExports.jsx(WidgetErrorContent, {
14919
+ children: logType === "previous" && !logs.length ? /* @__PURE__ */ common.jsxRuntimeExports.jsx(ErrorContent, {
14808
14920
  style: {
14809
14921
  height: "100%"
14810
14922
  },
@@ -14970,11 +15082,11 @@ const NetworkPolicyIngressRulesTab = ({
14970
15082
  fields: [{
14971
15083
  key: "Ingress",
14972
15084
  path: ["spec", "ingress"],
14973
- render: (ingress) => {
15085
+ render: (ingress2) => {
14974
15086
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx("div", {
14975
15087
  className: NetworkPolicyRulesViewerStyle,
14976
15088
  children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(NetworkPolicyRulesViewer, {
14977
- ingressOrEgress: ingress
15089
+ ingressOrEgress: ingress2
14978
15090
  })
14979
15091
  });
14980
15092
  }
@@ -15049,7 +15161,9 @@ const PodContainersTable = ({
15049
15161
  const isInit = initContainerStatuses.some(
15050
15162
  (c2) => c2.containerID === record.containerID
15051
15163
  );
15052
- return i18n2.t(isInit ? "dovetail.init_container" : "dovetail.regular_container");
15164
+ return i18n2.t(
15165
+ isInit ? "dovetail.init_container" : "dovetail.regular_container"
15166
+ );
15053
15167
  }
15054
15168
  },
15055
15169
  {
@@ -15079,10 +15193,12 @@ const PodContainersTable = ({
15079
15193
  [i18n2, initContainerStatuses]
15080
15194
  );
15081
15195
  const dataSource = React.useMemo(
15082
- () => addId(containerStatuses.concat(initContainerStatuses), "containerID").map((container2) => ({
15083
- ...container2,
15084
- startedAt: lodashEs.get(container2, ["state", "running", "startedAt"]) || lodashEs.get(container2, ["state", "terminated", "startedAt"])
15085
- })),
15196
+ () => addId(containerStatuses.concat(initContainerStatuses), "containerID").map(
15197
+ (container2) => ({
15198
+ ...container2,
15199
+ startedAt: lodashEs.get(container2, ["state", "running", "startedAt"]) || lodashEs.get(container2, ["state", "terminated", "startedAt"])
15200
+ })
15201
+ ),
15086
15202
  [containerStatuses, initContainerStatuses]
15087
15203
  );
15088
15204
  const {
@@ -15093,14 +15209,16 @@ const PodContainersTable = ({
15093
15209
  } = useTableData({
15094
15210
  data: dataSource,
15095
15211
  columns,
15096
- defaultSorters: [{
15097
- field: "startedAt",
15098
- order: "desc"
15099
- }]
15212
+ defaultSorters: [
15213
+ {
15214
+ field: "startedAt",
15215
+ order: "desc"
15216
+ }
15217
+ ]
15100
15218
  });
15101
15219
  if (dataSource.length === 0) {
15102
15220
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx(
15103
- WidgetErrorContent,
15221
+ ErrorContent,
15104
15222
  {
15105
15223
  errorText: i18n2.t("dovetail.no_resource", { kind: i18n2.t("dovetail.container") }),
15106
15224
  type: ErrorContentType.Card
@@ -15114,7 +15232,9 @@ const PodContainersTable = ({
15114
15232
  loading: false,
15115
15233
  data: finalData,
15116
15234
  total: dataSource.length,
15117
- columns: addDefaultRenderToColumns(columns),
15235
+ columns: addDefaultRenderToColumns(
15236
+ columns
15237
+ ),
15118
15238
  rowKey: "containerID",
15119
15239
  error: false,
15120
15240
  defaultSize: currentSize,
@@ -15237,11 +15357,11 @@ const NetworkPolicyIngressRulesGroup = (i18n2) => ({
15237
15357
  {
15238
15358
  key: "Ingress",
15239
15359
  path: ["spec", "ingress"],
15240
- renderContent: (ingress) => {
15360
+ renderContent: (ingress2) => {
15241
15361
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx(
15242
15362
  NetworkPolicyRulesViewer,
15243
15363
  {
15244
- ingressOrEgress: ingress,
15364
+ ingressOrEgress: ingress2,
15245
15365
  kind: ` ${i18n2.t("dovetail.ingress_rule")}`
15246
15366
  }
15247
15367
  );
@@ -15295,7 +15415,7 @@ function Tabs(props) {
15295
15415
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.TabsTabPane, { tab: tab.title, children: tab.children }, tab.title);
15296
15416
  }) });
15297
15417
  }
15298
- const ShowContentView_11vyp5a = "";
15418
+ const ShowContentView_szlndu = "";
15299
15419
  const ShowContentWrapperStyle = "soapvs9";
15300
15420
  const BackButton = "b13d603q";
15301
15421
  const ToolBarWrapper = "tm8eaia";
@@ -15739,7 +15859,7 @@ function ReplicasDropdown(props) {
15739
15859
  ] });
15740
15860
  }
15741
15861
  const PodShell = React.lazy(
15742
- () => Promise.resolve().then(() => require("./PodShell-43c7028e.cjs")).then((module2) => ({ default: module2.PodShell }))
15862
+ () => Promise.resolve().then(() => require("./PodShell-a335b2b2.cjs")).then((module2) => ({ default: module2.PodShell }))
15743
15863
  );
15744
15864
  function PodShellModal(props) {
15745
15865
  const { pod: pod2 } = props;
@@ -16086,9 +16206,9 @@ function ResourceShow(props) {
16086
16206
  }
16087
16207
  );
16088
16208
  }
16089
- const button_1v659kh = "";
16209
+ const button_a1727f = "";
16090
16210
  const WarningButtonStyle = "wwyz7ti";
16091
- const modal_1eijuvm = "";
16211
+ const modal_1muog24 = "";
16092
16212
  const SmallModalStyle = "s1nc293e";
16093
16213
  const ExtraSubmitFooter_15u4r8u = "";
16094
16214
  const FooterStyle = "f16wn4bu";
@@ -17053,6 +17173,7 @@ const useForm = ({
17053
17173
  const [transformedInitValues, setTransformedInitValues] = React.useState(useHookFormResult.getValues());
17054
17174
  const [beforeSubmitErrors, setBeforeSubmitErrors] = React.useState([]);
17055
17175
  const [isBeforeSubmitLoading, setIsBeforeSubmitLoading] = React.useState(false);
17176
+ const hasAppliedInitialDataRef = React.useRef(false);
17056
17177
  const {
17057
17178
  watch,
17058
17179
  setValue,
@@ -17105,7 +17226,7 @@ const useForm = ({
17105
17226
  }, [captureInitialResource, (_a = queryResult == null ? void 0 : queryResult.data) == null ? void 0 : _a.data]);
17106
17227
  React.useEffect(() => {
17107
17228
  var _a2;
17108
- if (formState.isDirty)
17229
+ if (hasAppliedInitialDataRef.current || formState.isDirty)
17109
17230
  return;
17110
17231
  const data2 = (_a2 = queryResult == null ? void 0 : queryResult.data) == null ? void 0 : _a2.data;
17111
17232
  if (!data2)
@@ -17123,6 +17244,7 @@ const useForm = ({
17123
17244
  });
17124
17245
  }
17125
17246
  });
17247
+ hasAppliedInitialDataRef.current = true;
17126
17248
  setTransformedInitValues(getValues());
17127
17249
  }, [queryResult == null ? void 0 : queryResult.data, setValue, transformInitValues, formState.isDirty, getValues]);
17128
17250
  React.useEffect(() => {
@@ -17781,31 +17903,43 @@ function CronJobDropdown(props) {
17781
17903
  values: v,
17782
17904
  successNotification() {
17783
17905
  return {
17784
- message: t2(suspended ? "dovetail.resume_success_toast" : "dovetail.pause_success_toast", {
17785
- kind: record.kind,
17786
- name: id,
17787
- interpolation: {
17788
- escapeValue: false
17906
+ message: t2(
17907
+ suspended ? "dovetail.resume_success_toast" : "dovetail.pause_success_toast",
17908
+ {
17909
+ kind: record.kind,
17910
+ name: id,
17911
+ interpolation: {
17912
+ escapeValue: false
17913
+ }
17789
17914
  }
17790
- }),
17915
+ ),
17791
17916
  type: "success"
17792
17917
  };
17793
17918
  },
17794
17919
  errorNotification() {
17795
17920
  return {
17796
- message: t2(suspended ? "dovetail.resume_failed_toast" : "dovetail.pause_failed_toast", {
17797
- kind: record.kind,
17798
- name: id,
17799
- interpolation: {
17800
- escapeValue: false
17921
+ message: t2(
17922
+ suspended ? "dovetail.resume_failed_toast" : "dovetail.pause_failed_toast",
17923
+ {
17924
+ kind: record.kind,
17925
+ name: id,
17926
+ interpolation: {
17927
+ escapeValue: false
17928
+ }
17801
17929
  }
17802
- }),
17930
+ ),
17803
17931
  type: "error"
17804
17932
  };
17805
17933
  }
17806
17934
  });
17807
17935
  },
17808
- children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.Icon, { src: suspended ? iconsReact.RecoverContinue16GradientBlueIcon : iconsReact.Pause16GradientBlueIcon, children: t2(suspended ? "dovetail.resume" : "dovetail.suspend") })
17936
+ children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(
17937
+ eagle.Icon,
17938
+ {
17939
+ src: suspended ? iconsReact.RecoverContinue16GradientBlueIcon : iconsReact.Pause16GradientBlueIcon,
17940
+ children: t2(suspended ? "dovetail.resume" : "dovetail.suspend")
17941
+ }
17942
+ )
17809
17943
  }
17810
17944
  ) : null });
17811
17945
  }
@@ -18322,7 +18456,9 @@ const DeleteButton = () => {
18322
18456
  const { resource } = core.useResource();
18323
18457
  const { id } = core.useParsed();
18324
18458
  const { t: t2 } = common.useTranslation();
18325
- const { openDeleteConfirmModal } = useDeleteModal({ resourceName: (resource == null ? void 0 : resource.name) || "" });
18459
+ const { openDeleteConfirmModal } = useDeleteModal({
18460
+ resourceName: (resource == null ? void 0 : resource.name) || ""
18461
+ });
18326
18462
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx(common.jsxRuntimeExports.Fragment, { children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(
18327
18463
  eagle.Button,
18328
18464
  {
@@ -18333,7 +18469,7 @@ const DeleteButton = () => {
18333
18469
  }
18334
18470
  ) });
18335
18471
  };
18336
- const index_1tehui8 = "";
18472
+ const index_e6cgji = "";
18337
18473
  const MenuStyle = "mdppgn0";
18338
18474
  const Menu = () => {
18339
18475
  const {
@@ -19470,9 +19606,9 @@ const PortsConfigForm = React.forwardRef(function PortsConfigForm2({ value: valu
19470
19606
  });
19471
19607
  const nodePortsFromOtherServices = React.useMemo(() => {
19472
19608
  var _a;
19473
- return ((_a = services == null ? void 0 : services.data) == null ? void 0 : _a.filter((service) => service.id !== serviceId).map((service) => {
19609
+ return ((_a = services == null ? void 0 : services.data) == null ? void 0 : _a.filter((service2) => service2.id !== serviceId).map((service2) => {
19474
19610
  var _a2, _b;
19475
- return (_b = (_a2 = service == null ? void 0 : service.spec) == null ? void 0 : _a2.ports) == null ? void 0 : _b.map((port2) => port2.nodePort);
19611
+ return (_b = (_a2 = service2 == null ? void 0 : service2.spec) == null ? void 0 : _a2.ports) == null ? void 0 : _b.map((port2) => port2.nodePort);
19476
19612
  }).flat().filter((port2) => port2 !== void 0)) || [];
19477
19613
  }, [services, serviceId]);
19478
19614
  const columns = React.useMemo(() => {
@@ -19665,7 +19801,7 @@ const PortsConfigForm = React.forwardRef(function PortsConfigForm2({ value: valu
19665
19801
  }
19666
19802
  );
19667
19803
  });
19668
- const IngressRulesComponent = ({ ingress, noLink }) => {
19804
+ const IngressRulesComponent = ({ ingress: ingress2, noLink }) => {
19669
19805
  const { data: serviceData } = core.useList({
19670
19806
  resource: "services",
19671
19807
  meta: {
@@ -19673,12 +19809,12 @@ const IngressRulesComponent = ({ ingress, noLink }) => {
19673
19809
  apiVersion: "v1"
19674
19810
  }
19675
19811
  });
19676
- const flattenedRules = (serviceData == null ? void 0 : serviceData.data) ? ingress.getFlattenedRules(serviceData == null ? void 0 : serviceData.data) : [];
19812
+ const flattenedRules = (serviceData == null ? void 0 : serviceData.data) ? ingress2.getFlattenedRules(serviceData == null ? void 0 : serviceData.data) : [];
19677
19813
  const result = flattenedRules.map((r2) => {
19678
19814
  var _a, _b;
19679
19815
  const arrow = " → ";
19680
19816
  const divider = " | ";
19681
- const secretName = (_b = (_a = ingress.spec.tls) == null ? void 0 : _a.find(
19817
+ const secretName = (_b = (_a = ingress2.spec.tls) == null ? void 0 : _a.find(
19682
19818
  ({ hosts }) => hosts == null ? void 0 : hosts.includes(r2.host || "")
19683
19819
  )) == null ? void 0 : _b.secretName;
19684
19820
  let tooltip = r2.fullPath;
@@ -19699,7 +19835,7 @@ const IngressRulesComponent = ({ ingress, noLink }) => {
19699
19835
  ResourceLink,
19700
19836
  {
19701
19837
  resourceName: "services",
19702
- namespace: ingress.metadata.namespace || "default",
19838
+ namespace: ingress2.metadata.namespace || "default",
19703
19839
  name: r2.serviceName
19704
19840
  }
19705
19841
  ),
@@ -19714,7 +19850,7 @@ const IngressRulesComponent = ({ ingress, noLink }) => {
19714
19850
  ResourceLink,
19715
19851
  {
19716
19852
  resourceName: "secrets",
19717
- namespace: ingress.metadata.namespace || "default",
19853
+ namespace: ingress2.metadata.namespace || "default",
19718
19854
  name: secretName
19719
19855
  }
19720
19856
  )
@@ -20083,7 +20219,10 @@ function ServiceOutClusterAccessTitle() {
20083
20219
  })
20084
20220
  });
20085
20221
  }
20086
- const ServiceOutClusterAccessColumnRenderer = (clusterVip) => {
20222
+ const ServiceOutClusterAccessColumnRenderer = (_i18n, options) => {
20223
+ const {
20224
+ clusterVip
20225
+ } = options;
20087
20226
  return {
20088
20227
  key: "outClusterAccess",
20089
20228
  title: /* @__PURE__ */ common.jsxRuntimeExports.jsx(ServiceOutClusterAccessTitle, {}),
@@ -20123,10 +20262,8 @@ const PodWorkloadColumnRenderer = (i18n2) => {
20123
20262
  }
20124
20263
  };
20125
20264
  };
20126
- const IngressRulesColumnRenderer = ({
20127
- i18n: i18n2,
20128
- noLink
20129
- }) => {
20265
+ const IngressRulesColumnRenderer = (i18n2, options) => {
20266
+ const noLink = options == null ? void 0 : options.noLink;
20130
20267
  const dataIndex = ["spec", "rules"];
20131
20268
  return {
20132
20269
  key: "type",
@@ -20587,39 +20724,45 @@ const Dovetail = (props) => {
20587
20724
  antd4Configs: {
20588
20725
  getPopupContainer: antdGetPopupContainer || (() => document.body)
20589
20726
  },
20590
- children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(GlobalStoreContext.Provider, { value: globalStoreMap, children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(
20591
- core.Refine,
20727
+ children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(
20728
+ GlobalStoreContext.Provider,
20592
20729
  {
20593
- dataProvider: k8sApiProvider.dataProvider(globalStoreMap.default),
20594
- liveProvider: k8sApiProvider.liveProvider(globalStoreMap.default),
20595
- routerProvider,
20596
- notificationProvider,
20597
- options: {
20598
- warnWhenUnsavedChanges: true,
20599
- liveMode: "auto",
20600
- disableTelemetry: true
20601
- },
20602
- accessControlProvider,
20603
- resources: resourcesConfig.map((c2) => {
20604
- return {
20605
- name: c2.name,
20606
- meta: {
20607
- dataProviderName: c2.dataProviderName,
20608
- resourceBasePath: c2.basePath,
20609
- kind: c2.kind,
20610
- parent: c2.parent,
20611
- label: `${c2.kind}s`
20730
+ value: globalStoreMap,
20731
+ children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(
20732
+ core.Refine,
20733
+ {
20734
+ dataProvider: k8sApiProvider.dataProvider(globalStoreMap.default),
20735
+ liveProvider: k8sApiProvider.liveProvider(globalStoreMap.default),
20736
+ routerProvider,
20737
+ notificationProvider,
20738
+ options: {
20739
+ warnWhenUnsavedChanges: true,
20740
+ liveMode: "auto",
20741
+ disableTelemetry: true
20612
20742
  },
20613
- list: `${urlPrefix}/${c2.name}`,
20614
- show: `${urlPrefix}/${c2.name}/show`,
20615
- create: `${urlPrefix}/${c2.name}/create`,
20616
- edit: `${urlPrefix}/${c2.name}/edit`
20617
- };
20618
- }),
20619
- ...props,
20620
- children: content
20743
+ accessControlProvider,
20744
+ resources: resourcesConfig.map((c2) => {
20745
+ return {
20746
+ name: c2.name,
20747
+ meta: {
20748
+ dataProviderName: c2.dataProviderName,
20749
+ resourceBasePath: c2.basePath,
20750
+ kind: c2.kind,
20751
+ parent: c2.parent,
20752
+ label: `${c2.kind}s`
20753
+ },
20754
+ list: `${urlPrefix}/${c2.name}`,
20755
+ show: `${urlPrefix}/${c2.name}/show`,
20756
+ create: `${urlPrefix}/${c2.name}/create`,
20757
+ edit: `${urlPrefix}/${c2.name}/edit`
20758
+ };
20759
+ }),
20760
+ ...props,
20761
+ children: content
20762
+ }
20763
+ )
20621
20764
  }
20622
- ) })
20765
+ )
20623
20766
  }
20624
20767
  ) }) }) }) });
20625
20768
  };
@@ -20680,8 +20823,8 @@ class ModelPlugin {
20680
20823
  restoreItem(item) {
20681
20824
  return item._rawYaml;
20682
20825
  }
20683
- setModelMap(key2, model) {
20684
- this.ModelMap.set(key2, model);
20826
+ setModelMap(key2, ModelClass) {
20827
+ this.ModelMap.set(key2, ModelClass);
20685
20828
  }
20686
20829
  }
20687
20830
  const modelPlugin = new ModelPlugin();
@@ -20786,12 +20929,14 @@ exports.ClusterIpField = ClusterIpField;
20786
20929
  exports.ColumnKeys = ColumnKeys;
20787
20930
  exports.CommonSorter = CommonSorter;
20788
20931
  exports.ComponentContext = ComponentContext;
20932
+ exports.ComponentContextProvider = ComponentContextProvider;
20789
20933
  exports.ConditionsField = ConditionsField;
20790
20934
  exports.ConditionsGroup = ConditionsGroup;
20791
20935
  exports.ConditionsTab = ConditionsTab;
20792
20936
  exports.ConditionsTable = ConditionsTable;
20793
20937
  exports.ConfigsContext = ConfigsContext;
20794
20938
  exports.ControllerRevisionModel = ControllerRevisionModel;
20939
+ exports.CopyButton = CopyButton;
20795
20940
  exports.CreateButton = CreateButton;
20796
20941
  exports.CronJobDropdown = CronJobDropdown;
20797
20942
  exports.CronJobModel = CronJobModel;
@@ -20819,7 +20964,8 @@ exports.EditLabelDropdownMenuItem = EditLabelDropdownMenuItem;
20819
20964
  exports.EditLabelForm = EditLabelForm;
20820
20965
  exports.EditNodeTaintDropdownMenuItem = EditNodeTaintDropdownMenuItem;
20821
20966
  exports.EditNodeTaintForm = EditNodeTaintForm;
20822
- exports.ErrorContent = WidgetErrorContent;
20967
+ exports.ErrorContent = ErrorContent;
20968
+ exports.ErrorContentBody = ErrorContentBody;
20823
20969
  exports.ErrorContentType = ErrorContentType;
20824
20970
  exports.ErrorWrapper = ErrorWrapper;
20825
20971
  exports.EventModel = EventModel;
@@ -21038,7 +21184,6 @@ exports.WorkloadReplicasForm = WorkloadReplicasForm;
21038
21184
  exports.YamlEditorComponent = YamlEditorComponent;
21039
21185
  exports.YamlForm = YamlForm;
21040
21186
  exports.addDefaultRenderToColumns = addDefaultRenderToColumns;
21041
- exports.dnsSubDomainRules = dnsSubDomainRules;
21042
21187
  exports.dovetailRefineI18n = dovetailRefineI18n;
21043
21188
  exports.generateSchemaTypeValue = generateSchemaTypeValue;
21044
21189
  exports.generateValueFromSchema = generateValueFromSchema;
@@ -21052,12 +21197,11 @@ exports.pruneBeforeEdit = pruneBeforeEdit;
21052
21197
  exports.relationPlugin = relationPlugin;
21053
21198
  exports.renderCommonFormFiled = renderCommonFormFiled;
21054
21199
  exports.resolveRef = resolveRef;
21055
- exports.rfc1035LabelRules = rfc1035LabelRules;
21056
- exports.rfc1123LabelRules = rfc1123LabelRules;
21057
21200
  exports.routerProvider = routerProvider;
21058
21201
  exports.shortenedImage = shortenedImage;
21059
21202
  exports.transformResourceKindInSentence = transformResourceKindInSentence;
21060
21203
  exports.useApiGroupSchema = useApiGroupSchema;
21204
+ exports.useDeleteManyModal = useDeleteManyModal;
21061
21205
  exports.useDeleteModal = useDeleteModal;
21062
21206
  exports.useDeleteModalOnly = useDeleteModalOnly;
21063
21207
  exports.useDownloadYAML = useDownloadYAML;