@cobaltcore-dev/aurora 1.3.0 → 2.0.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 (122) hide show
  1. package/dist/client/DeleteFlavorModal-C2MqUgGR.mjs +801 -0
  2. package/dist/client/DeleteFlavorModal-C2MqUgGR.mjs.map +1 -0
  3. package/dist/client/{FiltersInput-CKI6zWnm.mjs → FiltersInput-Becwxo_J.mjs} +36 -33
  4. package/dist/client/FiltersInput-Becwxo_J.mjs.map +1 -0
  5. package/dist/client/{FloatingIpActionModals-Ch8uozH9.mjs → FloatingIpActionModals-Cq10WljB.mjs} +2 -2
  6. package/dist/client/{FloatingIpActionModals-Ch8uozH9.mjs.map → FloatingIpActionModals-Cq10WljB.mjs.map} +1 -1
  7. package/dist/client/ImageToastNotifications-BWfzOUMc.mjs +1135 -0
  8. package/dist/client/ImageToastNotifications-BWfzOUMc.mjs.map +1 -0
  9. package/dist/client/RouteIdLevelDefaultError-CSseJ1yG.mjs +26 -0
  10. package/dist/client/RouteIdLevelDefaultError-CSseJ1yG.mjs.map +1 -0
  11. package/dist/client/{_flavorId-Dg7MS0Af.mjs → _flavorId-CaA4-Pnf.mjs} +4 -3
  12. package/dist/client/_flavorId-CaA4-Pnf.mjs.map +1 -0
  13. package/dist/client/_flavorId-DYv_StX22.mjs +276 -0
  14. package/dist/client/_flavorId-DYv_StX22.mjs.map +1 -0
  15. package/dist/client/_flavorId-YV3jCS5g.mjs +22 -0
  16. package/dist/client/_flavorId-YV3jCS5g.mjs.map +1 -0
  17. package/dist/client/{_floatingIpId-C9xfRWot.mjs → _floatingIpId-BeYElanB.mjs} +2 -2
  18. package/dist/client/{_floatingIpId-C9xfRWot.mjs.map → _floatingIpId-BeYElanB.mjs.map} +1 -1
  19. package/dist/client/{_floatingIpId-DNn6ABCB.mjs → _floatingIpId-Dpsc7GU4.mjs} +5 -5
  20. package/dist/client/{_floatingIpId-DNn6ABCB.mjs.map → _floatingIpId-Dpsc7GU4.mjs.map} +1 -1
  21. package/dist/client/_imageId-mfKp3JHn.mjs +558 -0
  22. package/dist/client/_imageId-mfKp3JHn.mjs.map +1 -0
  23. package/dist/client/_imageId-mpXUMCh_.mjs +22 -0
  24. package/dist/client/_imageId-mpXUMCh_.mjs.map +1 -0
  25. package/dist/client/{_imageId-8JIbFmGB.mjs → _imageId-pBSS0YcC.mjs} +4 -3
  26. package/dist/client/_imageId-pBSS0YcC.mjs.map +1 -0
  27. package/dist/client/{_projectId-B3wmSala.mjs → _projectId-AjgJX6Gl.mjs} +2 -2
  28. package/dist/client/_projectId-AjgJX6Gl.mjs.map +1 -0
  29. package/dist/client/{_projectId-DPzv0CCp.mjs → _projectId-BnTBxKfp.mjs} +4 -4
  30. package/dist/client/_projectId-BnTBxKfp.mjs.map +1 -0
  31. package/dist/client/{_projectId-DfeVJy0G.mjs → _projectId-CVrdJ52s.mjs} +2 -2
  32. package/dist/client/_projectId-CVrdJ52s.mjs.map +1 -0
  33. package/dist/client/_projectId-DgciZslU.mjs +92 -0
  34. package/dist/client/_projectId-DgciZslU.mjs.map +1 -0
  35. package/dist/client/{_securityGroupId-C6eHmrx_.mjs → _securityGroupId-AO3wnH8g.mjs} +2 -2
  36. package/dist/client/_securityGroupId-AO3wnH8g.mjs.map +1 -0
  37. package/dist/client/{_securityGroupId-DmplhDgt.mjs → _securityGroupId-Bq0ZyG6z.mjs} +750 -741
  38. package/dist/client/_securityGroupId-Bq0ZyG6z.mjs.map +1 -0
  39. package/dist/client/_storageType-c-DAu8qr.mjs +858 -0
  40. package/dist/client/_storageType-c-DAu8qr.mjs.map +1 -0
  41. package/dist/client/components/{Error → Errors}/RouteError.d.ts +5 -0
  42. package/dist/client/components/Errors/RouteIdLevelDefaultError.d.ts +17 -0
  43. package/dist/client/components/Errors/ServiceLevelDefaultError.d.ts +9 -0
  44. package/dist/client/components/ListToolbar/SelectedFilters.d.ts +7 -2
  45. package/dist/client/components/ListToolbar/types.d.ts +6 -0
  46. package/dist/client/components/ListToolbar/valueLabels.d.ts +11 -0
  47. package/dist/client/flavors-Bgq3KZmx.mjs +659 -0
  48. package/dist/client/flavors-Bgq3KZmx.mjs.map +1 -0
  49. package/dist/client/{flavors-B1SDOPDu.mjs → flavors-ZudiAiTU.mjs} +2 -2
  50. package/dist/client/{flavors-B1SDOPDu.mjs.map → flavors-ZudiAiTU.mjs.map} +1 -1
  51. package/dist/client/{floatingips-DrCvtXtT.mjs → floatingips-B1oLH8z6.mjs} +6 -6
  52. package/dist/client/{floatingips-DrCvtXtT.mjs.map → floatingips-B1oLH8z6.mjs.map} +1 -1
  53. package/dist/client/floatingips-BeQEkVH8.mjs +14 -0
  54. package/dist/client/floatingips-BeQEkVH8.mjs.map +1 -0
  55. package/dist/client/floatingips-BtLg3yEQ.mjs +22 -0
  56. package/dist/client/floatingips-BtLg3yEQ.mjs.map +1 -0
  57. package/dist/client/floatingips-Cz9k80cc.mjs.map +1 -1
  58. package/dist/client/{images-BGQv9kKT.mjs → images-CnTW3bpy.mjs} +810 -770
  59. package/dist/client/images-CnTW3bpy.mjs.map +1 -0
  60. package/dist/client/{images-CPmMa4SQ.mjs → images-DZHDYDQu.mjs} +2 -2
  61. package/dist/client/{images-CPmMa4SQ.mjs.map → images-DZHDYDQu.mjs.map} +1 -1
  62. package/dist/client/index.js +412 -409
  63. package/dist/client/index.js.map +1 -1
  64. package/dist/client/{objects-DVccbrL1.mjs → objects-25xsh4Ia.mjs} +2 -2
  65. package/dist/client/objects-25xsh4Ia.mjs.map +1 -0
  66. package/dist/client/objects-KXY6dgwq.mjs +82 -0
  67. package/dist/client/objects-KXY6dgwq.mjs.map +1 -0
  68. package/dist/client/objects-QryuClU3.mjs +82 -0
  69. package/dist/client/objects-QryuClU3.mjs.map +1 -0
  70. package/dist/client/{objects-BR3eeSNH.mjs → objects-jYQBFzwg.mjs} +4668 -4699
  71. package/dist/client/objects-jYQBFzwg.mjs.map +1 -0
  72. package/dist/client/projects-yiK0HGSA.mjs.map +1 -1
  73. package/dist/client/securitygroups--0PS2wbM.mjs +580 -0
  74. package/dist/client/securitygroups--0PS2wbM.mjs.map +1 -0
  75. package/dist/client/{securitygroups-DEJQBcxm.mjs → securitygroups-BRndk7wh.mjs} +2 -2
  76. package/dist/client/{securitygroups-DEJQBcxm.mjs.map → securitygroups-BRndk7wh.mjs.map} +1 -1
  77. package/dist/client/securitygroups-CdN4yAAw.mjs +14 -0
  78. package/dist/client/securitygroups-CdN4yAAw.mjs.map +1 -0
  79. package/dist/client/securitygroups-Cs2Op-tu.mjs +22 -0
  80. package/dist/client/securitygroups-Cs2Op-tu.mjs.map +1 -0
  81. package/dist/client/securitygroups-CtKne8UQ.mjs.map +1 -1
  82. package/dist/client/trpcClient.d.ts +6 -1
  83. package/dist/client/useModalTracking-BYd37pXm.mjs +37 -0
  84. package/dist/client/useModalTracking-BYd37pXm.mjs.map +1 -0
  85. package/dist/client/useSecurityGroupPermissions--hK4aR8Y.mjs +294 -0
  86. package/dist/client/useSecurityGroupPermissions--hK4aR8Y.mjs.map +1 -0
  87. package/dist/server/index.d.ts +6 -1
  88. package/dist/server/index.js +96 -30
  89. package/package.json +4 -4
  90. package/dist/client/DeleteFlavorModal-V44QCJBd.mjs +0 -773
  91. package/dist/client/DeleteFlavorModal-V44QCJBd.mjs.map +0 -1
  92. package/dist/client/FiltersInput-CKI6zWnm.mjs.map +0 -1
  93. package/dist/client/ImageToastNotifications-m6c3tVPb.mjs +0 -1152
  94. package/dist/client/ImageToastNotifications-m6c3tVPb.mjs.map +0 -1
  95. package/dist/client/_flavorId-Dg7MS0Af.mjs.map +0 -1
  96. package/dist/client/_flavorId-kHl-b8rI.mjs +0 -232
  97. package/dist/client/_flavorId-kHl-b8rI.mjs.map +0 -1
  98. package/dist/client/_imageId-8JIbFmGB.mjs.map +0 -1
  99. package/dist/client/_imageId-BBAlRioC.mjs +0 -574
  100. package/dist/client/_imageId-BBAlRioC.mjs.map +0 -1
  101. package/dist/client/_projectId-7Nl1MQTJ.mjs +0 -99
  102. package/dist/client/_projectId-7Nl1MQTJ.mjs.map +0 -1
  103. package/dist/client/_projectId-B3wmSala.mjs.map +0 -1
  104. package/dist/client/_projectId-DPzv0CCp.mjs.map +0 -1
  105. package/dist/client/_projectId-DfeVJy0G.mjs.map +0 -1
  106. package/dist/client/_securityGroupId-C6eHmrx_.mjs.map +0 -1
  107. package/dist/client/_securityGroupId-DmplhDgt.mjs.map +0 -1
  108. package/dist/client/_storageType-C5gS9eut.mjs +0 -845
  109. package/dist/client/_storageType-C5gS9eut.mjs.map +0 -1
  110. package/dist/client/flavors-D8_PzQUB.mjs +0 -628
  111. package/dist/client/flavors-D8_PzQUB.mjs.map +0 -1
  112. package/dist/client/images-BGQv9kKT.mjs.map +0 -1
  113. package/dist/client/objects-AERkhfiM.mjs +0 -66
  114. package/dist/client/objects-AERkhfiM.mjs.map +0 -1
  115. package/dist/client/objects-BR3eeSNH.mjs.map +0 -1
  116. package/dist/client/objects-DVccbrL1.mjs.map +0 -1
  117. package/dist/client/securitygroups-BjhgLBHm.mjs +0 -620
  118. package/dist/client/securitygroups-BjhgLBHm.mjs.map +0 -1
  119. package/dist/client/useModalTracking-BcOKTYRN.mjs +0 -33
  120. package/dist/client/useModalTracking-BcOKTYRN.mjs.map +0 -1
  121. package/dist/client/useSecurityGroupPermissions-BOyLQLdC.mjs +0 -227
  122. package/dist/client/useSecurityGroupPermissions-BOyLQLdC.mjs.map +0 -1
