@cobaltcore-dev/aurora 2.1.0 → 2.2.0

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 (171) hide show
  1. package/README.md +31 -25
  2. package/dist/client/AuroraApp.d.ts +9 -2
  3. package/dist/client/context/AppConfigContext.d.ts +44 -0
  4. package/dist/client/index.d.ts +2 -0
  5. package/dist/client/index.js +41221 -844
  6. package/dist/client/index.js.map +1 -1
  7. package/dist/client/trpcClient.d.ts +314 -1
  8. package/dist/client/utils/appConfigGating.d.ts +21 -0
  9. package/dist/server/index.d.ts +694 -4
  10. package/dist/server/index.js +2521 -1243
  11. package/package.json +2 -2
  12. package/dist/client/AuthProvider-CVSAwW9f.mjs +0 -83
  13. package/dist/client/AuthProvider-CVSAwW9f.mjs.map +0 -1
  14. package/dist/client/ContentHeader-fKKZVu-o.mjs +0 -116
  15. package/dist/client/ContentHeader-fKKZVu-o.mjs.map +0 -1
  16. package/dist/client/DeleteFlavorModal-Be2GFiB_.mjs +0 -802
  17. package/dist/client/DeleteFlavorModal-Be2GFiB_.mjs.map +0 -1
  18. package/dist/client/DynamicBreadcrumbContext-CVcUQFou.mjs +0 -26
  19. package/dist/client/DynamicBreadcrumbContext-CVcUQFou.mjs.map +0 -1
  20. package/dist/client/FiltersInput-Becwxo_J.mjs +0 -85
  21. package/dist/client/FiltersInput-Becwxo_J.mjs.map +0 -1
  22. package/dist/client/FloatingIpActionModals-Cq10WljB.mjs +0 -466
  23. package/dist/client/FloatingIpActionModals-Cq10WljB.mjs.map +0 -1
  24. package/dist/client/ImageToastNotifications-BWfzOUMc.mjs +0 -1135
  25. package/dist/client/ImageToastNotifications-BWfzOUMc.mjs.map +0 -1
  26. package/dist/client/RouteIdLevelDefaultError-DPF_x2tG.mjs +0 -26
  27. package/dist/client/RouteIdLevelDefaultError-DPF_x2tG.mjs.map +0 -1
  28. package/dist/client/Slot-CWb612-_.mjs +0 -28
  29. package/dist/client/Slot-CWb612-_.mjs.map +0 -1
  30. package/dist/client/SortInput-4g7nSTHW.mjs +0 -34
  31. package/dist/client/SortInput-4g7nSTHW.mjs.map +0 -1
  32. package/dist/client/StorageNotFound-B-zVinVD.mjs +0 -30
  33. package/dist/client/StorageNotFound-B-zVinVD.mjs.map +0 -1
  34. package/dist/client/TwoColumnDescriptionList-DKS42RKa.mjs +0 -28
  35. package/dist/client/TwoColumnDescriptionList-DKS42RKa.mjs.map +0 -1
  36. package/dist/client/_-CAsCx-Ay.mjs +0 -6
  37. package/dist/client/_-CAsCx-Ay.mjs.map +0 -1
  38. package/dist/client/_auth-SrDjHL6j.mjs +0 -12
  39. package/dist/client/_auth-SrDjHL6j.mjs.map +0 -1
  40. package/dist/client/_flavorId-0PioWpEp.mjs +0 -276
  41. package/dist/client/_flavorId-0PioWpEp.mjs.map +0 -1
  42. package/dist/client/_flavorId-B7fp6Nk8.mjs +0 -22
  43. package/dist/client/_flavorId-B7fp6Nk8.mjs.map +0 -1
  44. package/dist/client/_flavorId-CgueqKTs.mjs +0 -27
  45. package/dist/client/_flavorId-CgueqKTs.mjs.map +0 -1
  46. package/dist/client/_floatingIpId-B8r64AL9.mjs +0 -196
  47. package/dist/client/_floatingIpId-B8r64AL9.mjs.map +0 -1
  48. package/dist/client/_floatingIpId-lEobpOER.mjs +0 -26
  49. package/dist/client/_floatingIpId-lEobpOER.mjs.map +0 -1
  50. package/dist/client/_imageId-Ccv8PedW.mjs +0 -40
  51. package/dist/client/_imageId-Ccv8PedW.mjs.map +0 -1
  52. package/dist/client/_imageId-CiqEQB_J.mjs +0 -558
  53. package/dist/client/_imageId-CiqEQB_J.mjs.map +0 -1
  54. package/dist/client/_imageId-D9LR-02T.mjs +0 -22
  55. package/dist/client/_imageId-D9LR-02T.mjs.map +0 -1
  56. package/dist/client/_projectId-BDARsteX.mjs +0 -77
  57. package/dist/client/_projectId-BDARsteX.mjs.map +0 -1
  58. package/dist/client/_projectId-CtyAHqhH.mjs +0 -30
  59. package/dist/client/_projectId-CtyAHqhH.mjs.map +0 -1
  60. package/dist/client/_projectId-D3VOH5lN.mjs +0 -94
  61. package/dist/client/_projectId-D3VOH5lN.mjs.map +0 -1
  62. package/dist/client/_projectId-ZBk6vka0.mjs +0 -283
  63. package/dist/client/_projectId-ZBk6vka0.mjs.map +0 -1
  64. package/dist/client/_securityGroupId-BwgZnoiR.mjs +0 -29
  65. package/dist/client/_securityGroupId-BwgZnoiR.mjs.map +0 -1
  66. package/dist/client/_securityGroupId-Cz2NUHdB.mjs +0 -1819
  67. package/dist/client/_securityGroupId-Cz2NUHdB.mjs.map +0 -1
  68. package/dist/client/_serviceType-DS8DxsrP.mjs +0 -20
  69. package/dist/client/_serviceType-DS8DxsrP.mjs.map +0 -1
  70. package/dist/client/_serviceType-M8d9rOT6.mjs +0 -6
  71. package/dist/client/_serviceType-M8d9rOT6.mjs.map +0 -1
  72. package/dist/client/_storageType-BNpP1A2N.mjs +0 -13
  73. package/dist/client/_storageType-BNpP1A2N.mjs.map +0 -1
  74. package/dist/client/_storageType-BxSGKhAI.mjs +0 -15
  75. package/dist/client/_storageType-BxSGKhAI.mjs.map +0 -1
  76. package/dist/client/_storageType-DZYCmiLt.mjs +0 -30
  77. package/dist/client/_storageType-DZYCmiLt.mjs.map +0 -1
  78. package/dist/client/_storageType-UqAMP-8d.mjs +0 -859
  79. package/dist/client/_storageType-UqAMP-8d.mjs.map +0 -1
  80. package/dist/client/_storageType-u51_7OwJ.mjs +0 -7
  81. package/dist/client/_storageType-u51_7OwJ.mjs.map +0 -1
  82. package/dist/client/about-BmQTyLWc.mjs +0 -92
  83. package/dist/client/about-BmQTyLWc.mjs.map +0 -1
  84. package/dist/client/assets/__mocks__/svgMock.d.ts +0 -3
  85. package/dist/client/aurora-CIml-f2f.mjs +0 -19
  86. package/dist/client/aurora-CIml-f2f.mjs.map +0 -1
  87. package/dist/client/build-WuxXRAqf.mjs +0 -14530
  88. package/dist/client/build-WuxXRAqf.mjs.map +0 -1
  89. package/dist/client/cn-DM4Cy3jv.mjs +0 -10
  90. package/dist/client/cn-DM4Cy3jv.mjs.map +0 -1
  91. package/dist/client/flavors-Ce3J-cFa.mjs +0 -15
  92. package/dist/client/flavors-Ce3J-cFa.mjs.map +0 -1
  93. package/dist/client/flavors-D5ThLaXO.mjs +0 -666
  94. package/dist/client/flavors-D5ThLaXO.mjs.map +0 -1
  95. package/dist/client/flavors-DWMZ6TuJ.mjs +0 -8
  96. package/dist/client/flavors-DWMZ6TuJ.mjs.map +0 -1
  97. package/dist/client/floatingips-Cz9k80cc.mjs +0 -8
  98. package/dist/client/floatingips-Cz9k80cc.mjs.map +0 -1
  99. package/dist/client/floatingips-DXnRlLvV.mjs +0 -551
  100. package/dist/client/floatingips-DXnRlLvV.mjs.map +0 -1
  101. package/dist/client/floatingips-HRbuLxiN.mjs +0 -22
  102. package/dist/client/floatingips-HRbuLxiN.mjs.map +0 -1
  103. package/dist/client/floatingips-nN1kQmsu.mjs +0 -14
  104. package/dist/client/floatingips-nN1kQmsu.mjs.map +0 -1
  105. package/dist/client/formatBytes-CZv_XyCY.mjs +0 -38
  106. package/dist/client/formatBytes-CZv_XyCY.mjs.map +0 -1
  107. package/dist/client/helpers-1PpYf-fC.mjs +0 -6
  108. package/dist/client/helpers-1PpYf-fC.mjs.map +0 -1
  109. package/dist/client/hooks-D0yKIumu.mjs +0 -22
  110. package/dist/client/hooks-D0yKIumu.mjs.map +0 -1
  111. package/dist/client/images-C8M3ysWR.mjs +0 -2023
  112. package/dist/client/images-C8M3ysWR.mjs.map +0 -1
  113. package/dist/client/images-Cf5R28NR.mjs +0 -15
  114. package/dist/client/images-Cf5R28NR.mjs.map +0 -1
  115. package/dist/client/images-NBf2bV43.mjs +0 -8
  116. package/dist/client/images-NBf2bV43.mjs.map +0 -1
  117. package/dist/client/md-kvaGCNAK.mjs +0 -336
  118. package/dist/client/md-kvaGCNAK.mjs.map +0 -1
  119. package/dist/client/network-DuZm76BZ.mjs +0 -8
  120. package/dist/client/network-DuZm76BZ.mjs.map +0 -1
  121. package/dist/client/objects-BudUAfWY.mjs +0 -12909
  122. package/dist/client/objects-BudUAfWY.mjs.map +0 -1
  123. package/dist/client/objects-Dc7sKUr8.mjs +0 -67
  124. package/dist/client/objects-Dc7sKUr8.mjs.map +0 -1
  125. package/dist/client/objects-Dw7oeTq2.mjs +0 -80
  126. package/dist/client/objects-Dw7oeTq2.mjs.map +0 -1
  127. package/dist/client/objects-_g7nGIn5.mjs +0 -25
  128. package/dist/client/objects-_g7nGIn5.mjs.map +0 -1
  129. package/dist/client/objects-eBxvY6_n.mjs +0 -78
  130. package/dist/client/objects-eBxvY6_n.mjs.map +0 -1
  131. package/dist/client/projects-yiK0HGSA.mjs +0 -7
  132. package/dist/client/projects-yiK0HGSA.mjs.map +0 -1
  133. package/dist/client/routeInfo-DP3v74Wg.mjs +0 -19
  134. package/dist/client/routeInfo-DP3v74Wg.mjs.map +0 -1
  135. package/dist/client/routes-CJj7SR_K.mjs +0 -10
  136. package/dist/client/routes-CJj7SR_K.mjs.map +0 -1
  137. package/dist/client/routes-xofA3ksU.mjs +0 -110
  138. package/dist/client/routes-xofA3ksU.mjs.map +0 -1
  139. package/dist/client/securitygroups-67fFxiwt.mjs +0 -15
  140. package/dist/client/securitygroups-67fFxiwt.mjs.map +0 -1
  141. package/dist/client/securitygroups-CtKne8UQ.mjs +0 -8
  142. package/dist/client/securitygroups-CtKne8UQ.mjs.map +0 -1
  143. package/dist/client/securitygroups-DXrfyuVF.mjs +0 -580
  144. package/dist/client/securitygroups-DXrfyuVF.mjs.map +0 -1
  145. package/dist/client/securitygroups-WLB1_IM6.mjs +0 -22
  146. package/dist/client/securitygroups-WLB1_IM6.mjs.map +0 -1
  147. package/dist/client/securitygroups-o0IXZM6S.mjs +0 -14
  148. package/dist/client/securitygroups-o0IXZM6S.mjs.map +0 -1
  149. package/dist/client/serviceCatalog-B3lKWC9V.mjs +0 -6
  150. package/dist/client/serviceCatalog-B3lKWC9V.mjs.map +0 -1
  151. package/dist/client/services-D1PbooD1.mjs +0 -6
  152. package/dist/client/services-D1PbooD1.mjs.map +0 -1
  153. package/dist/client/services-DEMVtFyn.mjs +0 -9
  154. package/dist/client/services-DEMVtFyn.mjs.map +0 -1
  155. package/dist/client/storageProviders-CJ5rOh13.mjs +0 -15
  156. package/dist/client/storageProviders-CJ5rOh13.mjs.map +0 -1
  157. package/dist/client/trpcClient-D7gpR7YG.mjs +0 -71
  158. package/dist/client/trpcClient-D7gpR7YG.mjs.map +0 -1
  159. package/dist/client/useBreadcrumbs-ha3IlaxX.mjs +0 -54
  160. package/dist/client/useBreadcrumbs-ha3IlaxX.mjs.map +0 -1
  161. package/dist/client/useModal-DCs1OJh7.mjs +0 -12
  162. package/dist/client/useModal-DCs1OJh7.mjs.map +0 -1
  163. package/dist/client/useModalTracking-BYd37pXm.mjs +0 -37
  164. package/dist/client/useModalTracking-BYd37pXm.mjs.map +0 -1
  165. package/dist/client/useProjectId-DBc5lpoU.mjs +0 -11
  166. package/dist/client/useProjectId-DBc5lpoU.mjs.map +0 -1
  167. package/dist/client/useSecurityGroupPermissions--hK4aR8Y.mjs +0 -294
  168. package/dist/client/useSecurityGroupPermissions--hK4aR8Y.mjs.map +0 -1
  169. package/dist/client/useSetBreadcrumb-tn7lBaQV.mjs +0 -19
  170. package/dist/client/useSetBreadcrumb-tn7lBaQV.mjs.map +0 -1
  171. package/dist/client/utils/trpcErrors.d.ts +0 -13
