@prorobotech/openapi-k8s-toolkit 1.2.0-alpha.10 → 1.2.0-alpha.12

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 (117) hide show
  1. package/dist/openapi-k8s-toolkit.es.js +898 -146
  2. package/dist/openapi-k8s-toolkit.es.js.map +1 -1
  3. package/dist/openapi-k8s-toolkit.umd.js +899 -147
  4. package/dist/openapi-k8s-toolkit.umd.js.map +1 -1
  5. package/dist/types/components/atoms/ContentCard/ContentCard.styled.d.ts +2 -0
  6. package/dist/types/components/molecules/BlackholeForm/atoms/HiddenContainer/utils.test.d.ts +1 -0
  7. package/dist/types/components/molecules/BlackholeForm/molecules/FormListInput/utils.test.d.ts +1 -0
  8. package/dist/types/components/molecules/BlackholeForm/molecules/FormRangeInput/utils.test.d.ts +1 -0
  9. package/dist/types/components/molecules/BlackholeForm/molecules/FormStringMultilineInput/helpers.test.d.ts +1 -0
  10. package/dist/types/components/molecules/BlackholeForm/organisms/BlackholeForm/BlackholeForm.test.d.ts +1 -0
  11. package/dist/types/components/molecules/BlackholeForm/organisms/BlackholeForm/context.test.d.ts +1 -0
  12. package/dist/types/components/molecules/BlackholeForm/organisms/BlackholeForm/helpers/casts.test.d.ts +1 -0
  13. package/dist/types/components/molecules/BlackholeForm/organisms/BlackholeForm/helpers/getSortedPropertyKeys.test.d.ts +1 -0
  14. package/dist/types/components/molecules/BlackholeForm/organisms/BlackholeForm/helpers/hiddenExpanded.test.d.ts +1 -0
  15. package/dist/types/components/molecules/BlackholeForm/organisms/BlackholeForm/helpers/prefills.test.d.ts +1 -0
  16. package/dist/types/components/molecules/BlackholeForm/organisms/BlackholeForm/utils.test.d.ts +1 -0
  17. package/dist/types/components/molecules/BlackholeForm/organisms/BlackholeForm/utilsErrorHandler.test.d.ts +1 -0
  18. package/dist/types/components/molecules/BlackholeForm/organisms/BlackholeFormProvider/BlackholeFormProvider.test.d.ts +2 -0
  19. package/dist/types/components/molecules/EnrichedTable/organisms/EnrichedTable/utils.test.d.ts +8 -0
  20. package/dist/types/components/molecules/EnrichedTable/organisms/EnrichedTableProvider/utils.test.d.ts +1 -0
  21. package/dist/types/components/molecules/Events/molecules/EventRow/utils.test.d.ts +1 -0
  22. package/dist/types/components/molecules/Events/reducer.test.d.ts +1 -0
  23. package/dist/types/components/molecules/Events/utils.test.d.ts +1 -0
  24. package/dist/types/components/molecules/ManageableBreadcrumbs/organisms/ManageableBreadcrumbsProvider/utils.test.d.ts +1 -0
  25. package/dist/types/components/molecules/ManageableSidebar/organisms/ManageableSidebarProvider/utils.test.d.ts +1 -0
  26. package/dist/types/components/molecules/MarketPlace/molecules/MarketplaceCard/utils.test.d.ts +1 -0
  27. package/dist/types/components/molecules/Terminals/VMVNC/VMVNC.d.ts +9 -0
  28. package/dist/types/components/molecules/Terminals/VMVNC/hooks/useVNCClient.d.ts +29 -0
  29. package/dist/types/components/molecules/Terminals/VMVNC/index.d.ts +2 -0
  30. package/dist/types/components/molecules/Terminals/VMVNC/molecules/VMVNCToolbar/VMVNCToolbar.d.ts +17 -0
  31. package/dist/types/components/molecules/Terminals/VMVNC/molecules/VMVNCToolbar/index.d.ts +1 -0
  32. package/dist/types/components/molecules/Terminals/VMVNC/molecules/VMVNCToolbar/styled.d.ts +1364 -0
  33. package/dist/types/components/molecules/Terminals/VMVNC/molecules/index.d.ts +1 -0
  34. package/dist/types/components/molecules/Terminals/VMVNC/styled.d.ts +834 -0
  35. package/dist/types/components/molecules/Terminals/index.d.ts +2 -0
  36. package/dist/types/components/molecules/index.d.ts +2 -2
  37. package/dist/types/components/organisms/DynamicComponents/molecules/Annotations/utils.test.d.ts +1 -0
  38. package/dist/types/components/organisms/DynamicComponents/molecules/ArrayOfObjectsToKeyValues/utils.test.d.ts +1 -0
  39. package/dist/types/components/organisms/DynamicComponents/molecules/EnrichedTable/utils.test.d.ts +1 -0
  40. package/dist/types/components/organisms/DynamicComponents/molecules/Events/utils.test.d.ts +1 -0
  41. package/dist/types/components/organisms/DynamicComponents/molecules/ItemCounter/utils.test.d.ts +1 -0
  42. package/dist/types/components/organisms/DynamicComponents/molecules/KeyCounter/utils.test.d.ts +1 -0
  43. package/dist/types/components/organisms/DynamicComponents/molecules/Labels/utils.test.d.ts +1 -0
  44. package/dist/types/components/organisms/DynamicComponents/molecules/LabelsToSearchParams/utils.test.d.ts +1 -0
  45. package/dist/types/components/organisms/DynamicComponents/molecules/OwnerRefs/guard.test.d.ts +1 -0
  46. package/dist/types/components/organisms/DynamicComponents/molecules/OwnerRefs/organsisms/RefsList/molecules/RefElement/utils.test.d.ts +1 -0
  47. package/dist/types/components/organisms/DynamicComponents/molecules/ParsedText/utils.test.d.ts +1 -0
  48. package/dist/types/components/organisms/DynamicComponents/molecules/PodLogs/utils.test.d.ts +1 -0
  49. package/dist/types/components/organisms/DynamicComponents/molecules/PodTerminal/utils.test.d.ts +1 -0
  50. package/dist/types/components/organisms/DynamicComponents/molecules/PrometheusGraph/hooks/usePrometheusQueryRange.test.d.ts +1 -0
  51. package/dist/types/components/organisms/DynamicComponents/molecules/PrometheusGraph/hooks/usePrometheusQueryRangeMulti.test.d.ts +1 -0
  52. package/dist/types/components/organisms/DynamicComponents/molecules/PrometheusGraph/utils/prometheusAdapter.test.d.ts +1 -0
  53. package/dist/types/components/organisms/DynamicComponents/molecules/StatusText/utils.test.d.ts +1 -0
  54. package/dist/types/components/organisms/DynamicComponents/molecules/Taints/utils.test.d.ts +1 -0
  55. package/dist/types/components/organisms/DynamicComponents/molecules/Tolerations/utils.test.d.ts +1 -0
  56. package/dist/types/components/organisms/DynamicComponents/molecules/VMVNC/VMVNC.d.ts +6 -0
  57. package/dist/types/components/organisms/DynamicComponents/molecules/VMVNC/index.d.ts +1 -0
  58. package/dist/types/components/organisms/DynamicComponents/molecules/YamlEditorSingleton/utils.test.d.ts +1 -0
  59. package/dist/types/components/organisms/DynamicComponents/molecules/index.d.ts +1 -0
  60. package/dist/types/components/organisms/DynamicComponents/types.d.ts +8 -0
  61. package/dist/types/components/organisms/DynamicRenderer/DynamicRenderer.test.d.ts +1 -0
  62. package/dist/types/components/organisms/DynamicRendererWithProviders/DynamicRendererWithProviders.test.d.ts +1 -0
  63. package/dist/types/components/organisms/DynamicRendererWithProviders/providers/factoryConfigProvider/factoryConfigProvider.test.d.ts +1 -0
  64. package/dist/types/components/organisms/DynamicRendererWithProviders/providers/factoryConfigProvider/index.d.ts +1 -0
  65. package/dist/types/components/organisms/DynamicRendererWithProviders/{hybridDataProvider.d.ts → providers/hybridDataProvider/hybridDataProvider.d.ts} +1 -1
  66. package/dist/types/components/organisms/DynamicRendererWithProviders/providers/hybridDataProvider/hybridDataProvider.test.d.ts +1 -0
  67. package/dist/types/components/organisms/DynamicRendererWithProviders/providers/hybridDataProvider/index.d.ts +1 -0
  68. package/dist/types/components/organisms/DynamicRendererWithProviders/providers/multiK8sProvider/index.d.ts +2 -0
  69. package/dist/types/components/organisms/DynamicRendererWithProviders/{multiK8sProvider.d.ts → providers/multiK8sProvider/multiK8sProvider.d.ts} +1 -1
  70. package/dist/types/components/organisms/DynamicRendererWithProviders/providers/multiK8sProvider/multiK8sProvider.test.d.ts +1 -0
  71. package/dist/types/components/organisms/DynamicRendererWithProviders/providers/multiQueryProvider/index.d.ts +1 -0
  72. package/dist/types/components/organisms/DynamicRendererWithProviders/providers/multiQueryProvider/multiQueryProvider.test.d.ts +1 -0
  73. package/dist/types/components/organisms/DynamicRendererWithProviders/providers/partsOfUrlContext/index.d.ts +1 -0
  74. package/dist/types/components/organisms/DynamicRendererWithProviders/providers/partsOfUrlContext/partsOfUrlContext.test.d.ts +1 -0
  75. package/dist/types/components/organisms/DynamicRendererWithProviders/providers/themeContext/index.d.ts +1 -0
  76. package/dist/types/components/organisms/DynamicRendererWithProviders/providers/themeContext/themeContext.test.d.ts +1 -0
  77. package/dist/types/hooks/useApiResource.d.ts +1 -0
  78. package/dist/types/hooks/useBuiltinResource.d.ts +1 -0
  79. package/dist/types/hooks/useCrdResource.d.ts +1 -0
  80. package/dist/types/hooks/useK8sSmartResource/useK8sSmartResource.test.d.ts +2 -0
  81. package/dist/types/hooks/useK8sSmartResource/useK8sSmartResourceWithoutKinds.test.d.ts +2 -0
  82. package/dist/types/hooks/useK8sSmartResource/useManyK8sSmartResource.test.d.ts +2 -0
  83. package/dist/types/hooks/useK8sSmartResource/useSmartResourceParams.test.d.ts +2 -0
  84. package/dist/types/hooks/useListThenWatch/reducer.test.d.ts +1 -0
  85. package/dist/types/hooks/useListThenWatch/useInfiniteSentinel.test.d.ts +2 -0
  86. package/dist/types/hooks/useListThenWatch/useListWatch.test.d.ts +2 -0
  87. package/dist/types/hooks/useListThenWatch/utils.test.d.ts +1 -0
  88. package/dist/types/hooks/useResourceScope/useResourceScope.test.d.ts +2 -0
  89. package/dist/types/localTypes/k8s.d.ts +1 -0
  90. package/dist/types/utils/converterBytes/converterBytes.d.ts +3 -0
  91. package/dist/types/utils/createContextFactory/createContextFactory.test.d.ts +2 -0
  92. package/dist/types/utils/deepMerge/deepMerge.test.d.ts +1 -0
  93. package/dist/types/utils/filterSelectOptions/filterSelectOptions.test.d.ts +1 -0
  94. package/dist/types/utils/getAllPathsFromObj/getAllPathsFromObj.test.d.ts +1 -0
  95. package/dist/types/utils/getGroupsByCategory/getGroupsByCategory.test.d.ts +2 -0
  96. package/dist/types/utils/getPrefixSubArrays/getPrefixSubArrays.test.d.ts +1 -0
  97. package/dist/types/utils/getResourceLink/getResourceLink.test.d.ts +1 -0
  98. package/dist/types/utils/getSortedKinds/getSortedKinds.test.d.ts +1 -0
  99. package/dist/types/utils/getSortedKindsAll/getSortedKindsAll.test.d.ts +1 -0
  100. package/dist/types/utils/getStringByName/getStringByName.test.d.ts +1 -0
  101. package/dist/types/utils/getUppercase/getUppercase.test.d.ts +1 -0
  102. package/dist/types/utils/groupsToTreeData/groupsToTreeData.test.d.ts +1 -0
  103. package/dist/types/utils/hslFromString/hslFromString.test.d.ts +1 -0
  104. package/dist/types/utils/isFlatObject/isFlatObject.test.d.ts +1 -0
  105. package/dist/types/utils/kindByGvr/kindByGvr.test.d.ts +1 -0
  106. package/dist/types/utils/namespacedByGvr/namespacedByGvr.test.d.ts +1 -0
  107. package/dist/types/utils/nestedStringsArrayInclude/nestedStringsArrayInclude.test.d.ts +1 -0
  108. package/dist/types/utils/normalizeValuesForQuotas/normalizeValuesForQuotas.test.d.ts +1 -0
  109. package/dist/types/utils/parseForQuotaValues/parseForQuotaValues.test.d.ts +1 -0
  110. package/dist/types/utils/pluralByKind/pluralByKind.test.d.ts +1 -0
  111. package/dist/types/utils/prepareUrlsToFetchForDynamicRenderer/prepareUrlsToFetchForDynamicRenderer.test.d.ts +1 -0
  112. package/dist/types/utils/tableLocations/tableLocations.test.d.ts +1 -0
  113. package/package.json +3 -1
  114. /package/dist/types/components/organisms/DynamicRendererWithProviders/{factoryConfigProvider.d.ts → providers/factoryConfigProvider/factoryConfigProvider.d.ts} +0 -0
  115. /package/dist/types/components/organisms/DynamicRendererWithProviders/{multiQueryProvider.d.ts → providers/multiQueryProvider/multiQueryProvider.d.ts} +0 -0
  116. /package/dist/types/components/organisms/DynamicRendererWithProviders/{partsOfUrlContext.d.ts → providers/partsOfUrlContext/partsOfUrlContext.d.ts} +0 -0
  117. /package/dist/types/components/organisms/DynamicRendererWithProviders/{themeContext.d.ts → providers/themeContext/themeContext.d.ts} +0 -0
@@ -1,9 +1,10 @@
1
1
  import styled, { createGlobalStyle } from 'styled-components';
2
2
  import K, { useState, useRef, useLayoutEffect, useReducer, useEffect, useCallback, useMemo, Fragment, createContext, useContext, memo, createElement, isValidElement, cloneElement, useInsertionEffect, useSyncExternalStore, Suspense } from 'react';