@@ -1,773 +0,0 @@
1
- import { E as e, K as t, L as n, Q as r, X as i, ft as a, i as o, m as s, n as c, p as l, s as u } from "./build-WuxXRAqf.mjs";
2
- import { t as d } from "./useModalTracking-BcOKTYRN.mjs";
3
- import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
4
- import h, { useEffect as g, useMemo as _, useState as v } from "react";
5
- import { Trans as y, useLingui as b } from "@lingui/react";
6
- import { z as x } from "zod";
7
- import { useForm as S, useStore as C } from "@tanstack/react-form";
8
- //#region src/client/utils/useErrorTranslation.ts
9
- var w = () => {
10
- let { i18n: e, _: t } = b();
11
- return {
12
- translateError: (t) => {
13
- switch (t) {
14
- case "FLAVORS_UNAUTHORIZED": return e._({ id: "1iUuTT" });
15
- case "FLAVORS_FORBIDDEN": return e._({ id: "mSLePW" });
16
- case "FLAVORS_NOT_FOUND": return e._({ id: "EQnVgi" });
17
- case "FLAVORS_SERVER_ERROR": return e._({ id: "Hivb/4" });
18
- case "FLAVORS_FETCH_FAILED": return e._({ id: "EztMB8" });
19
- case "FLAVORS_PARSE_ERROR": return e._({ id: "t1fq6V" });
20
- case "GET_FLAVOR_DETAILS_UNAUTHORIZED": return e._({ id: "zCD96i" });
21
- case "GET_FLAVOR_DETAILS_FORBIDDEN": return e._({ id: "/9Squ9" });
22
- case "GET_FLAVOR_DETAILS_NOT_FOUND": return e._({ id: "HxTYrE" });
23
- case "GET_FLAVOR_DETAILS_SERVER_ERROR": return e._({ id: "KJC+M7" });
24
- case "GET_FLAVOR_DETAILS_INVALID_ID": return e._({ id: "YUU0QW" });
25
- case "GET_FLAVOR_DETAILS_PARSE_ERROR": return e._({ id: "ZUmOzn" });
26
- case "GET_FLAVOR_DETAILS_FAILED": return e._({ id: "RCr0yv" });
27
- case "CREATE_FLAVOR_INVALID_DATA": return e._({ id: "0kCt7e" });
28
- case "CREATE_FLAVOR_UNAUTHORIZED": return e._({ id: "oDkgME" });
29
- case "CREATE_FLAVOR_FORBIDDEN": return e._({ id: "cPKL6O" });
30
- case "CREATE_FLAVOR_CONFLICT": return e._({ id: "OlmKCg" });
31
- case "CREATE_FLAVOR_SERVER_ERROR": return e._({ id: "qaAo9Y" });
32
- case "CREATE_FLAVOR_FAILED": return e._({ id: "QuJSSl" });
33
- case "DELETE_FLAVOR_UNAUTHORIZED": return e._({ id: "2gH+i8" });
34
- case "DELETE_FLAVOR_FORBIDDEN": return e._({ id: "EPMHs9" });
35
- case "DELETE_FLAVOR_NOT_FOUND": return e._({ id: "rIi6x4" });
36
- case "DELETE_FLAVOR_SERVER_ERROR": return e._({ id: "tASa/P" });
37
- case "DELETE_FLAVOR_FAILED": return e._({ id: "h3P8z+" });
38
- case "DELETE_FLAVOR_INVALID_ID": return e._({ id: "YUU0QW" });
39
- case "CREATE_EXTRA_SPECS_UNAUTHORIZED": return e._({ id: "RTQFAw" });
40
- case "CREATE_EXTRA_SPECS_FORBIDDEN": return e._({ id: "kGmM/p" });
41
- case "CREATE_EXTRA_SPECS_NOT_FOUND": return e._({ id: "HxTYrE" });
42
- case "CREATE_EXTRA_SPECS_CONFLICT": return e._({ id: "6oolxV" });
43
- case "CREATE_EXTRA_SPECS_INVALID_DATA": return e._({ id: "JoECY1" });
44
- case "CREATE_EXTRA_SPECS_SERVER_ERROR": return e._({ id: "jMc/mo" });
45
- case "CREATE_EXTRA_SPECS_PARSE_ERROR": return e._({ id: "07WXfc" });
46
- case "CREATE_EXTRA_SPECS_FAILED": return e._({ id: "7BpykL" });
47
- case "GET_EXTRA_SPECS_UNAUTHORIZED": return e._({ id: "3nWqQW" });
48
- case "GET_EXTRA_SPECS_FORBIDDEN": return e._({ id: "wcUecy" });
49
- case "GET_EXTRA_SPECS_NOT_FOUND": return e._({ id: "M470oJ" });
50
- case "GET_EXTRA_SPECS_SERVER_ERROR": return e._({ id: "tIrNgH" });
51
- case "GET_EXTRA_SPECS_PARSE_ERROR": return e._({ id: "07WXfc" });
52
- case "GET_EXTRA_SPECS_FAILED": return e._({ id: "lhIa6x" });
53
- case "DELETE_EXTRA_SPEC_UNAUTHORIZED": return e._({ id: "dVdc7N" });
54
- case "DELETE_EXTRA_SPEC_FORBIDDEN": return e._({ id: "YrAy/S" });
55
- case "DELETE_EXTRA_SPEC_NOT_FOUND": return e._({ id: "vBUQNE" });
56
- case "DELETE_EXTRA_SPEC_SERVER_ERROR": return e._({ id: "0kc0zi" });
57
- case "DELETE_EXTRA_SPEC_INVALID_KEY": return e._({ id: "ylfbpz" });
58
- case "DELETE_EXTRA_SPEC_FAILED": return e._({ id: "TfdeUd" });
59
- case "GET_FLAVOR_ACCESS_UNAUTHORIZED": return e._({ id: "Mt6sRo" });
60
- case "GET_FLAVOR_ACCESS_FORBIDDEN": return e._({ id: "MbKJNP" });
61
- case "GET_FLAVOR_ACCESS_NOT_FOUND": return e._({ id: "HxTYrE" });
62
- case "GET_FLAVOR_ACCESS_SERVER_ERROR": return e._({ id: "YsOJlj" });
63
- case "GET_FLAVOR_ACCESS_FAILED": return e._({ id: "bISG26" });
64
- case "ADD_TENANT_ACCESS_FAILED": return e._({ id: "rIe0oV" });
65
- case "ADD_TENANT_ACCESS_INVALID_DATA": return e._({ id: "gztCjq" });
66
- case "ADD_TENANT_ACCESS_UNAUTHORIZED": return e._({ id: "+Lt5cp" });
67
- case "ADD_TENANT_ACCESS_FORBIDDEN": return e._({ id: "8s0tOH" });
68
- case "ADD_TENANT_ACCESS_NOT_FOUND": return e._({ id: "1rPB1p" });
69
- case "ADD_TENANT_ACCESS_CONFLICT": return e._({ id: "NRMm0E" });
70
- case "ADD_TENANT_ACCESS_SERVER_ERROR": return e._({ id: "KoQP4F" });
71
- case "REMOVE_TENANT_ACCESS_FAILED": return e._({ id: "ZhVSpK" });
72
- case "REMOVE_TENANT_ACCESS_INVALID_DATA": return e._({ id: "gztCjq" });
73
- case "REMOVE_TENANT_ACCESS_UNAUTHORIZED": return e._({ id: "78+riR" });
74
- case "REMOVE_TENANT_ACCESS_FORBIDDEN": return e._({ id: "qs+BrU" });
75
- case "REMOVE_TENANT_ACCESS_NOT_FOUND": return e._({ id: "Do5/uH" });
76
- case "REMOVE_TENANT_ACCESS_CONFLICT": return e._({ id: "+nQTmZ" });
77
- case "REMOVE_TENANT_ACCESS_SERVER_ERROR": return e._({ id: "0BSSYj" });
78
- case "COMPUTE_SERVICE_UNAVAILABLE": return e._({ id: "gGdfWx" });
79
- case "COMPUTE_SERVICE_CONNECTION_FAILED": return e._({ id: "Qg4EG6" });
80
- default: return e._({ id: "byKna+" });
81
- }
82
- },
83
- isRetryableError: (e) => ["FLAVORS_SERVER_ERROR", "FLAVORS_FETCH_FAILED"].includes(e)
84
- };
85
- };
86
- //#endregion
87
- //#region src/client/routes/_auth/projects/$projectId/compute/flavors/-components/EditSpecModal.tsx
88
- function T(e) {
89
- return Object.entries(e).map(([e, t]) => ({
90
- key: e,
91
- value: t,
92
- isNew: !1,
93
- isEditing: !1,
94
- originalKey: e,
95
- originalValue: t
96
- }));
97
- }
98
- var E = (e, t) => e.compute.canUser.query({
99
- project_id: t,
100
- permission: ["flavor_specs:create", "flavor_specs:delete"]
101
- }).then(([e, t]) => ({
102
- canCreate: e,
103
- canDelete: t
104
- })), D = (e, t, n) => e.compute.getExtraSpecs.query({
105
- project_id: t,
106
- flavorId: n
107
- });
108
- function O({ client: a, project: l, flavor: d, isLoading: g, onClose: y, initialSpecs: x, canEdit: S }) {
109
- let { i18n: C, _: T } = b(), { translateError: E } = w(), [D, O] = v(x), [k, A] = v({}), [j, M] = v(!1), [N, P] = v(""), [F, I] = v(""), [L, R] = v(!1), [z, B] = v(null), V = !_(() => {
110
- let e = new Map(D.map((e) => [e.key.trim(), e.value.trim()])), t = new Map(x.map((e) => [e.key.trim(), e.value.trim()]));
111
- if (e.size !== t.size) return !0;
112
- for (let [n, r] of e) if (t.get(n) !== r) return !0;
113
- return !1;
114
- }, [D, x]) || g || L || j || D.some((e) => e.isEditing), H = (e, t) => {
115
- let n = e?.trim();
116
- return n ? D.some((e, r) => e.key.trim() === n && r !== t) ? C._({ id: "i6/ygf" }) : null : C._({ id: "QV1ZPO" });
117
- }, U = () => {
118
- let e = H(N, D.length);
119
- if (e) {
120
- A({ newKey: e });
121
- return;
122
- }
123
- if (!F.trim()) {
124
- A({ newValue: C._({ id: "hXUWyd" }) });
125
- return;
126
- }
127
- O([...D, {
128
- key: N.trim(),
129
- value: F.trim(),
130
- isNew: !0,
131
- isEditing: !1
132
- }]), P(""), I(""), M(!1), A({});
133
- }, W = () => {
134
- P(""), I(""), M(!1), A({});
135
- }, G = (e) => {
136
- O(D.map((t, n) => n === e ? {
137
- ...t,
138
- isEditing: !0
139
- } : {
140
- ...t,
141
- isEditing: !1
142
- })), M(!1);
143
- }, K = (e) => {
144
- let t = D[e], n = H(t.key, e);
145
- if (n) {
146
- A({ [`edit-${e}`]: n });
147
- return;
148
- }
149
- if (!t.value.trim()) {
150
- A({ [`edit-${e}`]: C._({ id: "hXUWyd" }) });
151
- return;
152
- }
153
- O(D.map((t, n) => n === e ? {
154
- ...t,
155
- isEditing: !1,
156
- key: t.key.trim(),
157
- value: t.value.trim()
158
- } : t)), A({});
159
- }, q = (e) => {
160
- O(D.map((t, n) => n === e ? {
161
- ...t,
162
- isEditing: !1,
163
- key: t.originalKey ?? t.key,
164
- value: t.originalValue ?? t.value
165
- } : t)), A({});
166
- }, J = (e) => {
167
- O(D.filter((t, n) => n !== e)), A({});
168
- }, Y = (e, t) => {
169
- O(D.map((n, r) => r === e ? {
170
- ...n,
171
- key: t
172
- } : n)), k[`edit-${e}`] && A((t) => {
173
- let n = { ...t };
174
- return delete n[`edit-${e}`], n;
175
- });
176
- }, X = (e, t) => {
177
- O(D.map((n, r) => r === e ? {
178
- ...n,
179
- value: t
180
- } : n)), k[`edit-${e}`] && A((t) => {
181
- let n = { ...t };
182
- return delete n[`edit-${e}`], n;
183
- });
184
- };
185
- return /*#__PURE__*/ p(i, {
186
- open: !0,
187
- onCancel: () => {
188
- O(x), M(!1), P(""), I(""), A({}), B(null), y();
189
- },
190
- size: "large",
191
- title: S ? C._({ id: "SIfYq6" }) : C._({ id: "6GBt0m" }),
192
- onConfirm: S ? async () => {
193
- R(!0), B(null);
194
- try {
195
- let e = new Set(D.map((e) => e.key)), t = x.filter((t) => !e.has(t.key)).map((e) => e.originalKey).filter(Boolean);
196
- D.forEach((e) => {
197
- e.originalKey && e.key !== e.originalKey && !e.isNew && t.push(e.originalKey);
198
- });
199
- let n = {};
200
- D.forEach((e) => {
201
- (e.isNew || e.key !== e.originalKey || e.value !== e.originalValue) && (n[e.key] = e.value);
202
- });
203
- for (let e of new Set(t)) await a.compute.deleteExtraSpec.mutate({
204
- project_id: l,
205
- flavorId: d.id,
206
- key: e
207
- });
208
- Object.keys(n).length > 0 && await a.compute.createExtraSpecs.mutate({
209
- project_id: l,
210
- flavorId: d.id,
211
- extra_specs: n
212
- }), y();
213
- } catch (e) {
214
- B(E(e instanceof Error ? e.message : "Failed to save changes"));
215
- } finally {
216
- R(!1);
217
- }
218
- } : void 0,
219
- confirmButtonLabel: L ? C._({ id: "XvjC4F" }) : C._({ id: "IUwGEM" }),
220
- cancelButtonLabel: C._({ id: "dEgA5A" }),
221
- disableConfirmButton: V,
222
- disableCancelButton: L,
223
- disableCloseButton: L,
224
- children: g ? /*#__PURE__*/ p(r, {
225
- distribution: "center",
226
- alignment: "center",
227
- children: /*#__PURE__*/ p(t, { variant: "primary" })
228
- }) : /*#__PURE__*/ m("div", { children: [
229
- z && /*#__PURE__*/ p(n, {
230
- variant: "error",
231
- text: z,
232
- className: "mb-4",
233
- onDismiss: () => B(null)
234
- }),
235
- S && /*#__PURE__*/ p(r, {
236
- direction: "horizontal",
237
- className: "jn:bg-theme-background-lvl-1 mb-4 justify-end p-2",
238
- children: /*#__PURE__*/ p(o, {
239
- label: C._({ id: "sWBLli" }),
240
- onClick: () => M(!0),
241
- variant: "primary",
242
- disabled: j || D.some((e) => e.isEditing),
243
- icon: "addCircle"
244
- })
245
- }),
246
- D.length === 0 && !j ? /*#__PURE__*/ p("p", {
247
- className: "jn:text-theme-light py-8 text-center",
248
- children: S ? C._({ id: "rq9NT7" }) : C._({ id: "Nx16ic" })
249
- }) : /*#__PURE__*/ m(u, {
250
- className: "mb-6",
251
- children: [
252
- /*#__PURE__*/ p(c, { children: C._({ id: "T8N6oi" }) }),
253
- /*#__PURE__*/ p(e, { children: C._({ id: "wMHvYH" }) }),
254
- /*#__PURE__*/ p(f, { children: j && /*#__PURE__*/ m(f, { children: [/*#__PURE__*/ p(c, { children: /*#__PURE__*/ p(s, {
255
- value: N,
256
- onChange: (e) => {
257
- P(e.target.value), k.newKey && A((e) => {
258
- let t = { ...e };
259
- return delete t.newKey, t;
260
- });
261
- },
262
- placeholder: C._({ id: "x9AdZ8" }),
263
- errortext: k.newKey,
264
- autoFocus: !0
265
- }) }), /*#__PURE__*/ p(e, { children: /*#__PURE__*/ m(r, {
266
- direction: "horizontal",
267
- gap: "2",
268
- alignment: "center",
269
- className: "justify-between",
270
- children: [/*#__PURE__*/ p(s, {
271
- value: F,
272
- onChange: (e) => {
273
- I(e.target.value), k.newValue && A((e) => {
274
- let t = { ...e };
275
- return delete t.newValue, t;
276
- });
277
- },
278
- placeholder: C._({ id: "wMHvYH" }),
279
- errortext: k.newValue
280
- }), /*#__PURE__*/ m(r, {
281
- direction: "horizontal",
282
- gap: "2",
283
- children: [/*#__PURE__*/ p(o, {
284
- size: "small",
285
- variant: "primary",
286
- onClick: U,
287
- icon: "check",
288
- title: C._({ id: "tfDRzk" })
289
- }), /*#__PURE__*/ p(o, {
290
- size: "small",
291
- variant: "subdued",
292
- onClick: W,
293
- icon: "close",
294
- title: C._({ id: "bzSI52" })
295
- })]
296
- })]
297
- }) })] }) }),
298
- /*#__PURE__*/ p(f, { children: D.map((t, n) => /*#__PURE__*/ m(h.Fragment, { children: [/*#__PURE__*/ p(c, { children: t.isEditing ? /*#__PURE__*/ p(s, {
299
- value: t.key,
300
- onChange: (e) => Y(n, e.target.value),
301
- errortext: k[`edit-${n}`]
302
- }) : /*#__PURE__*/ p("span", {
303
- className: "jn:text-theme-high block max-w-xs truncate",
304
- title: t.key,
305
- children: t.key
306
- }) }), /*#__PURE__*/ p(e, {
307
- className: "flex items-center justify-between gap-2",
308
- children: t.isEditing ? /*#__PURE__*/ m(f, { children: [/*#__PURE__*/ p(s, {
309
- value: t.value,
310
- onChange: (e) => X(n, e.target.value),
311
- errortext: k[`edit-${n}`]
312
- }), /*#__PURE__*/ m(r, {
313
- direction: "horizontal",
314
- gap: "2",
315
- children: [/*#__PURE__*/ p(o, {
316
- size: "small",
317
- variant: "primary",
318
- onClick: () => K(n),
319
- icon: "check",
320
- title: C._({ id: "tfDRzk" })
321
- }), /*#__PURE__*/ p(o, {
322
- size: "small",
323
- variant: "subdued",
324
- onClick: () => q(n),
325
- icon: "close",
326
- title: C._({ id: "bzSI52" })
327
- })]
328
- })] }) : /*#__PURE__*/ m(f, { children: [/*#__PURE__*/ p("span", {
329
- className: "jn:text-theme-default block max-w-md truncate",
330
- title: t.value,
331
- children: t.value
332
- }), S && /*#__PURE__*/ m(r, {
333
- direction: "horizontal",
334
- gap: "2",
335
- children: [/*#__PURE__*/ p(o, {
336
- size: "small",
337
- variant: "subdued",
338
- onClick: () => G(n),
339
- icon: "edit",
340
- "data-testid": `edit-${t.key}`,
341
- title: C._({ id: "ePK91l" }),
342
- disabled: j || D.some((e) => e.isEditing)
343
- }), /*#__PURE__*/ p(o, {
344
- size: "small",
345
- onClick: () => J(n),
346
- icon: "deleteForever",
347
- "data-testid": `delete-${t.key}`,
348
- title: C._({ id: "cnGeoo" }),
349
- disabled: j || D.some((e) => e.isEditing)
350
- })]
351
- })] })
352
- })] }, `${t.originalKey}-${n}`)) })
353
- ]
354
- })
355
- ] })
356
- });
357
- }
358
- var k = ({ client: e, isOpen: a, onClose: o, project: s, flavor: c, canEdit: l }) => {
359
- let { i18n: u, _: d } = b(), { translateError: f } = w(), [m, h] = v(null), [y, x] = v(!1), [S, C] = v(null), [k, A] = v(l);
360
- g(() => {
361
- if (!a || !c?.id) {
362
- h(null), C(null);
363
- return;
364
- }
365
- let t = !1;
366
- return x(!0), C(null), (async () => {
367
- try {
368
- let [n, r] = await Promise.all([D(e, s, c.id), l === void 0 ? E(e, s) : Promise.resolve({
369
- canCreate: l,
370
- canDelete: l
371
- })]);
372
- if (t) return;
373
- h(n), A(r.canCreate || r.canDelete);
374
- } catch (e) {
375
- if (t) return;
376
- C(e instanceof Error ? e.message : "Failed to load metadata");
377
- } finally {
378
- t || x(!1);
379
- }
380
- })(), () => {
381
- t = !0;
382
- };
383
- }, [
384
- a,
385
- c?.id,
386
- e,
387
- s,
388
- l
389
- ]);
390
- let j = _(() => m ? T(m) : [], [m]);
391
- return !a || !c ? null : y ? /*#__PURE__*/ p(i, {
392
- open: !0,
393
- onCancel: o,
394
- size: "large",
395
- title: u._({ id: "SIfYq6" }),
396
- children: /*#__PURE__*/ p(r, {
397
- distribution: "center",
398
- alignment: "center",
399
- children: /*#__PURE__*/ p(t, { variant: "primary" })
400
- })
401
- }) : S ? /*#__PURE__*/ p(i, {
402
- open: !0,
403
- onCancel: o,
404
- size: "large",
405
- title: u._({ id: "SIfYq6" }),
406
- children: /*#__PURE__*/ p(n, {
407
- variant: "error",
408
- text: f(S)
409
- })
410
- }) : /*#__PURE__*/ p(O, {
411
- client: e,
412
- project: s,
413
- flavor: c,
414
- isLoading: !1,
415
- onClose: o,
416
- initialSpecs: j,
417
- canEdit: k ?? !1
418
- }, c.id);
419
- };
420
- //#endregion
421
- //#region src/client/routes/_auth/projects/$projectId/compute/flavors/-components/ManageAccessModal.tsx
422
- function A(e) {
423
- return e.map((e) => ({
424
- projectId: e.tenant_id,
425
- isNew: !1,
426
- originalProjectId: e.tenant_id
427
- }));
428
- }
429
- var j = (e, t) => e.compute.canUser.query({
430
- project_id: t,
431
- permission: ["flavors:add_project", "flavors:remove_project"]
432
- }).then(([e, t]) => ({
433
- canAdd: e,
434
- canRemove: t
435
- })), M = (e, t, n) => e.compute.getFlavorAccess.query({
436
- project_id: t,
437
- flavorId: n
438
- });
439
- function N({ client: a, project: l, flavor: d, isLoading: g, onClose: y, initialAccess: x, canAdd: S, canRemove: C }) {
440
- let { i18n: T, _: E } = b(), { translateError: D } = w(), [O, k] = v(x), [A, j] = v({}), [M, N] = v(!1), [P, F] = v(""), [I, L] = v(!1), [R, z] = v(null), B = d["os-flavor-access:is_public"] !== !1, V = S || C, H = !_(() => {
441
- let e = new Set(O.map((e) => e.projectId)), t = new Set(x.map((e) => e.projectId));
442
- if (e.size !== t.size) return !0;
443
- for (let n of e) if (!t.has(n)) return !0;
444
- return !1;
445
- }, [O, x]) || g || I || M, U = (e, t) => {
446
- let n = e?.trim();
447
- return n ? O.some((e, r) => e.projectId.trim() === n && r !== t) ? T._({ id: "8gXJTW" }) : null : T._({ id: "sMpIRo" });
448
- }, W = () => {
449
- let e = U(P, O.length);
450
- if (e) {
451
- j({ newProjectId: e });
452
- return;
453
- }
454
- k([...O, {
455
- projectId: P.trim(),
456
- isNew: !0
457
- }]), F(""), N(!1), j({});
458
- }, G = () => {
459
- F(""), N(!1), j({});
460
- }, K = (e) => {
461
- k(O.filter((t, n) => n !== e)), j({});
462
- }, q = async () => {
463
- L(!0), z(null);
464
- try {
465
- let e = new Set(O.map((e) => e.projectId)), t = new Set(x.map((e) => e.projectId)), n = x.filter((t) => !e.has(t.projectId)).map((e) => e.originalProjectId).filter(Boolean), r = O.filter((e) => !t.has(e.projectId)).map((e) => e.projectId);
466
- for (let e of n) await a.compute.removeTenantAccess.mutate({
467
- project_id: l,
468
- flavorId: d.id,
469
- targetProjectId: e
470
- });
471
- for (let e of r) await a.compute.addTenantAccess.mutate({
472
- project_id: l,
473
- flavorId: d.id,
474
- targetProjectId: e
475
- });
476
- y();
477
- } catch (e) {
478
- z(D(e instanceof Error ? e.message : "Failed to save changes"));
479
- } finally {
480
- L(!1);
481
- }
482
- }, J = () => {
483
- k(x), N(!1), F(""), j({}), z(null), y();
484
- };
485
- if (B) {
486
- let e = d.name;
487
- return /*#__PURE__*/ p(i, {
488
- open: !0,
489
- onCancel: J,
490
- size: "large",
491
- title: T._({
492
- id: "6Rnrsz",
493
- values: { flavorName: e }
494
- }),
495
- children: /*#__PURE__*/ p("p", {
496
- className: "jn:text-theme-light py-8 text-center",
497
- children: T._({ id: "gzPLLI" })
498
- })
499
- });
500
- }
501
- let Y = d.name;
502
- return /*#__PURE__*/ p(i, {
503
- open: !0,
504
- onCancel: J,
505
- size: "large",
506
- title: T._({
507
- id: "6Rnrsz",
508
- values: { flavorName: Y }
509
- }),
510
- onConfirm: V ? q : void 0,
511
- confirmButtonLabel: I ? T._({ id: "XvjC4F" }) : T._({ id: "IUwGEM" }),
512
- cancelButtonLabel: T._({ id: "dEgA5A" }),
513
- disableConfirmButton: H,
514
- disableCancelButton: I,
515
- disableCloseButton: I,
516
- children: g ? /*#__PURE__*/ p(r, {
517
- distribution: "center",
518
- alignment: "center",
519
- children: /*#__PURE__*/ p(t, { variant: "primary" })
520
- }) : /*#__PURE__*/ m("div", { children: [
521
- R && /*#__PURE__*/ p(n, {
522
- variant: "error",
523
- text: R,
524
- className: "mb-4",
525
- onDismiss: () => z(null)
526
- }),
527
- S && /*#__PURE__*/ p(r, {
528
- direction: "horizontal",
529
- className: "jn:bg-theme-background-lvl-1 mb-4 justify-end p-2",
530
- children: /*#__PURE__*/ p(o, {
531
- label: T._({ id: "zmHcLu" }),
532
- onClick: () => N(!0),
533
- variant: "primary",
534
- disabled: M,
535
- icon: "addCircle"
536
- })
537
- }),
538
- O.length === 0 && !M ? /*#__PURE__*/ p("p", {
539
- className: "jn:text-theme-light py-8 text-center",
540
- children: S ? T._({ id: "R8o5/x" }) : T._({ id: "PonzUM" })
541
- }) : /*#__PURE__*/ m(u, {
542
- className: "mb-6",
543
- children: [/*#__PURE__*/ p(f, { children: M && /*#__PURE__*/ m(f, { children: [/*#__PURE__*/ p(c, {
544
- className: "flex items-center justify-end",
545
- children: /*#__PURE__*/ p("span", {
546
- className: "jn:text-theme-high",
547
- children: T._({ id: "e0NrBM" })
548
- })
549
- }), /*#__PURE__*/ p(e, { children: /*#__PURE__*/ m("div", {
550
- className: "flex w-full items-center gap-2",
551
- children: [/*#__PURE__*/ p("div", {
552
- className: "flex-1",
553
- children: /*#__PURE__*/ p(s, {
554
- value: P,
555
- onChange: (e) => {
556
- F(e.target.value), A.newProjectId && j((e) => {
557
- let t = { ...e };
558
- return delete t.newProjectId, t;
559
- });
560
- },
561
- placeholder: T._({ id: "vlyDm2" }),
562
- errortext: A.newProjectId,
563
- autoFocus: !0,
564
- wrapperClassName: "w-full"
565
- })
566
- }), /*#__PURE__*/ m("div", {
567
- className: "flex shrink-0 gap-2",
568
- children: [/*#__PURE__*/ p(o, {
569
- size: "small",
570
- variant: "primary",
571
- onClick: W,
572
- icon: "check",
573
- title: T._({ id: "m16xKo" })
574
- }), /*#__PURE__*/ p(o, {
575
- size: "small",
576
- variant: "subdued",
577
- onClick: G,
578
- icon: "close",
579
- title: T._({ id: "dEgA5A" })
580
- })]
581
- })]
582
- }) })] }) }), /*#__PURE__*/ p(f, { children: O.map((t, n) => /*#__PURE__*/ m(h.Fragment, { children: [/*#__PURE__*/ p(c, { children: /*#__PURE__*/ p("span", {
583
- className: "jn:text-theme-high",
584
- children: T._({ id: "e0NrBM" })
585
- }) }), /*#__PURE__*/ p(e, { children: /*#__PURE__*/ m(r, {
586
- direction: "horizontal",
587
- gap: "2",
588
- alignment: "center",
589
- className: "justify-between",
590
- children: [/*#__PURE__*/ p("span", {
591
- className: "jn:text-theme-high block max-w-xs truncate",
592
- title: t.projectId,
593
- children: t.projectId
594
- }), C && /*#__PURE__*/ p(o, {
595
- size: "small",
596
- onClick: () => K(n),
597
- icon: "deleteForever",
598
- "data-testid": `delete-${t.projectId}`,
599
- title: T._({ id: "t/YqKh" }),
600
- disabled: M
601
- })]
602
- }) })] }, `${t.originalProjectId || t.projectId}-${n}`)) })]
603
- })
604
- ] })
605
- });
606
- }
607
- var P = ({ client: e, isOpen: a, onClose: o, project: s, flavor: c }) => {
608
- let { i18n: l, _: u } = b(), { translateError: d } = w(), [f, m] = v(null), [h, y] = v(null), [x, S] = v(!0), [C, T] = v(null);
609
- g(() => {
610
- if (!a || !c?.id) {
611
- m(null), y(null), T(null);
612
- return;
613
- }
614
- let t = !1;
615
- return S(!0), T(null), (async () => {
616
- try {
617
- let [n, r] = await Promise.all([M(e, s, c.id), j(e, s)]);
618
- if (t) return;
619
- let i = n.filter((e, t, n) => n.findIndex((t) => t.tenant_id === e.tenant_id) === t);
620
- m(i), y(r);
621
- } catch (e) {
622
- if (t) return;
623
- T(e instanceof Error ? e.message : "Failed to load access data");
624
- } finally {
625
- t || S(!1);
626
- }
627
- })(), () => {
628
- t = !0;
629
- };
630
- }, [
631
- a,
632
- c?.id,
633
- e,
634
- s
635
- ]);
636
- let E = _(() => f ? A(f) : [], [f]);
637
- if (!a || !c) return null;
638
- let D = c.name;
639
- return x ? /*#__PURE__*/ p(i, {
640
- open: !0,
641
- onCancel: o,
642
- size: "large",
643
- title: l._({
644
- id: "6Rnrsz",
645
- values: { flavorName: D }
646
- }),
647
- children: /*#__PURE__*/ p(r, {
648
- distribution: "center",
649
- alignment: "center",
650
- children: /*#__PURE__*/ p(t, { variant: "primary" })
651
- })
652
- }) : C ? /*#__PURE__*/ p(i, {
653
- open: !0,
654
- onCancel: o,
655
- size: "large",
656
- title: l._({
657
- id: "6Rnrsz",
658
- values: { flavorName: D }
659
- }),
660
- children: /*#__PURE__*/ p(n, {
661
- variant: "error",
662
- text: d(C)
663
- })
664
- }) : /*#__PURE__*/ p(N, {
665
- client: e,
666
- project: s,
667
- flavor: c,
668
- isLoading: !1,
669
- onClose: o,
670
- initialAccess: E,
671
- canAdd: h?.canAdd ?? !1,
672
- canRemove: h?.canRemove ?? !1
673
- }, c.id);
674
- }, F = ({ client: t, isOpen: o, onClose: f, project: h, flavor: g, onSuccess: _ }) => {
675
- let { i18n: T, _: E } = b(), { translateError: D } = w(), [O, k] = v(!1), [A, j] = v(null), { trackClose: M, markSubmitted: N, resetTracking: P } = d({
676
- isOpen: o,
677
- actionPrefix: "compute.flavor.delete"
678
- }), F = x.object({ confirm: x.string().refine((e) => e === "delete", { message: T._({ id: "QytzQr" }) }) }), I = S({
679
- defaultValues: { confirm: "" },
680
- validators: { onSubmit: F },
681
- onSubmit: async () => {
682
- if (!g?.id) {
683
- j(T._({ id: "NlcF/v" }));
684
- return;
685
- }
686
- if (!O) {
687
- N(), j(null);
688
- try {
689
- k(!0), await t.compute.deleteFlavor.mutate({
690
- project_id: h,
691
- flavorId: g.id
692
- }), _(), R();
693
- } catch (e) {
694
- let t = e?.message ? D(e.message) : T._({ id: "8zAn1f" });
695
- j(t);
696
- } finally {
697
- k(!1);
698
- }
699
- }
700
- }
701
- }), L = C(I.store, (e) => e.isSubmitting || e.values.confirm !== "delete"), R = () => {
702
- M(), k(!1), j(null), I.reset(), P(), f();
703
- }, z = O ? T._({ id: "EF2EU9" }) : T._({ id: "JT3I1g" }), B = g?.name;
704
- return /*#__PURE__*/ p(i, {
705
- open: o,
706
- onCancel: R,
707
- title: T._({
708
- id: "W3mNTY",
709
- values: { flavorName: B }
710
- }),
711
- size: "small",
712
- confirmButtonLabel: z,
713
- confirmButtonVariant: "primary-danger",
714
- onConfirm: I.handleSubmit,
715
- cancelButtonLabel: T._({ id: "dEgA5A" }),
716
- disableConfirmButton: L || O,
717
- disableCancelButton: O,
718
- disableCloseButton: O,
719
- children: /*#__PURE__*/ m(r, {
720
- direction: "vertical",
721
- gap: "4",
722
- children: [
723
- A && /*#__PURE__*/ p(n, {
724
- variant: "error",
725
- children: A
726
- }),
727
- /*#__PURE__*/ p("p", {
728
- className: "text-theme-default",
729
- children: /*#__PURE__*/ p(y, { id: "QQ8wUG" })
730
- }),
731
- g && /*#__PURE__*/ m(u, { children: [
732
- /*#__PURE__*/ p(c, { children: T._({ id: "6YtxFj" }) }),
733
- /*#__PURE__*/ p(e, { children: g.name }),
734
- /*#__PURE__*/ p(c, { children: T._({ id: "S0kLOH" }) }),
735
- /*#__PURE__*/ p(e, { children: g.id }),
736
- /*#__PURE__*/ p(c, { children: T._({ id: "MZGbkp" }) }),
737
- /*#__PURE__*/ p(e, { children: g.vcpus }),
738
- /*#__PURE__*/ p(c, { children: T._({ id: "RGhYAo" }) }),
739
- /*#__PURE__*/ m(e, { children: [g.ram, " MiB"] }),
740
- /*#__PURE__*/ p(c, { children: T._({ id: "sPFHpI" }) }),
741
- /*#__PURE__*/ m(e, { children: [g.disk, " GiB"] }),
742
- /*#__PURE__*/ p(c, { children: T._({ id: "vH2C/2" }) }),
743
- /*#__PURE__*/ p(e, { children: g.swap === 0 || g.swap === "" ? /*#__PURE__*/ p(y, { id: "EdQY6l" }) : `${Number(g.swap)} MiB` })
744
- ] }),
745
- /*#__PURE__*/ p(a, {
746
- className: "mb-0",
747
- id: "delete-flavor-form",
748
- onSubmit: (e) => {
749
- e.preventDefault(), I.handleSubmit();
750
- },
751
- children: /*#__PURE__*/ p(l, { children: /*#__PURE__*/ p(I.Field, {
752
- name: "confirm",
753
- children: (e) => /*#__PURE__*/ p(s, {
754
- id: e.name,
755
- name: e.name,
756
- label: T._({ id: "QytzQr" }),
757
- value: e.state.value,
758
- onChange: (t) => e.handleChange(t.target.value),
759
- placeholder: "delete",
760
- autoFocus: !0,
761
- disabled: O,
762
- required: !0
763
- })
764
- }) })
765
- })
766
- ]
767
- })
768
- });
769
- };
770
- //#endregion
771
- export { w as i, P as n, k as r, F as t };
772
-
773
- //# sourceMappingURL=DeleteFlavorModal-V44QCJBd.mjs.map