@cobaltcore-dev/aurora 1.1.0 → 1.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 (183) hide show
  1. package/README.md +59 -9
  2. package/dist/client/App.d.ts +2 -2
  3. package/dist/client/AuroraApp.d.ts +33 -13
  4. package/dist/client/{AuthProvider-BS5OVv8n.mjs → AuthProvider-CVSAwW9f.mjs} +22 -8
  5. package/dist/client/AuthProvider-CVSAwW9f.mjs.map +1 -0
  6. package/dist/client/{ContentHeader-BHMUzd9H.mjs → ContentHeader-CPJbgYWn.mjs} +18 -18
  7. package/dist/client/{ContentHeader-BHMUzd9H.mjs.map → ContentHeader-CPJbgYWn.mjs.map} +1 -1
  8. package/dist/client/DeleteFlavorModal-V44QCJBd.mjs +773 -0
  9. package/dist/client/DeleteFlavorModal-V44QCJBd.mjs.map +1 -0
  10. package/dist/client/DynamicBreadcrumbContext-CVcUQFou.mjs +26 -0
  11. package/dist/client/DynamicBreadcrumbContext-CVcUQFou.mjs.map +1 -0
  12. package/dist/client/{FiltersInput-B8CNBg1L.mjs → FiltersInput-CKI6zWnm.mjs} +18 -18
  13. package/dist/client/{FiltersInput-B8CNBg1L.mjs.map → FiltersInput-CKI6zWnm.mjs.map} +1 -1
  14. package/dist/client/FloatingIpActionModals-CwEC5GR-.mjs +460 -0
  15. package/dist/client/FloatingIpActionModals-CwEC5GR-.mjs.map +1 -0
  16. package/dist/client/ImageToastNotifications-m6c3tVPb.mjs +1152 -0
  17. package/dist/client/ImageToastNotifications-m6c3tVPb.mjs.map +1 -0
  18. package/dist/client/SortInput-4g7nSTHW.mjs +34 -0
  19. package/dist/client/SortInput-4g7nSTHW.mjs.map +1 -0
  20. package/dist/client/{TwoColumnDescriptionList-DiDx3PnH.mjs → TwoColumnDescriptionList-NvgvErua.mjs} +2 -2
  21. package/dist/client/{TwoColumnDescriptionList-DiDx3PnH.mjs.map → TwoColumnDescriptionList-NvgvErua.mjs.map} +1 -1
  22. package/dist/client/_-CAsCx-Ay.mjs +6 -0
  23. package/dist/client/_-CAsCx-Ay.mjs.map +1 -0
  24. package/dist/client/_auth-SrDjHL6j.mjs +12 -0
  25. package/dist/client/_auth-SrDjHL6j.mjs.map +1 -0
  26. package/dist/client/_flavorId-9PcBBW52.mjs +231 -0
  27. package/dist/client/_flavorId-9PcBBW52.mjs.map +1 -0
  28. package/dist/client/{_flavorId-BN_qessZ.mjs → _flavorId-a9Gu66R1.mjs} +3 -9
  29. package/dist/client/_flavorId-a9Gu66R1.mjs.map +1 -0
  30. package/dist/client/_floatingIpId-AE9Fu8l6.mjs +210 -0
  31. package/dist/client/_floatingIpId-AE9Fu8l6.mjs.map +1 -0
  32. package/dist/client/{_floatingIpId-CwDGHkWm.mjs → _floatingIpId-AZ11Ksmu.mjs} +3 -9
  33. package/dist/client/_floatingIpId-AZ11Ksmu.mjs.map +1 -0
  34. package/dist/client/{_imageId-BtJ7GmYB.mjs → _imageId-BtAql2Kr.mjs} +104 -92
  35. package/dist/client/_imageId-BtAql2Kr.mjs.map +1 -0
  36. package/dist/client/_imageId-D76BxvFY.mjs +39 -0
  37. package/dist/client/_imageId-D76BxvFY.mjs.map +1 -0
  38. package/dist/client/{_projectId-Byt3GQDW.mjs → _projectId-7Nl1MQTJ.mjs} +5 -5
  39. package/dist/client/_projectId-7Nl1MQTJ.mjs.map +1 -0
  40. package/dist/client/_projectId-B3wmSala.mjs +281 -0
  41. package/dist/client/_projectId-B3wmSala.mjs.map +1 -0
  42. package/dist/client/_projectId-DPzv0CCp.mjs +77 -0
  43. package/dist/client/_projectId-DPzv0CCp.mjs.map +1 -0
  44. package/dist/client/_projectId-DfeVJy0G.mjs +30 -0
  45. package/dist/client/_projectId-DfeVJy0G.mjs.map +1 -0
  46. package/dist/client/_securityGroupId-C5huJNfO.mjs +1810 -0
  47. package/dist/client/_securityGroupId-C5huJNfO.mjs.map +1 -0
  48. package/dist/client/{_securityGroupId-BcbkRhsN.mjs → _securityGroupId-D85mSigA.mjs} +3 -9
  49. package/dist/client/_securityGroupId-D85mSigA.mjs.map +1 -0
  50. package/dist/client/_serviceType-DS8DxsrP.mjs +20 -0
  51. package/dist/client/_serviceType-DS8DxsrP.mjs.map +1 -0
  52. package/dist/client/_serviceType-M8d9rOT6.mjs +6 -0
  53. package/dist/client/_serviceType-M8d9rOT6.mjs.map +1 -0
  54. package/dist/client/_storageType-BRWWJtow.mjs +14 -0
  55. package/dist/client/_storageType-BRWWJtow.mjs.map +1 -0
  56. package/dist/client/_storageType-CzZ4u9x_.mjs +12 -0
  57. package/dist/client/_storageType-CzZ4u9x_.mjs.map +1 -0
  58. package/dist/client/_storageType-Dy9uCVXr.mjs +845 -0
  59. package/dist/client/_storageType-Dy9uCVXr.mjs.map +1 -0
  60. package/dist/client/_storageType-zeSZe--V.mjs.map +1 -1
  61. package/dist/client/{about-_73VmpTB.mjs → about-BmQTyLWc.mjs} +2 -2
  62. package/dist/client/{about-_73VmpTB.mjs.map → about-BmQTyLWc.mjs.map} +1 -1
  63. package/dist/client/{aurora-EbwGRLLf.mjs → aurora-CIml-f2f.mjs} +2 -2
  64. package/dist/client/{aurora-EbwGRLLf.mjs.map → aurora-CIml-f2f.mjs.map} +1 -1
  65. package/dist/client/{build-C_4vRMCq.mjs → build-WuxXRAqf.mjs} +121 -24
  66. package/dist/client/{build-C_4vRMCq.mjs.map → build-WuxXRAqf.mjs.map} +1 -1
  67. package/dist/client/components/Breadcrumbs.d.ts +1 -0
  68. package/dist/client/components/ListToolbar/SortInput.d.ts +3 -0
  69. package/dist/client/context/BreadcrumbExtensionContext.d.ts +9 -0
  70. package/dist/client/context/DynamicBreadcrumbContext.d.ts +9 -0
  71. package/dist/client/{flavors-CiHCYrtZ.mjs → flavors-B0rbqffG.mjs} +3 -5
  72. package/dist/client/flavors-B0rbqffG.mjs.map +1 -0
  73. package/dist/client/flavors-DWMZ6TuJ.mjs.map +1 -1
  74. package/dist/client/flavors-Rl20bxVU.mjs +628 -0
  75. package/dist/client/flavors-Rl20bxVU.mjs.map +1 -0
  76. package/dist/client/floatingips-Cz9k80cc.mjs +8 -0
  77. package/dist/client/floatingips-Cz9k80cc.mjs.map +1 -0
  78. package/dist/client/floatingips-xbO_mu4f.mjs +576 -0
  79. package/dist/client/floatingips-xbO_mu4f.mjs.map +1 -0
  80. package/dist/client/hooks/useBreadcrumbs.d.ts +16 -0
  81. package/dist/client/hooks/usePushBreadcrumbs.d.ts +10 -0
  82. package/dist/client/hooks/useSetBreadcrumb.d.ts +11 -0
  83. package/dist/client/{hooks-LutR2Yg3.mjs → hooks-D0yKIumu.mjs} +2 -2
  84. package/dist/client/{hooks-LutR2Yg3.mjs.map → hooks-D0yKIumu.mjs.map} +1 -1
  85. package/dist/client/images-BGQv9kKT.mjs +1983 -0
  86. package/dist/client/images-BGQv9kKT.mjs.map +1 -0
  87. package/dist/client/{images-CS4kZQyu.mjs → images-CPmMa4SQ.mjs} +3 -5
  88. package/dist/client/images-CPmMa4SQ.mjs.map +1 -0
  89. package/dist/client/images-NBf2bV43.mjs.map +1 -1
  90. package/dist/client/index.d.ts +7 -3
  91. package/dist/client/index.js +549 -535
  92. package/dist/client/index.js.map +1 -1
  93. package/dist/client/{objects-C3azvW8m.mjs → objects-BE_u5yRt.mjs} +7087 -4211
  94. package/dist/client/objects-BE_u5yRt.mjs.map +1 -0
  95. package/dist/client/objects-BN-59Th0.mjs +66 -0
  96. package/dist/client/objects-BN-59Th0.mjs.map +1 -0
  97. package/dist/client/objects-D9Luf9KB.mjs +66 -0
  98. package/dist/client/objects-D9Luf9KB.mjs.map +1 -0
  99. package/dist/client/projects-yiK0HGSA.mjs.map +1 -1
  100. package/dist/client/routeInfo-DP3v74Wg.mjs +19 -0
  101. package/dist/client/routeInfo-DP3v74Wg.mjs.map +1 -0
  102. package/dist/client/router.d.ts +2 -2
  103. package/dist/client/{routes-CdDm-hhO.mjs → routes-CJj7SR_K.mjs} +2 -2
  104. package/dist/client/routes-CJj7SR_K.mjs.map +1 -0
  105. package/dist/client/routes-xofA3ksU.mjs +110 -0
  106. package/dist/client/routes-xofA3ksU.mjs.map +1 -0
  107. package/dist/client/securitygroups-BjhgLBHm.mjs +620 -0
  108. package/dist/client/securitygroups-BjhgLBHm.mjs.map +1 -0
  109. package/dist/client/securitygroups-CtKne8UQ.mjs +8 -0
  110. package/dist/client/securitygroups-CtKne8UQ.mjs.map +1 -0
  111. package/dist/client/{securitygroups-Byte-iSp.mjs → securitygroups-DEJQBcxm.mjs} +3 -5
  112. package/dist/client/securitygroups-DEJQBcxm.mjs.map +1 -0
  113. package/dist/client/trpcClient.d.ts +135 -3
  114. package/dist/client/useBreadcrumbs-ha3IlaxX.mjs +54 -0
  115. package/dist/client/useBreadcrumbs-ha3IlaxX.mjs.map +1 -0
  116. package/dist/client/useModalTracking-BcOKTYRN.mjs +33 -0
  117. package/dist/client/useModalTracking-BcOKTYRN.mjs.map +1 -0
  118. package/dist/client/{useSecurityGroupPermissions-C29mzb3b.mjs → useSecurityGroupPermissions-BOyLQLdC.mjs} +85 -19
  119. package/dist/client/useSecurityGroupPermissions-BOyLQLdC.mjs.map +1 -0
  120. package/dist/client/useSetBreadcrumb-tn7lBaQV.mjs +19 -0
  121. package/dist/client/useSetBreadcrumb-tn7lBaQV.mjs.map +1 -0
  122. package/dist/client/utils/formatSwiftDate.d.ts +30 -0
  123. package/dist/server/index.d.ts +136 -4
  124. package/dist/server/index.js +845 -260
  125. package/package.json +37 -36
  126. package/dist/client/AuthProvider-BS5OVv8n.mjs.map +0 -1
  127. package/dist/client/DeleteFlavorModal-BP83t9zX.mjs +0 -721
  128. package/dist/client/DeleteFlavorModal-BP83t9zX.mjs.map +0 -1
  129. package/dist/client/FloatingIpActionModals-BraiJWBi.mjs +0 -417
  130. package/dist/client/FloatingIpActionModals-BraiJWBi.mjs.map +0 -1
  131. package/dist/client/ImageToastNotifications-BXMHJaIH.mjs +0 -1131
  132. package/dist/client/ImageToastNotifications-BXMHJaIH.mjs.map +0 -1
  133. package/dist/client/RouteError-hAF8_jbe.mjs +0 -25
  134. package/dist/client/RouteError-hAF8_jbe.mjs.map +0 -1
  135. package/dist/client/SortInput-Cqs2poV3.mjs +0 -34
  136. package/dist/client/SortInput-Cqs2poV3.mjs.map +0 -1
  137. package/dist/client/StatusError-C5KodQOq.mjs +0 -39
  138. package/dist/client/StatusError-C5KodQOq.mjs.map +0 -1
  139. package/dist/client/_auth-DJ9wHZaj.mjs +0 -11
  140. package/dist/client/_auth-DJ9wHZaj.mjs.map +0 -1
  141. package/dist/client/_flavorId-BN_qessZ.mjs.map +0 -1
  142. package/dist/client/_flavorId-CJjEB_Ao.mjs +0 -210
  143. package/dist/client/_flavorId-CJjEB_Ao.mjs.map +0 -1
  144. package/dist/client/_floatingIpId-CwDGHkWm.mjs.map +0 -1
  145. package/dist/client/_floatingIpId-foMIwbE4.mjs +0 -215
  146. package/dist/client/_floatingIpId-foMIwbE4.mjs.map +0 -1
  147. package/dist/client/_imageId-BtJ7GmYB.mjs.map +0 -1
  148. package/dist/client/_projectId-BmtCuzJu.mjs +0 -29
  149. package/dist/client/_projectId-BmtCuzJu.mjs.map +0 -1
  150. package/dist/client/_projectId-Byt3GQDW.mjs.map +0 -1
  151. package/dist/client/_projectId-NYk1IN_a.mjs +0 -291
  152. package/dist/client/_projectId-NYk1IN_a.mjs.map +0 -1
  153. package/dist/client/_projectId-QueiFczy.mjs +0 -46
  154. package/dist/client/_projectId-QueiFczy.mjs.map +0 -1
  155. package/dist/client/_securityGroupId-BcbkRhsN.mjs.map +0 -1
  156. package/dist/client/_securityGroupId-pPtJsCoe.mjs +0 -1797
  157. package/dist/client/_securityGroupId-pPtJsCoe.mjs.map +0 -1
  158. package/dist/client/_storageType-BmqrU06i.mjs +0 -2202
  159. package/dist/client/_storageType-BmqrU06i.mjs.map +0 -1
  160. package/dist/client/components/Error/StatusError.d.ts +0 -11
  161. package/dist/client/components/ProjectView/ProjectInfoBox.d.ts +0 -12
  162. package/dist/client/flavors-CiHCYrtZ.mjs.map +0 -1
  163. package/dist/client/flavors-DY-bDc8l.mjs +0 -650
  164. package/dist/client/flavors-DY-bDc8l.mjs.map +0 -1
  165. package/dist/client/floatingips-Ci4jHkaG.mjs +0 -591
  166. package/dist/client/floatingips-Ci4jHkaG.mjs.map +0 -1
  167. package/dist/client/images-91U7tr9Y2.mjs +0 -1976
  168. package/dist/client/images-91U7tr9Y2.mjs.map +0 -1
  169. package/dist/client/images-CS4kZQyu.mjs.map +0 -1
  170. package/dist/client/objects-C3azvW8m.mjs.map +0 -1
  171. package/dist/client/objects-CM265S6b.mjs +0 -56
  172. package/dist/client/objects-CM265S6b.mjs.map +0 -1
  173. package/dist/client/objects-EE9Cd1wI.mjs +0 -56
  174. package/dist/client/objects-EE9Cd1wI.mjs.map +0 -1
  175. package/dist/client/routeInfo-DXqB2HCf.mjs +0 -32
  176. package/dist/client/routeInfo-DXqB2HCf.mjs.map +0 -1
  177. package/dist/client/routes-CBd8CCuM.mjs +0 -115
  178. package/dist/client/routes-CBd8CCuM.mjs.map +0 -1
  179. package/dist/client/routes-CdDm-hhO.mjs.map +0 -1
  180. package/dist/client/securitygroups-Bd_uV4S9.mjs +0 -595
  181. package/dist/client/securitygroups-Bd_uV4S9.mjs.map +0 -1
  182. package/dist/client/securitygroups-Byte-iSp.mjs.map +0 -1
  183. package/dist/client/useSecurityGroupPermissions-C29mzb3b.mjs.map +0 -1