3
- import { Input, Tree, Modal, Alert, theme, Select, Tag, Flex, Typography, Breadcrumb, Spin, Menu, Tooltip, Space, Button, Card as Card$1, Row, Col, Tabs, notification, Form, Popover, Switch, Segmented, Dropdown, Table, Slider, InputNumber, Result, Progress, Checkbox, Empty } from 'antd';
4
- import { LoadingOutlined, ExclamationCircleFilled, CloseCircleFilled, CheckCircleFilled, PlusOutlined, ClearOutlined, MinusOutlined, CaretDownOutlined, CaretRightOutlined, InfoCircleOutlined, EyeOutlined, EyeInvisibleOutlined, SearchOutlined, MoreOutlined, CheckOutlined, CloseOutlined, BugOutlined, EllipsisOutlined } from '@ant-design/icons';
3
+ import { Input, Tree, Modal, Alert, theme, Select, Tag, Flex, Typography, Breadcrumb, Spin, Menu, Tooltip, Space, Button, Card as Card$1, Row, Col, Tabs, notification, Form, Popover, Switch, Segmented, Dropdown, Table, Slider, InputNumber, Result, Progress, Radio, Checkbox, Empty } from 'antd';
4
+ import { LoadingOutlined, ExclamationCircleFilled, CloseCircleFilled, CheckCircleFilled, PlusOutlined, ClearOutlined, MinusOutlined, CaretDownOutlined, CaretRightOutlined, InfoCircleOutlined, EyeOutlined, EyeInvisibleOutlined, SearchOutlined, MoreOutlined, CheckOutlined, CloseOutlined, BugOutlined, EllipsisOutlined, PoweroffOutlined, FullscreenExitOutlined, FullscreenOutlined, SettingOutlined, ReloadOutlined } from '@ant-design/icons';
5
5
  import { useNavigate, useSearchParams, Link, useLocation, useParams } from 'react-router-dom';
6
6
  import { useQuery, useQueries, useQueryClient } from '@tanstack/react-query';
7
+ import RFB from 'novnc-next';
7
8
 
8
9
  const Spacer$1 = styled.div`
9
10
  height: ${({ $space, $spaceMob, $samespace }) => {
@@ -1574,7 +1575,7 @@ const CustomTreeProvider = styled.div`
1574
1575
  justify-content: center;
1575
1576
  }
1576
1577
  `;
1577
- const Styled$C = {
1578
+ const Styled$E = {
1578
1579
  CustomTreeProvider
1579
1580
  };
1580
1581
 
@@ -1639,7 +1640,7 @@ const TreeWithSearch = ({ treeData, onSelect }) => {
1639
1640
  });
1640
1641
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
1641
1642
  /* @__PURE__ */ jsxRuntimeExports.jsx(Search$1, { style: { marginBottom: 8 }, placeholder: "Search", onChange }),
1642
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$C.CustomTreeProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
1643
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$E.CustomTreeProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
1643
1644
  Tree,
1644
1645
  {
1645
1646
  treeData: loop(treeData),
@@ -8197,14 +8198,14 @@ const ContentContainer = styled.div`
8197
8198
  display: ${({ $displayFlex }) => $displayFlex ? "flex" : "block"};
8198
8199
  flex-flow: ${({ $flexFlow }) => $flexFlow};
8199
8200
  `;
8200
- const Styled$B = {
8201
+ const Styled$D = {
8201
8202
  ContentContainer
8202
8203
  };
8203
8204
 
8204
8205
  const ContentCard$1 = ({ children, flexGrow, displayFlex, flexFlow, maxHeight }) => {
8205
8206
  const { token } = theme.useToken();
8206
8207
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
8207
- Styled$B.ContentContainer,
8208
+ Styled$D.ContentContainer,
8208
8209
  {
8209
8210
  $flexGrow: flexGrow,
8210
8211
  $bgColor: token.colorBgContainer,
@@ -8265,13 +8266,13 @@ const UncontrolledSelect$1 = styled(Select)`
8265
8266
  padding-inline: 8px;
8266
8267
  }
8267
8268
  `;
8268
- const Styled$A = {
8269
+ const Styled$C = {
8269
8270
  UncontrolledSelect: UncontrolledSelect$1
8270
8271
  };
8271
8272
 
8272
8273
  const UncontrolledSelect = (props) => {
8273
8274
  const { isCursorPointer } = props;
8274
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$A.UncontrolledSelect, { ...props, $isCursorPointer: isCursorPointer });
8275
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$C.UncontrolledSelect, { ...props, $isCursorPointer: isCursorPointer });
8275
8276
  };
8276
8277
 
8277
8278
  const CustomSelect$5 = styled(Select)`
@@ -8319,13 +8320,13 @@ const CustomSelect$5 = styled(Select)`
8319
8320
  margin-block: 0 !important;
8320
8321
  }
8321
8322
  `;
8322
- const Styled$z = {
8323
+ const Styled$B = {
8323
8324
  CustomSelect: CustomSelect$5
8324
8325
  };
8325
8326
 
8326
8327
  const CustomSelect$4 = (props) => {
8327
8328
  const { paddingContainerEnd, ...rest } = props;
8328
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$z.CustomSelect, { $paddingContainerEnd: paddingContainerEnd, ...rest });
8329
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$B.CustomSelect, { $paddingContainerEnd: paddingContainerEnd, ...rest });
8329
8330
  };
8330
8331
 
8331
8332
  const CursorPointerTag = styled(Tag)`
@@ -8472,7 +8473,7 @@ const Abbr$2 = styled.span`
8472
8473
  height: min-content;
8473
8474
  margin-right: 4px;
8474
8475
  `;
8475
- const Styled$y = {
8476
+ const Styled$A = {
8476
8477
  Abbr: Abbr$2
8477
8478
  };
8478
8479
 
@@ -8512,7 +8513,7 @@ const ResourceLink = ({
8512
8513
  baseFactoriesMapping
8513
8514
  });
8514
8515
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(Flex, { align: "center", gap: 8, children: [
8515
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$y.Abbr, { $bgColor: bgColor, children: abbr }),
8516
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$A.Abbr, { $bgColor: bgColor, children: abbr }),
8516
8517
  resourceLink ? /* @__PURE__ */ jsxRuntimeExports.jsx(
8517
8518
  Typography.Link,
8518
8519
  {
@@ -8551,7 +8552,7 @@ const NoWrapContainer = styled.div`
8551
8552
  flex-wrap: nowrap !important;
8552
8553
  }
8553
8554
  `;
8554
- const Styled$x = {
8555
+ const Styled$z = {
8555
8556
  PositionRelativeContainer,
8556
8557
  FullWidthContainer,
8557
8558
  NoWrapContainer
@@ -8594,9 +8595,9 @@ const CollapsibleBreadcrumb = ({ items }) => {
8594
8595
  };
8595
8596
  return [firstItem, ellipsisItem, lastItem];
8596
8597
  };
8597
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(Styled$x.PositionRelativeContainer, { children: [
8598
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$x.FullWidthContainer, { ref: containerRef, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Breadcrumb, { separator: ">", items: renderItems() }) }),
8599
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$x.NoWrapContainer, { ref: breadcrumbRef, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Breadcrumb, { separator: ">", items, style: { display: "flex", flexWrap: "nowrap" } }) })
8598
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(Styled$z.PositionRelativeContainer, { children: [
8599
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$z.FullWidthContainer, { ref: containerRef, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Breadcrumb, { separator: ">", items: renderItems() }) }),
8600
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$z.NoWrapContainer, { ref: breadcrumbRef, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Breadcrumb, { separator: ">", items, style: { display: "flex", flexWrap: "nowrap" } }) })
8600
8601
  ] });
8601
8602
  };
8602
8603
 
@@ -8604,12 +8605,12 @@ const HeightDiv$1 = styled.div`
8604
8605
  min-height: 22px;
8605
8606
  width: 100%;
8606
8607
  `;
8607
- const Styled$w = {
8608
+ const Styled$y = {
8608
8609
  HeightDiv: HeightDiv$1
8609
8610
  };
8610
8611
 
8611
8612
  const ManageableBreadcrumbs = ({ data }) => {
8612
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$w.HeightDiv, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(CollapsibleBreadcrumb, { items: data.breadcrumbItems }) });
8613
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$y.HeightDiv, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(CollapsibleBreadcrumb, { items: data.breadcrumbItems }) });
8613
8614
  };
8614
8615
 
8615
8616
  const getKinds = async ({ cluster }) => {
@@ -9595,7 +9596,7 @@ const HeightDiv = styled.div`
9595
9596
  min-height: 22px;
9596
9597
  width: 100%;
9597
9598
  `;
9598
- const Styled$v = {
9599
+ const Styled$x = {
9599
9600
  HeightDiv
9600
9601
  };
9601
9602
 
@@ -9624,7 +9625,7 @@ const ManageableBreadcrumbsProvider = ({
9624
9625
  return null;
9625
9626
  }
9626
9627
  if (rawDataLoading) {
9627
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$v.HeightDiv, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Spin, {}) });
9628
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$x.HeightDiv, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Spin, {}) });
9628
9629
  }
9629
9630
  if (!rawData) {
9630
9631
  return null;
@@ -9639,7 +9640,7 @@ const ManageableBreadcrumbsProvider = ({
9639
9640
  idToCompare
9640
9641
  });
9641
9642
  if (!result) {
9642
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$v.HeightDiv, {});
9643
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$x.HeightDiv, {});
9643
9644
  }
9644
9645
  return /* @__PURE__ */ jsxRuntimeExports.jsx(ManageableBreadcrumbs, { data: result }, JSON.stringify(idToCompare));
9645
9646
  };
@@ -9667,7 +9668,7 @@ const CustomMenu = styled(Menu)`
9667
9668
  margin: 0 !important;
9668
9669
  }
9669
9670
  `;
9670
- const Styled$u = {
9671
+ const Styled$w = {
9671
9672
  CustomMenu
9672
9673
  };
9673
9674
 
@@ -9694,7 +9695,7 @@ const ManageableSidebar = ({ data, noMarginTop }) => {
9694
9695
  setSelectedKeys(data.selectedKeys);
9695
9696
  }, [data.selectedKeys]);
9696
9697
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
9697
- Styled$u.CustomMenu,
9698
+ Styled$w.CustomMenu,
9698
9699
  {
9699
9700
  selectedKeys,
9700
9701
  onSelect: () => {
@@ -33882,7 +33883,7 @@ const ShortenedText = styled.div`
33882
33883
  white-space: nowrap;
33883
33884
  text-overflow: ellipsis;