@@ -1,10 +0,0 @@
1
- import { clsx as e } from "clsx";
2
- import { twMerge as t } from "tailwind-merge";
3
- //#region src/client/utils/cn.ts
4
- function n(...n) {
5
- return t(e(n));
6
- }
7
- //#endregion
8
- export { n as t };
9
-
10
- //# sourceMappingURL=cn-DM4Cy3jv.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cn-DM4Cy3jv.mjs","names":["clsx","twMerge","cn","inputs"],"sources":["../../src/client/utils/cn.ts"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\n/**\n * A utility function that combines clsx and tailwind-merge\n *\n * This function takes multiple class values (strings, objects, arrays, etc.)\n * and combines them into a single string of CSS classes.\n * It then uses tailwind-merge to resolve any Tailwind CSS conflicts.\n *\n * @param inputs - Class values to be combined\n * @returns A string of CSS classes with Tailwind conflicts resolved\n *\n * @example\n * // Basic usage\n * cn('text-red-500', 'bg-blue-500')\n * // => 'text-red-500 bg-blue-500'\n *\n * @example\n * // With conditionals\n * cn('text-white', isError && 'bg-red-500', !isError && 'bg-blue-500')\n * // => 'text-white bg-red-500' or 'text-white bg-blue-500'\n *\n * @example\n * // Resolving conflicts\n * cn('text-red-500', 'text-blue-500')\n * // => 'text-blue-500' (the latter class wins)\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs))\n}\n"],"mappings":";;;AA4BA,SAAgBE,EAAG,GAAGC,GAAoB;CACxC,OAAOF,EAAQD,EAAKG,CAAAA,CAAAA;AACtB"}
@@ -1,15 +0,0 @@
1
- import { createFileRoute as e, lazyRouteComponent as t } from "@tanstack/react-router";
2
- import { i18n as n } from "@lingui/core";
3
- var r = e("/_auth/projects/$projectId/compute/flavors/")({
4
- staticData: {
5
- section: "compute",
6
- service: "flavors",
7
- analytics: { name: "compute.flavors.list" }
8
- },
9
- head: () => ({ meta: [{ title: n._({ id: "neiJm0" }) }] }),
10
- component: t(() => import("./flavors-D5ThLaXO.mjs"), "component")
11
- });
12
- //#endregion
13
- export { r as t };
14
-
15
- //# sourceMappingURL=flavors-Ce3J-cFa.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flavors-Ce3J-cFa.mjs","names":["createFileRoute","t","Route","staticData","section","service","analytics","name","RouteInfo","head","meta","title","component","lazyRouteComponent","$$splitComponentImporter"],"sources":["../../src/client/routes/_auth/projects/$projectId/compute/flavors/index.tsx"],"sourcesContent":["import { createFileRoute } from \"@tanstack/react-router\"\nimport { t } from \"@lingui/core/macro\"\nimport { useLingui } from \"@lingui/react/macro\"\nimport { Flavors } from \"./-components/List\"\nimport type { RouteInfo } from \"@/client/routes/routeInfo\"\nimport { ContentHeader } from \"@/client/components/ContentHeader/ContentHeader\"\n\nexport const Route = createFileRoute(\"/_auth/projects/$projectId/compute/flavors/\")({\n staticData: {\n section: \"compute\",\n service: \"flavors\",\n analytics: {\n name: \"compute.flavors.list\",\n },\n } satisfies RouteInfo,\n head: () => ({ meta: [{ title: t`Flavors` }] }),\n component: RouteComponent,\n})\n\nfunction RouteComponent() {\n const { t } = useLingui()\n const { projectId } = Route.useParams()\n const { trpcClient } = Route.useRouteContext()\n return (\n <>\n <ContentHeader title={t`Flavors`} projectId={projectId} />\n <Flavors project={projectId} client={trpcClient!} />\n </>\n )\n}\n"],"mappings":";;AAOA,IAAaE,IAAQF,EAAgB,6CAAA,CAAA,CAA+C;CAClFG,YAAY;EACVC,SAAS;EACTC,SAAS;EACTC,WAAW,EACTC,MAAM,uBACR;CACF;CACAE,aAAa,EAAEC,MAAM,CAAC,EAAEC,OAAOV,EAAAA,EAAC,EAAA,IAAA,SAAA,CAAA,EAAU,CAAC,EAAE;CAC7CW,WAASC,0CAAA,WAAA;AACX,CAAA"}
@@ -1,666 +0,0 @@
1
- import { C as e, D as t, L as n, Q as r, S as i, T as a, V as o, X as s, ft as c, g as l, h as u, i as d, l as f, m as p, o as m, ot as h, p as g, r as _, rt as v, st as y, t as b, x } from "./build-WuxXRAqf.mjs";
2
- import { t as S } from "./flavors-Ce3J-cFa.mjs";
3
- import { t as C } from "./SortInput-4g7nSTHW.mjs";
4
- import { t as w } from "./ContentHeader-fKKZVu-o.mjs";
5
- import { a as T, i as E, n as D, o as O, r as k, t as A } from "./DeleteFlavorModal-Be2GFiB_.mjs";
6
- import { Fragment as j, jsx as M, jsxs as N } from "react/jsx-runtime";
7
- import P, { Suspense as F, startTransition as I, use as L, useCallback as R, useEffect as z, useRef as B, useState as V } from "react";
8
- import { useNavigate as H, useParams as ee, useSearch as U } from "@tanstack/react-router";
9
- import { TRPCClientError as W } from "@trpc/client";
10
- import { Trans as G, useLingui as K } from "@lingui/react";
11
- import { ErrorBoundary as q } from "react-error-boundary";
12
- //#region src/client/routes/_auth/projects/$projectId/compute/flavors/-components/FlavorListContainer.tsx
13
- var J = ({ flavors: e, isLoading: n, client: r, project: s, onFlavorDeleted: c, canDeleteFlavor: u, canMangageAccess: d, canManageSpecs: f, currentPage: p = 1, totalPages: h = 1, onPageChange: g }) => {
14
- let { i18n: y, _: S } = K(), C = H(), [w, E] = V(!1), [O, k] = V(!1), [P, F] = V(!1), [I, L] = V(null), [R, B] = V(p.toString());
15
- z(() => {
16
- B(p.toString());
17
- }, [p]);
18
- let { projectId: U } = ee({ from: "/_auth/projects/$projectId/compute/flavors/" }), W = (e) => {
19
- L(e), E(!0);
20
- }, q = (e) => {
21
- L(e), k(!0);
22
- }, J = (e) => {
23
- L(e), F(!0);
24
- }, Y = () => {
25
- E(!1), L(null);
26
- }, X = () => {
27
- I && c && c(I.name || ""), Y();
28
- }, Z = (e) => {
29
- e >= 1 && e <= h && (g?.(e), B(e.toString()));
30
- };
31
- return n ? /*#__PURE__*/ M(v, {
32
- status: "progress",
33
- title: y._({ id: "Z3FXyt" })
34
- }) : /*#__PURE__*/ N(j, { children: [
35
- /*#__PURE__*/ N(m, {
36
- columns: 7,
37
- minContentColumns: [6],
38
- className: "flavors",
39
- "data-testid": "flavors-table",
40
- children: [/*#__PURE__*/ N(a, { children: [
41
- /*#__PURE__*/ M(i, { children: /*#__PURE__*/ M(G, { id: "6YtxFj" }) }),
42
- /*#__PURE__*/ M(i, { children: /*#__PURE__*/ M(G, { id: "k5nYwm" }) }),
43
- /*#__PURE__*/ M(i, { children: /*#__PURE__*/ M(G, { id: "K+e/0e" }) }),
44
- /*#__PURE__*/ M(i, { children: /*#__PURE__*/ M(G, { id: "n0ZttO" }) }),
45
- /*#__PURE__*/ M(i, { children: /*#__PURE__*/ M(G, { id: "p4nMut" }) }),
46
- /*#__PURE__*/ M(i, { children: /*#__PURE__*/ M(G, { id: "HyyJ83" }) }),
47
- /*#__PURE__*/ M(i, {})
48
- ] }), e && e.length > 0 ? e.map((e) => /*#__PURE__*/ N(a, {
49
- "data-testid": `flavor-row-${e.id}`,
50
- onClick: () => C({
51
- to: "/projects/$projectId/compute/flavors/$flavorId",
52
- params: {
53
- projectId: U,
54
- flavorId: e.id
55
- }
56
- }),
57
- children: [
58
- /*#__PURE__*/ M(b, { children: e.name || e.id }),
59
- /*#__PURE__*/ M(b, { children: e.vcpus || "–" }),
60
- /*#__PURE__*/ M(b, { children: e.ram || "–" }),
61
- /*#__PURE__*/ M(b, { children: e.disk || "–" }),
62
- /*#__PURE__*/ M(b, { children: e.swap || "–" }),
63
- /*#__PURE__*/ M(b, { children: e["os-flavor-access:is_public"] === !1 ? y._({ id: "zwBp5t" }) : y._({ id: "7d1a0d" }) }),
64
- /*#__PURE__*/ M(b, {
65
- onClick: (e) => e.stopPropagation(),
66
- children: /*#__PURE__*/ M(t, { children: /*#__PURE__*/ N(l, { children: [
67
- f && /*#__PURE__*/ M(x, {
68
- label: y._({ id: "SIfYq6" }),
69
- onClick: () => q(e)
70
- }),
71
- d && e["os-flavor-access:is_public"] === !1 && /*#__PURE__*/ M(x, {
72
- label: y._({ id: "cWbW6w" }),
73
- onClick: () => J(e)
74
- }),
75
- /*#__PURE__*/ M(x, {
76
- label: y._({ id: "v0hPHE" }),
77
- onClick: () => C({
78
- to: "/projects/$projectId/compute/flavors/$flavorId",
79
- params: {
80
- projectId: U,
81
- flavorId: e.id
82
- }
83
- })
84
- }),
85
- u && /*#__PURE__*/ N(j, { children: [/*#__PURE__*/ M(_, {}), /*#__PURE__*/ M(x, {
86
- label: y._({ id: "JT3I1g" }),
87
- onClick: () => W(e)
88
- })] })
89
- ] }) })
90
- })
91
- ]
92
- }, e.id)) : /*#__PURE__*/ M(a, { children: /*#__PURE__*/ M(b, {
93
- colSpan: 7,
94
- children: /*#__PURE__*/ M(v, {
95
- status: "empty",
96
- title: y._({ id: "PiyQJ/" }),
97
- body: y._({ id: "KSW/GC" })
98
- })
99
- }) })]
100
- }),
101
- h > 1 && /*#__PURE__*/ M("div", {
102
- className: "flex justify-center py-4",
103
- children: /*#__PURE__*/ M(o, {
104
- variant: "input",
105
- currentPage: p,
106
- pages: h,
107
- onPressPrevious: () => Z(Math.max(p - 1, 1)),
108
- onPressNext: () => Z(Math.min(p + 1, h)),
109
- onSelectChange: (e) => {
110
- Z(e);
111
- },
112
- onInputChange: (e) => {
113
- B(e === void 0 ? "" : String(e));
114
- },
115
- onKeyDown: (e) => {
116
- if (e.key === "Enter" && R !== "") {
117
- let e = parseInt(R, 10);
118
- !isNaN(e) && e >= 1 && e <= h && Z(e);
119
- }
120
- }
121
- })
122
- }),
123
- /*#__PURE__*/ M(A, {
124
- client: r,
125
- isOpen: w,
126
- onClose: Y,
127
- project: s,
128
- flavor: I,
129
- onSuccess: X
130
- }),
131
- /*#__PURE__*/ M(T, {
132
- client: r,
133
- isOpen: O,
134
- onClose: () => k(!1),
135
- project: s,
136
- flavor: I
137
- }),
138
- /*#__PURE__*/ M(D, {
139
- client: r,
140
- isOpen: P,
141
- onClose: () => F(!1),
142
- project: s,
143
- flavor: I
144
- })
145
- ] });
146
- }, Y = (e, t, n) => {
147
- switch (e) {
148
- case "id":
149
- if (!t) return;
150
- {
151
- let e = String(t).trim();
152
- return /^[a-zA-Z0-9.\-_]*$/.test(e) ? void 0 : n({ id: "AX9Juz" });
153
- }
154
- case "name": {
155
- let e = String(t || "").trim();
156
- return e.length >= 2 && e.length <= 50 ? void 0 : n({ id: "zDS0JC" });
157
- }
158
- case "vcpus": {
159
- let e = Number(t);
160
- return !isNaN(e) && e >= 1 ? void 0 : n({ id: "uSdnuQ" });
161
- }
162
- case "ram": {
163
- let e = Number(t);
164
- return !isNaN(e) && e >= 128 ? void 0 : n({ id: "g1IxCo" });
165
- }
166
- case "disk": {
167
- let e = Number(t);
168
- return !isNaN(e) && e >= 0 ? void 0 : n({ id: "AJRhSM" });
169
- }
170
- case "swap":
171
- if (t === "" || t == null) return;
172
- {
173
- let e = Number(t);
174
- return !isNaN(e) && e >= 0 ? void 0 : n({ id: "g3BSCe" });
175
- }
176
- case "rxtx_factor": {
177
- let e = Number(t);
178
- return !isNaN(e) && e >= 1 ? void 0 : n({ id: "PIbPRX" });
179
- }
180
- case "description": return t ? String(t).length < 65535 ? void 0 : n({ id: "uuKb0T" }) : void 0;
181
- case "OS-FLV-EXT-DATA:ephemeral": {
182
- let e = Number(t);
183
- return !isNaN(e) && e >= 0 ? void 0 : n({ id: "tLerHy" });
184
- }
185
- case "os-flavor-access:is_public": return t == null || typeof t == "boolean" || typeof t == "string" && (t === "true" || t === "false") ? void 0 : n({ id: "MmtQVF" });
186
- default: return;
187
- }
188
- }, X = (e) => {
189
- let t = {
190
- name: String(e.name),
191
- vcpus: Number(e.vcpus),
192
- ram: Number(e.ram),
193
- disk: Number(e.disk)
194
- }, n = (e) => e != null && e !== "" && String(e).trim() !== "", r = (e) => e != null && e !== "" && String(e).trim() !== "" && !isNaN(Number(e));
195
- return n(e.id) && (t.id = String(e.id).trim()), n(e.description) && (t.description = String(e.description).trim()), r(e.swap) && (t.swap = Number(e.swap)), r(e.rxtx_factor) && (t.rxtx_factor = Number(e.rxtx_factor)), r(e["OS-FLV-EXT-DATA:ephemeral"]) && (t["OS-FLV-EXT-DATA:ephemeral"] = Number(e["OS-FLV-EXT-DATA:ephemeral"])), e["os-flavor-access:is_public"] !== void 0 && (t["os-flavor-access:is_public"] = !!e["os-flavor-access:is_public"]), t;
196
- }, Z = ({ client: e, isOpen: t, onClose: r, project: i, onSuccess: a }) => {
197
- let { i18n: o, _: l } = K(), { translateError: d } = O(), [f, m] = V({ "os-flavor-access:is_public": !0 }), [h, _] = V({}), [b, x] = V(!1), [S, C] = V(null), [w, T] = V(!1);
198
- P.useEffect(() => {
199
- t && e.compute.getComputeApiVersion.query({ project_id: i }).then((e) => T(e.supportsDescription)).catch(() => T(!1));
200
- }, [
201
- t,
202
- e,
203
- i
204
- ]);
205
- let E = (e) => {
206
- let { name: t, value: n, type: r, checked: i } = e.target;
207
- m((e) => ({
208
- ...e,
209
- [t]: r === "checkbox" ? i : n
210
- })), _((e) => ({
211
- ...e,
212
- [t]: void 0
213
- })), S && C(null);
214
- }, D = (e, t) => {
215
- m((n) => ({
216
- ...n,
217
- [e]: t
218
- })), _((t) => ({
219
- ...t,
220
- [e]: void 0
221
- })), S && C(null);
222
- }, k = (e) => {
223
- let { name: t, value: n } = e.target, r = Y(t, n, l);
224
- _((e) => ({
225
- ...e,
226
- [t]: r
227
- }));
228
- }, A = async (t) => {
229
- t.preventDefault(), C(null);
230
- let n = {};
231
- if ([
232
- "name",
233
- "vcpus",
234
- "ram",
235
- "disk"
236
- ].forEach((e) => {
237
- let t = Y(e, f[e], l);
238
- t && (n[e] = t);
239
- }), [
240
- "id",
241
- "swap",
242
- "OS-FLV-EXT-DATA:ephemeral",
243
- "rxtx_factor",
244
- "description",
245
- "os-flavor-access:is_public"
246
- ].forEach((e) => {
247
- let t = f[e];
248
- if (t !== void 0 && t !== "" && t !== null) {
249
- let r = Y(e, t, l);
250
- r && (n[e] = r);
251
- }
252
- }), Object.keys(n).length > 0) {
253
- _(n), C(o._({ id: "CBFSfX" }));
254
- return;
255
- }
256
- try {
257
- x(!0);
258
- let t = X(f);
259
- await e.compute.createFlavor.mutate({
260
- project_id: i,
261
- flavor: t
262
- }), a(t.name), j();
263
- } catch (e) {
264
- let t = e?.message ? d(e.message) : o._({ id: "OxDN2m" });
265
- C(t);
266
- } finally {
267
- x(!1);
268
- }
269
- }, j = () => {
270
- m({ "os-flavor-access:is_public": !0 }), _({}), C(null), r();
271
- };
272
- return /*#__PURE__*/ N(s, {
273
- onCancel: j,
274
- size: "large",
275
- title: o._({ id: "Rlp5zj" }),
276
- open: t,
277
- onConfirm: A,
278
- cancelButtonLabel: o._({ id: "dEgA5A" }),
279
- confirmButtonLabel: o._({ id: "wEfZld" }),
280
- disableConfirmButton: !(() => {
281
- for (let e of [
282
- "name",
283
- "vcpus",
284
- "ram",
285
- "disk"
286
- ]) {
287
- let t = f[e];
288
- if (t === void 0 || t === "" || t === null || Y(e, t, l)) return !1;
289
- }
290
- for (let e of [
291
- "id",
292
- "swap",
293
- "OS-FLV-EXT-DATA:ephemeral",
294
- "rxtx_factor",
295
- "description"
296
- ]) {
297
- let t = f[e];
298
- if (t !== void 0 && t !== "" && t !== null && Y(e, t, l)) return !1;
299
- }
300
- return !0;
301
- })() || b,
302
- disableCancelButton: b,
303
- disableCloseButton: b,
304
- children: [b && /*#__PURE__*/ M(v, {
305
- status: "progress",
306
- title: o._({ id: "XgBuun" }),
307
- className: "mt-0"
308
- }), !b && /*#__PURE__*/ N(c, { children: [
309
- S && /*#__PURE__*/ M(u, { children: /*#__PURE__*/ M(n, {
310
- onDismiss: () => {
311
- C(null);
312
- },
313
- text: S,
314
- variant: "error"
315
- }) }),
316
- /*#__PURE__*/ N(g, {
317
- title: o._({ id: "JlSgnX" }),
318
- children: [
319
- /*#__PURE__*/ M(u, { children: /*#__PURE__*/ M(p, {
320
- id: "id",
321
- name: "id",
322
- label: o._({ id: "s2ubkU" }),
323
- value: f.id || "",
324
- onChange: E,
325
- onBlur: k,
326
- errortext: h.id,
327
- helptext: o._({ id: "hv2CnP" })
328
- }) }),
329
- /*#__PURE__*/ M(u, { children: /*#__PURE__*/ M(p, {
330
- id: "name",
331
- name: "name",
332
- label: o._({ id: "lWxDDh" }),
333
- value: f.name || "",
334
- onChange: E,
335
- onBlur: k,
336
- errortext: h.name,
337
- helptext: o._({ id: "nq24is" }),
338
- required: !0
339
- }) }),
340
- w && /*#__PURE__*/ M(u, { children: /*#__PURE__*/ M(p, {
341
- id: "description",
342
- name: "description",
343
- label: o._({ id: "Nu4oKW" }),
344
- value: f.description || "",
345
- onChange: E,
346
- onBlur: k,
347
- errortext: h.description
348
- }) }),
349
- /*#__PURE__*/ M(u, { children: /*#__PURE__*/ M(y, {
350
- name: "os-flavor-access:is_public",
351
- label: o._({ id: "vbajgL" }),
352
- helptext: o._({ id: "Y8TptA" }),
353
- checked: !!f["os-flavor-access:is_public"],
354
- onChange: E
355
- }) })
356
- ]
357
- }),
358
- /*#__PURE__*/ N(g, {
359
- title: o._({ id: "qQ1QBh" }),
360
- children: [
361
- /*#__PURE__*/ M(u, { children: /*#__PURE__*/ M(p, {
362
- id: "vcpus",
363
- name: "vcpus",
364
- label: o._({ id: "k5nYwm" }),
365
- value: String(f.vcpus || ""),
366
- onChange: (e) => D("vcpus", Number(e.target.value)),
367
- onBlur: k,
368
- errortext: h.vcpus,
369
- type: "number",
370
- required: !0
371
- }) }),
372
- /*#__PURE__*/ M(u, { children: /*#__PURE__*/ M(p, {
373
- id: "ram",
374
- name: "ram",
375
- label: o._({ id: "K+e/0e" }),
376
- value: String(f.ram || ""),
377
- onChange: (e) => D("ram", Number(e.target.value)),
378
- onBlur: k,
379
- errortext: h.ram,
380
- helptext: o._({ id: "9DrU1K" }),
381
- type: "number",
382
- required: !0
383
- }) }),
384
- /*#__PURE__*/ M(u, { children: /*#__PURE__*/ M(p, {
385
- id: "disk",
386
- name: "disk",
387
- label: o._({ id: "n0ZttO" }),
388
- value: String(f.disk || ""),
389
- onChange: (e) => D("disk", Number(e.target.value)),
390
- onBlur: k,
391
- errortext: h.disk,
392
- type: "number",
393
- required: !0
394
- }) }),
395
- /*#__PURE__*/ M(u, { children: /*#__PURE__*/ M(p, {
396
- id: "OS-FLV-EXT-DATA:ephemeral",
397
- name: "OS-FLV-EXT-DATA:ephemeral",
398
- label: o._({ id: "X2OnDx" }),
399
- value: String(f["OS-FLV-EXT-DATA:ephemeral"] || ""),
400
- onChange: (e) => D("OS-FLV-EXT-DATA:ephemeral", Number(e.target.value)),
401
- onBlur: k,
402
- errortext: h["OS-FLV-EXT-DATA:ephemeral"],
403
- type: "number"
404
- }) }),
405
- /*#__PURE__*/ M(u, { children: /*#__PURE__*/ M(p, {
406
- id: "swap",
407
- name: "swap",
408
- label: o._({ id: "p4nMut" }),
409
- value: String(f.swap || ""),
410
- onChange: (e) => D("swap", e.target.value ? Number(e.target.value) : void 0),
411
- onBlur: k,
412
- errortext: h.swap,
413
- type: "number"
414
- }) }),
415
- /*#__PURE__*/ M(u, { children: /*#__PURE__*/ M(p, {
416
- id: "rxtx_factor",
417
- name: "rxtx_factor",
418
- label: o._({ id: "u5HztT" }),
419
- value: String(f.rxtx_factor || ""),
420
- onChange: (e) => D("rxtx_factor", Number(e.target.value)),
421
- onBlur: k,
422
- errortext: h.rxtx_factor,
423
- helptext: o._({ id: "IVw5fS" }),
424
- type: "number"
425
- }) })
426
- ]
427
- })
428
- ] })]
429
- });
430
- }, Q = 50, $ = (e, t, n, r, i) => e.compute.getFlavorsByProjectId.query({
431
- project_id: t,
432
- sortBy: n,
433
- sortDirection: r,
434
- searchTerm: i
435
- }).then((e) => ({
436
- ...e,
437
- listError: void 0
438
- })).catch((e) => {
439
- if (e instanceof W && e.data?.code === "FORBIDDEN") return {
440
- flavors: [],
441
- privateFlavorError: void 0,
442
- listError: e.message
443
- };
444
- throw e;
445
- }), te = (e, t) => e.compute.canUser.query({
446
- project_id: t,
447
- permission: [
448
- "flavors:create",
449
- "flavors:delete",
450
- "flavors:add_project",
451
- "flavors:remove_project",
452
- "flavor_specs:create",
453
- "flavor_specs:delete"
454
- ]
455
- }).then(([e, t, n, r, i, a]) => ({
456
- canCreate: e,
457
- canDelete: t,
458
- canManageAccess: n || r,
459
- canManageSpecs: i || a
460
- }));
461
- function ne({ flavorsPromise: t, permissionsPromise: i, client: a, project: o, onFlavorDeleted: s, onFlavorCreated: c, searchTerm: l, setSearchTerm: u, sortSettings: p, handleSortChange: m, createModalOpen: h, setCreateModalOpen: g, currentPage: _, onPageChange: v }) {
462
- let { i18n: y, _: b } = K(), { flavors: x, privateFlavorError: S, listError: w } = L(t), T = L(i), [E, D] = V(l), O = B(void 0);
463
- if (z(() => () => clearTimeout(O.current), []), w) return /*#__PURE__*/ M("p", { children: w });
464
- let k = Math.max(1, Math.ceil(x.length / Q)), A = Math.min(_, k), P = x.slice((A - 1) * Q, A * Q);
465
- return z(() => {
466
- _ > k && v(1);
467
- }, [
468
- k,
469
- _,
470
- v
471
- ]), /*#__PURE__*/ N(j, { children: [
472
- /*#__PURE__*/ M(Z, {
473
- client: a,
474
- isOpen: h,
475
- project: o,
476
- onClose: () => g(!1),
477
- onSuccess: c
478
- }),
479
- S && /*#__PURE__*/ M(n, {
480
- className: "mb-4",
481
- text: y._({ id: "3oc18/" }),
482
- variant: "warning"
483
- }),
484
- /*#__PURE__*/ M(r, {
485
- distribution: "end",
486
- alignment: "center",
487
- gap: "2",
488
- className: "pb-2",
489
- children: /*#__PURE__*/ N(r, {
490
- gap: "2",
491
- children: [/*#__PURE__*/ M(C, {
492
- options: p.options,
493
- sortBy: p.sortBy,
494
- sortDirection: p.sortDirection ?? "asc",
495
- selectClassName: "min-w-45",
496
- selectWidth: "auto",
497
- onSortByChange: (e) => m({
498
- ...p,
499
- sortBy: e,
500
- sortDirection: p.sortDirection
501
- }),
502
- onSortDirectionChange: (e) => m({
503
- ...p,
504
- sortDirection: e
505
- })
506
- }), T.canCreate && /*#__PURE__*/ M(d, {
507
- variant: "primary",
508
- label: y._({ id: "Rlp5zj" }),
509
- onClick: () => g(!0)
510
- })]
511
- })
512
- }),
513
- /*#__PURE__*/ M(f, { children: /*#__PURE__*/ M(r, {
514
- distribution: "end",
515
- alignment: "center",
516
- children: /*#__PURE__*/ M(e, {
517
- placeholder: y._({ id: "U0sPCo" }),
518
- "data-testid": "searchbar",
519
- value: E,
520
- onInput: (e) => {
521
- let t = e.currentTarget.value;
522
- D(t), clearTimeout(O.current), O.current = window.setTimeout(() => u(t), 500);
523
- },
524
- onSearch: (e) => {
525
- clearTimeout(O.current), u(typeof e == "string" ? e : "");
526
- },
527
- onClear: () => {
528
- clearTimeout(O.current), D(""), u("");
529
- }
530
- })
531
- }) }),
532
- /*#__PURE__*/ M(J, {
533
- flavors: P,
534
- isLoading: !1,
535
- client: a,
536
- project: o,
537
- onFlavorDeleted: s,
538
- canDeleteFlavor: T.canDelete,
539
- canMangageAccess: T.canManageAccess,
540
- canManageSpecs: T.canManageSpecs,
541
- currentPage: A,
542
- totalPages: k,
543
- onPageChange: v
544
- })
545
- ] });
546
- }
547
- var re = ({ client: e, project: t }) => {
548
- let { i18n: n, _: r } = K(), i = H(), a = U({ strict: !1 }), [o, s] = V({
549
- options: [
550
- {
551
- label: n._({ id: "6YtxFj" }),
552
- value: "name"
553
- },
554
- {
555
- label: n._({ id: "k5nYwm" }),
556
- value: "vcpus"
557
- },
558
- {
559
- label: n._({ id: "K+e/0e" }),
560
- value: "ram"
561
- },
562
- {
563
- label: n._({ id: "n0ZttO" }),
564
- value: "disk"
565
- },
566
- {
567
- label: n._({ id: "p4nMut" }),
568
- value: "swap"
569
- }
570
- ],
571
- sortBy: a.sortBy || "name",
572
- sortDirection: a.sortDirection || "asc"
573
- }), [c, l] = V(a.search || ""), u = a.page ?? 1, [d, f] = V(!1), [p, m] = V(() => $(e, t, o.sortBy, o.sortDirection, c)), [g] = V(() => te(e, t)), _ = () => {
574
- I(() => {
575
- m($(e, t, o.sortBy, o.sortDirection, c));
576
- });
577
- }, y = (e) => {
578
- let { message: t, ...n } = E(e);
579
- h.success(t, n), _();
580
- }, b = (e) => {
581
- let { message: t, ...n } = k(e);
582
- h.success(t, n), _();
583
- }, x = (n) => {
584
- let r = {
585
- options: n.options,
586
- sortBy: n.sortBy?.toString() || "name",
587
- sortDirection: n.sortDirection || "asc"
588
- };
589
- s(r), i({
590
- search: (e) => ({
591
- ...e,
592
- sortBy: r.sortBy,
593
- sortDirection: r.sortDirection,
594
- page: void 0
595
- }),
596
- replace: !0
597
- }), I(() => {
598
- m($(e, t, r.sortBy, r.sortDirection, c));
599
- });
600
- }, S = (n) => {
601
- let r = typeof n == "string" ? n : "";
602
- l(r), i({
603
- search: (e) => ({
604
- ...e,
605
- search: r || void 0,
606
- page: void 0
607
- }),
608
- replace: !0
609
- }), I(() => {
610
- m($(e, t, o.sortBy, o.sortDirection, r));
611
- });
612
- }, C = R((e) => {
613
- i({ search: (t) => ({
614
- ...t,
615
- page: e === 1 ? void 0 : e
616
- }) });
617
- }, [i]);
618
- return /*#__PURE__*/ M("div", {
619
- className: "relative",
620
- children: /*#__PURE__*/ M(q, {
621
- fallbackRender: ({ error: e }) => /*#__PURE__*/ M(v, {
622
- status: "error",
623
- title: n._({ id: "ZllCCx" }),
624
- body: e instanceof Error ? e.message : n._({ id: "W5A0Ly" })
625
- }),
626
- children: /*#__PURE__*/ M(F, {
627
- fallback: /*#__PURE__*/ M(v, {
628
- status: "progress",
629
- title: n._({ id: "EqSPkP" })
630
- }),
631
- children: /*#__PURE__*/ M(ne, {
632
- flavorsPromise: p,
633
- permissionsPromise: g,
634
- client: e,
635
- project: t,
636
- onFlavorDeleted: y,
637
- onFlavorCreated: b,
638
- searchTerm: c,
639
- setSearchTerm: S,
640
- sortSettings: o,
641
- handleSortChange: x,
642
- createModalOpen: d,
643
- setCreateModalOpen: f,
644
- currentPage: u,
645
- onPageChange: C
646
- })
647
- })
648
- })
649
- });
650
- };
651
- //#endregion
652
- //#region src/client/routes/_auth/projects/$projectId/compute/flavors/index.tsx?tsr-split=component
653
- function ie() {
654
- let { i18n: e, _: t } = K(), { projectId: n } = S.useParams(), { trpcClient: r } = S.useRouteContext();
655
- return /*#__PURE__*/ N(j, { children: [/*#__PURE__*/ M(w, {
656
- title: e._({ id: "neiJm0" }),
657
- projectId: n
658
- }), /*#__PURE__*/ M(re, {
659
- project: n,
660
- client: r
661
- })] });
662
- }
663
- //#endregion
664
- export { ie as component };
665
-
666
- //# sourceMappingURL=flavors-D5ThLaXO.mjs.map