@cobaltcore-dev/aurora 1.3.0 → 2.1.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 (150) hide show
  1. package/dist/client/ContentHeader-fKKZVu-o.mjs +116 -0
  2. package/dist/client/ContentHeader-fKKZVu-o.mjs.map +1 -0
  3. package/dist/client/DeleteFlavorModal-Be2GFiB_.mjs +802 -0
  4. package/dist/client/DeleteFlavorModal-Be2GFiB_.mjs.map +1 -0
  5. package/dist/client/{FiltersInput-CKI6zWnm.mjs → FiltersInput-Becwxo_J.mjs} +36 -33
  6. package/dist/client/FiltersInput-Becwxo_J.mjs.map +1 -0
  7. package/dist/client/{FloatingIpActionModals-Ch8uozH9.mjs → FloatingIpActionModals-Cq10WljB.mjs} +2 -2
  8. package/dist/client/{FloatingIpActionModals-Ch8uozH9.mjs.map → FloatingIpActionModals-Cq10WljB.mjs.map} +1 -1
  9. package/dist/client/ImageToastNotifications-BWfzOUMc.mjs +1135 -0
  10. package/dist/client/ImageToastNotifications-BWfzOUMc.mjs.map +1 -0
  11. package/dist/client/RouteIdLevelDefaultError-DPF_x2tG.mjs +26 -0
  12. package/dist/client/RouteIdLevelDefaultError-DPF_x2tG.mjs.map +1 -0
  13. package/dist/client/StorageNotFound-B-zVinVD.mjs +30 -0
  14. package/dist/client/StorageNotFound-B-zVinVD.mjs.map +1 -0
  15. package/dist/client/_flavorId-0PioWpEp.mjs +276 -0
  16. package/dist/client/_flavorId-0PioWpEp.mjs.map +1 -0
  17. package/dist/client/_flavorId-B7fp6Nk8.mjs +22 -0
  18. package/dist/client/_flavorId-B7fp6Nk8.mjs.map +1 -0
  19. package/dist/client/{_flavorId-Dg7MS0Af.mjs → _flavorId-CgueqKTs.mjs} +4 -3
  20. package/dist/client/_flavorId-CgueqKTs.mjs.map +1 -0
  21. package/dist/client/{_floatingIpId-DNn6ABCB.mjs → _floatingIpId-B8r64AL9.mjs} +6 -6
  22. package/dist/client/{_floatingIpId-DNn6ABCB.mjs.map → _floatingIpId-B8r64AL9.mjs.map} +1 -1
  23. package/dist/client/{_floatingIpId-C9xfRWot.mjs → _floatingIpId-lEobpOER.mjs} +2 -2
  24. package/dist/client/{_floatingIpId-C9xfRWot.mjs.map → _floatingIpId-lEobpOER.mjs.map} +1 -1
  25. package/dist/client/{_imageId-8JIbFmGB.mjs → _imageId-Ccv8PedW.mjs} +4 -3
  26. package/dist/client/_imageId-Ccv8PedW.mjs.map +1 -0
  27. package/dist/client/_imageId-CiqEQB_J.mjs +558 -0
  28. package/dist/client/_imageId-CiqEQB_J.mjs.map +1 -0
  29. package/dist/client/_imageId-D9LR-02T.mjs +22 -0
  30. package/dist/client/_imageId-D9LR-02T.mjs.map +1 -0
  31. package/dist/client/{_projectId-DPzv0CCp.mjs → _projectId-BDARsteX.mjs} +4 -4
  32. package/dist/client/_projectId-BDARsteX.mjs.map +1 -0
  33. package/dist/client/{_projectId-DfeVJy0G.mjs → _projectId-CtyAHqhH.mjs} +2 -2
  34. package/dist/client/_projectId-CtyAHqhH.mjs.map +1 -0
  35. package/dist/client/_projectId-D3VOH5lN.mjs +94 -0
  36. package/dist/client/_projectId-D3VOH5lN.mjs.map +1 -0
  37. package/dist/client/{_projectId-B3wmSala.mjs → _projectId-ZBk6vka0.mjs} +83 -81
  38. package/dist/client/_projectId-ZBk6vka0.mjs.map +1 -0
  39. package/dist/client/{_securityGroupId-C6eHmrx_.mjs → _securityGroupId-BwgZnoiR.mjs} +2 -2
  40. package/dist/client/_securityGroupId-BwgZnoiR.mjs.map +1 -0
  41. package/dist/client/{_securityGroupId-DmplhDgt.mjs → _securityGroupId-Cz2NUHdB.mjs} +750 -741
  42. package/dist/client/_securityGroupId-Cz2NUHdB.mjs.map +1 -0
  43. package/dist/client/{_storageType-CzZ4u9x_.mjs → _storageType-BNpP1A2N.mjs} +3 -2
  44. package/dist/client/_storageType-BNpP1A2N.mjs.map +1 -0
  45. package/dist/client/_storageType-BxSGKhAI.mjs +15 -0
  46. package/dist/client/_storageType-BxSGKhAI.mjs.map +1 -0
  47. package/dist/client/_storageType-DZYCmiLt.mjs +30 -0
  48. package/dist/client/_storageType-DZYCmiLt.mjs.map +1 -0
  49. package/dist/client/_storageType-UqAMP-8d.mjs +859 -0
  50. package/dist/client/_storageType-UqAMP-8d.mjs.map +1 -0
  51. package/dist/client/_storageType-u51_7OwJ.mjs +7 -0
  52. package/dist/client/_storageType-u51_7OwJ.mjs.map +1 -0
  53. package/dist/client/components/{Error → Errors}/RouteError.d.ts +5 -0
  54. package/dist/client/components/Errors/RouteIdLevelDefaultError.d.ts +18 -0
  55. package/dist/client/components/Errors/ServiceLevelDefaultError.d.ts +9 -0
  56. package/dist/client/components/ListToolbar/SelectedFilters.d.ts +7 -2
  57. package/dist/client/components/ListToolbar/types.d.ts +6 -0
  58. package/dist/client/components/ListToolbar/valueLabels.d.ts +11 -0
  59. package/dist/client/{flavors-B1SDOPDu.mjs → flavors-Ce3J-cFa.mjs} +2 -2
  60. package/dist/client/{flavors-B1SDOPDu.mjs.map → flavors-Ce3J-cFa.mjs.map} +1 -1
  61. package/dist/client/flavors-D5ThLaXO.mjs +666 -0
  62. package/dist/client/flavors-D5ThLaXO.mjs.map +1 -0
  63. package/dist/client/floatingips-Cz9k80cc.mjs.map +1 -1
  64. package/dist/client/{floatingips-DrCvtXtT.mjs → floatingips-DXnRlLvV.mjs} +7 -7
  65. package/dist/client/{floatingips-DrCvtXtT.mjs.map → floatingips-DXnRlLvV.mjs.map} +1 -1
  66. package/dist/client/floatingips-HRbuLxiN.mjs +22 -0
  67. package/dist/client/floatingips-HRbuLxiN.mjs.map +1 -0
  68. package/dist/client/floatingips-nN1kQmsu.mjs +14 -0
  69. package/dist/client/floatingips-nN1kQmsu.mjs.map +1 -0
  70. package/dist/client/{images-BGQv9kKT.mjs → images-C8M3ysWR.mjs} +810 -770
  71. package/dist/client/images-C8M3ysWR.mjs.map +1 -0
  72. package/dist/client/{images-CPmMa4SQ.mjs → images-Cf5R28NR.mjs} +2 -2
  73. package/dist/client/{images-CPmMa4SQ.mjs.map → images-Cf5R28NR.mjs.map} +1 -1
  74. package/dist/client/index.js +419 -415
  75. package/dist/client/index.js.map +1 -1
  76. package/dist/client/{objects-BR3eeSNH.mjs → objects-BudUAfWY.mjs} +5478 -5519
  77. package/dist/client/objects-BudUAfWY.mjs.map +1 -0
  78. package/dist/client/objects-Dc7sKUr8.mjs +67 -0
  79. package/dist/client/objects-Dc7sKUr8.mjs.map +1 -0
  80. package/dist/client/objects-Dw7oeTq2.mjs +80 -0
  81. package/dist/client/objects-Dw7oeTq2.mjs.map +1 -0
  82. package/dist/client/objects-_g7nGIn5.mjs +25 -0
  83. package/dist/client/objects-_g7nGIn5.mjs.map +1 -0
  84. package/dist/client/objects-eBxvY6_n.mjs +78 -0
  85. package/dist/client/objects-eBxvY6_n.mjs.map +1 -0
  86. package/dist/client/projects-yiK0HGSA.mjs.map +1 -1
  87. package/dist/client/{securitygroups-DEJQBcxm.mjs → securitygroups-67fFxiwt.mjs} +2 -2
  88. package/dist/client/{securitygroups-DEJQBcxm.mjs.map → securitygroups-67fFxiwt.mjs.map} +1 -1
  89. package/dist/client/securitygroups-CtKne8UQ.mjs.map +1 -1
  90. package/dist/client/securitygroups-DXrfyuVF.mjs +580 -0
  91. package/dist/client/securitygroups-DXrfyuVF.mjs.map +1 -0
  92. package/dist/client/securitygroups-WLB1_IM6.mjs +22 -0
  93. package/dist/client/securitygroups-WLB1_IM6.mjs.map +1 -0
  94. package/dist/client/securitygroups-o0IXZM6S.mjs +14 -0
  95. package/dist/client/securitygroups-o0IXZM6S.mjs.map +1 -0
  96. package/dist/client/serviceCatalog-B3lKWC9V.mjs +6 -0
  97. package/dist/client/serviceCatalog-B3lKWC9V.mjs.map +1 -0
  98. package/dist/client/storageProviders-CJ5rOh13.mjs +15 -0
  99. package/dist/client/storageProviders-CJ5rOh13.mjs.map +1 -0
  100. package/dist/client/trpcClient.d.ts +102 -4
  101. package/dist/client/useModalTracking-BYd37pXm.mjs +37 -0
  102. package/dist/client/useModalTracking-BYd37pXm.mjs.map +1 -0
  103. package/dist/client/useSecurityGroupPermissions--hK4aR8Y.mjs +294 -0
  104. package/dist/client/useSecurityGroupPermissions--hK4aR8Y.mjs.map +1 -0
  105. package/dist/client/utils/serviceCatalog.d.ts +9 -0
  106. package/dist/client/utils/storageProviders.d.ts +44 -0
  107. package/dist/server/index.d.ts +102 -4
  108. package/dist/server/index.js +1319 -416
  109. package/package.json +4 -4
  110. package/dist/client/ContentHeader-CPJbgYWn.mjs +0 -115
  111. package/dist/client/ContentHeader-CPJbgYWn.mjs.map +0 -1
  112. package/dist/client/DeleteFlavorModal-V44QCJBd.mjs +0 -773
  113. package/dist/client/DeleteFlavorModal-V44QCJBd.mjs.map +0 -1
  114. package/dist/client/FiltersInput-CKI6zWnm.mjs.map +0 -1
  115. package/dist/client/ImageToastNotifications-m6c3tVPb.mjs +0 -1152
  116. package/dist/client/ImageToastNotifications-m6c3tVPb.mjs.map +0 -1
  117. package/dist/client/_flavorId-Dg7MS0Af.mjs.map +0 -1
  118. package/dist/client/_flavorId-kHl-b8rI.mjs +0 -232
  119. package/dist/client/_flavorId-kHl-b8rI.mjs.map +0 -1
  120. package/dist/client/_imageId-8JIbFmGB.mjs.map +0 -1
  121. package/dist/client/_imageId-BBAlRioC.mjs +0 -574
  122. package/dist/client/_imageId-BBAlRioC.mjs.map +0 -1
  123. package/dist/client/_projectId-7Nl1MQTJ.mjs +0 -99
  124. package/dist/client/_projectId-7Nl1MQTJ.mjs.map +0 -1
  125. package/dist/client/_projectId-B3wmSala.mjs.map +0 -1
  126. package/dist/client/_projectId-DPzv0CCp.mjs.map +0 -1
  127. package/dist/client/_projectId-DfeVJy0G.mjs.map +0 -1
  128. package/dist/client/_securityGroupId-C6eHmrx_.mjs.map +0 -1
  129. package/dist/client/_securityGroupId-DmplhDgt.mjs.map +0 -1
  130. package/dist/client/_storageType-BRWWJtow.mjs +0 -14
  131. package/dist/client/_storageType-BRWWJtow.mjs.map +0 -1
  132. package/dist/client/_storageType-C5gS9eut.mjs +0 -845
  133. package/dist/client/_storageType-C5gS9eut.mjs.map +0 -1
  134. package/dist/client/_storageType-CzZ4u9x_.mjs.map +0 -1
  135. package/dist/client/_storageType-zeSZe--V.mjs +0 -7
  136. package/dist/client/_storageType-zeSZe--V.mjs.map +0 -1
  137. package/dist/client/flavors-D8_PzQUB.mjs +0 -628
  138. package/dist/client/flavors-D8_PzQUB.mjs.map +0 -1
  139. package/dist/client/images-BGQv9kKT.mjs.map +0 -1
  140. package/dist/client/objects-AERkhfiM.mjs +0 -66
  141. package/dist/client/objects-AERkhfiM.mjs.map +0 -1
  142. package/dist/client/objects-BR3eeSNH.mjs.map +0 -1
  143. package/dist/client/objects-DVccbrL1.mjs +0 -66
  144. package/dist/client/objects-DVccbrL1.mjs.map +0 -1
  145. package/dist/client/securitygroups-BjhgLBHm.mjs +0 -620
  146. package/dist/client/securitygroups-BjhgLBHm.mjs.map +0 -1
  147. package/dist/client/useModalTracking-BcOKTYRN.mjs +0 -33
  148. package/dist/client/useModalTracking-BcOKTYRN.mjs.map +0 -1
  149. package/dist/client/useSecurityGroupPermissions-BOyLQLdC.mjs +0 -227
  150. package/dist/client/useSecurityGroupPermissions-BOyLQLdC.mjs.map +0 -1
@@ -0,0 +1,666 @@
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