33884
33885
  `;
33885
- const Styled$t = {
33886
+ const Styled$v = {
33886
33887
  ShortenedText
33887
33888
  };
33888
33889
 
@@ -33891,7 +33892,7 @@ const ShortenedTextWithTooltip = ({ text, trimLength, maxWidth = 200 }) => {
33891
33892
  const trimmedText = text.substring(0, trimLength);
33892
33893
  return /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: text, placement: "top", children: trimmedText });
33893
33894
  }
33894
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: text, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$t.ShortenedText, { $maxWidth: maxWidth, children: text }) });
33895
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: text, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$v.ShortenedText, { $maxWidth: maxWidth, children: text }) });
33895
33896
  };
33896
33897
 
33897
33898
  const FilterDropdown = ({
@@ -34143,13 +34144,53 @@ const convertStorage = (value, from, to, opts) => {
34143
34144
  if (bytes < 0) return -1;
34144
34145
  return convertBytes(bytes, to, opts);
34145
34146
  };
34147
+ const normalizeAutoNumber$1 = (raw) => {
34148
+ let s = raw.trim();
34149
+ s = s.replace(/[\s\u00A0\u202F_]/g, "");
34150
+ s = s.replace(/'/g, "");
34151
+ const hasDot = s.includes(".");
34152
+ const hasComma = s.includes(",");
34153
+ if (hasDot && hasComma) {
34154
+ const lastDot = s.lastIndexOf(".");
34155
+ const lastComma = s.lastIndexOf(",");
34156
+ const decimal = lastDot > lastComma ? "." : ",";
34157
+ const group = decimal === "." ? "," : ".";
34158
+ s = s.split(group).join("");
34159
+ if (decimal === ",") s = s.replace(/,/g, ".");
34160
+ return s;
34161
+ }
34162
+ if (hasComma && !hasDot) {
34163
+ const parts = s.split(",");
34164
+ if (parts.length > 2) {
34165
+ return parts.join("");
34166
+ }
34167
+ const [intPart, fracPart = ""] = parts;
34168
+ if (fracPart.length === 3 && intPart.length >= 1) {
34169
+ return intPart + fracPart;
34170
+ }
34171
+ return intPart + (fracPart ? "." + fracPart : "");
34172
+ }
34173
+ if (hasDot && !hasComma) {
34174
+ const parts = s.split(".");
34175
+ if (parts.length > 2) {
34176
+ return parts.join("");
34177
+ }
34178
+ const [intPart, fracPart = ""] = parts;
34179
+ if (fracPart.length === 3 && intPart.length >= 1) {
34180
+ return intPart + fracPart;
34181
+ }
34182
+ return intPart + (fracPart ? "." + fracPart : "");
34183
+ }
34184
+ return s;
34185
+ };
34146
34186
  const parseValueWithUnit = (input) => {
34147
34187
  const trimmed = input.trim();
34148
34188
  if (!trimmed) return null;
34149
- const match = trimmed.match(/^([+-]?\d+(?:\.\d+)?)(?:\s*([a-zA-Z]+))?$/);
34189
+ const match = trimmed.match(/^([+-]?\d(?:[\d\s\u00A0\u202F.,'_]*\d)?)(?:\s*([a-zA-Z]+))?$/);
34150
34190
  if (!match) return null;
34151
- const [, numPart, unitPart] = match;
34152
- const value = Number(numPart);
34191
+ const [, numPartRaw, unitPart] = match;
34192
+ const normalized = normalizeAutoNumber$1(numPartRaw);
34193
+ const value = Number(normalized);
34153
34194
  if (!Number.isFinite(value)) return null;
34154
34195
  if (unitPart) {
34155
34196
  return { value, unit: unitPart };
@@ -34246,18 +34287,72 @@ const convertCompute = (value, from, to, opts) => {
34246
34287
  if (cores < 0) return -1;
34247
34288
  return convertCores(cores, to, opts);
34248
34289
  };
34290
+ const isDigits = (s) => /^\d+$/.test(s);
34291
+ const isValidThousandGrouping = (parts) => {
34292
+ if (parts.length < 3) return false;
34293
+ if (parts.some((p) => p.length === 0)) return false;
34294
+ if (!parts.every(isDigits)) return false;
34295
+ if (parts[0].length < 1 || parts[0].length > 3) return false;
34296
+ for (let i = 1; i < parts.length; i++) {
34297
+ if (parts[i].length !== 3) return false;
34298
+ }
34299
+ return true;
34300
+ };
34301
+ const normalizeAutoNumber = (raw) => {
34302
+ let s = raw.trim();
34303
+ s = s.replace(/[\s\u00A0\u202F_]/g, "");
34304
+ s = s.replace(/'/g, "");
34305
+ const hasDot = s.includes(".");
34306
+ const hasComma = s.includes(",");
34307
+ if (hasDot && hasComma) {
34308
+ const lastDot = s.lastIndexOf(".");
34309
+ const lastComma = s.lastIndexOf(",");
34310
+ const decimal = lastDot > lastComma ? "." : ",";
34311
+ const group = decimal === "." ? "," : ".";
34312
+ s = s.split(group).join("");
34313
+ if (decimal === ",") s = s.replace(/,/g, ".");
34314
+ return s;
34315
+ }
34316
+ if (hasComma && !hasDot) {
34317
+ const parts = s.split(",");
34318
+ if (parts.length > 2) {
34319
+ if (!isValidThousandGrouping(parts)) return null;
34320
+ return parts.join("");
34321
+ }
34322
+ const [intPart, fracPart = ""] = parts;
34323
+ if (!isDigits(intPart || "0") || fracPart && !isDigits(fracPart)) return null;
34324
+ if (fracPart.length === 3 && intPart.length >= 1) {
34325
+ return intPart + fracPart;
34326
+ }
34327
+ return intPart + (fracPart ? "." + fracPart : "");
34328
+ }
34329
+ if (hasDot && !hasComma) {
34330
+ const parts = s.split(".");
34331
+ if (parts.length > 2) {
34332
+ if (!isValidThousandGrouping(parts)) return null;
34333
+ return parts.join("");
34334
+ }
34335
+ const [intPart, fracPart = ""] = parts;
34336
+ if (!isDigits(intPart || "0") || fracPart && !isDigits(fracPart)) return null;
34337
+ if (fracPart.length === 3 && intPart.length >= 1) {
34338
+ return intPart + fracPart;
34339
+ }
34340
+ return intPart + (fracPart ? "." + fracPart : "");
34341
+ }
34342
+ if (!isDigits(s.replace(/^[+-]/, ""))) return null;
34343
+ return s;
34344
+ };
34249
34345
  const parseCoresWithUnit = (input) => {
34250
34346
  const trimmed = input.trim();
34251
34347
  if (!trimmed) return null;
34252
- const match = trimmed.match(/^([+-]?\d+(?:\.\d+)?)(?:\s*([a-zA-Zµ]+))?$/);
34348
+ const match = trimmed.match(/^([+-]?\d(?:[\d\s\u00A0\u202F.,'_]*\d)?)(?:\s*([a-zA-Zµ]+))?$/);
34253
34349
  if (!match) return null;
34254
- const [, numPart, unitPart] = match;
34255
- const value = Number(numPart);
34350
+ const [, numPartRaw, unitPart] = match;
34351
+ const normalized = normalizeAutoNumber(numPartRaw);
34352
+ if (!normalized) return null;
34353
+ const value = Number(normalized);
34256
34354
  if (!Number.isFinite(value)) return null;
34257
- if (unitPart) {
34258
- return { value, unit: unitPart };
34259
- }
34260
- return { value };
34355
+ return unitPart ? { value, unit: unitPart } : { value };
34261
34356
  };
34262
34357
 
34263
34358
  const DynamicRendererInner = ({
@@ -42950,7 +43045,7 @@ const BigText$1 = styled.div`
42950
43045
  font-size: 16px;
42951
43046
  line-height: 24px;
42952
43047
  `;
42953
- const Styled$s = {
43048
+ const Styled$u = {
42954
43049
  BorderRadiusContainer: BorderRadiusContainer$1,
42955
43050
  ControlsRowContainer: ControlsRowContainer$1,
42956
43051
  BigText: BigText$1
@@ -43074,7 +43169,7 @@ const YamlEditorSingleton$1 = ({
43074
43169
  };
43075
43170
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
43076
43171
  contextHolder,
43077
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$s.BorderRadiusContainer, { $designNewLayoutHeight: designNewLayoutHeight, $colorBorder: token.colorBorder, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
43172
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$u.BorderRadiusContainer, { $designNewLayoutHeight: designNewLayoutHeight, $colorBorder: token.colorBorder, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
43078
43173
  Ft$1,
43079
43174
  {
43080
43175
  defaultLanguage: "yaml",
@@ -43093,7 +43188,7 @@ const YamlEditorSingleton$1 = ({
43093
43188
  }
43094
43189
  }
43095
43190
  ) }),
43096
- !readOnly && /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$s.ControlsRowContainer, { $bgColor: token.colorPrimaryBg, $designNewLayout: designNewLayout, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Flex, { gap: designNewLayout ? 10 : 16, align: "center", children: [
43191
+ !readOnly && /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$u.ControlsRowContainer, { $bgColor: token.colorPrimaryBg, $designNewLayout: designNewLayout, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Flex, { gap: designNewLayout ? 10 : 16, align: "center", children: [
43097
43192
  /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { type: "primary", onClick: onSubmit, loading: isLoading, children: "Submit" }),
43098
43193
  backlink && /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { onClick: () => navigate(backlink), children: "Cancel" }),
43099
43194
  /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { onClick: handleReload, children: "Reload" })
@@ -43104,7 +43199,7 @@ const YamlEditorSingleton$1 = ({
43104
43199
  open: !!error,
43105
43200
  onOk: () => setError(void 0),
43106
43201
  onCancel: () => setError(void 0),
43107
- title: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography.Text, { type: "danger", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$s.BigText, { children: "Error!" }) }),
43202
+ title: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography.Text, { type: "danger", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$u.BigText, { children: "Error!" }) }),
43108
43203
  cancelButtonProps: { style: { display: "none" } },
43109
43204
  children: [
43110
43205
  "An error has occurred: ",
@@ -43220,7 +43315,7 @@ const YamlEditorSingleton = ({
43220
43315
  const VisibilityContainer$2 = styled.div`
43221
43316
  display: ${({ $hidden }) => $hidden ? "none" : "block"};
43222
43317
  `;
43223
- const Styled$r = {
43318
+ const Styled$t = {
43224
43319
  VisibilityContainer: VisibilityContainer$2
43225
43320
  };
43226
43321
 
@@ -43243,7 +43338,7 @@ const VisibilityContainer$1 = ({
43243
43338
  if (isMultiqueryLoading) {
43244
43339
  return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Loading multiquery" });
43245
43340
  }
43246
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$r.VisibilityContainer, { $hidden: valuePrepared === "~undefined-value~", children });
43341
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$t.VisibilityContainer, { $hidden: valuePrepared === "~undefined-value~", children });
43247
43342
  };
43248
43343
 
43249
43344
  const unknownToString = (value) => {
@@ -43482,7 +43577,7 @@ const useUpdateIsTouchedPersisted = () => {
43482
43577
  return dispatch;
43483
43578
  };
43484
43579
 
43485
- const Container$2 = styled.div`
43580
+ const Container$3 = styled.div`
43486
43581
  display: flex;
43487
43582
  flex-direction: column;
43488
43583
  gap: ${({ $designNewLayout }) => $designNewLayout ? "4px" : "8px"};
@@ -43508,8 +43603,8 @@ const Content$1 = styled.div`
43508
43603
  display: ${({ $isOpen }) => $isOpen ? "block" : "none"};
43509
43604
  padding: ${({ $designNewLayout }) => $designNewLayout ? "0 0 0 6px" : "4px"};
43510
43605
  `;
43511
- const Styled$q = {
43512
- Container: Container$2,
43606
+ const Styled$s = {
43607
+ Container: Container$3,
43513
43608
  TitleBar,
43514
43609
  Content: Content$1
43515
43610
  };
@@ -43535,14 +43630,14 @@ const CustomCollapse = ({
43535
43630
  }
43536
43631
  };
43537
43632
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
43538
- Styled$q.Container,
43633
+ Styled$s.Container,
43539
43634
  {
43540
43635
  $designNewLayout: designNewLayout,
43541
43636
  $borderColor: token.colorBorder,
43542
43637
  $bgColor: token.colorBgContainer,
43543
43638
  children: [
43544
43639
  /* @__PURE__ */ jsxRuntimeExports.jsxs(Flex, { justify: "space-between", children: [
43545
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Styled$q.TitleBar, { onClick: () => toggleCollapse(), children: [
43640
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Styled$s.TitleBar, { onClick: () => toggleCollapse(), children: [
43546
43641
  !designNewLayout && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: isOpen ? /* @__PURE__ */ jsxRuntimeExports.jsx(CaretDownOutlined, { size: 14 }) : /* @__PURE__ */ jsxRuntimeExports.jsx(CaretRightOutlined, { size: 14 }) }),
43547
43642
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: title }),
43548
43643
  designNewLayout && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: isOpen ? /* @__PURE__ */ jsxRuntimeExports.jsx(DownIcon, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(UpIcon, {}) })
@@ -43553,7 +43648,7 @@ const CustomCollapse = ({
43553
43648
  persistedCheckbox
43554
43649
  ] })
43555
43650
  ] }),
43556
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$q.Content, { $isOpen: isOpen, $designNewLayout: designNewLayout, children })
43651
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$s.Content, { $isOpen: isOpen, $designNewLayout: designNewLayout, children })
43557
43652
  ]
43558
43653
  }
43559
43654
  );
@@ -43587,13 +43682,13 @@ const CustomSizeTitle = styled.div`
43587
43682
  const Content = styled.div`
43588
43683
  padding: ${({ $designNewLayout }) => $designNewLayout ? "0 0 0 6px" : "4px"};
43589
43684
  `;
43590
- const Styled$p = {
43685
+ const Styled$r = {
43591
43686
  Content
43592
43687
  };
43593
43688
 
43594
43689
  const ArrayInsideContainer = ({ children }) => {
43595
43690
  const designNewLayout = useDesignNewLayout();
43596
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$p.Content, { $designNewLayout: designNewLayout, children });
43691
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$r.Content, { $designNewLayout: designNewLayout, children });
43597
43692
  };
43598
43693
 
43599
43694
  const includesPath = (haystack, needle) => haystack.some((h) => h.length === needle.length && h.every((seg, i) => seg === String(needle[i])));
