@prorobotech/openapi-k8s-toolkit 1.1.0-alpha.1 → 1.1.0-alpha.2

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.
@@ -1,9 +1,9 @@
1
1
  import styled, { createGlobalStyle } from 'styled-components';
2
- import K, { useState, useRef, useReducer, useEffect, useCallback, useLayoutEffect, Fragment, createContext, useContext, useMemo, createElement, isValidElement, cloneElement, useInsertionEffect, useSyncExternalStore, memo, Suspense } from 'react';
2
+ import K, { useState, useRef, useReducer, useEffect, useCallback, useMemo, useLayoutEffect, Fragment, createContext, useContext, createElement, isValidElement, cloneElement, useInsertionEffect, useSyncExternalStore, memo, Suspense } from 'react';
3
3
  import { Input, Tree, Modal, Alert, theme, Select, Tag, Breadcrumb, Spin, Menu, Tooltip, Space, Button, Flex, Typography, Card as Card$1, Row, Col, Tabs, Form, Popover, notification, Dropdown, Table, Slider, InputNumber, Switch, Result, Progress, Checkbox, Empty } from 'antd';
4
4
  import { LoadingOutlined, ExclamationCircleFilled, CloseCircleFilled, CheckCircleFilled, PlusOutlined, ClearOutlined, MinusOutlined, CaretDownOutlined, CaretRightOutlined, InfoCircleOutlined, EyeOutlined, EyeInvisibleOutlined, SearchOutlined, MoreOutlined, CheckOutlined, CloseOutlined, BugOutlined, EllipsisOutlined } from '@ant-design/icons';
5
+ import { useQuery, useQueries, useQueryClient } from '@tanstack/react-query';
5
6
  import { Link, useNavigate, useLocation, useParams, useSearchParams } from 'react-router-dom';
6
- import { useQueries, useQuery, useQueryClient } from '@tanstack/react-query';
7
7
 
8
8
  const Spacer$1 = styled.div`
9
9
  height: ${({ $space, $spaceMob, $samespace }) => {
@@ -8316,6 +8316,63 @@ const PaddingContainer = styled.div`
8316
8316
  padding: ${({ $padding }) => $padding};