@@ -0,0 +1,576 @@
1
+ import { C as e, D as t, K as n, L as r, Q as i, R as a, S as o, T as s, X as c, ft as l, g as u, i as d, it as f, l as p, lt as m, m as h, o as g, ot as _, p as v, rt as y, t as b, x } from "./build-WuxXRAqf.mjs";
2
+ import { a as S } from "./trpcClient-D7gpR7YG.mjs";
3
+ import { t as C } from "./useProjectId-DBc5lpoU.mjs";
4
+ import { t as w } from "./SortInput-4g7nSTHW.mjs";
5
+ import { d as T, n as E, o as D } from "./md-kvaGCNAK.mjs";
6
+ import { t as O } from "./ContentHeader-CPJbgYWn.mjs";
7
+ import "./hooks-D0yKIumu.mjs";
8
+ import { t as k } from "./useModal-DCs1OJh7.mjs";
9
+ import { n as A, t as j } from "./FiltersInput-CKI6zWnm.mjs";
10
+ import { n as M, t as N } from "./FloatingIpActionModals-CwEC5GR-.mjs";
11
+ import { Fragment as P, jsx as F, jsxs as I } from "react/jsx-runtime";
12
+ import { useEffect as L, useRef as R, useState as z } from "react";
13
+ import { useNavigate as B, useSearch as ee } from "@tanstack/react-router";
14
+ import { Trans as V, useLingui as H } from "@lingui/react";
15
+ import { z as U } from "zod";
16
+ import { i18n as W } from "@lingui/core";
17
+ import { useForm as G, useStore as K } from "@tanstack/react-form";
18
+ //#region src/client/routes/_auth/projects/$projectId/network/floatingips/-components/-table/constants.tsx
19
+ var q = {
20
+ ACTIVE: {
21
+ text: "Active",
22
+ icon: /*#__PURE__*/ F(E, {
23
+ size: 18,
24
+ color: "white",
25
+ fill: "#4FB81C"
26
+ })
27
+ },
28
+ DOWN: {
29
+ text: "Down",
30
+ icon: /*#__PURE__*/ F(T, {
31
+ size: 18,
32
+ color: "white",
33
+ fill: "#969696"
34
+ })
35
+ },
36
+ ERROR: {
37
+ text: "Error",
38
+ icon: /*#__PURE__*/ F(D, {
39
+ size: 18,
40
+ color: "white",
41
+ fill: "#C70000"
42
+ })
43
+ }
44
+ }, J = () => [
45
+ W._({ id: "uAQUqI" }),
46
+ W._({ id: "xNG/3n" }),
47
+ W._({ id: "Nc7QKU" }),
48
+ W._({ id: "7NC3vm" }),
49
+ W._({ id: "Nu4oKW" }),
50
+ ""
51
+ ], Y = ({ floatingIp: e }) => {
52
+ let { i18n: n, _: r } = H(), i = B(), a = C(), o = () => {
53
+ i({
54
+ to: "/projects/$projectId/network/floatingips/$floatingIpId",
55
+ params: {
56
+ projectId: a,
57
+ floatingIpId: e.id
58
+ }
59
+ });
60
+ };
61
+ return /*#__PURE__*/ I(s, {
62
+ "data-testid": `floating-ip-row-${e.id}`,
63
+ onClick: o,
64
+ children: [
65
+ /*#__PURE__*/ F(b, { children: /*#__PURE__*/ I("div", {
66
+ className: "flex items-center gap-2",
67
+ children: [q[e.status].icon, q[e.status].text]
68
+ }) }),
69
+ /*#__PURE__*/ F(b, { children: e.floating_ip_address }),
70
+ /*#__PURE__*/ F(b, { children: e.fixed_ip_address || "—" }),
71
+ /*#__PURE__*/ F(b, { children: e.floating_network_id }),
72
+ /*#__PURE__*/ F(b, { children: e.description || "—" }),
73
+ /*#__PURE__*/ F(b, {
74
+ onClick: (e) => e.stopPropagation(),
75
+ className: "items-end pr-0",
76
+ children: /*#__PURE__*/ F(N, {
77
+ floatingIp: e,
78
+ children: ({ toggleEditModal: e, toggleAttachModal: r, toggleDetachModal: i, toggleReleaseModal: a }) => /*#__PURE__*/ F(t, { children: /*#__PURE__*/ I(u, { children: [
79
+ /*#__PURE__*/ F(x, {
80
+ label: n._({ id: "rdUucN" }),
81
+ onClick: o
82
+ }),
83
+ /*#__PURE__*/ F(x, {
84
+ label: n._({ id: "n22YIM" }),
85
+ onClick: e
86
+ }),
87
+ /*#__PURE__*/ F(x, {
88
+ label: n._({ id: "igVDFt" }),
89
+ onClick: r
90
+ }),
91
+ /*#__PURE__*/ F(x, {
92
+ label: n._({ id: "FOcBn3" }),
93
+ onClick: i
94
+ }),
95
+ /*#__PURE__*/ F(x, {
96
+ label: n._({ id: "H+a5j6" }),
97
+ onClick: a
98
+ })
99
+ ] }) })
100
+ })
101
+ })
102
+ ]
103
+ }, e.id);
104
+ }, X = ({ floatingIps: e, isLoading: t, isError: n, error: r }) => {
105
+ let { i18n: i, _: a } = H(), c = J(), l = c.length;
106
+ return t ? /*#__PURE__*/ F(y, {
107
+ status: "progress",
108
+ title: i._({ id: "odksI6" })
109
+ }) : n ? /*#__PURE__*/ F(y, {
110
+ status: "error",
111
+ title: r?.message ?? i._({ id: "+Nx1wc" })
112
+ }) : /*#__PURE__*/ I(g, {
113
+ columns: l,
114
+ minContentColumns: [l - 1],
115
+ children: [/*#__PURE__*/ F(s, { children: c.map((e) => /*#__PURE__*/ F(o, { children: e }, e)) }), e.length > 0 ? e.map((e) => /*#__PURE__*/ F(Y, { floatingIp: e }, e.id)) : /*#__PURE__*/ F(s, { children: /*#__PURE__*/ F(b, {
116
+ colSpan: l,
117
+ children: /*#__PURE__*/ F(y, {
118
+ status: "empty",
119
+ title: i._({ id: "WCLyHI" }),
120
+ body: i._({ id: "0eY8Mz" })
121
+ })
122
+ }) })]
123
+ });
124
+ }, te = /^(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}$/, ne = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|(([0-9a-fA-F]{1,4}:){1,7}:)|(([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4})|(([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2})|(([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3})|(([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4})|(([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5})|([0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6}))|(:((:[0-9a-fA-F]{1,4}){1,7}|:))|(::([fF]{4}(:0{1,4})?:)?((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|(([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})))$/, re = (e) => te.test(e) || ne.test(e), ie = /^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)*[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$/, ae = ({ open: e, onClose: t }) => {
125
+ let { i18n: i, _: o } = H(), s = C(), u = S.useUtils(), { isPending: d, ...p } = S.network.floatingIp.create.useMutation({ onSettled: () => u.network.floatingIp.list.invalidate() }), { data: g = [], isLoading: y, error: b } = S.network.floatingIp.listExternalNetworks.useQuery({ project_id: s }), { data: x = [], isLoading: w, error: T } = S.network.floatingIp.listDnsDomains.useQuery({ project_id: s }), { data: E = [], isLoading: D, error: O } = S.network.floatingIp.listAvailablePorts.useQuery({ project_id: s }), k = U.object({
126
+ floating_network_id: U.string(),
127
+ dns_domain: U.string(),
128
+ dns_name: U.string().trim().max(63, i._({ id: "Zq6Y5u" })).refine((e) => e === "" || ie.test(e), { message: i._({ id: "R6kcsL" }) }),
129
+ description: U.string().trim().max(255, i._({ id: "lZvIXd" })),
130
+ floating_ip_address: U.string().trim().refine((e) => e === "" || re(e), { message: i._({ id: "AZyHwC" }) }),
131
+ port_id: U.string(),
132
+ fixed_ip_address: U.string()
133
+ }), A = G({
134
+ defaultValues: {
135
+ floating_network_id: "",
136
+ dns_domain: "",
137
+ dns_name: "",
138
+ description: "",
139
+ floating_ip_address: "",
140
+ port_id: "",
141
+ fixed_ip_address: ""
142
+ },
143
+ validators: { onSubmit: k },
144
+ onSubmit: async ({ value: e }) => {
145
+ if (d) return;
146
+ let t = await p.mutateAsync({
147
+ project_id: s,
148
+ floating_network_id: e.floating_network_id,
149
+ ...e.dns_domain && { dns_domain: e.dns_domain },
150
+ ...e.dns_name && { dns_name: e.dns_name },
151
+ ...e.description && { description: e.description },
152
+ ...e.floating_ip_address && { floating_ip_address: e.floating_ip_address },
153
+ ...e.port_id && { port_id: e.port_id },
154
+ ...e.fixed_ip_address && { fixed_ip_address: e.fixed_ip_address }
155
+ }), { message: n, ...r } = M(t.floating_ip_address ?? t.id);
156
+ _.success(n, r), j();
157
+ }
158
+ }), j = () => {
159
+ d || (A.reset(), p.reset(), t());
160
+ }, N = K(A.store, (e) => e.values.port_id), P = K(A.store, (e) => e.values.floating_network_id), L = E.find((e) => e.id === N)?.fixed_ips ?? [], R = (b?.message || T?.message || O?.message) ?? p.error?.message ?? null;
161
+ return /*#__PURE__*/ I(c, {
162
+ open: e,
163
+ size: "large",
164
+ title: i._({ id: "h99+4y" }),
165
+ onCancel: j,
166
+ cancelButtonLabel: i._({ id: "dEgA5A" }),
167
+ confirmButtonLabel: i._({ id: "9X8lAk" }),
168
+ onConfirm: A.handleSubmit,
169
+ disableConfirmButton: d || !P,
170
+ children: [
171
+ R && /*#__PURE__*/ F(r, {
172
+ dismissible: !1,
173
+ variant: "error",
174
+ className: "mb-4",
175
+ children: R
176
+ }),
177
+ d && /*#__PURE__*/ I("div", {
178
+ className: "mb-4 flex items-center justify-center gap-2",
179
+ children: [/*#__PURE__*/ F(n, { variant: "primary" }), /*#__PURE__*/ F("span", {
180
+ className: "text-theme-high text-sm",
181
+ children: /*#__PURE__*/ F(V, { id: "HuA8iQ" })
182
+ })]
183
+ }),
184
+ !d && /*#__PURE__*/ I(l, {
185
+ className: "mb-0",
186
+ id: "allocate-floating-ip-form",
187
+ onSubmit: (e) => {
188
+ e.preventDefault(), A.handleSubmit();
189
+ },
190
+ children: [
191
+ /*#__PURE__*/ F(v, {
192
+ className: "mb-4",
193
+ children: /*#__PURE__*/ F(A.Field, {
194
+ name: "floating_network_id",
195
+ children: (e) => /*#__PURE__*/ F(f, {
196
+ id: e.name,
197
+ name: e.name,
198
+ value: e.state.value,
199
+ onChange: (t) => e.handleChange(typeof t == "string" ? t : ""),
200
+ label: i._({ id: "kA2lMP" }),
201
+ helptext: i._({ id: "BoIAP6" }),
202
+ placeholder: i._({ id: "T6Gm5y" }),
203
+ disabled: d || y,
204
+ required: !0,
205
+ loading: y,
206
+ children: g.map(({ id: e, name: t }) => /*#__PURE__*/ F(a, {
207
+ value: e,
208
+ label: t ? `${t} (${e})` : e
209
+ }, e))
210
+ })
211
+ })
212
+ }),
213
+ /*#__PURE__*/ F(v, {
214
+ className: "mb-4",
215
+ children: /*#__PURE__*/ F(A.Field, {
216
+ name: "dns_domain",
217
+ children: (e) => /*#__PURE__*/ F(f, {
218
+ id: e.name,
219
+ name: e.name,
220
+ value: e.state.value,
221
+ onChange: (t) => e.handleChange(typeof t == "string" ? t : ""),
222
+ label: i._({ id: "WlpcJv" }),
223
+ helptext: i._({ id: "1ojTVo" }),
224
+ disabled: d || w,
225
+ loading: w,
226
+ children: x.map(({ id: e, name: t }) => /*#__PURE__*/ F(a, {
227
+ value: t,
228
+ label: t
229
+ }, e))
230
+ })
231
+ })
232
+ }),
233
+ /*#__PURE__*/ F(v, {
234
+ className: "mb-4",
235
+ children: /*#__PURE__*/ F(A.Field, {
236
+ name: "dns_name",
237
+ children: (e) => /*#__PURE__*/ F(h, {
238
+ id: e.name,
239
+ name: e.name,
240
+ value: e.state.value,
241
+ onBlur: e.handleBlur,
242
+ onChange: (t) => e.handleChange(t.target.value),
243
+ label: i._({ id: "eGEHJE" }),
244
+ placeholder: i._({ id: "SLEH7X" }),
245
+ helptext: i._({ id: "Tx4Ym+" }),
246
+ errortext: e.state.meta.errors.map((e) => e?.message).join(", "),
247
+ disabled: d
248
+ })
249
+ })
250
+ }),
251
+ /*#__PURE__*/ F(v, {
252
+ className: "mb-4",
253
+ children: /*#__PURE__*/ F(A.Field, {
254
+ name: "description",
255
+ children: (e) => /*#__PURE__*/ F(m, {
256
+ id: e.name,
257
+ name: e.name,
258
+ value: e.state.value,
259
+ onBlur: e.handleBlur,
260
+ onChange: (t) => e.handleChange(t.target.value),
261
+ placeholder: i._({ id: "Nu4oKW" }),
262
+ errortext: e.state.meta.errors.map((e) => e?.message).join(", "),
263
+ disabled: d
264
+ })
265
+ })
266
+ }),
267
+ /*#__PURE__*/ F(v, {
268
+ className: "mb-4",
269
+ children: /*#__PURE__*/ F(A.Field, {
270
+ name: "floating_ip_address",
271
+ children: (e) => /*#__PURE__*/ F(h, {
272
+ id: e.name,
273
+ name: e.name,
274
+ value: e.state.value,
275
+ onBlur: e.handleBlur,
276
+ onChange: (t) => e.handleChange(t.target.value),
277
+ label: i._({ id: "xNG/3n" }),
278
+ placeholder: i._({ id: "5/wyf8" }),
279
+ helptext: i._({ id: "PAKSdy" }),
280
+ errortext: e.state.meta.errors.map((e) => e?.message).join(", "),
281
+ disabled: d
282
+ })
283
+ })
284
+ }),
285
+ /*#__PURE__*/ F(v, {
286
+ className: "mb-4",
287
+ children: /*#__PURE__*/ F(A.Field, {
288
+ name: "port_id",
289
+ children: (e) => /*#__PURE__*/ F(f, {
290
+ id: e.name,
291
+ name: e.name,
292
+ value: e.state.value,
293
+ onChange: (t) => {
294
+ let n = typeof t == "string" ? t : "";
295
+ e.handleChange(n);
296
+ let r = E.find((e) => e.id === n)?.fixed_ips ?? [];
297
+ A.setFieldValue("fixed_ip_address", r.length === 1 ? r[0].ip_address : "");
298
+ },
299
+ label: i._({ id: "eks7oA" }),
300
+ placeholder: i._({ id: "UztfYZ" }),
301
+ errortext: e.state.meta.errors.map((e) => e?.message).join(", "),
302
+ disabled: d || D,
303
+ loading: D,
304
+ children: E.map((e) => /*#__PURE__*/ F(a, {
305
+ value: e.id,
306
+ label: e.name ? `${e.name} (${e.id})` : e.id
307
+ }, e.id))
308
+ })
309
+ })
310
+ }),
311
+ /*#__PURE__*/ F(v, { children: /*#__PURE__*/ F(A.Field, {
312
+ name: "fixed_ip_address",
313
+ children: (e) => /*#__PURE__*/ F(f, {
314
+ id: e.name,
315
+ name: e.name,
316
+ value: e.state.value,
317
+ onBlur: e.handleBlur,
318
+ onChange: (t) => e.handleChange(typeof t == "string" ? t : ""),
319
+ label: i._({ id: "Nc7QKU" }),
320
+ placeholder: i._({ id: "i41Xuw" }),
321
+ helptext: i._({ id: "PtjzS+" }),
322
+ errortext: e.state.meta.errors.map((e) => e?.message).join(", "),
323
+ disabled: d || L.length === 0,
324
+ children: L.map(({ ip_address: e }) => /*#__PURE__*/ F(a, {
325
+ value: e,
326
+ label: e
327
+ }, e))
328
+ })
329
+ }) })
330
+ ]
331
+ })
332
+ ]
333
+ });
334
+ }, Z = (e) => {
335
+ let t = [];
336
+ return e.status && t.push({
337
+ name: "status",
338
+ value: e.status
339
+ }), t;
340
+ }, oe = (e, t) => {
341
+ let n = {};
342
+ if (!e?.length) return n;
343
+ let r = e.filter((e) => !e.inactive).reduce((e, t) => (e[t.name] || (e[t.name] = []), e[t.name].push(t.value), e), {});
344
+ return Object.entries(r).forEach(([e, r]) => {
345
+ t.find((t) => t.filterName === e)?.supportsMultiValue && r.length > 1 ? n[e] = `in:${r.join(",")}` : n[e] = r[0];
346
+ }), n;
347
+ }, se = (e, t, n) => e.some((e) => e.name === t.name && e.value === t.value) ? e : n.find((e) => e.filterName === t.name)?.supportsMultiValue ? [...e, t] : [...e.filter((e) => e.name !== t.name), t], ce = (e, t, n) => {
348
+ let r = {
349
+ search: n.search,
350
+ sortBy: n.sortBy,
351
+ sortDirection: n.sortDirection
352
+ };
353
+ if (!e?.length) return r;
354
+ let i = e.filter((e) => !e.inactive).reduce((e, t) => (e[t.name] || (e[t.name] = []), e[t.name].push(t.value), e), {});
355
+ return Object.entries(i).forEach(([e, n]) => {
356
+ t.find((t) => t.filterName === e)?.supportsMultiValue && n.length > 1 ? r[e] = `in:${n.join(",")}` : r[e] = n[0];
357
+ }), r;
358
+ }, Q = "fixed_ip_address", $ = "asc", le = () => {
359
+ let { i18n: t, _: n } = H(), a = B(), o = ee({ strict: !1 }), s = C(), [c, l] = k(!1), [u, f] = z(o.search || ""), m = R(void 0);
360
+ L(() => () => clearTimeout(m.current), []);
361
+ let [h, g] = z({
362
+ options: [
363
+ {
364
+ label: t._({ id: "Nc7QKU" }),
365
+ value: "fixed_ip_address"
366
+ },
367
+ {
368
+ label: t._({ id: "xNG/3n" }),
369
+ value: "floating_ip_address"
370
+ },
371
+ {
372
+ label: t._({ id: "2cJIlz" }),
373
+ value: "floating_network_id"
374
+ },
375
+ {
376
+ label: t._({ id: "S0kLOH" }),
377
+ value: "id"
378
+ },
379
+ {
380
+ label: t._({ id: "/bUiYk" }),
381
+ value: "router_id"
382
+ },
383
+ {
384
+ label: t._({ id: "uAQUqI" }),
385
+ value: "status"
386
+ },
387
+ {
388
+ label: t._({ id: "T9Mtpi" }),
389
+ value: "tenant_id"
390
+ },
391
+ {
392
+ label: t._({ id: "mSfwLL" }),
393
+ value: "project_id"
394
+ }
395
+ ],
396
+ sortBy: o.sortBy || Q,
397
+ sortDirection: o.sortDirection || $
398
+ }), [_, v] = z({
399
+ filters: [{
400
+ displayName: t._({ id: "uAQUqI" }),
401
+ filterName: "status",
402
+ values: [
403
+ "ACTIVE",
404
+ "DOWN",
405
+ "ERROR"
406
+ ],
407
+ supportsMultiValue: !1
408
+ }],
409
+ selectedFilters: Z(o)
410
+ }), b = o.search || "", { data: x } = S.network.canUser.useQuery({
411
+ project_id: s,
412
+ permission: ["network:floatingips:create"]
413
+ }, { select: ([e]) => ({ canCreate: e }) });
414
+ L(() => {
415
+ let e = Z(o), t = o.sortBy || Q, n = o.sortDirection || $, r = o.search || "";
416
+ v((t) => ({
417
+ ...t,
418
+ selectedFilters: e
419
+ })), g((e) => ({
420
+ ...e,
421
+ sortBy: t,
422
+ sortDirection: n
423
+ })), f(r);
424
+ }, [
425
+ o.status,
426
+ o.sortBy,
427
+ o.sortDirection,
428
+ o.search
429
+ ]);
430
+ let T = (e) => {
431
+ let t = {
432
+ options: e.options,
433
+ sortBy: e.sortBy?.toString() || Q,
434
+ sortDirection: e.sortDirection || $
435
+ };
436
+ g(t), a({
437
+ search: (e) => ({
438
+ ...e,
439
+ sortBy: t.sortBy,
440
+ sortDirection: t.sortDirection
441
+ }),
442
+ replace: !1
443
+ });
444
+ }, E = (e) => {
445
+ v(e), a({
446
+ search: (t) => ce(e.selectedFilters || [], e.filters, {
447
+ search: t.search,
448
+ sortBy: t.sortBy,
449
+ sortDirection: t.sortDirection
450
+ }),
451
+ replace: !1
452
+ });
453
+ }, D = (e, t = !1) => {
454
+ a({
455
+ search: (t) => ({
456
+ ...t,
457
+ search: e || void 0
458
+ }),
459
+ replace: t
460
+ });
461
+ }, { data: M = [], isLoading: N, isError: U, error: W } = S.network.floatingIp.list.useQuery({
462
+ project_id: s,
463
+ sort_key: h.sortBy,
464
+ sort_dir: h.sortDirection,
465
+ ...oe(_.selectedFilters || [], _.filters),
466
+ ...b ? { searchTerm: b } : {}
467
+ }, { placeholderData: (e) => e });
468
+ return U && !M.length ? /*#__PURE__*/ F(y, {
469
+ status: "error",
470
+ title: W?.message ?? t._({ id: "+Nx1wc" })
471
+ }) : /*#__PURE__*/ I(P, { children: [/*#__PURE__*/ F(O, {
472
+ title: t._({ id: "u77/s4" }),
473
+ projectId: s
474
+ }), /*#__PURE__*/ I("div", {
475
+ className: "relative",
476
+ children: [
477
+ U && M.length > 0 && /*#__PURE__*/ F(r, {
478
+ variant: "error",
479
+ className: "mb-4",
480
+ children: W?.message ?? t._({ id: "cL8dHR" })
481
+ }),
482
+ /*#__PURE__*/ F(i, {
483
+ distribution: "end",
484
+ alignment: "center",
485
+ gap: "2",
486
+ className: "pb-2",
487
+ children: /*#__PURE__*/ I(i, {
488
+ gap: "2",
489
+ children: [/*#__PURE__*/ F(w, {
490
+ options: h.options,
491
+ sortBy: h.sortBy,
492
+ sortDirection: h.sortDirection ?? "asc",
493
+ selectClassName: "min-w-52",
494
+ onSortByChange: (e) => T({
495
+ ...h,
496
+ sortBy: e,
497
+ sortDirection: h.sortDirection
498
+ }),
499
+ onSortDirectionChange: (e) => T({
500
+ ...h,
501
+ sortDirection: e
502
+ })
503
+ }), x?.canCreate && /*#__PURE__*/ F(d, {
504
+ onClick: l,
505
+ variant: "primary",
506
+ className: "whitespace-nowrap",
507
+ children: /*#__PURE__*/ F(V, { id: "h99+4y" })
508
+ })]
509
+ })
510
+ }),
511
+ /*#__PURE__*/ F(p, { children: /*#__PURE__*/ I(i, {
512
+ direction: "vertical",
513
+ gap: "2",
514
+ children: [/*#__PURE__*/ I(i, {
515
+ distribution: "between",
516
+ alignment: "center",
517
+ children: [/*#__PURE__*/ F(j, {
518
+ filters: _.filters,
519
+ selectClassName: "sm:min-w-40",
520
+ comboboxClassName: "sm:min-w-40",
521
+ onChange: (e) => {
522
+ let t = se(_.selectedFilters || [], e, _.filters);
523
+ t !== (_.selectedFilters || []) && E({
524
+ ..._,
525
+ selectedFilters: t
526
+ });
527
+ }
528
+ }), /*#__PURE__*/ F(e, {
529
+ placeholder: t._({ id: "s6lr1k" }),
530
+ "data-testid": "searchbar",
531
+ value: u,
532
+ onInput: (e) => {
533
+ let t = e.currentTarget.value;
534
+ f(t), clearTimeout(m.current), m.current = window.setTimeout(() => D(t, !0), 500);
535
+ },
536
+ onSearch: (e) => {
537
+ clearTimeout(m.current), D(typeof e == "string" ? e : "", !1);
538
+ },
539
+ onClear: () => {
540
+ clearTimeout(m.current), f(""), D("", !1);
541
+ }
542
+ })]
543
+ }), _.selectedFilters && _.selectedFilters.length > 0 && /*#__PURE__*/ F(A, {
544
+ selectedFilters: _.selectedFilters,
545
+ onDelete: (e) => E({
546
+ ..._,
547
+ selectedFilters: (_.selectedFilters || []).filter((t) => t.name !== e.name || t.value !== e.value)
548
+ }),
549
+ onClear: () => E({
550
+ ..._,
551
+ selectedFilters: []
552
+ })
553
+ })]
554
+ }) }),
555
+ /*#__PURE__*/ F(X, {
556
+ floatingIps: M,
557
+ isLoading: N,
558
+ isError: U && !M.length,
559
+ error: W
560
+ }),
561
+ c && /*#__PURE__*/ F(ae, {
562
+ open: c,
563
+ onClose: l
564
+ })
565
+ ]
566
+ })] });
567
+ };
568
+ //#endregion
569
+ //#region src/client/routes/_auth/projects/$projectId/network/floatingips/index.tsx?tsr-split=component
570
+ function ue() {
571
+ return /*#__PURE__*/ F(le, {});
572
+ }
573
+ //#endregion
574
+ export { ue as component };
575
+
576
+ //# sourceMappingURL=floatingips-xbO_mu4f.mjs.map