@@ -44146,7 +44241,7 @@ const LabelsToSearchParams = ({ data, children }) => {
44146
44241
  const ResetedFormList$3 = styled(Form.List)`
44147
44242
  margin-bottom: 8px;
44148
44243
  `;
44149
- const Styled$o = {
44244
+ const Styled$q = {
44150
44245
  ResetedFormList: ResetedFormList$3
44151
44246
  };
44152
44247
 
@@ -44231,7 +44326,7 @@ const EditModal$2 = ({
44231
44326
  /* @__PURE__ */ jsxRuntimeExports.jsx(Col, { span: cols[3], children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", {}) })
44232
44327
  ] }),
44233
44328
  /* @__PURE__ */ jsxRuntimeExports.jsx(Spacer$1, { $space: 10, $samespace: true }),
44234
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$o.ResetedFormList, { name: "taints", children: (fields, { add, remove }) => /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
44329
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$q.ResetedFormList, { name: "taints", children: (fields, { add, remove }) => /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
44235
44330
  fields.map(({ key, name, ...restField }) => /* @__PURE__ */ jsxRuntimeExports.jsxs(Row, { gutter: [16, 16], children: [
44236
44331
  /* @__PURE__ */ jsxRuntimeExports.jsx(Col, { span: cols[0], children: /* @__PURE__ */ jsxRuntimeExports.jsx(
44237
44332
  ResetedFormItem$1,
@@ -44471,7 +44566,7 @@ const Taints = ({ data, children }) => {
44471
44566
  const ResetedFormList$2 = styled(Form.List)`
44472
44567
  margin-bottom: 8px;
44473
44568
  `;
44474
- const Styled$n = {
44569
+ const Styled$p = {
44475
44570
  ResetedFormList: ResetedFormList$2
44476
44571
  };
44477
44572
 
@@ -44566,7 +44661,7 @@ const EditModal$1 = ({
44566
44661
  /* @__PURE__ */ jsxRuntimeExports.jsx(Col, { span: cols[4], children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", {}) })
44567
44662
  ] }),
44568
44663
  /* @__PURE__ */ jsxRuntimeExports.jsx(Spacer$1, { $space: 10, $samespace: true }),
44569
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$n.ResetedFormList, { name: "tolerations", children: (fields, { add, remove }) => /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
44664
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$p.ResetedFormList, { name: "tolerations", children: (fields, { add, remove }) => /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
44570
44665
  fields.map(({ key, name, ...restField }) => /* @__PURE__ */ jsxRuntimeExports.jsxs(Row, { gutter: [16, 16], children: [
44571
44666
  /* @__PURE__ */ jsxRuntimeExports.jsx(Col, { span: cols[0], children: /* @__PURE__ */ jsxRuntimeExports.jsx(
44572
44667
  ResetedFormItem$1,
@@ -44848,7 +44943,7 @@ const Tolerations = ({
44848
44943
  const ResetedFormList$1 = styled(Form.List)`
44849
44944
  margin-bottom: 8px;
44850
44945
  `;
44851
- const Styled$m = {
44946
+ const Styled$o = {
44852
44947
  ResetedFormList: ResetedFormList$1
44853
44948
  };
44854
44949
 
@@ -44938,7 +45033,7 @@ const EditModal = ({
44938
45033
  /* @__PURE__ */ jsxRuntimeExports.jsx(Col, { span: cols[2], children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", {}) })
44939
45034
  ] }),
44940
45035
  /* @__PURE__ */ jsxRuntimeExports.jsx(Spacer$1, { $space: 10, $samespace: true }),
44941
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$m.ResetedFormList, { name: "annotations", children: (fields, { add, remove }) => /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
45036
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$o.ResetedFormList, { name: "annotations", children: (fields, { add, remove }) => /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
44942
45037
  fields.map(({ key, name, ...restField }) => /* @__PURE__ */ jsxRuntimeExports.jsxs(Row, { gutter: [16, 16], children: [
44943
45038
  /* @__PURE__ */ jsxRuntimeExports.jsx(Col, { span: cols[0], children: /* @__PURE__ */ jsxRuntimeExports.jsx(
44944
45039
  ResetedFormItem$1,
@@ -46087,7 +46182,7 @@ const NotificationOverrides = createGlobalStyle`
46087
46182
  margin-bottom: 0 !important;
46088
46183
  }
46089
46184
  `;
46090
- const Styled$l = {
46185
+ const Styled$n = {
46091
46186
  NoSelect,
46092
46187
  DisabledInput,
46093
46188
  NotificationOverrides
@@ -46153,10 +46248,10 @@ const SecretBase64Plain = ({ data }) => {
46153
46248
  }
46154
46249
  };
46155
46250
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: containerStyle, children: [
46156
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$l.NotificationOverrides, {}),
46251
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$n.NotificationOverrides, {}),
46157
46252
  /* @__PURE__ */ jsxRuntimeExports.jsxs(Flex, { gap: 8, ...flexProps, children: [
46158
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$l.NoSelect, { style: inputContainerStyle, children: niceLooking ? /* @__PURE__ */ jsxRuntimeExports.jsx(te, { theme, hidden, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
46159
- Styled$l.DisabledInput,
46253
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$n.NoSelect, { style: inputContainerStyle, children: niceLooking ? /* @__PURE__ */ jsxRuntimeExports.jsx(te, { theme, hidden, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
46254
+ Styled$n.DisabledInput,
46160
46255
  {
46161
46256
  $hidden: hidden,
46162
46257
  ref: inputRef,
@@ -46171,7 +46266,7 @@ const SecretBase64Plain = ({ data }) => {
46171
46266
  value: decodedText
46172
46267
  }
46173
46268
  ) }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
46174
- Styled$l.DisabledInput,
46269
+ Styled$n.DisabledInput,
46175
46270
  {
46176
46271
  $hidden: hidden,
46177
46272
  ref: inputRef,
@@ -46205,7 +46300,7 @@ const RoundSpan = styled.span`
46205
46300
  letter-spacing: 0.02em;
46206
46301
  box-sizing: content-box;
46207
46302
  `;
46208
- const Styled$k = {
46303
+ const Styled$m = {
46209
46304
  RoundSpan
46210
46305
  };
46211
46306
 
@@ -46244,7 +46339,7 @@ const ResourceBadge = ({ data }) => {
46244
46339
  multiQueryData
46245
46340
  }) : getUppercase(parsedValue);
46246
46341
  const bgColor = hslFromString(parsedValue, theme);
46247
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$k.RoundSpan, { $bgColor: bgColor, style, children: parsedAbbreviation });
46342
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$m.RoundSpan, { $bgColor: bgColor, style, children: parsedAbbreviation });
46248
46343
  };
46249
46344
 
46250
46345
  const serializeLabelsWithNoEncoding = (input) => {
@@ -46922,6 +47017,50 @@ const TogglerSegmented = ({
46922
47017
  ] });
46923
47018
  };
46924
47019
 
47020
+ const VMVNC$1 = ({
47021
+ data,
47022
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
47023
+ children
47024
+ }) => {
47025
+ const { data: multiQueryData, isLoading: isMultiqueryLoading } = useMultiQuery();
47026
+ const {
47027
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
47028
+ id,
47029
+ cluster,
47030
+ namespace,
47031
+ vmName,
47032
+ forcedFullWsPath,
47033
+ substractHeight,
47034
+ ...props
47035
+ } = data;
47036
+ const partsOfUrl = usePartsOfUrl();
47037
+ const replaceValues = partsOfUrl.partsOfUrl.reduce((acc, value, index) => {
47038
+ acc[index.toString()] = value;
47039
+ return acc;
47040
+ }, {});
47041
+ const clusterPrepared = cluster ? parseAll({ text: cluster, replaceValues, multiQueryData }) : void 0;
47042
+ const namespacePrepared = namespace ? parseAll({ text: namespace, replaceValues, multiQueryData }) : void 0;
47043
+ const vmNamePrepared = vmName ? parseAll({ text: vmName, replaceValues, multiQueryData }) : void 0;
47044
+ const forcedFullWsPathPrepared = forcedFullWsPath ? parseAll({ text: forcedFullWsPath, replaceValues, multiQueryData }) : void 0;
47045
+ if (isMultiqueryLoading) {
47046
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Loading multiquery" });
47047
+ }
47048
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
47049
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
47050
+ VMVNC,
47051
+ {
47052
+ cluster: clusterPrepared,
47053
+ namespace: namespacePrepared,
47054
+ vmName: vmNamePrepared,
47055
+ forcedFullWsPath: forcedFullWsPathPrepared,
47056
+ substractHeight: substractHeight || 400,
47057
+ ...props
47058
+ }
47059
+ ),
47060
+ children
47061
+ ] });
47062
+ };
47063
+
46925
47064
  const DynamicComponents = {
46926
47065
  DefaultDiv,
46927
47066
  antdText: AntdText,
@@ -46962,7 +47101,8 @@ const DynamicComponents = {
46962
47101
  Events: Events$1,
46963
47102
  OwnerRefs,
46964
47103
  Toggler,
46965
- TogglerSegmented
47104
+ TogglerSegmented,
47105
+ VMVNC: VMVNC$1
46966
47106
  };
46967
47107
 
46968
47108
  const prepareUrlsToFetchForDynamicRenderer = ({
@@ -47156,7 +47296,6 @@ const getEnrichedColumns = ({
47156
47296
  const isSortersAndFiltersDisabled = possibleAdditionalPrinterColumnsCustomSortersAndFiltersType === "disabled";
47157
47297
  const isSortersAndFiltersCPU = possibleAdditionalPrinterColumnsCustomSortersAndFiltersType === "cpu";
47158
47298
  const isSortersAndFiltersMemory = possibleAdditionalPrinterColumnsCustomSortersAndFiltersType === "memory";
47159
- console.log(`key: ${el.key}, isSortersAndFiltersMemory: ${isSortersAndFiltersMemory}`);
47160
47299
  const possibleUndefinedValue = additionalPrinterColumnsUndefinedValues?.find(({ key }) => key === el.key)?.value;
47161
47300
  const possibleTrimLength = additionalPrinterColumnsTrimLengths?.find(({ key }) => key === el.key)?.value;
47162
47301
  const possibleColWidth = additionalPrinterColumnsColWidths?.find(({ key }) => key === el.key)?.value;
@@ -47172,7 +47311,6 @@ const getEnrichedColumns = ({
47172
47311
  };
47173
47312
  const getMemoryInBytes = (record) => {
47174
47313
  const text = getCellTextFromDOM(record);
47175
- console.log(`text from cell ${text}`);
47176
47314
  if (!text) return 0;
47177
47315
  const parsed = parseValueWithUnit(text);
47178
47316
  if (!parsed) return 0;
@@ -47273,7 +47411,6 @@ const getEnrichedColumns = ({
47273
47411
  if (isSortersAndFiltersMemory) {
47274
47412
  const aBytes = getMemoryInBytes(a);
47275
47413
  const bBytes = getMemoryInBytes(b);
47276
- console.log(`isSortersAndFiltersMemory ${aBytes}/${bBytes}`);
47277
47414
  return safeNumericCompare(aBytes, bBytes);
47278
47415
  }
47279
47416
  if (isSortersAndFiltersCPU) {
@@ -48394,7 +48531,7 @@ const BorderRadiusContainer = styled.div`
48394
48531
  border-radius: 8px;
48395
48532
  }
48396
48533
  `;
48397
- const Styled$j = {
48534
+ const Styled$l = {
48398
48535
  BorderRadiusContainer
48399
48536
  };
48400
48537
 
@@ -48441,7 +48578,7 @@ const YamlEditor = ({ theme: theme$1, currentValues, onChange, editorUri }) => {
48441
48578
  }
48442
48579
  }
48443
48580
  }, [yamlData, editorUri]);
48444
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$j.BorderRadiusContainer, { $colorBorder: token.colorBorder, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
48581
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$l.BorderRadiusContainer, { $colorBorder: token.colorBorder, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
48445
48582
  Ft$1,
48446
48583
  {
48447
48584
  language: "yaml",
@@ -49198,7 +49335,7 @@ const fromBase64 = (b64) => {
49198
49335
  const MarginBottom = styled.div`
49199
49336
  margin-bottom: 8px;
49200
49337
  `;
49201
- const Styled$i = {
49338
+ const Styled$k = {
49202
49339
  MarginBottom
49203
49340
  };
49204
49341
 
@@ -49264,7 +49401,7 @@ const FormStringMultilineInput = ({
49264
49401
  },
49265
49402
  arrKey !== void 0 ? arrKey : Array.isArray(name) ? name.slice(-1)[0] : name
49266
49403
  ),
49267
- isBase64 && /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$i.MarginBottom, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
49404
+ isBase64 && /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$k.MarginBottom, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
49268
49405
  Input.TextArea,
49269
49406
  {
49270
49407
  placeholder: getStringByName(name),
@@ -49291,7 +49428,7 @@ const CrossContainer = styled.div`
49291
49428
  cursor: pointer;
49292
49429
  padding-top: 11px;
49293
49430
  `;
49294
- const Styled$h = {
49431
+ const Styled$j = {
49295
49432
  SwitchAndCrossContainer,
49296
49433
  CrossContainer
49297
49434
  };
@@ -49316,7 +49453,7 @@ const FormBooleanInput = ({
49316
49453
  onRemoveByMinus && /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { size: "small", type: "text", onClick: onRemoveByMinus, children: /* @__PURE__ */ jsxRuntimeExports.jsx(MinusIcon, {}) })
49317
49454
  ] })
49318
49455
  ] }),
49319
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Styled$h.SwitchAndCrossContainer, { children: [
49456
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Styled$j.SwitchAndCrossContainer, { children: [
49320
49457
  /* @__PURE__ */ jsxRuntimeExports.jsx(
49321
49458
  ResetedFormItem$1,
49322
49459
  {
@@ -49326,7 +49463,7 @@ const FormBooleanInput = ({
49326
49463
  arrKey !== void 0 ? arrKey : Array.isArray(name) ? name.slice(-1)[0] : name
49327
49464
  ),
49328
49465
  /* @__PURE__ */ jsxRuntimeExports.jsx(
49329
- Styled$h.CrossContainer,
49466
+ Styled$j.CrossContainer,
49330
49467
  {
49331
49468
  onClick: () => {
49332
49469
  if (makeValueUndefined) {
@@ -49514,7 +49651,7 @@ const FormArrayHeader = ({
49514
49651
  ] });
49515
49652
  };
49516
49653
 
49517
- const Container$1 = styled.div`
49654
+ const Container$2 = styled.div`
49518
49655
  height: 140px;
49519
49656
  border: 1px solid ${({ $colorBorder }) => $colorBorder};
49520
49657
  border-radius: 8px;
@@ -49525,8 +49662,8 @@ const Container$1 = styled.div`
49525
49662
  border-radius: 8px;
49526
49663
  }
49527
49664
  `;
49528
- const Styled$g = {
49529
- Container: Container$1
49665
+ const Styled$i = {
49666
+ Container: Container$2
49530
49667
  };
49531
49668
 
49532
49669
  const FormInlineYamlEditor = ({ path, persistedControls, externalValue }) => {
@@ -49579,7 +49716,7 @@ const FormInlineYamlEditor = ({ path, persistedControls, externalValue }) => {
49579
49716
  }
49580
49717
  }
49581
49718
  }, [yamlText, modelUri]);
49582
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$g.Container, { $colorBorder: token.colorBorder, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
49719
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$i.Container, { $colorBorder: token.colorBorder, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
49583
49720
  Ft$1,
49584
49721
  {
49585
49722
  language: "yaml",
@@ -49718,7 +49855,7 @@ const getSortedPropertyKeys = ({
49718
49855
  });
49719
49856
  };
49720
49857
 
49721
- const Container = styled.div`
49858
+ const Container$1 = styled.div`
49722
49859
  display: grid;
49723
49860
  grid-template-columns: repeat(2, 1fr);
49724
49861
  gap: ${({ $designNewLayout }) => $designNewLayout ? "36px" : "8px"};
@@ -49746,9 +49883,9 @@ const BigText = styled.div`
49746
49883
  font-size: 16px;
49747
49884
  line-height: 24px;
49748
49885
  `;
49749
- const Styled$f = {
49886
+ const Styled$h = {
49750
49887
  ResetedFormList,
49751
- Container,
49888
+ Container: Container$1,
49752
49889
  OverflowContainer: OverflowContainer$1,
49753
49890
  ControlsRowContainer,
49754
49891
  DebugContainer,
@@ -50028,7 +50165,7 @@ const getArrayFormItemFromSwagger = ({
50028
50165
  }
50029
50166
  ),
50030
50167
  /* @__PURE__ */ jsxRuntimeExports.jsx(
50031
- Styled$f.ResetedFormList,
50168
+ Styled$h.ResetedFormList,
50032
50169
  {
50033
50170
  name: arrName || name,
50034
50171
  rules: !forceNonRequired && required?.includes(getStringByName(name)) ? [
@@ -51469,8 +51606,8 @@ const BlackholeForm = ({
51469
51606
  setPersistedKeys([...persistedKeys.filter((arr) => JSON.stringify(arr) !== JSON.stringify(value))]);
51470
51607
  };
51471
51608
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
51472
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Styled$f.Container, { $designNewLayout: designNewLayout, $designNewLayoutHeight: designNewLayoutHeight, children: [
51473
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$f.OverflowContainer, { ref: overflowRef, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
51609
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Styled$h.Container, { $designNewLayout: designNewLayout, $designNewLayoutHeight: designNewLayoutHeight, children: [
51610
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$h.OverflowContainer, { ref: overflowRef, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
51474
51611
  Form,
51475
51612
  {
51476
51613
  form,
@@ -51524,7 +51661,7 @@ const BlackholeForm = ({
51524
51661
  ) })
51525
51662
  ] }),
51526
51663
  /* @__PURE__ */ jsxRuntimeExports.jsx(FlexGrow, {}),
51527
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$f.ControlsRowContainer, { $bgColor: token.colorPrimaryBg, $designNewLayout: designNewLayout, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Flex, { gap: designNewLayout ? 10 : 16, align: "center", children: [
51664
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$h.ControlsRowContainer, { $bgColor: token.colorPrimaryBg, $designNewLayout: designNewLayout, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Flex, { gap: designNewLayout ? 10 : 16, align: "center", children: [
51528
51665
  /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { type: "primary", onClick: onSubmit, loading: isLoading, children: "Submit" }),
51529
51666
  backlink && /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { onClick: () => navigate(backlink), children: "Cancel" }),
51530
51667
  /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { onClick: () => setIsDebugModalOpen(true), icon: /* @__PURE__ */ jsxRuntimeExports.jsx(BugOutlined, {}) }),
@@ -51536,7 +51673,7 @@ const BlackholeForm = ({
51536
51673
  open: !!error,
51537
51674
  onOk: () => setError(void 0),
51538
51675
  onCancel: () => setError(void 0),
51539
- title: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography.Text, { type: "danger", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$f.BigText, { children: "Error!" }) }),
51676
+ title: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography.Text, { type: "danger", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$h.BigText, { children: "Error!" }) }),
51540
51677
  cancelButtonProps: { style: { display: "none" } },
51541
51678
  children: [
51542
51679
  "An error has occurred: ",
@@ -51552,7 +51689,7 @@ const BlackholeForm = ({
51552
51689
  onCancel: () => setIsDebugModalOpen(false),
51553
51690
  title: "Debug for properties",
51554
51691
  width: "90vw",
51555
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$f.DebugContainer, { $designNewLayoutHeight: designNewLayoutHeight, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Suspense, { fallback: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(
51692
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$h.DebugContainer, { $designNewLayoutHeight: designNewLayoutHeight, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Suspense, { fallback: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(
51556
51693
  Editor,
51557
51694
  {
51558
51695
  defaultLanguage: "json",
@@ -51607,7 +51744,7 @@ const BlackholeFormProvider = ({
51607
51744
  }
51608
51745
  if (data2.result === "error") {
51609
51746
  setIsError(data2.error);
51610
- console.log(data2.error);
51747
+ console.warn(data2.error);
51611
51748
  fallbackToManualMode();
51612
51749
  } else {
51613
51750
  setPreparedData({
@@ -51650,15 +51787,15 @@ const BlackholeFormProvider = ({
51650
51787
  }
51651
51788
  );
51652
51789
  }
51790
+ if (isError) {
51791
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Alert, { message: isError, type: "error" });
51792
+ }
51653
51793
  if (!preparedData?.properties && !isError) {
51654
51794
  return null;
51655
51795
  }
51656
51796
  if (!preparedData?.properties) {
51657
51797
  return null;
51658
51798
  }
51659
- if (isError) {
51660
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Alert, { message: isError, type: "error" });
51661
- }
51662
51799
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
51663
51800
  BlackholeForm,
51664
51801
  {
@@ -51689,7 +51826,7 @@ const BlackholeFormProvider = ({
51689
51826
  );
51690
51827
  };
51691
51828
 
51692
- const CustomCard$5 = styled(Card$1)`
51829
+ const CustomCard$6 = styled(Card$1)`
51693
51830
  display: flex;
51694
51831
  justify-content: center;
51695
51832
  align-items: center;
@@ -51709,12 +51846,12 @@ const CustomCard$5 = styled(Card$1)`
51709
51846
  padding: 8px;
51710
51847
  }
51711
51848
  `;
51712
- const Styled$e = {
51713
- CustomCard: CustomCard$5
51849
+ const Styled$g = {
51850
+ CustomCard: CustomCard$6
51714
51851
  };
51715
51852
 
51716
51853
  const AddCard = ({ onAddClick }) => {
51717
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$e.CustomCard, { onClick: onAddClick, children: /* @__PURE__ */ jsxRuntimeExports.jsx(PlusOutlined, {}) });
51854
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$g.CustomCard, { onClick: onAddClick, children: /* @__PURE__ */ jsxRuntimeExports.jsx(PlusOutlined, {}) });
51718
51855
  };
51719
51856
 
51720
51857
  const byteToHex = [];
@@ -51931,7 +52068,7 @@ const getCreatePathToNav = ({
51931
52068
  return `/${baseprefix}/${cluster}/${namespace}/forms/builtin/${apiVersion}/${plural}?backlink=${window.location.pathname}`;
51932
52069
  };
51933
52070
 
51934
- const CustomCard$4 = styled(Card$1)`
52071
+ const CustomCard$5 = styled(Card$1)`
51935
52072
  position: relative;
51936
52073
  width: 238px;
51937
52074
  overflow-x: auto;
@@ -52002,8 +52139,8 @@ const EditButtonContainer = styled.div`
52002
52139
  bottom: 6px;
52003
52140
  right: 6px;
52004
52141
  `;
52005
- const Styled$d = {
52006
- CustomCard: CustomCard$4,
52142
+ const Styled$f = {
52143
+ CustomCard: CustomCard$5,
52007
52144
  ImageContainer,
52008
52145
  OverflowContainer,
52009
52146
  TitleContainer,
@@ -52074,14 +52211,14 @@ const MarketplaceCard = ({
52074
52211
  return null;
52075
52212
  }
52076
52213
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
52077
- Styled$d.CustomCard,
52214
+ Styled$f.CustomCard,
52078
52215
  {
52079
52216
  $isDisabled: disabled,
52080
52217
  $hoverColor: token.colorPrimary,
52081
52218
  onClick: () => disabled ? null : navigate(navigateUrl),
52082
52219
  children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Flex, { vertical: true, style: { width: "100%", height: "100%" }, justify: "spaceBetween", children: [
52083
52220
  /* @__PURE__ */ jsxRuntimeExports.jsxs(Flex, { justify: "space-between", children: [
52084
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$d.ImageContainer, { dangerouslySetInnerHTML: { __html: decodedIcon } }),
52221
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$f.ImageContainer, { dangerouslySetInnerHTML: { __html: decodedIcon } }),
52085
52222
  isEditMode && /* @__PURE__ */ jsxRuntimeExports.jsx(
52086
52223
  "div",
52087
52224
  {
@@ -52102,8 +52239,8 @@ const MarketplaceCard = ({
52102
52239
  }
52103
52240
  )
52104
52241
  ] }),
52105
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Styled$d.OverflowContainer, { children: [
52106
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Styled$d.TitleContainer, { children: [
52242
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Styled$f.OverflowContainer, { children: [
52243
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Styled$f.TitleContainer, { children: [
52107
52244
  name,
52108
52245
  " ",
52109
52246
  addedMode && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { children: [
@@ -52111,10 +52248,10 @@ const MarketplaceCard = ({
52111
52248
  k8sList?.items?.length
52112
52249
  ] })
52113
52250
  ] }),
52114
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$d.TagsContainer, { children: tags.map((tag) => /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$d.CustomTag, { children: tag }, tag)) }),
52115
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$d.DescriptionContainer, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography.Text, { type: "secondary", children: description }) })
52251
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$f.TagsContainer, { children: tags.map((tag) => /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$f.CustomTag, { children: tag }, tag)) }),
52252
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$f.DescriptionContainer, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography.Text, { type: "secondary", children: description }) })
52116
52253
  ] }),
52117
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$d.EditButtonContainer, { children: isEditMode && /* @__PURE__ */ jsxRuntimeExports.jsx(
52254
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$f.EditButtonContainer, { children: isEditMode && /* @__PURE__ */ jsxRuntimeExports.jsx(
52118
52255
  "div",
52119
52256
  {
52120
52257
  onClick: (e) => {
@@ -52172,7 +52309,7 @@ const BigValue = styled.div`
52172
52309
  line-clamp: 1;
52173
52310
  word-break: break-all;
52174
52311
  `;
52175
- const Styled$c = {
52312
+ const Styled$e = {
52176
52313
  BigValue
52177
52314
  };
52178
52315
 
@@ -52282,7 +52419,7 @@ const MarketPlace = ({
52282
52419
  /* @__PURE__ */ jsxRuntimeExports.jsxs(Flex, { justify: "space-between", children: [
52283
52420
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Flex, { gap: 12, vertical: true, children: [
52284
52421
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography.Text, { type: "secondary", children: "Available Products" }) }),
52285
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$c.BigValue, { children: "Marketplace" }) })
52422
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$e.BigValue, { children: "Marketplace" }) })
52286
52423
  ] }) }),
52287
52424
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Flex, { gap: 12, vertical: true, children: [
52288
52425
  /* @__PURE__ */ jsxRuntimeExports.jsx(SearchTextInput, { uniqueTags, selectedTags, onSelectedTags: setSelectedTags }),
@@ -52488,7 +52625,7 @@ styled.div`
52488
52625
  line-clamp: 1;
52489
52626
  word-break: break-all;
52490
52627
  `;
52491
- const Styled$b = {
52628
+ const Styled$d = {
52492
52629
  ActionMenuPlaceholder};
52493
52630
 
52494
52631
  const ProjectInfoCard = ({
@@ -52567,7 +52704,7 @@ const ProjectInfoCard = ({
52567
52704
  } : void 0,
52568
52705
  onUpdate: updatePermission.data?.status.allowed ? openUpdate : void 0
52569
52706
  }
52570
- ) : /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$b.ActionMenuPlaceholder, {}) }),
52707
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$d.ActionMenuPlaceholder, {}) }),
52571
52708
  /* @__PURE__ */ jsxRuntimeExports.jsx(DropdownAccessGroups, { accessGroups })
52572
52709
  ] }) })
52573
52710
  ] }),
@@ -52640,7 +52777,7 @@ var addonFit = {exports: {}};
52640
52777
 
52641
52778
  var addonFitExports = addonFit.exports;
52642
52779
 
52643
- const CustomCard$3 = styled.div`
52780
+ const CustomCard$4 = styled.div`
52644
52781
  visibility: ${({ $isVisible }) => $isVisible ? "visible" : "hidden"};
52645
52782
  height: calc(100vh - ${({ $substractHeight }) => $substractHeight}px);
52646
52783
 
@@ -52648,15 +52785,15 @@ const CustomCard$3 = styled.div`
52648
52785
  scrollbar-width: thin;
52649
52786
  }
52650
52787
  `;
52651
- const FullWidthDiv$3 = styled.div`
52788
+ const FullWidthDiv$4 = styled.div`
52652
52789
  display: flex;
52653
52790
  justify-content: center;
52654
52791
  width: 100%;
52655
52792
  height: calc(100vh - ${({ $substractHeight }) => $substractHeight}px);
52656
52793
  `;
52657
- const Styled$a = {
52658
- FullWidthDiv: FullWidthDiv$3,
52659
- CustomCard: CustomCard$3
52794
+ const Styled$c = {
52795
+ FullWidthDiv: FullWidthDiv$4,
52796
+ CustomCard: CustomCard$4
52660
52797
  };
52661
52798
 
52662
52799
  const XTerminal$2 = ({ endpoint, namespace, podName, container, substractHeight }) => {
@@ -52739,7 +52876,7 @@ const XTerminal$2 = ({ endpoint, namespace, podName, container, substractHeight
52739
52876
  };
52740
52877
  }, [terminal, endpoint, namespace, podName, container]);
52741
52878
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
52742
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$a.CustomCard, { $isVisible: !isLoading && !error, $substractHeight: substractHeight, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$a.FullWidthDiv, { $substractHeight: substractHeight, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: terminalRef, style: { width: "100%", height: "100%" } }) }) }),
52879
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$c.CustomCard, { $isVisible: !isLoading && !error, $substractHeight: substractHeight, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$c.FullWidthDiv, { $substractHeight: substractHeight, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: terminalRef, style: { width: "100%", height: "100%" } }) }) }),
52743
52880
  isLoading && !error && /* @__PURE__ */ jsxRuntimeExports.jsx(Spin, {}),
52744
52881
  error && /* @__PURE__ */ jsxRuntimeExports.jsx(Result, { status: "error", title: "Error", subTitle: JSON.stringify(error) })
52745
52882
  ] });
@@ -52750,7 +52887,7 @@ const CustomSelect$3 = styled.div`
52750
52887
  width: 200px;
52751
52888
  }
52752
52889
  `;
52753
- const Styled$9 = {
52890
+ const Styled$b = {
52754
52891
  CustomSelect: CustomSelect$3
52755
52892
  };
52756
52893
 
@@ -52761,7 +52898,7 @@ const PodTerminal = ({ cluster, namespace, podName, containers, substractHeight
52761
52898
  return /* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: "No Running Containers" });
52762
52899
  }
52763
52900
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
52764
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$9.CustomSelect, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
52901
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$b.CustomSelect, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
52765
52902
  Select,
52766
52903
  {
52767
52904
  placeholder: "Select container",
@@ -52790,7 +52927,7 @@ const PodTerminal = ({ cluster, namespace, podName, containers, substractHeight
52790
52927
  ] });
52791
52928
  };
52792
52929
 
52793
- const CustomCard$2 = styled.div`
52930
+ const CustomCard$3 = styled.div`
52794
52931
  visibility: ${({ $isVisible }) => $isVisible ? "visible" : "hidden"};
52795
52932
  height: calc(100vh - ${({ $substractHeight }) => $substractHeight}px);
52796
52933
 
@@ -52798,7 +52935,7 @@ const CustomCard$2 = styled.div`
52798
52935
  scrollbar-width: thin;
52799
52936
  }
52800
52937
  `;
52801
- const FullWidthDiv$2 = styled.div`
52938
+ const FullWidthDiv$3 = styled.div`
52802
52939
  display: flex;
52803
52940
  justify-content: center;
52804
52941
  width: 100%;
@@ -52813,9 +52950,9 @@ const ProgressContainer = styled.div`
52813
52950
  align-items: center;
52814
52951
  gap: 8px;
52815
52952
  `;
52816
- const Styled$8 = {
52817
- FullWidthDiv: FullWidthDiv$2,
52818
- CustomCard: CustomCard$2,
52953
+ const Styled$a = {
52954
+ FullWidthDiv: FullWidthDiv$3,
52955
+ CustomCard: CustomCard$3,
52819
52956
  ProgressContainer
52820
52957
  };
52821
52958
 
@@ -52945,8 +53082,8 @@ const XTerminal$1 = ({ endpoint, nodeName, profile, substractHeight }) => {
52945
53082
  };
52946
53083
  }, [terminal, endpoint, nodeName, profile]);
52947
53084
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
52948
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$8.CustomCard, { $isVisible: isTerminalVisible, $substractHeight: substractHeight, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$8.FullWidthDiv, { $substractHeight: substractHeight, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: terminalRef, style: { width: "100%", height: "100%" } }) }) }),
52949
- !isTerminalVisible && !error && isWarmingUp && /* @__PURE__ */ jsxRuntimeExports.jsxs(Styled$8.ProgressContainer, { $substractHeight: substractHeight, children: [
53085
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$a.CustomCard, { $isVisible: isTerminalVisible, $substractHeight: substractHeight, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$a.FullWidthDiv, { $substractHeight: substractHeight, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: terminalRef, style: { width: "100%", height: "100%" } }) }) }),
53086
+ !isTerminalVisible && !error && isWarmingUp && /* @__PURE__ */ jsxRuntimeExports.jsxs(Styled$a.ProgressContainer, { $substractHeight: substractHeight, children: [
52950
53087
  isLoading && /* @__PURE__ */ jsxRuntimeExports.jsx(Spin, {}),
52951
53088
  !isLoading && /* @__PURE__ */ jsxRuntimeExports.jsx(Progress, { type: "circle", percent: progressPercent }),
52952
53089
  warmupMessage && /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography.Text, { children: [
@@ -52967,7 +53104,7 @@ const CustomSelect$2 = styled.div`
52967
53104
  width: 200px;
52968
53105
  }
52969
53106
  `;
52970
- const Styled$7 = {
53107
+ const Styled$9 = {
52971
53108
  CustomSelect: CustomSelect$2
52972
53109
  };
52973
53110
 
@@ -52976,7 +53113,7 @@ const NodeTerminal = ({ cluster, nodeName, substractHeight, defaultProfile }) =>
52976
53113
  const endpoint = `/api/clusters/${cluster}/openapi-bff-ws/terminal/terminalNode/terminalNode`;
52977
53114
  const profiles = ["legacy", "general", "baseline", "netadmin", "restricted", "sysadmin"];
52978
53115
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
52979
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$7.CustomSelect, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
53116
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$9.CustomSelect, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
52980
53117
  Select,
52981
53118
  {
52982
53119
  placeholder: "Select profile",
@@ -53001,7 +53138,7 @@ const NodeTerminal = ({ cluster, nodeName, substractHeight, defaultProfile }) =>
53001
53138
  ] });
53002
53139
  };
53003
53140
 
53004
- const CustomCard$1 = styled.div`
53141
+ const CustomCard$2 = styled.div`
53005
53142
  visibility: ${({ $isVisible }) => $isVisible ? "visible" : "hidden"};
53006
53143
  height: calc(100vh - ${({ $substractHeight }) => $substractHeight}px);
53007
53144
 
@@ -53009,15 +53146,15 @@ const CustomCard$1 = styled.div`
53009
53146
  scrollbar-width: thin;
53010
53147
  }
53011
53148
  `;
53012
- const FullWidthDiv$1 = styled.div`
53149
+ const FullWidthDiv$2 = styled.div`
53013
53150
  display: flex;
53014
53151
  justify-content: center;
53015
53152
  width: 100%;
53016
53153
  height: calc(100vh - ${({ $substractHeight }) => $substractHeight}px);
53017
53154
  `;
53018
- const Styled$6 = {
53019
- FullWidthDiv: FullWidthDiv$1,
53020
- CustomCard: CustomCard$1
53155
+ const Styled$8 = {
53156
+ FullWidthDiv: FullWidthDiv$2,
53157
+ CustomCard: CustomCard$2
53021
53158
  };
53022
53159
 
53023
53160
  const XTerminal = ({ endpoint, namespace, podName, container, substractHeight }) => {
@@ -53096,7 +53233,7 @@ const XTerminal = ({ endpoint, namespace, podName, container, substractHeight })
53096
53233
  };
53097
53234
  }, [terminal, endpoint, namespace, podName, container]);
53098
53235
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
53099
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$6.CustomCard, { $isVisible: isTerminalVisible, $substractHeight: substractHeight, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$6.FullWidthDiv, { $substractHeight: substractHeight, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: terminalRef, style: { width: "100%", height: "100%" } }) }) }),
53236
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$8.CustomCard, { $isVisible: isTerminalVisible, $substractHeight: substractHeight, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$8.FullWidthDiv, { $substractHeight: substractHeight, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: terminalRef, style: { width: "100%", height: "100%" } }) }) }),
53100
53237
  isLoading && !error && /* @__PURE__ */ jsxRuntimeExports.jsx(Spin, {}),
53101
53238
  error && /* @__PURE__ */ jsxRuntimeExports.jsx(Result, { status: "error", title: "Error", subTitle: JSON.stringify(error) })
53102
53239
  ] });
@@ -53107,7 +53244,7 @@ const CustomSelect$1 = styled.div`
53107
53244
  width: 200px;
53108
53245
  }
53109
53246
  `;
53110
- const Styled$5 = {
53247
+ const Styled$7 = {
53111
53248
  CustomSelect: CustomSelect$1
53112
53249
  };
53113
53250
 
@@ -53118,7 +53255,7 @@ const PodLogs = ({ cluster, namespace, podName, containers, substractHeight }) =
53118
53255
  return /* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: "No Running Containers" });
53119
53256
  }
53120
53257
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
53121
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$5.CustomSelect, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
53258
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$7.CustomSelect, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
53122
53259
  Select,
53123
53260
  {
53124
53261
  placeholder: "Select container",
@@ -53147,12 +53284,12 @@ const PodLogs = ({ cluster, namespace, podName, containers, substractHeight }) =
53147
53284
  ] });
53148
53285
  };
53149
53286
 
53150
- const FullWidthDiv = styled.div`
53287
+ const FullWidthDiv$1 = styled.div`
53151
53288
  display: flex;
53152
53289
  justify-content: center;
53153
53290
  width: 100%;
53154
53291
  `;
53155
- const CustomCard = styled.div`
53292
+ const CustomCard$1 = styled.div`
53156
53293
  visibility: ${({ $isVisible }) => $isVisible ? "visible" : "hidden"};
53157
53294
  max-height: calc(100vh - 158px);
53158
53295
 
@@ -53168,9 +53305,9 @@ const CursorPointerDiv$1 = styled.div`
53168
53305
  cursor: pointer;
53169
53306
  user-select: none;
53170
53307
  `;
53171
- const Styled$4 = {
53172
- FullWidthDiv,
53173
- CustomCard,
53308
+ const Styled$6 = {
53309
+ FullWidthDiv: FullWidthDiv$1,
53310
+ CustomCard: CustomCard$1,
53174
53311
  VisibilityContainer,
53175
53312
  CursorPointerDiv: CursorPointerDiv$1
53176
53313
  };
@@ -53247,9 +53384,9 @@ const MonacoEditor = ({
53247
53384
  };
53248
53385
  }, [endpoint, namespace, podName, container, previous, editorReady]);
53249
53386
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
53250
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$4.VisibilityContainer, { $isVisible: isTerminalVisible, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Flex, { justify: "start", align: "center", gap: 16, children: [
53387
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$6.VisibilityContainer, { $isVisible: isTerminalVisible, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Flex, { justify: "start", align: "center", gap: 16, children: [
53251
53388
  /* @__PURE__ */ jsxRuntimeExports.jsx(
53252
- Styled$4.CursorPointerDiv,
53389
+ Styled$6.CursorPointerDiv,
53253
53390
  {
53254
53391
  onClick: () => {
53255
53392
  if (isPaused) {
@@ -53274,7 +53411,7 @@ const MonacoEditor = ({
53274
53411
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: isPaused ? "Not streaming events" : "Streaming events" })
53275
53412
  ] }) }),
53276
53413
  /* @__PURE__ */ jsxRuntimeExports.jsx(Spacer$1, { $space: 16, $samespace: true }),
53277
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$4.CustomCard, { $isVisible: isTerminalVisible, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$4.FullWidthDiv, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
53414
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$6.CustomCard, { $isVisible: isTerminalVisible, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$6.FullWidthDiv, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
53278
53415
  Ft$1,
53279
53416
  {
53280
53417
  defaultLanguage: "plaintext",
@@ -53305,7 +53442,7 @@ const CustomSelect = styled.div`
53305
53442
  width: 200px;
53306
53443
  }
53307
53444
  `;
53308
- const Styled$3 = {
53445
+ const Styled$5 = {
53309
53446
  TopRowContent,
53310
53447
  CustomSelect
53311
53448
  };
@@ -53351,8 +53488,8 @@ const PodLogsMonaco = ({
53351
53488
  }
53352
53489
  ];
53353
53490
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
53354
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$3.TopRowContent, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Flex, { gap: 16, children: [
53355
- /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$3.CustomSelect, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
53491
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$5.TopRowContent, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Flex, { gap: 16, children: [
53492
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$5.CustomSelect, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
53356
53493
  Select,
53357
53494
  {
53358
53495
  placeholder: "Select container",
@@ -53367,7 +53504,7 @@ const PodLogsMonaco = ({
53367
53504
  }
53368
53505
  }
53369
53506
  ) }),
53370
- currentContainer && /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$3.CustomSelect, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
53507
+ currentContainer && /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$5.CustomSelect, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
53371
53508
  Select,
53372
53509
  {
53373
53510
  placeholder: "Select current/previous",
@@ -53403,6 +53540,621 @@ const PodLogsMonaco = ({
53403
53540
  ] });
53404
53541
  };
53405
53542
 
53543
+ const buildDefaultWsPath = (cluster, namespace, vmName) => {
53544
+ const base = cluster ? `/k8s/clusters/${encodeURIComponent(cluster)}` : `/k8s`;
53545
+ return `${base}/apis/subresources.kubevirt.io/v1/namespaces/${encodeURIComponent(
53546
+ namespace
53547
+ )}/virtualmachineinstances/${encodeURIComponent(vmName)}/vnc`;
53548
+ };
53549
+ const normalizePath = (p) => p.startsWith("/") ? p : `/${p}`;
53550
+ const useVNCClient = ({
53551
+ cluster,
53552
+ namespace,
53553
+ vmName,
53554
+ forcedFullWsPath
53555
+ }) => {
53556
+ const [isLoading, setIsLoading] = useState(true);
53557
+ const [error, setError] = useState(null);
53558
+ const [status, setStatus] = useState("Loading VNC client...");
53559
+ const [isConnected, setIsConnected] = useState(false);
53560
+ const [showDotCursor, setShowDotCursor] = useState(false);
53561
+ const [scalingMode, setScalingModeState] = useState("local");
53562
+ const [screenEl, setScreenEl] = useState(null);
53563
+ const screenRef = useCallback((node) => {
53564
+ setScreenEl(node);
53565
+ }, []);
53566
+ const rfbRef = useRef(null);
53567
+ const [isManuallyDisconnected, setIsManuallyDisconnected] = useState(false);
53568
+ const [, setReconnectAttempts] = useState(0);
53569
+ const [shouldReconnect, setShouldReconnect] = useState(true);
53570
+ const [connectionKey, setConnectionKey] = useState(0);
53571
+ const reconnectTimeoutRef = useRef(null);
53572
+ const isManuallyDisconnectedRef = useRef(false);
53573
+ const shouldReconnectRef = useRef(true);
53574
+ const showDotCursorRef = useRef(showDotCursor);
53575
+ const maxReconnectAttempts = 5;
53576
+ const reconnectDelay = 3e3;
53577
+ useEffect(() => {
53578
+ isManuallyDisconnectedRef.current = isManuallyDisconnected;
53579
+ }, [isManuallyDisconnected]);
53580
+ useEffect(() => {
53581
+ shouldReconnectRef.current = shouldReconnect;
53582
+ }, [shouldReconnect]);
53583
+ useEffect(() => {
53584
+ showDotCursorRef.current = showDotCursor;
53585
+ if (rfbRef.current && typeof rfbRef.current.showDotCursor !== "undefined") {
53586
+ try {
53587
+ rfbRef.current.showDotCursor = showDotCursor;
53588
+ } catch (err) {
53589
+ console.error("Error updating dot cursor:", err);
53590
+ }
53591
+ }
53592
+ }, [showDotCursor, isConnected]);
53593
+ const applyScalingMode = (rfb, mode) => {
53594
+ if (!rfb) return;
53595
+ if (mode === "none") {
53596
+ rfb.scaleViewport = false;
53597
+ rfb.resizeSession = false;
53598
+ } else if (mode === "local") {
53599
+ rfb.scaleViewport = true;
53600
+ rfb.resizeSession = false;
53601
+ } else {
53602
+ rfb.scaleViewport = false;
53603
+ rfb.resizeSession = true;
53604
+ }
53605
+ };
53606
+ const setScalingMode = useCallback((mode) => {
53607
+ setScalingModeState(mode);
53608
+ if (rfbRef.current) {
53609
+ applyScalingMode(rfbRef.current, mode);
53610
+ }
53611
+ }, []);
53612
+ useEffect(() => {
53613
+ console.log("[VMVNC hook] effect run", {
53614
+ cluster,
53615
+ namespace,
53616
+ vmName,
53617
+ connectionKey,
53618
+ hasScreenEl: !!screenEl,
53619
+ forcedFullWsPath
53620
+ });
53621
+ const hasForced = !!forcedFullWsPath;
53622
+ const hasNamespaceVm = !!namespace && !!vmName;
53623
+ if (!hasForced && !hasNamespaceVm) {
53624
+ setIsLoading(false);
53625
+ setIsConnected(false);
53626
+ setStatus("VNC not configured");
53627
+ setError("Provide forcedFullWsPath or both namespace and vmName for VNC connection");
53628
+ return;
53629
+ }
53630
+ if (!screenEl) {
53631
+ setIsLoading(true);
53632
+ setError(null);
53633
+ setStatus("Waiting for VNC container...");
53634
+ return;
53635
+ }
53636
+ if (reconnectTimeoutRef.current) {
53637
+ window.clearTimeout(reconnectTimeoutRef.current);
53638
+ reconnectTimeoutRef.current = null;
53639
+ }
53640
+ setIsLoading(true);
53641
+ setError(null);
53642
+ setStatus("Connecting...");
53643
+ const protocol = window.location.protocol === "https:" ? "wss:" : "ws:";
53644
+ const { host } = window.location;
53645
+ const defaultWsPath = namespace && vmName ? buildDefaultWsPath(cluster, namespace, vmName) : void 0;
53646
+ const wsPath = (() => {
53647
+ if (forcedFullWsPath && !forcedFullWsPath.startsWith("ws")) {
53648
+ return normalizePath(forcedFullWsPath);
53649
+ }
53650
+ return defaultWsPath;
53651
+ })();
53652
+ const wsUrl = forcedFullWsPath && forcedFullWsPath.startsWith("ws") ? forcedFullWsPath : `${protocol}//${host}${wsPath ?? ""}`;
53653
+ console.log(`[VMVNC ${namespace ?? "no-ns"}/${vmName ?? "no-vm"}]: WebSocket URL: ${wsUrl}`);
53654
+ console.log(`[VMVNC ${namespace ?? "no-ns"}/${vmName ?? "no-vm"}]: WebSocket path: ${wsPath}`);
53655
+ if (!forcedFullWsPath?.startsWith("ws") && !wsPath) {
53656
+ setIsLoading(false);
53657
+ setIsConnected(false);
53658
+ setStatus("VNC not configured");
53659
+ setError("Unable to build WebSocket path. Provide forcedFullWsPath or namespace+vmName.");
53660
+ return;
53661
+ }
53662
+ let cancelled = false;
53663
+ try {
53664
+ const rfb = new RFB(screenEl, wsUrl, {
53665
+ credentials: { password: "" },
53666
+ showDotCursor: showDotCursorRef.current
53667
+ });
53668
+ rfbRef.current = rfb;
53669
+ applyScalingMode(rfb, scalingMode);
53670
+ if (typeof rfb.showDotCursor !== "undefined") {
53671
+ try {
53672
+ rfb.showDotCursor = showDotCursorRef.current;
53673
+ } catch (err) {
53674
+ console.error("Error setting dot cursor on RFB instance:", err);
53675
+ }
53676
+ }
53677
+ const handleConnect = () => {
53678
+ if (cancelled) return;
53679
+ console.log(`[VMVNC ${namespace}/${vmName}]: Connected`);
53680
+ setStatus("Connected");
53681
+ setIsLoading(false);
53682
+ setError(null);
53683
+ setIsConnected(true);
53684
+ setReconnectAttempts(0);
53685
+ if (reconnectTimeoutRef.current) {
53686
+ window.clearTimeout(reconnectTimeoutRef.current);
53687
+ reconnectTimeoutRef.current = null;
53688
+ }
53689
+ };
53690
+ const handleDisconnect = (e) => {
53691
+ if (cancelled) return;
53692
+ const detail = e?.detail;
53693
+ const wasManuallyDisconnected = isManuallyDisconnectedRef.current;
53694
+ const autoReconnectEnabled = shouldReconnectRef.current;
53695
+ console.log(
53696
+ `[VMVNC ${namespace}/${vmName}]: Disconnected (clean=${detail?.clean}, manual=${wasManuallyDisconnected}, autoReconnect=${autoReconnectEnabled})`
53697
+ );
53698
+ setIsConnected(false);
53699
+ setIsLoading(false);
53700
+ if (wasManuallyDisconnected) {
53701
+ setStatus("Disconnected");
53702
+ setError(null);
53703
+ return;
53704
+ }
53705
+ if (!autoReconnectEnabled) {
53706
+ if (detail?.clean) {
53707
+ setStatus("Disconnected");
53708
+ } else {
53709
+ setStatus("Connection closed");
53710
+ setError("Connection closed unexpectedly");
53711
+ }
53712
+ return;
53713
+ }
53714
+ if (detail?.clean) {
53715
+ setStatus("Disconnected - Reconnecting...");
53716
+ setError(null);
53717
+ } else {
53718
+ setStatus("Connection closed - Reconnecting...");
53719
+ setError("Connection closed unexpectedly");
53720
+ }
53721
+ reconnectTimeoutRef.current = window.setTimeout(() => {
53722
+ if (isManuallyDisconnectedRef.current || !shouldReconnectRef.current) {
53723
+ console.log(`[VMVNC ${namespace}/${vmName}]: Reconnect cancelled before attempting`);
53724
+ return;
53725
+ }
53726
+ setReconnectAttempts((prev) => {
53727
+ const next = prev + 1;
53728
+ if (next > maxReconnectAttempts) {
53729
+ console.log(`[VMVNC ${namespace}/${vmName}]: Max reconnect attempts reached (${maxReconnectAttempts})`);
53730
+ setStatus("Connection failed - Max reconnect attempts reached");
53731
+ setError("Failed to reconnect after multiple attempts");
53732
+ setIsLoading(false);
53733
+ setShouldReconnect(false);
53734
+ return prev;
53735
+ }
53736
+ console.log(
53737
+ `[VMVNC ${namespace}/${vmName}]: Reconnect attempt ${next}/${maxReconnectAttempts} (bump connectionKey)`
53738
+ );
53739
+ setStatus(`Reconnecting... (Attempt ${next}/${maxReconnectAttempts})`);
53740
+ setIsLoading(true);
53741
+ setError(null);
53742
+ setConnectionKey((k) => k + 1);
53743
+ return next;
53744
+ });
53745
+ }, reconnectDelay);
53746
+ };
53747
+ const handleCredentialsRequired = () => {
53748
+ if (cancelled) return;
53749
+ console.log(`[VMVNC ${namespace}/${vmName}]: Credentials required`);
53750
+ setStatus("Credentials required");
53751
+ };
53752
+ const handleSecurityFailure = (e) => {
53753
+ if (cancelled) return;
53754
+ const detail = e?.detail;
53755
+ console.error(`[VMVNC ${namespace}/${vmName}]: Security failure`, detail);
53756
+ setError(`Security failure: ${detail?.reason || "Unknown error"}`);
53757
+ setIsLoading(false);
53758
+ setIsConnected(false);
53759
+ };
53760
+ const handleDesktopName = (e) => {
53761
+ if (cancelled) return;
53762
+ const detail = e?.detail;
53763
+ if (detail?.name) {
53764
+ console.log(`[VMVNC ${namespace}/${vmName}]: Desktop name: ${detail.name}`);
53765
+ setStatus(`Connected to ${detail.name}`);
53766
+ }
53767
+ };
53768
+ rfb.addEventListener("connect", handleConnect);
53769
+ rfb.addEventListener("disconnect", handleDisconnect);
53770
+ rfb.addEventListener("credentialsrequired", handleCredentialsRequired);
53771
+ rfb.addEventListener("securityfailure", handleSecurityFailure);
53772
+ rfb.addEventListener("desktopname", handleDesktopName);
53773
+ return () => {
53774
+ cancelled = true;
53775
+ console.log(`[VMVNC ${namespace}/${vmName}]: Cleaning up connection`);
53776
+ if (reconnectTimeoutRef.current) {
53777
+ window.clearTimeout(reconnectTimeoutRef.current);
53778
+ reconnectTimeoutRef.current = null;
53779
+ }
53780
+ if (rfbRef.current) {
53781
+ try {
53782
+ rfbRef.current.disconnect();
53783
+ } catch (err) {
53784
+ console.error("Error disconnecting RFB during cleanup:", err);
53785
+ }
53786
+ rfbRef.current = null;
53787
+ }
53788
+ if (screenEl) {
53789
+ while (screenEl.firstChild) {
53790
+ screenEl.removeChild(screenEl.firstChild);
53791
+ }
53792
+ }
53793
+ };
53794
+ } catch (err) {
53795
+ console.error(`[VMVNC ${namespace}/${vmName}]: Error creating RFB connection:`, err);
53796
+ setError(`Failed to create VNC connection: ${err instanceof Error ? err.message : "Unknown error"}`);
53797
+ setIsLoading(false);
53798
+ setIsConnected(false);
53799
+ setStatus("Failed to create VNC connection");
53800
+ }
53801
+ }, [cluster, namespace, vmName, forcedFullWsPath, scalingMode, connectionKey, screenEl]);
53802
+ const disconnect = useCallback(() => {
53803
+ isManuallyDisconnectedRef.current = true;
53804
+ shouldReconnectRef.current = false;
53805
+ setIsManuallyDisconnected(true);
53806
+ setShouldReconnect(false);
53807
+ if (reconnectTimeoutRef.current) {
53808
+ window.clearTimeout(reconnectTimeoutRef.current);
53809
+ reconnectTimeoutRef.current = null;
53810
+ }
53811
+ if (rfbRef.current) {
53812
+ try {
53813
+ rfbRef.current.disconnect();
53814
+ } catch (err) {
53815
+ console.error("Error disconnecting RFB:", err);
53816
+ }
53817
+ rfbRef.current = null;
53818
+ }
53819
+ setStatus("Disconnected");
53820
+ setIsLoading(false);
53821
+ setIsConnected(false);
53822
+ }, []);
53823
+ const reconnect = useCallback(() => {
53824
+ isManuallyDisconnectedRef.current = false;
53825
+ shouldReconnectRef.current = true;
53826
+ setIsManuallyDisconnected(false);
53827
+ setShouldReconnect(true);
53828
+ setReconnectAttempts(0);
53829
+ setError(null);
53830
+ setIsLoading(true);
53831
+ setStatus("Reconnecting...");
53832
+ if (reconnectTimeoutRef.current) {
53833
+ window.clearTimeout(reconnectTimeoutRef.current);
53834
+ reconnectTimeoutRef.current = null;
53835
+ }
53836
+ if (rfbRef.current) {
53837
+ try {
53838
+ rfbRef.current.disconnect();
53839
+ } catch (err) {
53840
+ console.error("Error disconnecting RFB before manual reconnect:", err);
53841
+ }
53842
+ rfbRef.current = null;
53843
+ }
53844
+ setConnectionKey((k) => k + 1);
53845
+ }, []);
53846
+ const sendCtrlAltDel = () => {
53847
+ if (!rfbRef.current) return;
53848
+ try {
53849
+ rfbRef.current.sendCtrlAltDel();
53850
+ } catch (err) {
53851
+ console.error("Error sending Ctrl+Alt+Del:", err);
53852
+ }
53853
+ };
53854
+ return {
53855
+ screenRef,
53856
+ isLoading,
53857
+ error,
53858
+ status,
53859
+ isConnected,
53860
+ showDotCursor,
53861
+ scalingMode,
53862
+ setShowDotCursor,
53863
+ setScalingMode,
53864
+ disconnect,
53865
+ reconnect,
53866
+ sendCtrlAltDel
53867
+ };
53868
+ };
53869
+
53870
+ const ShowCursorDiv = styled.div`
53871
+ display: flex;
53872
+ justify-content: space-between;
53873
+ align-items: center;
53874
+ min-width: 200px;
53875
+ `;
53876
+ const ScalingModeContainer = styled.div`
53877
+ min-width: 200px;
53878
+ `;
53879
+ const ScalingModeTitle = styled.div`
53880
+ margin-bottom: 8px;
53881
+ font-weight: 500;
53882
+ `;
53883
+ const StatusBar = styled.div`
53884
+ background-color: #2d2d2d;
53885
+ color: white;
53886
+ padding: 8px 16px;
53887
+ font-size: 12px;
53888
+ border-bottom: 1px solid #3d3d3d;
53889
+ display: flex;
53890
+ align-items: center;
53891
+ justify-content: flex-start;
53892
+ flex-shrink: 0;
53893
+ z-index: 10;
53894
+ flex-wrap: wrap;
53895
+ gap: 4px;
53896
+ `;
53897
+ const StatusDivider = styled.span`
53898
+ color: #666;
53899
+ margin: 0 8px;
53900
+ user-select: none;
53901
+ `;
53902
+ const Styled$4 = {
53903
+ ShowCursorDiv,
53904
+ ScalingModeContainer,
53905
+ ScalingModeTitle,
53906
+ StatusBar,
53907
+ StatusDivider
53908
+ };
53909
+
53910
+ const VMVNCToolbar = ({
53911
+ status,
53912
+ isConnected,
53913
+ isFullscreen,
53914
+ isLoading,
53915
+ showDotCursor,
53916
+ scalingMode,
53917
+ onSendCtrlAltDel,
53918
+ onToggleFullscreen,
53919
+ onReconnect,
53920
+ onShowDotCursorChange,
53921
+ onScalingModeChange
53922
+ }) => {
53923
+ const optionsMenuItems = useMemo(
53924
+ () => [
53925
+ {
53926
+ key: "show-cursor",
53927
+ label: /* @__PURE__ */ jsxRuntimeExports.jsxs(Styled$4.ShowCursorDiv, { children: [
53928
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Show Cursor" }),
53929
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Switch, { checked: showDotCursor, onChange: onShowDotCursorChange, disabled: !isConnected, size: "small" })
53930
+ ] })
53931
+ },
53932
+ {
53933
+ type: "divider"
53934
+ },
53935
+ {
53936
+ key: "scaling-mode",
53937
+ label: /* @__PURE__ */ jsxRuntimeExports.jsxs(Styled$4.ScalingModeContainer, { children: [
53938
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$4.ScalingModeTitle, { children: "Scaling Mode" }),
53939
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
53940
+ Radio.Group,
53941
+ {
53942
+ value: scalingMode,
53943
+ onChange: (e) => onScalingModeChange(e.target.value),
53944
+ disabled: !isConnected,
53945
+ style: { display: "flex", flexDirection: "column", gap: 8 },
53946
+ children: [
53947
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Radio, { value: "none", children: "None" }),
53948
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Radio, { value: "local", children: "Local scaling" }),
53949
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Radio, { value: "remote", children: "Remote resizing" })
53950
+ ]
53951
+ }
53952
+ )
53953
+ ] })
53954
+ }
53955
+ ],
53956
+ [showDotCursor, scalingMode, isConnected, onShowDotCursorChange, onScalingModeChange]
53957
+ );
53958
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$4.StatusBar, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Space, { size: "small", children: [
53959
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: "Send Ctrl+Alt+Del", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
53960
+ Button,
53961
+ {
53962
+ type: "text",
53963
+ size: "small",
53964
+ icon: /* @__PURE__ */ jsxRuntimeExports.jsx(PoweroffOutlined, {}),
53965
+ onClick: onSendCtrlAltDel,
53966
+ disabled: !isConnected,
53967
+ style: { color: "#ffffff" },
53968
+ children: "Send Ctrl+Alt+Del"
53969
+ }
53970
+ ) }),
53971
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: isFullscreen ? "Exit Fullscreen" : "Fullscreen", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
53972
+ Button,
53973
+ {
53974
+ type: "text",
53975
+ size: "small",
53976
+ icon: isFullscreen ? /* @__PURE__ */ jsxRuntimeExports.jsx(FullscreenExitOutlined, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(FullscreenOutlined, {}),
53977
+ onClick: onToggleFullscreen,
53978
+ disabled: !isConnected,
53979
+ style: { color: "#ffffff" },
53980
+ children: "Fullscreen"
53981
+ }
53982
+ ) }),
53983
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Dropdown, { menu: { items: optionsMenuItems }, trigger: ["click"], placement: "bottomRight", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { type: "text", size: "small", icon: /* @__PURE__ */ jsxRuntimeExports.jsx(SettingOutlined, {}), style: { color: "#ffffff" }, children: "Options" }) }),
53984
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: "Reconnect", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
53985
+ Button,
53986
+ {
53987
+ type: "text",
53988
+ size: "small",
53989
+ icon: /* @__PURE__ */ jsxRuntimeExports.jsx(ReloadOutlined, {}),
53990
+ onClick: onReconnect,
53991
+ loading: isLoading,
53992
+ style: { color: "#ffffff" },
53993
+ children: "Reconnect"
53994
+ }
53995
+ ) }),
53996
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$4.StatusDivider, { children: "|" }),
53997
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: status })
53998
+ ] }) });
53999
+ };
54000
+
54001
+ const Container = styled.div`
54002
+ height: calc(100vh - ${({ $substractHeight }) => $substractHeight}px);
54003
+ display: flex;
54004
+ flex-direction: column;
54005
+ background-color: #1e1e1e;
54006
+ position: relative;
54007
+
54008
+ * {
54009
+ scrollbar-width: thin;
54010
+ }
54011
+ `;
54012
+ const CustomCard = styled.div`
54013
+ visibility: ${({ $isVisible }) => $isVisible ? "visible" : "hidden"};
54014
+ height: 100%;
54015
+ display: flex;
54016
+ flex-direction: column;
54017
+ background-color: #1e1e1e;
54018
+ position: relative;
54019
+
54020
+ * {
54021
+ scrollbar-width: thin;
54022
+ }
54023
+ `;
54024
+ const ContentWrapper = styled.div`
54025
+ display: flex;
54026
+ flex: 1;
54027
+ overflow: hidden;
54028
+ position: relative;
54029
+ min-width: 0; /* Allow flex item to shrink */
54030
+ `;
54031
+ const FullWidthDiv = styled.div`
54032
+ display: flex;
54033
+ justify-content: center;
54034
+ align-items: center;
54035
+ flex: 1;
54036
+ overflow: hidden;
54037
+ background-color: black;
54038
+ min-width: 0; /* Allow flex item to shrink */
54039
+ transition: margin-right 0.3s ease;
54040
+ `;
54041
+ const LoadingContainer = styled.div`
54042
+ display: flex;
54043
+ flex-direction: column;
54044
+ align-items: center;
54045
+ justify-content: center;
54046
+ padding: 40px;
54047
+ color: white;
54048
+ `;
54049
+ const ErrorContainer = styled.div`
54050
+ display: flex;
54051
+ flex-direction: column;
54052
+ align-items: center;
54053
+ justify-content: center;
54054
+ padding: 40px;
54055
+ color: white;
54056
+ `;
54057
+ const Styled$3 = {
54058
+ Container,
54059
+ CustomCard,
54060
+ ContentWrapper,
54061
+ FullWidthDiv,
54062
+ LoadingContainer,
54063
+ ErrorContainer
54064
+ };
54065
+
54066
+ const VMVNC = ({ cluster, namespace, vmName, forcedFullWsPath, substractHeight }) => {
54067
+ const containerRef = useRef(null);
54068
+ const [isFullscreen, setIsFullscreen] = useState(false);
54069
+ const {
54070
+ screenRef,
54071
+ isLoading,
54072
+ error,
54073
+ status,
54074
+ isConnected,
54075
+ showDotCursor,
54076
+ scalingMode,
54077
+ setShowDotCursor,
54078
+ setScalingMode,
54079
+ disconnect,
54080
+ reconnect,
54081
+ sendCtrlAltDel
54082
+ } = useVNCClient({ cluster, namespace, vmName, forcedFullWsPath });
54083
+ const handleToggleFullscreen = () => {
54084
+ const element = containerRef.current;
54085
+ if (!element) return;
54086
+ if (!isFullscreen) {
54087
+ if (element.requestFullscreen) {
54088
+ element.requestFullscreen();
54089
+ } else if (element.webkitRequestFullscreen) {
54090
+ element.webkitRequestFullscreen();
54091
+ } else if (element.msRequestFullscreen) {
54092
+ element.msRequestFullscreen();
54093
+ }
54094
+ return;
54095
+ }
54096
+ const fullscreenDoc = document;
54097
+ if (fullscreenDoc.exitFullscreen) {
54098
+ fullscreenDoc.exitFullscreen();
54099
+ } else if (fullscreenDoc.webkitExitFullscreen) {
54100
+ fullscreenDoc.webkitExitFullscreen();
54101
+ } else if (fullscreenDoc.msExitFullscreen) {
54102
+ fullscreenDoc.msExitFullscreen();
54103
+ }
54104
+ };
54105
+ useEffect(() => {
54106
+ const handleFullscreenChange = () => {
54107
+ setIsFullscreen(!!document.fullscreenElement);
54108
+ };
54109
+ document.addEventListener("fullscreenchange", handleFullscreenChange);
54110
+ document.addEventListener("webkitfullscreenchange", handleFullscreenChange);
54111
+ document.addEventListener("msfullscreenchange", handleFullscreenChange);
54112
+ return () => {
54113
+ document.removeEventListener("fullscreenchange", handleFullscreenChange);
54114
+ document.removeEventListener("webkitfullscreenchange", handleFullscreenChange);
54115
+ document.removeEventListener("msfullscreenchange", handleFullscreenChange);
54116
+ };
54117
+ }, []);
54118
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(Styled$3.Container, { ref: containerRef, $substractHeight: substractHeight, children: [
54119
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Styled$3.CustomCard, { $isVisible: !isLoading && !error, $substractHeight: substractHeight, children: [
54120
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
54121
+ VMVNCToolbar,
54122
+ {
54123
+ status,
54124
+ isConnected,
54125
+ isFullscreen,
54126
+ isLoading,
54127
+ showDotCursor,
54128
+ scalingMode,
54129
+ onSendCtrlAltDel: sendCtrlAltDel,
54130
+ onToggleFullscreen: handleToggleFullscreen,
54131
+ onReconnect: reconnect,
54132
+ onShowDotCursorChange: setShowDotCursor,
54133
+ onScalingModeChange: setScalingMode
54134
+ }
54135
+ ),
54136
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$3.ContentWrapper, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$3.FullWidthDiv, { $substractHeight: substractHeight, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { width: "100%", height: "100%" }, ref: screenRef }) }) })
54137
+ ] }),
54138
+ isLoading && !error && /* @__PURE__ */ jsxRuntimeExports.jsxs(Styled$3.LoadingContainer, { children: [
54139
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Spin, { size: "large" }),
54140
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Spacer$1, { $space: 16, $samespace: true }),
54141
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: status })
54142
+ ] }),
54143
+ error && !isLoading && /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$3.ErrorContainer, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
54144
+ Result,
54145
+ {
54146
+ status: "error",
54147
+ title: "VNC Connection Error",
54148
+ subTitle: error,
54149
+ extra: /* @__PURE__ */ jsxRuntimeExports.jsxs(Space, { children: [
54150
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { onClick: disconnect, children: "Disconnect" }),
54151
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { type: "primary", onClick: reconnect, loading: isLoading, children: "Reconnect" })
54152
+ ] })
54153
+ }
54154
+ ) })
54155
+ ] });
54156
+ };
54157
+
53406
54158
  const SelectTag = styled(Tag)`
53407
54159
  margin-inline-end: 4px;
53408
54160
  padding: 4px 6px;
@@ -55071,5 +55823,5 @@ const useResourceScope = ({ plural, cluster, apiGroup, apiVersion }) => {
55071
55823
  });
55072
55824
  };
55073
55825
 
55074
- export { BackToDefaultIcon, BlackholeForm, BlackholeFormProvider, ContentCard$1 as ContentCard, CursorDefaultDiv, CursorPointerTag, CursorPointerTagMinContent, CustomSelect$4 as CustomSelect, DeleteIcon, DeleteModal, DeleteModalMany, DownIcon, DynamicComponents, DynamicRenderer, DynamicRendererWithProviders, EarthIcon, EditIcon, EnrichedTable, EnrichedTableProvider, Events, FlexGrow, LockedIcon, LookingGlassIcon, ManageableBreadcrumbs, ManageableBreadcrumbsProvider, ManageableSidebar, ManageableSidebarProvider, MarketPlace, MarketplaceCard, MinusIcon, NodeTerminal, PaddingContainer, PauseCircleIcon, PlusIcon, PodLogs, PodLogsMonaco, PodTerminal, ProjectInfoCard, ResourceLink, ResumeCircleIcon, Search, Spacer$1 as Spacer, SuccessIcon, TreeWithSearch, UncontrolledSelect, UnlockedIcon, UpIcon, YamlEditorSingleton$1 as YamlEditorSingleton, checkIfApiInstanceNamespaceScoped, checkIfBuiltInInstanceNamespaceScoped, checkPermission, convertBytes, convertCompute, convertCores, convertStorage, createContextFactory, createNewEntry, deepMerge, deleteEntry, feedbackIcons, filterIfApiInstanceNamespaceScoped, filterIfBuiltInInstanceNamespaceScoped, filterSelectOptions, floorToDecimal, formatBytesAuto, formatCoresAuto, getAllPathsFromObj, getApiResourceSingle, getApiResourceTypes, getApiResourceTypesByApiGroup, getApiResources, getBuiltinResourceSingle, getBuiltinResourceTypes, getBuiltinResources, getBuiltinTreeData, getClusterList, getCrdData, getCrdResourceSingle, getCrdResources, getDirectUnknownResource, getEnrichedColumns, getEnrichedColumnsWithControls, getGroupsByCategory, getKinds, getLinkToApiForm, getLinkToBuiltinForm, getLinkToForm, getNamespaceLink, getObjectFormItemsDraft, getPrefixSubarrays, getResourceLink, getSortedKinds, getSortedKindsAll, getStringByName, getSwagger, getUppercase, groupsToTreeData, hslFromString, includesArray, isFlatObject, isMultilineFromYaml, isMultilineString, kindByGvr, namespacedByGvr, normalizeValuesForQuotasToNumber, parseCoresWithUnit, parseQuotaValue, parseQuotaValueCpu, parseQuotaValueMemoryAndStorage, parseValueWithUnit, pluralByKind, prepareDataForManageableBreadcrumbs, prepareDataForManageableSidebar, prepareTemplate, prepareUrlsToFetchForDynamicRenderer, toBytes, toCores, updateEntry, useApiResourceSingle, useApiResourceTypesByGroup, useApiResources, useApisResourceTypes, useBuiltinResourceSingle, useBuiltinResourceTypes, useBuiltinResources, useClusterList, useCrdData, useCrdResourceSingle, useCrdResources, useDirectUnknownResource, useInfiniteSentinel, useK8sSmartResource, useK8sVerbs, useListWatch, useManyK8sSmartResource, usePermissions, useResourceScope, useSmartResourceParams };
55826
+ export { BackToDefaultIcon, BlackholeForm, BlackholeFormProvider, ContentCard$1 as ContentCard, CursorDefaultDiv, CursorPointerTag, CursorPointerTagMinContent, CustomSelect$4 as CustomSelect, DeleteIcon, DeleteModal, DeleteModalMany, DownIcon, DynamicComponents, DynamicRenderer, DynamicRendererWithProviders, EarthIcon, EditIcon, EnrichedTable, EnrichedTableProvider, Events, FlexGrow, LockedIcon, LookingGlassIcon, ManageableBreadcrumbs, ManageableBreadcrumbsProvider, ManageableSidebar, ManageableSidebarProvider, MarketPlace, MarketplaceCard, MinusIcon, NodeTerminal, PaddingContainer, PauseCircleIcon, PlusIcon, PodLogs, PodLogsMonaco, PodTerminal, ProjectInfoCard, ResourceLink, ResumeCircleIcon, Search, Spacer$1 as Spacer, SuccessIcon, TreeWithSearch, UncontrolledSelect, UnlockedIcon, UpIcon, VMVNC, YamlEditorSingleton$1 as YamlEditorSingleton, checkIfApiInstanceNamespaceScoped, checkIfBuiltInInstanceNamespaceScoped, checkPermission, convertBytes, convertCompute, convertCores, convertStorage, createContextFactory, createNewEntry, deepMerge, deleteEntry, feedbackIcons, filterIfApiInstanceNamespaceScoped, filterIfBuiltInInstanceNamespaceScoped, filterSelectOptions, floorToDecimal, formatBytesAuto, formatCoresAuto, getAllPathsFromObj, getApiResourceSingle, getApiResourceTypes, getApiResourceTypesByApiGroup, getApiResources, getBuiltinResourceSingle, getBuiltinResourceTypes, getBuiltinResources, getBuiltinTreeData, getClusterList, getCrdData, getCrdResourceSingle, getCrdResources, getDirectUnknownResource, getEnrichedColumns, getEnrichedColumnsWithControls, getGroupsByCategory, getKinds, getLinkToApiForm, getLinkToBuiltinForm, getLinkToForm, getNamespaceLink, getObjectFormItemsDraft, getPrefixSubarrays, getResourceLink, getSortedKinds, getSortedKindsAll, getStringByName, getSwagger, getUppercase, groupsToTreeData, hslFromString, includesArray, isFlatObject, isMultilineFromYaml, isMultilineString, kindByGvr, namespacedByGvr, normalizeValuesForQuotasToNumber, parseCoresWithUnit, parseQuotaValue, parseQuotaValueCpu, parseQuotaValueMemoryAndStorage, parseValueWithUnit, pluralByKind, prepareDataForManageableBreadcrumbs, prepareDataForManageableSidebar, prepareTemplate, prepareUrlsToFetchForDynamicRenderer, toBytes, toCores, updateEntry, useApiResourceSingle, useApiResourceTypesByGroup, useApiResources, useApisResourceTypes, useBuiltinResourceSingle, useBuiltinResourceTypes, useBuiltinResources, useClusterList, useCrdData, useCrdResourceSingle, useCrdResources, useDirectUnknownResource, useInfiniteSentinel, useK8sSmartResource, useK8sVerbs, useListWatch, useManyK8sSmartResource, usePermissions, useResourceScope, useSmartResourceParams };
55075
55827
  //# sourceMappingURL=openapi-k8s-toolkit.es.js.map