8317
8317
  `;
8318
8318
 
8319
+ const getDirectUnknownResource = async ({ uri }) => {
8320
+ return axios.get(uri);
8321
+ };
8322
+
8323
+ const useDirectUnknownResource = ({
8324
+ uri,
8325
+ queryKey,
8326
+ refetchInterval,
8327
+ isEnabled
8328
+ }) => {
8329
+ return useQuery({
8330
+ queryKey,
8331
+ queryFn: async () => {
8332
+ const response = await getDirectUnknownResource({
8333
+ uri
8334
+ });
8335
+ const data = JSON.parse(JSON.stringify(response.data));
8336
+ if (data.metadata?.resourceVersion) {
8337
+ delete data.metadata.resourceVersion;
8338
+ }
8339
+ return data;
8340
+ },
8341
+ refetchInterval: refetchInterval !== void 0 ? refetchInterval : 5e3,
8342
+ enabled: isEnabled
8343
+ });
8344
+ };
8345
+
8346
+ const useK8sVerbs = ({
8347
+ cluster,
8348
+ group,
8349
+ version,
8350
+ plural,
8351
+ isEnabled = true
8352
+ }) => {
8353
+ const uri = `/api/clusters/${cluster}/openapi-bff/verbs/getResourceVerbs?${new URLSearchParams({
8354
+ ...group ? { group } : {},
8355
+ version,
8356
+ plural
8357
+ }).toString()}`;
8358
+ const { data, isError, isLoading, error } = useDirectUnknownResource({
8359
+ uri,
8360
+ queryKey: ["k8s-verbs", group || "", version, plural],
8361
+ refetchInterval: false,
8362
+ isEnabled
8363
+ });
8364
+ const verbs = data?.verbs || [];
8365
+ const canList = verbs.includes("list");
8366
+ const canWatch = verbs.includes("watch");
8367
+ return {
8368
+ canList,
8369
+ canWatch,
8370
+ isError,
8371
+ isLoading,
8372
+ error
8373
+ };
8374
+ };
8375
+
8319
8376
  const eventKey$1 = (e) => {
8320
8377
  const n = e.metadata?.name ?? "";
8321
8378
  const ns = e.metadata?.namespace ?? "";
@@ -8811,17 +8868,122 @@ const useListWatch = ({
8811
8868
  };
8812
8869
  };
8813
8870
 
8814
- const useInfiniteSentinel = (sentinelRef, hasMore, onNeedMore) => {
8815
- useEffect(() => {
8816
- const el = sentinelRef.current;
8817
- if (!el) return void 0;
8818
- const io = new IntersectionObserver((entries) => {
8819
- const visible = entries.some((e) => e.isIntersecting);
8820
- if (visible && hasMore) onNeedMore();
8821
- });
8822
- io.observe(el);
8823
- return () => io.disconnect();
8824
- }, [sentinelRef, hasMore, onNeedMore]);
8871
+ const buildApiPrefix = (group, version) => {
8872
+ const g = (group ?? "").trim();
8873
+ const v = (version ?? "").trim();
8874
+ const isCore = !g || g === "core" || g === "v1";
8875
+ return isCore ? `/api/${v}` : `/apis/${g}/${v}`;
8876
+ };
8877
+ const buildListUri = ({
8878
+ cluster,
8879
+ group,
8880
+ version,
8881
+ plural,
8882
+ namespace,
8883
+ fieldSelector,
8884
+ labelSelector,
8885
+ limit
8886
+ }) => {
8887
+ const prefix = buildApiPrefix(group, version);
8888
+ const ns = namespace ? `/namespaces/${namespace}` : "";
8889
+ const base = `/api/clusters/${cluster}/k8s${prefix}${ns}/${plural}/`;
8890
+ const params = new URLSearchParams();
8891
+ if (fieldSelector) params.append("fieldSelector", fieldSelector);
8892
+ if (labelSelector) params.append("labelSelector", labelSelector);
8893
+ if (limit) params.append("limit", String(limit));
8894
+ return params.toString() ? `${base}?${params.toString()}` : base;
8895
+ };
8896
+ const useK8sSmartResource = ({
8897
+ cluster,
8898
+ group,
8899
+ version,
8900
+ plural,
8901
+ namespace,
8902
+ fieldSelector,
8903
+ labelSelector,
8904
+ isEnabled = true,
8905
+ listRefetchInterval = 5e3,
8906
+ limit,
8907
+ mapListWatchState
8908
+ }) => {
8909
+ const {
8910
+ canList,
8911
+ canWatch,
8912
+ isLoading: verbsLoading,
8913
+ isError: verbsIsError,
8914
+ error: verbsErrorObj
8915
+ } = useK8sVerbs({
8916
+ cluster,
8917
+ group,
8918
+ version,
8919
+ plural,
8920
+ isEnabled
8921
+ });
8922
+ const listUri = buildListUri({
8923
+ cluster,
8924
+ group,
8925
+ version,
8926
+ plural,
8927
+ namespace,
8928
+ fieldSelector,
8929
+ labelSelector,
8930
+ limit
8931
+ });
8932
+ const restEnabled = Boolean(isEnabled && canList && !canWatch && !verbsLoading && !verbsIsError);
8933
+ const {
8934
+ data: restData,
8935
+ isLoading: restLoading,
8936
+ isError: restIsError,
8937
+ error: restError
8938
+ } = useDirectUnknownResource({
8939
+ uri: listUri,
8940
+ queryKey: [
8941
+ "k8s-list",
8942
+ cluster,
8943
+ group || "",
8944
+ version,
8945
+ namespace || "",
8946
+ plural,
8947
+ fieldSelector || "",
8948
+ labelSelector || ""
8949
+ ],
8950
+ refetchInterval: listRefetchInterval,
8951
+ isEnabled: restEnabled
8952
+ });
8953
+ const watchEnabled = Boolean(isEnabled && canList && canWatch && !verbsLoading && !verbsIsError);
8954
+ const { state, status, lastError } = useListWatch({
8955
+ wsUrl: `/api/clusters/${cluster}/openapi-bff-ws/listThenWatch/listWatchWs`,
8956
+ paused: false,
8957
+ ignoreRemove: false,
8958
+ autoDrain: true,
8959
+ preserveStateOnUrlChange: true,
8960
+ isEnabled: watchEnabled,
8961
+ pageSize: limit,
8962
+ query: {
8963
+ apiGroup: group,
8964
+ apiVersion: version,
8965
+ plural,
8966
+ namespace,
8967
+ fieldSelector,
8968
+ labelSelector
8969
+ }
8970
+ });
8971
+ const defaultMap = (s) => ({ items: s.order.map((k) => s.byKey[k]) });
8972
+ const watchData = useMemo(
8973
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8974
+ () => watchEnabled ? (mapListWatchState ?? defaultMap)(state) : void 0,
8975
+ // eslint-disable-next-line react-hooks/exhaustive-deps
8976
+ [watchEnabled, state, mapListWatchState]
8977
+ );
8978
+ const used = !isEnabled ? "disabled" : verbsLoading ? "verbs-loading" : verbsIsError ? "verbs-error" : watchEnabled ? "watch" : restEnabled ? "list" : "disabled";
8979
+ const isLoading = isEnabled && verbsLoading || used === "watch" && status === "connecting" || used === "list" && restLoading;
8980
+ let error;
8981
+ if (verbsIsError) error = verbsErrorObj;
8982
+ else if (used === "watch" && status === "closed" && lastError) error = lastError;
8983
+ else if (used === "list" && restIsError) error = restError;
8984
+ const isError = Boolean(error);
8985
+ const data = used === "watch" ? watchData : used === "list" ? restData : void 0;
8986
+ return { data, isLoading, isError, error, _meta: { used } };
8825
8987
  };
8826
8988
 
8827
8989
  const prepareTemplate = ({
@@ -8961,7 +9123,7 @@ const ManageableBreadcrumbs = ({ data }) => {
8961
9123
  return /* @__PURE__ */ jsxRuntimeExports.jsx(Styled$v.HeightDiv, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(CollapsibleBreadcrumb, { items: data.breadcrumbItems }) });
8962
9124
  };
8963
9125
  const ManageableBreadcrumbsWithDataProvider = ({
8964
- wsUrl,
9126
+ cluster,
8965
9127
  apiGroup,
8966
9128
  apiVersion,
8967
9129
  plural,
@@ -8970,28 +9132,17 @@ const ManageableBreadcrumbsWithDataProvider = ({
8970
9132
  pathname,
8971
9133
  idToCompare
8972
9134
  }) => {
8973
- const { state, status, lastError } = useListWatch({
8974
- wsUrl,
8975
- paused: false,
8976
- ignoreRemove: false,
8977
- autoDrain: true,
8978
- preserveStateOnUrlChange: true,
8979
- query: {
8980
- apiVersion,
8981
- apiGroup,
8982
- plural
8983
- },
9135
+ const {
9136
+ data: rawData,
9137
+ isError: rawDataError,
9138
+ isLoading: rawDataLoading
9139
+ } = useK8sSmartResource({
9140
+ cluster: cluster || "",
9141
+ group: apiGroup,
9142
+ version: apiVersion,
9143
+ plural,
8984
9144
  isEnabled
8985
9145
  });
8986
- const rawDataLoading = status === "connecting";
8987
- const rawDataError = status === "closed" && lastError ? lastError : void 0;
8988
- const rawData = {
8989
- items: state.order.map((key) => {
8990
- const res = state.byKey[key];
8991
- return res;
8992
- })
8993
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
8994
- };
8995
9146
  if (rawDataError) {
8996
9147
  return null;
8997
9148
  }
@@ -9177,7 +9328,7 @@ const ManageableSidebar = ({ data, noMarginTop }) => {
9177
9328
  );
9178
9329
  };
9179
9330
  const ManageableSidebarWithDataProvider = ({
9180
- wsUrl,
9331
+ cluster,
9181
9332
  apiGroup,
9182
9333
  apiVersion,
9183
9334
  plural,
@@ -9189,28 +9340,17 @@ const ManageableSidebarWithDataProvider = ({
9189
9340
  hidden,
9190
9341
  noMarginTop
9191
9342
  }) => {
9192
- const { state, status, lastError } = useListWatch({
9193
- wsUrl,
9194
- paused: false,
9195
- ignoreRemove: false,
9196
- autoDrain: true,
9197
- preserveStateOnUrlChange: true,
9198
- query: {
9199
- apiVersion,
9200
- apiGroup,
9201
- plural
9202
- },
9343
+ const {
9344
+ data: rawData,
9345
+ isError: rawDataError,
9346
+ isLoading: rawDataLoading
9347
+ } = useK8sSmartResource({
9348
+ cluster,
9349
+ group: apiGroup,
9350
+ version: apiVersion,
9351
+ plural,
9203
9352
  isEnabled
9204
9353
  });
9205
- const rawDataLoading = status === "connecting";
9206
- const rawDataError = status === "closed" && lastError ? lastError : void 0;
9207
- const rawData = {
9208
- items: state.order.map((key) => {
9209
- const res = state.byKey[key];
9210
- return res;
9211
- })
9212
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
9213
- };
9214
9354
  if (rawDataError) {
9215
9355
  return null;
9216
9356
  }
@@ -34009,33 +34149,6 @@ const usePermissions = ({
34009
34149
  });
34010
34150
  };
34011
34151
 
34012
- const getDirectUnknownResource = async ({ uri }) => {
34013
- return axios.get(uri);
34014
- };
34015
-
34016
- const useDirectUnknownResource = ({
34017
- uri,
34018
- queryKey,
34019
- refetchInterval,
34020
- isEnabled
34021
- }) => {
34022
- return useQuery({
34023
- queryKey,
34024
- queryFn: async () => {
34025
- const response = await getDirectUnknownResource({
34026
- uri
34027
- });
34028
- const data = JSON.parse(JSON.stringify(response.data));
34029
- if (data.metadata?.resourceVersion) {
34030
- delete data.metadata.resourceVersion;
34031
- }
34032
- return data;
34033
- },
34034
- refetchInterval: refetchInterval !== void 0 ? refetchInterval : 5e3,
34035
- enabled: isEnabled
34036
- });
34037
- };
34038
-
34039
34152
  const getBackLinkToTable = ({ fullPath }) => {
34040
34153
  return encodeURIComponent(fullPath);
34041
34154
  };
@@ -50309,28 +50422,14 @@ const MarketplaceCard = ({
50309
50422
  apiVersion,
50310
50423
  baseprefix
50311
50424
  });
50312
- const { state, status, lastError } = useListWatch({
50313
- wsUrl: `/api/clusters/${clusterName}/openapi-bff-ws/listThenWatch/listWatchWs`,
50314
- paused: false,
50315
- ignoreRemove: false,
50316
- autoDrain: true,
50317
- preserveStateOnUrlChange: true,
50318
- query: {
50319
- namespace,
50320
- apiVersion: apiVersion || "",
50321
- apiGroup,
50322
- plural: type
50323
- },
50425
+ const { data: k8sList, error: k8sListError } = useK8sSmartResource({
50426
+ cluster: clusterName || "",
50427
+ namespace,
50428
+ group: apiGroup,
50429
+ version: apiVersion || "",
50430
+ plural: type,
50324
50431
  isEnabled: Boolean(apiVersion && addedMode && type !== "direct")
50325
50432
  });
50326
- const k8sListError = status === "closed" && lastError ? lastError : void 0;
50327
- const k8sList = {
50328
- items: state.order.map((key) => {
50329
- const res = state.byKey[key];
50330
- return res;
50331
- })
50332
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
50333
- };
50334
50433
  if (addedMode && (k8sListError || type === "direct") && !showZeroResources) {
50335
50434
  return null;
50336
50435
  }
@@ -50459,30 +50558,17 @@ const MarketPlace = ({
50459
50558
  const [filteredAndSortedData, setFilterAndSortedData] = useState([]);
50460
50559
  const [uniqueTags, setUniqueTags] = useState([]);
50461
50560
  const [selectedTags, setSelectedTags] = useState([]);
50462
- const { state, status, lastError } = useListWatch({
50463
- wsUrl: `/api/clusters/${clusterName}/openapi-bff-ws/listThenWatch/listWatchWs`,
50464
- paused: false,
50465
- ignoreRemove: false,
50466
- autoDrain: true,
50467
- preserveStateOnUrlChange: true,
50468
- query: {
50469
- apiVersion: baseApiVersion,
50470
- apiGroup: baseApiGroup,
50471
- plural: mpResourceName
50472
- },
50473
- isEnabled: clusterName !== void 0
50561
+ const {
50562
+ data: marketplacePanels,
50563
+ isLoading,
50564
+ error
50565
+ } = useK8sSmartResource({
50566
+ cluster: clusterName || "",
50567
+ group: baseApiGroup,
50568
+ version: baseApiVersion,
50569
+ plural: mpResourceName,
50570
+ isEnabled: Boolean(clusterName !== void 0)
50474
50571
  });
50475
- const isLoading = status === "connecting";
50476
- const error = status === "closed" && lastError ? lastError : void 0;
50477
- const marketplacePanels = useMemo(() => {
50478
- return {
50479
- items: state.order.map((key) => {
50480
- const res = state.byKey[key];
50481
- return res;
50482
- })
50483
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
50484
- };
50485
- }, [state]);
50486
50572
  const createPermission = usePermissions({
50487
50573
  group: baseApiGroup,
50488
50574
  resource: mpResourceName,
@@ -50781,52 +50867,30 @@ const ProjectInfoCard = ({
50781
50867
  children
50782
50868
  }) => {
50783
50869
  const navigate = useNavigate();
50784
- const { state, status } = useListWatch({
50785
- wsUrl: `/api/clusters/${clusterName}/openapi-bff-ws/listThenWatch/listWatchWs`,
50786
- paused: false,
50787
- ignoreRemove: false,
50788
- autoDrain: true,
50789
- preserveStateOnUrlChange: true,
50790
- query: {
50791
- apiVersion: baseApiVersion,
50792
- apiGroup: baseApiGroup,
50793
- plural: mpResourceName
50794
- },
50795
- isEnabled: clusterName !== void 0
50796
- });
50797
- const marketplaceIsLoading = status === "connecting";
50798
- const marketplacePanels = {
50799
- items: state.order.map((key) => {
50800
- const res = state.byKey[key];
50801
- return res;
50802
- })
50803
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
50804
- };
50805
50870
  const {
50806
- state: stateProject,
50807
- status: statusProject,
50808
- lastError: lastErrorProject
50809
- } = useListWatch({
50810
- wsUrl: `/api/clusters/${clusterName}/openapi-bff-ws/listThenWatch/listWatchWs`,
50811
- paused: false,
50812
- ignoreRemove: false,
50813
- autoDrain: true,
50814
- preserveStateOnUrlChange: true,
50815
- query: {
50816
- apiVersion: baseProjectVersion,
50817
- apiGroup: baseProjectApiGroup,
50818
- plural: projectResourceName,
50819
- fieldSelector: `metadata.name=${namespace}`
50820
- },
50821
- isEnabled: clusterName !== void 0
50871
+ data: marketplacePanels,
50872
+ isLoading: marketplaceIsLoading
50873
+ // error: marketplaceError,
50874
+ } = useK8sSmartResource({
50875
+ cluster: clusterName || "",
50876
+ group: baseApiGroup,
50877
+ version: baseApiVersion,
50878
+ plural: mpResourceName,
50879
+ isEnabled: Boolean(clusterName !== void 0)
50822
50880
  });
50823
- const isLoading = statusProject === "connecting";
50824
- const error = statusProject === "closed" && lastErrorProject ? lastErrorProject : void 0;
50825
- const projectArr = stateProject.order.map((key) => {
50826
- const res = stateProject.byKey[key];
50827
- return res;
50881
+ const {
50882
+ data: projectArr,
50883
+ isLoading,
50884
+ error
50885
+ } = useK8sSmartResource({
50886
+ cluster: clusterName || "",
50887
+ group: baseProjectApiGroup,
50888
+ version: baseProjectVersion,
50889
+ plural: projectResourceName,
50890
+ fieldSelector: `metadata.name=${namespace}`,
50891
+ isEnabled: Boolean(clusterName !== void 0)
50828
50892
  });
50829
- const project = projectArr.length > 0 ? projectArr[0] : void 0;
50893
+ const project = projectArr && projectArr.length > 0 ? projectArr[0] : void 0;
50830
50894
  const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false);
50831
50895
  const updatePermission = usePermissions({
50832
50896
  group: baseProjectApiGroup,
@@ -53468,5 +53532,18 @@ const useCrdData = ({
53468
53532
  });
53469
53533
  };
53470
53534
 
53471
- export { BackToDefaultIcon, BlackholeForm, BlackholeFormDataProvider, 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, ManageableBreadcrumbsWithDataProvider, ManageableSidebar, ManageableSidebarWithDataProvider, MarketPlace, MarketplaceCard, MinusIcon, NodeTerminal, PaddingContainer, PauseCircleIcon, PlusIcon, PodLogs, PodLogsMonaco, PodTerminal, ProjectInfoCard, ResumeCircleIcon, Search, Spacer$1 as Spacer, SuccessIcon, TreeWithSearch, UncontrolledSelect, UnlockedIcon, UpIcon, YamlEditorSingleton, checkIfApiInstanceNamespaceScoped, checkIfBuiltInInstanceNamespaceScoped, checkPermission, createContextFactory, createNewEntry, deepMerge, deleteEntry, feedbackIcons, filterIfApiInstanceNamespaceScoped, filterIfBuiltInInstanceNamespaceScoped, filterSelectOptions, floorToDecimal, getAllPathsFromObj, getApiResourceSingle, getApiResourceTypes, getApiResourceTypesByApiGroup, getApiResources, getBackLinkToTable, getBuiltinResourceSingle, getBuiltinResourceTypes, getBuiltinResources, getBuiltinTreeData, getClusterList, getCrdData, getCrdResourceSingle, getCrdResources, getDirectUnknownResource, getEnrichedColumns, getEnrichedColumnsWithControls, getGroupsByCategory, getKinds, getLinkToApiForm, getLinkToBuiltinForm, getLinkToForm, getObjectFormItemsDraft, getPrefixSubarrays, getSortedKinds, getSortedKindsAll, getStringByName, getSwagger, getUppercase, groupsToTreeData, hslFromString, isFlatObject, isMultilineFromYaml, isMultilineString, kindByGvr, namespacedByGvr, normalizeValuesForQuotasToNumber, parseQuotaValue, parseQuotaValueCpu, parseQuotaValueMemoryAndStorage, pluralByKind, prepareDataForManageableBreadcrumbs, prepareDataForManageableSidebar, prepareTemplate, prepareUrlsToFetchForDynamicRenderer, updateEntry, useApiResourceSingle, useApiResourceTypesByGroup, useApiResources, useApisResourceTypes, useBuiltinResourceSingle, useBuiltinResourceTypes, useBuiltinResources, useClusterList, useCrdData, useCrdResourceSingle, useCrdResources, useDirectUnknownResource, useInfiniteSentinel, useListWatch, usePermissions };
53535
+ const useInfiniteSentinel = (sentinelRef, hasMore, onNeedMore) => {
53536
+ useEffect(() => {
53537
+ const el = sentinelRef.current;
53538
+ if (!el) return void 0;
53539
+ const io = new IntersectionObserver((entries) => {
53540
+ const visible = entries.some((e) => e.isIntersecting);
53541
+ if (visible && hasMore) onNeedMore();
53542
+ });
53543
+ io.observe(el);
53544
+ return () => io.disconnect();
53545
+ }, [sentinelRef, hasMore, onNeedMore]);
53546
+ };
53547
+
53548
+ export { BackToDefaultIcon, BlackholeForm, BlackholeFormDataProvider, 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, ManageableBreadcrumbsWithDataProvider, ManageableSidebar, ManageableSidebarWithDataProvider, MarketPlace, MarketplaceCard, MinusIcon, NodeTerminal, PaddingContainer, PauseCircleIcon, PlusIcon, PodLogs, PodLogsMonaco, PodTerminal, ProjectInfoCard, ResumeCircleIcon, Search, Spacer$1 as Spacer, SuccessIcon, TreeWithSearch, UncontrolledSelect, UnlockedIcon, UpIcon, YamlEditorSingleton, checkIfApiInstanceNamespaceScoped, checkIfBuiltInInstanceNamespaceScoped, checkPermission, createContextFactory, createNewEntry, deepMerge, deleteEntry, feedbackIcons, filterIfApiInstanceNamespaceScoped, filterIfBuiltInInstanceNamespaceScoped, filterSelectOptions, floorToDecimal, getAllPathsFromObj, getApiResourceSingle, getApiResourceTypes, getApiResourceTypesByApiGroup, getApiResources, getBackLinkToTable, getBuiltinResourceSingle, getBuiltinResourceTypes, getBuiltinResources, getBuiltinTreeData, getClusterList, getCrdData, getCrdResourceSingle, getCrdResources, getDirectUnknownResource, getEnrichedColumns, getEnrichedColumnsWithControls, getGroupsByCategory, getKinds, getLinkToApiForm, getLinkToBuiltinForm, getLinkToForm, getObjectFormItemsDraft, getPrefixSubarrays, getSortedKinds, getSortedKindsAll, getStringByName, getSwagger, getUppercase, groupsToTreeData, hslFromString, isFlatObject, isMultilineFromYaml, isMultilineString, kindByGvr, namespacedByGvr, normalizeValuesForQuotasToNumber, parseQuotaValue, parseQuotaValueCpu, parseQuotaValueMemoryAndStorage, pluralByKind, prepareDataForManageableBreadcrumbs, prepareDataForManageableSidebar, prepareTemplate, prepareUrlsToFetchForDynamicRenderer, updateEntry, useApiResourceSingle, useApiResourceTypesByGroup, useApiResources, useApisResourceTypes, useBuiltinResourceSingle, useBuiltinResourceTypes, useBuiltinResources, useClusterList, useCrdData, useCrdResourceSingle, useCrdResources, useDirectUnknownResource, useInfiniteSentinel, useK8sSmartResource, useK8sVerbs, useListWatch, usePermissions };
53472
53549
  //# sourceMappingURL=openapi-k8s-toolkit.es.js.map