@plutonhq/core-frontend 0.1.13 → 0.1.14

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 (186) hide show
  1. package/dist-lib/@types/backups.d.ts +26 -0
  2. package/dist-lib/@types/backups.d.ts.map +1 -1
  3. package/dist-lib/@types/devices.d.ts +7 -0
  4. package/dist-lib/@types/devices.d.ts.map +1 -1
  5. package/dist-lib/@types/plans.d.ts +21 -1
  6. package/dist-lib/@types/plans.d.ts.map +1 -1
  7. package/dist-lib/@types/restores.d.ts +2 -0
  8. package/dist-lib/@types/restores.d.ts.map +1 -1
  9. package/dist-lib/components/Device/DeviceBackups/DeviceBackups.d.ts +3 -2
  10. package/dist-lib/components/Device/DeviceBackups/DeviceBackups.d.ts.map +1 -1
  11. package/dist-lib/components/Device/DeviceBackups/DeviceBackups.js +73 -85
  12. package/dist-lib/components/Device/DeviceBackups/DeviceBackups.js.map +1 -1
  13. package/dist-lib/components/Plan/BackupEvents/BackupEvents.d.ts.map +1 -1
  14. package/dist-lib/components/Plan/BackupEvents/BackupEvents.js +88 -50
  15. package/dist-lib/components/Plan/BackupEvents/BackupEvents.js.map +1 -1
  16. package/dist-lib/components/Plan/BackupEvents/BackupEvents.module.scss.js +70 -38
  17. package/dist-lib/components/Plan/BackupEvents/BackupEvents.module.scss.js.map +1 -1
  18. package/dist-lib/components/Plan/BackupProgress/BackupProgress.d.ts.map +1 -1
  19. package/dist-lib/components/Plan/BackupProgress/BackupProgress.js +166 -123
  20. package/dist-lib/components/Plan/BackupProgress/BackupProgress.js.map +1 -1
  21. package/dist-lib/components/Plan/BackupProgress/BackupProgress.module.scss.js +64 -30
  22. package/dist-lib/components/Plan/BackupProgress/BackupProgress.module.scss.js.map +1 -1
  23. package/dist-lib/components/Plan/Backups/Backups.d.ts +8 -1
  24. package/dist-lib/components/Plan/Backups/Backups.d.ts.map +1 -1
  25. package/dist-lib/components/Plan/Backups/Backups.js +154 -125
  26. package/dist-lib/components/Plan/Backups/Backups.js.map +1 -1
  27. package/dist-lib/components/Plan/EditPlan/EditPlan.d.ts.map +1 -1
  28. package/dist-lib/components/Plan/EditPlan/EditPlan.js +11 -10
  29. package/dist-lib/components/Plan/EditPlan/EditPlan.js.map +1 -1
  30. package/dist-lib/components/Plan/Mirrors/MirrorDetails.d.ts +12 -0
  31. package/dist-lib/components/Plan/Mirrors/MirrorDetails.d.ts.map +1 -0
  32. package/dist-lib/components/Plan/Mirrors/MirrorDetails.js +68 -0
  33. package/dist-lib/components/Plan/Mirrors/MirrorDetails.js.map +1 -0
  34. package/dist-lib/components/Plan/Mirrors/MirrorDetails.module.scss.js +26 -0
  35. package/dist-lib/components/Plan/Mirrors/MirrorDetails.module.scss.js.map +1 -0
  36. package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.d.ts +11 -0
  37. package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.d.ts.map +1 -0
  38. package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.js +38 -0
  39. package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.js.map +1 -0
  40. package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.module.scss.js +16 -0
  41. package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.module.scss.js.map +1 -0
  42. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.d.ts +14 -0
  43. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.d.ts.map +1 -0
  44. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.js +54 -0
  45. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.js.map +1 -0
  46. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.module.scss.js +26 -0
  47. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.module.scss.js.map +1 -0
  48. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelectorModal.d.ts +15 -0
  49. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelectorModal.d.ts.map +1 -0
  50. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelectorModal.js +34 -0
  51. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelectorModal.js.map +1 -0
  52. package/dist-lib/components/Plan/PlanBackups/PlanBackups.d.ts.map +1 -1
  53. package/dist-lib/components/Plan/PlanBackups/PlanBackups.js +20 -17
  54. package/dist-lib/components/Plan/PlanBackups/PlanBackups.js.map +1 -1
  55. package/dist-lib/components/Plan/PlanForm/PlanForm.d.ts +2 -1
  56. package/dist-lib/components/Plan/PlanForm/PlanForm.d.ts.map +1 -1
  57. package/dist-lib/components/Plan/PlanForm/PlanForm.js +85 -58
  58. package/dist-lib/components/Plan/PlanForm/PlanForm.js.map +1 -1
  59. package/dist-lib/components/Plan/PlanItems/PlanItem.d.ts.map +1 -1
  60. package/dist-lib/components/Plan/PlanItems/PlanItem.js +58 -59
  61. package/dist-lib/components/Plan/PlanItems/PlanItem.js.map +1 -1
  62. package/dist-lib/components/Plan/PlanRemoveModal/PlanRemoveModal.js +8 -8
  63. package/dist-lib/components/Plan/PlanRemoveModal/PlanRemoveModal.js.map +1 -1
  64. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.d.ts +14 -0
  65. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.d.ts.map +1 -0
  66. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.js +290 -0
  67. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.js.map +1 -0
  68. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.module.scss.js +26 -0
  69. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.module.scss.js.map +1 -0
  70. package/dist-lib/components/Plan/PlanStats/PlanStats.d.ts.map +1 -1
  71. package/dist-lib/components/Plan/PlanStats/PlanStats.js +41 -42
  72. package/dist-lib/components/Plan/PlanStats/PlanStats.js.map +1 -1
  73. package/dist-lib/components/Plan/PlanStats/PlanStats.module.scss.js +5 -5
  74. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.d.ts +15 -0
  75. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.d.ts.map +1 -0
  76. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.js +69 -0
  77. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.js.map +1 -0
  78. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.module.scss.js +16 -0
  79. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.module.scss.js.map +1 -0
  80. package/dist-lib/components/Restore/RestoreWizard/RestoreConfirmStep.d.ts.map +1 -1
  81. package/dist-lib/components/Restore/RestoreWizard/RestoreConfirmStep.js +36 -34
  82. package/dist-lib/components/Restore/RestoreWizard/RestoreConfirmStep.js.map +1 -1
  83. package/dist-lib/components/Restore/RestoreWizard/RestorePreviewStep.d.ts.map +1 -1
  84. package/dist-lib/components/Restore/RestoreWizard/RestorePreviewStep.js +7 -5
  85. package/dist-lib/components/Restore/RestoreWizard/RestorePreviewStep.js.map +1 -1
  86. package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.d.ts +12 -4
  87. package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.d.ts.map +1 -1
  88. package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.js +44 -32
  89. package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.js.map +1 -1
  90. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.d.ts +5 -1
  91. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.d.ts.map +1 -1
  92. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.js +48 -44
  93. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.js.map +1 -1
  94. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.module.scss.js +32 -32
  95. package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.js +14 -14
  96. package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.js.map +1 -1
  97. package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.d.ts.map +1 -1
  98. package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.js +28 -19
  99. package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.js.map +1 -1
  100. package/dist-lib/components/common/Icon/Icon.d.ts.map +1 -1
  101. package/dist-lib/components/common/Icon/Icon.js +11 -0
  102. package/dist-lib/components/common/Icon/Icon.js.map +1 -1
  103. package/dist-lib/components/common/PageHeader/PageHeader.module.scss.js +6 -6
  104. package/dist-lib/components/index.d.ts +4 -0
  105. package/dist-lib/components/index.d.ts.map +1 -1
  106. package/dist-lib/components.js +86 -78
  107. package/dist-lib/components.js.map +1 -1
  108. package/dist-lib/hooks/usePwaAutoUpdate.d.ts +11 -2
  109. package/dist-lib/hooks/usePwaAutoUpdate.d.ts.map +1 -1
  110. package/dist-lib/hooks/usePwaAutoUpdate.js +32 -10
  111. package/dist-lib/hooks/usePwaAutoUpdate.js.map +1 -1
  112. package/dist-lib/router.d.ts.map +1 -1
  113. package/dist-lib/router.js +46 -35
  114. package/dist-lib/router.js.map +1 -1
  115. package/dist-lib/routes/DeviceSingle/DeviceSingle.d.ts.map +1 -1
  116. package/dist-lib/routes/DeviceSingle/DeviceSingle.js +40 -40
  117. package/dist-lib/routes/DeviceSingle/DeviceSingle.js.map +1 -1
  118. package/dist-lib/services/backups.d.ts +15 -2
  119. package/dist-lib/services/backups.d.ts.map +1 -1
  120. package/dist-lib/services/backups.js +119 -100
  121. package/dist-lib/services/backups.js.map +1 -1
  122. package/dist-lib/services/plans.d.ts +14 -0
  123. package/dist-lib/services/plans.d.ts.map +1 -1
  124. package/dist-lib/services/plans.js +160 -129
  125. package/dist-lib/services/plans.js.map +1 -1
  126. package/dist-lib/services/restores.d.ts +10 -2
  127. package/dist-lib/services/restores.d.ts.map +1 -1
  128. package/dist-lib/services/restores.js +61 -57
  129. package/dist-lib/services/restores.js.map +1 -1
  130. package/dist-lib/services/users.d.ts.map +1 -1
  131. package/dist-lib/services/users.js +32 -32
  132. package/dist-lib/services/users.js.map +1 -1
  133. package/dist-lib/services.js +107 -103
  134. package/dist-lib/styles/core-frontend.css +1 -1
  135. package/dist-lib/utils/progressHelpers.d.ts +12 -1
  136. package/dist-lib/utils/progressHelpers.d.ts.map +1 -1
  137. package/dist-lib/utils/progressHelpers.js +121 -63
  138. package/dist-lib/utils/progressHelpers.js.map +1 -1
  139. package/dist-lib/utils.js +29 -28
  140. package/package.json +1 -1
  141. package/src/@types/backups.ts +28 -0
  142. package/src/@types/devices.ts +8 -0
  143. package/src/@types/plans.ts +23 -1
  144. package/src/@types/restores.ts +2 -0
  145. package/src/components/Device/DeviceBackups/DeviceBackups.tsx +11 -36
  146. package/src/components/Plan/BackupEvents/BackupEvents.module.scss +65 -0
  147. package/src/components/Plan/BackupEvents/BackupEvents.tsx +65 -4
  148. package/src/components/Plan/BackupProgress/BackupProgress.module.scss +121 -3
  149. package/src/components/Plan/BackupProgress/BackupProgress.tsx +149 -71
  150. package/src/components/Plan/Backups/Backups.tsx +52 -4
  151. package/src/components/Plan/EditPlan/EditPlan.tsx +1 -0
  152. package/src/components/Plan/Mirrors/MirrorDetails.module.scss +76 -0
  153. package/src/components/Plan/Mirrors/MirrorDetails.tsx +100 -0
  154. package/src/components/Plan/Mirrors/MirrorStatusBadge.module.scss +25 -0
  155. package/src/components/Plan/Mirrors/MirrorStatusBadge.tsx +65 -0
  156. package/src/components/Plan/Mirrors/MirrorStorageSelector.module.scss +97 -0
  157. package/src/components/Plan/Mirrors/MirrorStorageSelector.tsx +70 -0
  158. package/src/components/Plan/Mirrors/MirrorStorageSelectorModal.tsx +40 -0
  159. package/src/components/Plan/PlanBackups/PlanBackups.tsx +4 -1
  160. package/src/components/Plan/PlanForm/PlanForm.tsx +30 -3
  161. package/src/components/Plan/PlanItems/PlanItem.tsx +3 -3
  162. package/src/components/Plan/PlanRemoveModal/PlanRemoveModal.tsx +1 -1
  163. package/src/components/Plan/PlanSettings/PlanReplicationSettings.module.scss +105 -0
  164. package/src/components/Plan/PlanSettings/PlanReplicationSettings.tsx +334 -0
  165. package/src/components/Plan/PlanStats/PlanStats.module.scss +1 -1
  166. package/src/components/Plan/PlanStats/PlanStats.tsx +8 -8
  167. package/src/components/Plan/PlanStorageInfo/PlanStorageInfo.module.scss +43 -0
  168. package/src/components/Plan/PlanStorageInfo/PlanStorageInfo.tsx +83 -0
  169. package/src/components/Restore/RestoreWizard/RestoreConfirmStep.tsx +2 -0
  170. package/src/components/Restore/RestoreWizard/RestorePreviewStep.tsx +2 -0
  171. package/src/components/Restore/RestoreWizard/RestoreSettingsStep.tsx +36 -13
  172. package/src/components/Restore/RestoreWizard/RestoreWizard.module.scss +4 -0
  173. package/src/components/Restore/RestoreWizard/RestoreWizard.tsx +9 -1
  174. package/src/components/Settings/GeneralSettings/GeneralSettings.tsx +1 -1
  175. package/src/components/Settings/IntegrationSettings/IntegrationSettings.tsx +9 -2
  176. package/src/components/common/Icon/Icon.tsx +10 -1
  177. package/src/components/common/PageHeader/PageHeader.module.scss +3 -0
  178. package/src/components/index.ts +6 -0
  179. package/src/hooks/usePwaAutoUpdate.ts +51 -11
  180. package/src/router.tsx +26 -17
  181. package/src/routes/DeviceSingle/DeviceSingle.tsx +3 -3
  182. package/src/services/backups.ts +32 -9
  183. package/src/services/plans.ts +45 -0
  184. package/src/services/restores.ts +10 -2
  185. package/src/services/users.ts +14 -5
  186. package/src/utils/progressHelpers.ts +85 -1
@@ -1,74 +1,112 @@
1
- import { jsxs as a, jsx as o, Fragment as S } from "react/jsx-runtime";
2
- import l from "../../common/Icon/Icon.js";
3
- import k from "../../common/SidePanel/SidePanel.js";
4
- import { getBackupEventActionMessage as D, getRestoreEventActionMessage as R } from "../../../utils/progressHelpers.js";
5
- import r from "./BackupEvents.module.scss.js";
6
- import { useGetBackupProgressOnce as F } from "../../../services/backups.js";
7
- import { useGetRestoreProgressOnce as M } from "../../../services/restores.js";
8
- import { useState as w, useMemo as I } from "react";
9
- import O from "../../common/Modal/Modal.js";
10
- import { formatDuration as K } from "../../../utils/helpers.js";
11
- const y = ({ id: d, type: t = "backup", sourceId: m, sourceType: h, planId: E, inProgress: c, progressData: A, close: _ }) => {
12
- var u;
13
- const [p, f] = w(!1), { data: g, isLoading: $ } = t === "backup" ? F({ id: d, sourceId: m, sourceType: h, planId: E }) : M({ id: d, sourceId: m, sourceType: h, planId: E }), i = A || g;
14
- console.log("progressDataToUse :", i);
15
- const n = I(() => {
16
- if (!i || !i.events) return "";
17
- let e = "";
18
- return i.events.forEach((s) => {
19
- s.action === "TASK_COMPLETED" ? e = "Completed" : s.action === "TASK_CANCELLED" ? e = "Cancelled" : s.action === "FAILED_PERMANENTLY" && (e = "Failed");
20
- }), e;
21
- }, [i]);
22
- return /* @__PURE__ */ a(k, { title: `${t}-${d} Events`, width: "1000px", icon: /* @__PURE__ */ o(l, { type: "logs", size: 18 }), footer: /* @__PURE__ */ o(S, {}), close: _, children: [
23
- /* @__PURE__ */ a("div", { className: r.backupEventsContainer, children: [
24
- /* @__PURE__ */ a("div", { className: r.header, children: [
25
- /* @__PURE__ */ a(
1
+ import { jsxs as n, jsx as i, Fragment as P } from "react/jsx-runtime";
2
+ import p from "../../common/Icon/Icon.js";
3
+ import S from "../../common/SidePanel/SidePanel.js";
4
+ import { getBackupEventActionMessage as L, getRestoreEventActionMessage as T } from "../../../utils/progressHelpers.js";
5
+ import e from "./BackupEvents.module.scss.js";
6
+ import { useGetBackupProgressOnce as w } from "../../../services/backups.js";
7
+ import { useGetRestoreProgressOnce as R } from "../../../services/restores.js";
8
+ import { useState as O, useMemo as F } from "react";
9
+ import M from "../../common/Modal/Modal.js";
10
+ import { formatDuration as D } from "../../../utils/helpers.js";
11
+ const U = ({ id: f, type: h = "backup", sourceId: $, sourceType: A, planId: g, inProgress: E, progressData: _, close: C }) => {
12
+ const [d, u] = O(!1), { data: k, isLoading: v } = h === "backup" ? w({ id: f, sourceId: $, sourceType: A, planId: g }) : R({ id: f, sourceId: $, sourceType: A, planId: g }), s = _ || k;
13
+ console.log("progressDataToUse :", s);
14
+ const N = F(() => {
15
+ if (!s || !s.events) return "";
16
+ let r = "";
17
+ return s.events.forEach((a) => {
18
+ a.action === "TASK_COMPLETED" ? r = "Completed" : a.action === "TASK_CANCELLED" ? r = "Cancelled" : a.action === "FAILED_PERMANENTLY" && (r = "Failed");
19
+ }), r;
20
+ }, [s]);
21
+ return /* @__PURE__ */ n(S, { title: `${h}-${f} Events`, width: "1000px", icon: /* @__PURE__ */ i(p, { type: "logs", size: 18 }), footer: /* @__PURE__ */ i(P, {}), close: C, children: [
22
+ /* @__PURE__ */ n("div", { className: e.backupEventsContainer, children: [
23
+ /* @__PURE__ */ n("div", { className: e.header, children: [
24
+ /* @__PURE__ */ n(
26
25
  "div",
27
26
  {
28
27
  title: "Status",
29
- className: `${r.status} ${c ? r.inProgress : ""}
30
- ${!c && n === "Completed" ? r.hasCompleted : ""} ${!c && n === "Failed" ? r.hasFailed : ""}`,
28
+ className: `${e.status} ${E ? e.inProgress : ""}
29
+ ${!E && N === "Completed" ? e.hasCompleted : ""} ${!E && N === "Failed" ? e.hasFailed : ""}`,
31
30
  children: [
32
- /* @__PURE__ */ o(l, { type: c ? "loading" : n === "Completed" ? "check-circle-filled" : "error-circle-filled", size: 14 }),
31
+ /* @__PURE__ */ i(p, { type: E ? "loading" : N === "Completed" ? "check-circle-filled" : "error-circle-filled", size: 14 }),
33
32
  " ",
34
- c ? `${t} In Progress` : `${t} ${n}` || "Unknown"
33
+ E ? `${h} In Progress` : `${h} ${N}` || "Unknown"
35
34
  ]
36
35
  }
37
36
  ),
38
- /* @__PURE__ */ a("div", { title: "Duration", className: r.duration, children: [
39
- /* @__PURE__ */ o(l, { type: "clock", size: 14 }),
37
+ /* @__PURE__ */ n("div", { title: "Duration", className: e.duration, children: [
38
+ /* @__PURE__ */ i(p, { type: "clock", size: 14 }),
40
39
  " ",
41
- (i == null ? void 0 : i.duration) && K(i.duration / 1e3) || "N/A"
40
+ (s == null ? void 0 : s.duration) && D(s.duration / 1e3) || "N/A"
42
41
  ] })
43
42
  ] }),
44
- $ && /* @__PURE__ */ o("div", { className: r.loading, children: /* @__PURE__ */ o(l, { type: "loading", size: 30 }) }),
45
- i && i.events && i.events.length > 0 ? /* @__PURE__ */ o("ul", { className: r.eventList, children: i.events.map((e, s) => {
46
- const T = e.phase === "finished" && e.action === "TASK_COMPLETED", C = e.phase === "finished" && e.action === "FAILED_PERMANENTLY", L = e.action.includes("RETRY_ATTEMPT_"), P = e.action === "TASK_FAILED", N = e.action === "BACKUP_WARNING" || e.action === "RESTORE_WARNING" || e.action === "POST_BACKUP_PRUNE_FAILED" || e.action === "POST_BACKUP_REPO_STATS_FAILED";
47
- return /* @__PURE__ */ a(
43
+ v && /* @__PURE__ */ i("div", { className: e.loading, children: /* @__PURE__ */ i(p, { type: "loading", size: 30 }) }),
44
+ s && s.events && s.events.length > 0 ? /* @__PURE__ */ i("ul", { className: e.eventList, children: s.events.map((r, a) => {
45
+ const c = r.phase === "finished" && r.action === "TASK_COMPLETED", o = r.phase === "finished" && r.action === "FAILED_PERMANENTLY", l = r.action.includes("RETRY_ATTEMPT_"), t = r.action === "TASK_FAILED", m = r.action === "BACKUP_WARNING" || r.action === "RESTORE_WARNING" || r.action === "POST_BACKUP_PRUNE_FAILED" || r.action === "POST_BACKUP_REPO_STATS_FAILED";
46
+ return /* @__PURE__ */ n(
48
47
  "li",
49
48
  {
50
- className: `${r.eventItem} ${e.error ? r.error : ""}
51
- ${T ? r.completed : ""} ${C ? r.failed : ""}
52
- ${L ? r.retrying : ""} ${P ? r.isError : ""}
53
- ${N ? r.isWarning : ""}`,
49
+ className: `${e.eventItem} ${r.error ? e.error : ""}
50
+ ${c ? e.completed : ""} ${o ? e.failed : ""}
51
+ ${l ? e.retrying : ""} ${t ? e.isError : ""}
52
+ ${m ? e.isWarning : ""}`,
54
53
  children: [
55
- /* @__PURE__ */ o("span", { className: r.icon, children: /* @__PURE__ */ o(l, { type: e.error || N ? "error-circle-filled" : "check-circle-filled", size: 16 }) }),
56
- /* @__PURE__ */ o("span", { className: r.time, children: new Date(e.timestamp).toLocaleTimeString() }),
57
- /* @__PURE__ */ o("span", { className: r.phase, children: e.phase }),
58
- /* @__PURE__ */ a("span", { className: r.action, children: [
59
- t === "backup" ? D(e.action) : R(e.action),
60
- e.error && /* @__PURE__ */ o("span", { className: r.viewError, onClick: () => f(s), children: "View Error" })
54
+ /* @__PURE__ */ i("span", { className: e.icon, children: /* @__PURE__ */ i(p, { type: r.error || m ? "error-circle-filled" : "check-circle-filled", size: 16 }) }),
55
+ /* @__PURE__ */ i("span", { className: e.time, children: new Date(r.timestamp).toLocaleTimeString() }),
56
+ /* @__PURE__ */ i("span", { className: e.phase, children: r.phase }),
57
+ /* @__PURE__ */ n("span", { className: e.action, children: [
58
+ h === "backup" ? L(r.action) : T(r.action),
59
+ r.error && /* @__PURE__ */ i("span", { className: e.viewError, onClick: () => u(`main-${a}`), children: "View Error" })
61
60
  ] })
62
61
  ]
63
62
  },
64
- s
63
+ a
65
64
  );
66
- }) }) : null
65
+ }) }) : null,
66
+ (s == null ? void 0 : s.mirrors) && Object.keys(s.mirrors).length > 0 && /* @__PURE__ */ i("div", { className: e.mirrorsEventsSection, children: Object.entries(s.mirrors).map(([r, a]) => /* @__PURE__ */ n("div", { className: e.mirrorEventsGroup, children: [
67
+ /* @__PURE__ */ n("div", { className: e.mirrorEventsHeader, children: [
68
+ /* @__PURE__ */ i("img", { src: `/providers/${a.storageType}.png`, className: e.mirrorProviderIcon }),
69
+ /* @__PURE__ */ i("span", { className: e.mirrorEventsName, children: a.storageName }),
70
+ /* @__PURE__ */ i("span", { className: `${e.mirrorEventsStatus} ${e[`mirror_${a.status}`] || ""}`, children: a.status })
71
+ ] }),
72
+ a.events && a.events.length > 0 ? /* @__PURE__ */ i("ul", { className: e.eventList, children: a.events.map((c, o) => {
73
+ const l = c.error, t = c.action === "REPLICATION_COMPLETE", m = c.action === "REPLICATION_FAILED";
74
+ return /* @__PURE__ */ n(
75
+ "li",
76
+ {
77
+ className: `${e.eventItem} ${l ? e.error : ""} ${t ? e.completed : ""} ${m ? e.failed : ""}`,
78
+ children: [
79
+ /* @__PURE__ */ i("span", { className: e.icon, children: /* @__PURE__ */ i(p, { type: l ? "error-circle-filled" : "check-circle-filled", size: 16 }) }),
80
+ /* @__PURE__ */ i("span", { className: e.time, children: new Date(c.timestamp).toLocaleTimeString() }),
81
+ /* @__PURE__ */ i("span", { className: e.phase, children: c.phase }),
82
+ /* @__PURE__ */ n("span", { className: e.action, children: [
83
+ L(c.action, a.storageName),
84
+ c.error && /* @__PURE__ */ i("span", { className: e.viewError, onClick: () => u(`mirror-${r}-${o}`), children: "View Error" })
85
+ ] })
86
+ ]
87
+ },
88
+ o
89
+ );
90
+ }) }) : /* @__PURE__ */ i("div", { className: e.noEvents, children: "No events recorded" })
91
+ ] }, r)) })
67
92
  ] }),
68
- p && /* @__PURE__ */ o(O, { title: "Error Details", closeModal: () => f(!1), width: "400px", children: /* @__PURE__ */ o("div", { className: r.errorDetails, children: ((u = i == null ? void 0 : i.events[p]) == null ? void 0 : u.error) || "Unknown error occurred." }) })
93
+ d && /* @__PURE__ */ i(M, { title: "Error Details", closeModal: () => u(!1), width: "400px", children: /* @__PURE__ */ i("div", { className: e.errorDetails, children: (() => {
94
+ var r, a, c, o, l;
95
+ if (typeof d == "string") {
96
+ if (d.startsWith("main-")) {
97
+ const t = parseInt(d.replace("main-", ""));
98
+ return ((r = s == null ? void 0 : s.events[t]) == null ? void 0 : r.error) || "Unknown error occurred.";
99
+ }
100
+ if (d.startsWith("mirror-")) {
101
+ const t = d.replace("mirror-", "").split("-"), m = parseInt(t.pop()), I = t.join("-");
102
+ return ((l = (o = (c = (a = s == null ? void 0 : s.mirrors) == null ? void 0 : a[I]) == null ? void 0 : c.events) == null ? void 0 : o[m]) == null ? void 0 : l.error) || "Unknown error occurred.";
103
+ }
104
+ }
105
+ return "Unknown error occurred.";
106
+ })() }) })
69
107
  ] });
70
108
  };
71
109
  export {
72
- y as default
110
+ U as default
73
111
  };
74
112
  //# sourceMappingURL=BackupEvents.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BackupEvents.js","sources":["../../../../src/components/Plan/BackupEvents/BackupEvents.tsx"],"sourcesContent":["import Icon from '../../common/Icon/Icon';\r\nimport SidePanel from '../../common/SidePanel/SidePanel';\r\nimport { getBackupEventActionMessage, getRestoreEventActionMessage } from '../../../utils/progressHelpers';\r\nimport classes from './BackupEvents.module.scss';\r\nimport { BackupProgressData } from '../../../@types/backups';\r\nimport { useGetBackupProgressOnce } from '../../../services/backups';\r\nimport { useGetRestoreProgressOnce } from '../../../services/restores';\r\nimport { useMemo, useState } from 'react';\r\nimport Modal from '../../common/Modal/Modal';\r\nimport { formatDuration } from '../../../utils/helpers';\r\n\r\ninterface BackupEventsProps {\r\n id: string;\r\n planId: string;\r\n sourceId: string;\r\n sourceType: string;\r\n type?: 'backup' | 'restore';\r\n inProgress?: boolean;\r\n progressData?: BackupProgressData | null;\r\n close: () => void;\r\n}\r\n\r\nconst BackupEvents = ({ id, type = 'backup', sourceId, sourceType, planId, inProgress, progressData, close }: BackupEventsProps) => {\r\n const [showError, setShowError] = useState<false | number>(false);\r\n const { data: fetchedProgressData, isLoading } =\r\n type === 'backup'\r\n ? useGetBackupProgressOnce({ id, sourceId, sourceType, planId })\r\n : useGetRestoreProgressOnce({ id, sourceId, sourceType, planId });\r\n\r\n const progressDataToUse: BackupProgressData | null = progressData || fetchedProgressData;\r\n\r\n console.log('progressDataToUse :', progressDataToUse);\r\n const hasFinished = useMemo(() => {\r\n if (!progressDataToUse || !progressDataToUse.events) return '';\r\n let finishedEvent = '';\r\n progressDataToUse.events.forEach((event) => {\r\n if (event.action === 'TASK_COMPLETED') {\r\n finishedEvent = 'Completed';\r\n } else if (event.action === 'TASK_CANCELLED') {\r\n finishedEvent = 'Cancelled';\r\n } else if (event.action === 'FAILED_PERMANENTLY') {\r\n finishedEvent = 'Failed';\r\n }\r\n });\r\n return finishedEvent;\r\n }, [progressDataToUse]);\r\n\r\n return (\r\n <SidePanel title={`${type}-${id} Events`} width=\"1000px\" icon={<Icon type={'logs'} size={18} />} footer={<></>} close={close}>\r\n <div className={classes.backupEventsContainer}>\r\n <div className={classes.header}>\r\n <div\r\n title=\"Status\"\r\n className={`${classes.status} ${inProgress ? classes.inProgress : ''} \r\n ${!inProgress && hasFinished === 'Completed' ? classes.hasCompleted : ''} ${!inProgress && hasFinished === 'Failed' ? classes.hasFailed : ''}`}\r\n >\r\n <Icon type={inProgress ? 'loading' : hasFinished === 'Completed' ? 'check-circle-filled' : 'error-circle-filled'} size={14} />{' '}\r\n {inProgress ? `${type} In Progress` : `${type} ${hasFinished}` || 'Unknown'}\r\n </div>\r\n <div title=\"Duration\" className={classes.duration}>\r\n <Icon type=\"clock\" size={14} /> {(progressDataToUse?.duration && formatDuration(progressDataToUse.duration / 1000)) || 'N/A'}\r\n </div>\r\n </div>\r\n {isLoading && (\r\n <div className={classes.loading}>\r\n <Icon type={'loading'} size={30} />\r\n </div>\r\n )}\r\n {progressDataToUse && progressDataToUse.events && progressDataToUse.events.length > 0 ? (\r\n <ul className={classes.eventList}>\r\n {progressDataToUse.events.map((event: any, index: number) => {\r\n const completed = event.phase === 'finished' && event.action === 'TASK_COMPLETED';\r\n const failed = event.phase === 'finished' && event.action === 'FAILED_PERMANENTLY';\r\n const retrying = event.action.includes('RETRY_ATTEMPT_');\r\n const isError = event.action === 'TASK_FAILED';\r\n const isWarning =\r\n event.action === 'BACKUP_WARNING' ||\r\n event.action === 'RESTORE_WARNING' ||\r\n event.action === 'POST_BACKUP_PRUNE_FAILED' ||\r\n event.action === 'POST_BACKUP_REPO_STATS_FAILED';\r\n return (\r\n <li\r\n key={index}\r\n className={`${classes.eventItem} ${event.error ? classes.error : ''} \r\n ${completed ? classes.completed : ''} ${failed ? classes.failed : ''} \r\n ${retrying ? classes.retrying : ''} ${isError ? classes.isError : ''} \r\n ${isWarning ? classes.isWarning : ''}`}\r\n >\r\n <span className={classes.icon}>\r\n <Icon type={event.error || isWarning ? 'error-circle-filled' : 'check-circle-filled'} size={16} />\r\n </span>\r\n {/* Timestamp should be converted to time only eg: 10:20:23 AM */}\r\n <span className={classes.time}>{new Date(event.timestamp).toLocaleTimeString()}</span>\r\n <span className={classes.phase}>{event.phase}</span>\r\n <span className={classes.action}>\r\n {type === 'backup' ? getBackupEventActionMessage(event.action) : getRestoreEventActionMessage(event.action)}\r\n {event.error && (\r\n <span className={classes.viewError} onClick={() => setShowError(index)}>\r\n View Error\r\n </span>\r\n )}\r\n </span>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n ) : null}\r\n </div>\r\n {showError && (\r\n <Modal title=\"Error Details\" closeModal={() => setShowError(false)} width=\"400px\">\r\n <div className={classes.errorDetails}>{progressDataToUse?.events[showError]?.error || 'Unknown error occurred.'}</div>\r\n </Modal>\r\n )}\r\n </SidePanel>\r\n );\r\n};\r\n\r\nexport default BackupEvents;\r\n"],"names":["BackupEvents","id","type","sourceId","sourceType","planId","inProgress","progressData","close","showError","setShowError","useState","fetchedProgressData","isLoading","useGetBackupProgressOnce","useGetRestoreProgressOnce","progressDataToUse","hasFinished","useMemo","finishedEvent","event","jsxs","SidePanel","jsx","Icon","Fragment","classes","formatDuration","index","completed","failed","retrying","isError","isWarning","getBackupEventActionMessage","getRestoreEventActionMessage","Modal","_a"],"mappings":"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"}
1
+ {"version":3,"file":"BackupEvents.js","sources":["../../../../src/components/Plan/BackupEvents/BackupEvents.tsx"],"sourcesContent":["import Icon from '../../common/Icon/Icon';\r\nimport SidePanel from '../../common/SidePanel/SidePanel';\r\nimport { getBackupEventActionMessage, getRestoreEventActionMessage } from '../../../utils/progressHelpers';\r\nimport classes from './BackupEvents.module.scss';\r\nimport { BackupProgressData, ReplicationProgressData } from '../../../@types/backups';\r\nimport { useGetBackupProgressOnce } from '../../../services/backups';\r\nimport { useGetRestoreProgressOnce } from '../../../services/restores';\r\nimport { useMemo, useState } from 'react';\r\nimport Modal from '../../common/Modal/Modal';\r\nimport { formatDuration } from '../../../utils/helpers';\r\n\r\ninterface BackupEventsProps {\r\n id: string;\r\n planId: string;\r\n sourceId: string;\r\n sourceType: string;\r\n type?: 'backup' | 'restore';\r\n inProgress?: boolean;\r\n progressData?: BackupProgressData | null;\r\n close: () => void;\r\n}\r\n\r\nconst BackupEvents = ({ id, type = 'backup', sourceId, sourceType, planId, inProgress, progressData, close }: BackupEventsProps) => {\r\n const [showError, setShowError] = useState<false | string>(false);\r\n const { data: fetchedProgressData, isLoading } =\r\n type === 'backup'\r\n ? useGetBackupProgressOnce({ id, sourceId, sourceType, planId })\r\n : useGetRestoreProgressOnce({ id, sourceId, sourceType, planId });\r\n\r\n const progressDataToUse: BackupProgressData | null = progressData || fetchedProgressData;\r\n\r\n console.log('progressDataToUse :', progressDataToUse);\r\n const hasFinished = useMemo(() => {\r\n if (!progressDataToUse || !progressDataToUse.events) return '';\r\n let finishedEvent = '';\r\n progressDataToUse.events.forEach((event) => {\r\n if (event.action === 'TASK_COMPLETED') {\r\n finishedEvent = 'Completed';\r\n } else if (event.action === 'TASK_CANCELLED') {\r\n finishedEvent = 'Cancelled';\r\n } else if (event.action === 'FAILED_PERMANENTLY') {\r\n finishedEvent = 'Failed';\r\n }\r\n });\r\n return finishedEvent;\r\n }, [progressDataToUse]);\r\n\r\n return (\r\n <SidePanel title={`${type}-${id} Events`} width=\"1000px\" icon={<Icon type={'logs'} size={18} />} footer={<></>} close={close}>\r\n <div className={classes.backupEventsContainer}>\r\n <div className={classes.header}>\r\n <div\r\n title=\"Status\"\r\n className={`${classes.status} ${inProgress ? classes.inProgress : ''} \r\n ${!inProgress && hasFinished === 'Completed' ? classes.hasCompleted : ''} ${!inProgress && hasFinished === 'Failed' ? classes.hasFailed : ''}`}\r\n >\r\n <Icon type={inProgress ? 'loading' : hasFinished === 'Completed' ? 'check-circle-filled' : 'error-circle-filled'} size={14} />{' '}\r\n {inProgress ? `${type} In Progress` : `${type} ${hasFinished}` || 'Unknown'}\r\n </div>\r\n <div title=\"Duration\" className={classes.duration}>\r\n <Icon type=\"clock\" size={14} /> {(progressDataToUse?.duration && formatDuration(progressDataToUse.duration / 1000)) || 'N/A'}\r\n </div>\r\n </div>\r\n {isLoading && (\r\n <div className={classes.loading}>\r\n <Icon type={'loading'} size={30} />\r\n </div>\r\n )}\r\n {progressDataToUse && progressDataToUse.events && progressDataToUse.events.length > 0 ? (\r\n <ul className={classes.eventList}>\r\n {progressDataToUse.events.map((event: any, index: number) => {\r\n const completed = event.phase === 'finished' && event.action === 'TASK_COMPLETED';\r\n const failed = event.phase === 'finished' && event.action === 'FAILED_PERMANENTLY';\r\n const retrying = event.action.includes('RETRY_ATTEMPT_');\r\n const isError = event.action === 'TASK_FAILED';\r\n const isWarning =\r\n event.action === 'BACKUP_WARNING' ||\r\n event.action === 'RESTORE_WARNING' ||\r\n event.action === 'POST_BACKUP_PRUNE_FAILED' ||\r\n event.action === 'POST_BACKUP_REPO_STATS_FAILED';\r\n return (\r\n <li\r\n key={index}\r\n className={`${classes.eventItem} ${event.error ? classes.error : ''} \r\n ${completed ? classes.completed : ''} ${failed ? classes.failed : ''} \r\n ${retrying ? classes.retrying : ''} ${isError ? classes.isError : ''} \r\n ${isWarning ? classes.isWarning : ''}`}\r\n >\r\n <span className={classes.icon}>\r\n <Icon type={event.error || isWarning ? 'error-circle-filled' : 'check-circle-filled'} size={16} />\r\n </span>\r\n {/* Timestamp should be converted to time only eg: 10:20:23 AM */}\r\n <span className={classes.time}>{new Date(event.timestamp).toLocaleTimeString()}</span>\r\n <span className={classes.phase}>{event.phase}</span>\r\n <span className={classes.action}>\r\n {type === 'backup' ? getBackupEventActionMessage(event.action) : getRestoreEventActionMessage(event.action)}\r\n {event.error && (\r\n <span className={classes.viewError} onClick={() => setShowError(`main-${index}`)}>\r\n View Error\r\n </span>\r\n )}\r\n </span>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n ) : null}\r\n {/* Mirror Events */}\r\n {progressDataToUse?.mirrors && Object.keys(progressDataToUse.mirrors).length > 0 && (\r\n <div className={classes.mirrorsEventsSection}>\r\n {Object.entries(progressDataToUse.mirrors as Record<string, ReplicationProgressData>).map(([storageId, mirror]) => (\r\n <div key={storageId} className={classes.mirrorEventsGroup}>\r\n <div className={classes.mirrorEventsHeader}>\r\n <img src={`/providers/${mirror.storageType}.png`} className={classes.mirrorProviderIcon} />\r\n <span className={classes.mirrorEventsName}>{mirror.storageName}</span>\r\n <span className={`${classes.mirrorEventsStatus} ${classes[`mirror_${mirror.status}`] || ''}`}>{mirror.status}</span>\r\n </div>\r\n {mirror.events && mirror.events.length > 0 ? (\r\n <ul className={classes.eventList}>\r\n {mirror.events.map((event: any, index: number) => {\r\n const isError = event.error;\r\n const isCompleted = event.action === 'REPLICATION_COMPLETE';\r\n const isFailed = event.action === 'REPLICATION_FAILED';\r\n return (\r\n <li\r\n key={index}\r\n className={`${classes.eventItem} ${isError ? classes.error : ''} ${isCompleted ? classes.completed : ''} ${isFailed ? classes.failed : ''}`}\r\n >\r\n <span className={classes.icon}>\r\n <Icon type={isError ? 'error-circle-filled' : 'check-circle-filled'} size={16} />\r\n </span>\r\n <span className={classes.time}>{new Date(event.timestamp).toLocaleTimeString()}</span>\r\n <span className={classes.phase}>{event.phase}</span>\r\n <span className={classes.action}>\r\n {getBackupEventActionMessage(event.action, mirror.storageName)}\r\n {event.error && (\r\n <span className={classes.viewError} onClick={() => setShowError(`mirror-${storageId}-${index}`)}>\r\n View Error\r\n </span>\r\n )}\r\n </span>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n ) : (\r\n <div className={classes.noEvents}>No events recorded</div>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n {showError && (\r\n <Modal title=\"Error Details\" closeModal={() => setShowError(false)} width=\"400px\">\r\n <div className={classes.errorDetails}>\r\n {(() => {\r\n if (typeof showError === 'string') {\r\n if (showError.startsWith('main-')) {\r\n const idx = parseInt(showError.replace('main-', ''));\r\n return progressDataToUse?.events[idx]?.error || 'Unknown error occurred.';\r\n }\r\n if (showError.startsWith('mirror-')) {\r\n const parts = showError.replace('mirror-', '').split('-');\r\n const eventIdx = parseInt(parts.pop()!);\r\n const sId = parts.join('-');\r\n return (progressDataToUse?.mirrors as any)?.[sId]?.events?.[eventIdx]?.error || 'Unknown error occurred.';\r\n }\r\n }\r\n return 'Unknown error occurred.';\r\n })()}\r\n </div>\r\n </Modal>\r\n )}\r\n </SidePanel>\r\n );\r\n};\r\n\r\nexport default BackupEvents;\r\n"],"names":["BackupEvents","id","type","sourceId","sourceType","planId","inProgress","progressData","close","showError","setShowError","useState","fetchedProgressData","isLoading","useGetBackupProgressOnce","useGetRestoreProgressOnce","progressDataToUse","hasFinished","useMemo","finishedEvent","event","jsxs","SidePanel","jsx","Icon","Fragment","classes","formatDuration","index","completed","failed","retrying","isError","isWarning","getBackupEventActionMessage","getRestoreEventActionMessage","storageId","mirror","isCompleted","isFailed","Modal","idx","_a","parts","eventIdx","sId","_e","_d","_c","_b"],"mappings":"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"}
@@ -1,48 +1,80 @@
1
- const e = "_backupEventsContainer_NVn4k", t = "_header_Al7vL", n = "_duration_OkG1V", s = "_status_IVO4B", o = "_inProgress_y415Z", r = "_hasCompleted_x23xI", i = "_hasFailed_i7c0c", a = "_loading_2QxxN", _ = "_eventList_FxKG8", c = "_eventItem_Eyc5J", d = "_time_4OY76", l = "_phase_Loz4b", g = "_action_URfBA", p = "_viewError_e9fT7", v = "_icon_ev0qY", h = "_error_Xpo7b", m = "_completed_Yhxgb", u = "_failed_C6FQC", E = "_retrying_Hibqy", C = "_isError_flYlg", b = "_isWarning_grVw4", f = {
2
- backupEventsContainer: e,
3
- header: t,
1
+ const r = "_backupEventsContainer_n4dRx", o = "_header_gwZmX", n = "_duration_g6SJ5", e = "_status_KCVYI", t = "_inProgress_xqRZ6", i = "_hasCompleted_l14Zh", s = "_hasFailed_8Em4T", _ = "_loading_G2evI", m = "_eventList_i0U7P", a = "_eventItem_QNqCj", c = "_time_B3ExX", d = "_phase_39yB7", l = "_action_2yQJt", v = "_viewError_yTsK2", E = "_icon_BkVDZ", p = "_error_DGh2a", g = "_completed_XASOL", u = "_failed_zC3W6", h = "_retrying_ICrjq", C = "_isError_tkQGd", I = "_isWarning_yUW3h", P = "_mirrorsEventsSection_wafxu", f = "_mirrorEventsGroup_IQEqQ", y = "_mirrorEventsHeader_ltIUG", Q = "_mirrorProviderIcon_Uk5Aj", S = "_mirrorEventsName_lHe4o", x = "_mirrorEventsStatus_Lj60w", G = "_mirror_pending_5MiPJ", W = "_mirror_pending_5MiPJ", k = "_mirror_running_QXWpO", w = "_mirror_running_QXWpO", F = "_mirror_completed_n0Hum", H = "_mirror_completed_n0Hum", N = "_mirror_failed_6xzTN", D = "_mirror_failed_6xzTN", L = "_noEvents_UyosQ", U = "_errorDetails_4Yb0F", X = {
2
+ backupEventsContainer: r,
3
+ header: o,
4
4
  duration: n,
5
- status: s,
6
- inProgress: o,
7
- hasCompleted: r,
8
- hasFailed: i,
9
- loading: a,
10
- eventList: _,
11
- eventItem: c,
12
- time: d,
13
- phase: l,
14
- action: g,
15
- viewError: p,
16
- icon: v,
17
- error: h,
18
- completed: m,
5
+ status: e,
6
+ inProgress: t,
7
+ hasCompleted: i,
8
+ hasFailed: s,
9
+ loading: _,
10
+ eventList: m,
11
+ eventItem: a,
12
+ time: c,
13
+ phase: d,
14
+ action: l,
15
+ viewError: v,
16
+ icon: E,
17
+ error: p,
18
+ completed: g,
19
19
  failed: u,
20
- retrying: E,
20
+ retrying: h,
21
21
  isError: C,
22
- isWarning: b
22
+ isWarning: I,
23
+ mirrorsEventsSection: P,
24
+ mirrorEventsGroup: f,
25
+ mirrorEventsHeader: y,
26
+ mirrorProviderIcon: Q,
27
+ mirrorEventsName: S,
28
+ mirrorEventsStatus: x,
29
+ mirror_pending: G,
30
+ mirrorPending: W,
31
+ mirror_running: k,
32
+ mirrorRunning: w,
33
+ mirror_completed: F,
34
+ mirrorCompleted: H,
35
+ mirror_failed: N,
36
+ mirrorFailed: D,
37
+ noEvents: L,
38
+ errorDetails: U
23
39
  };
24
40
  export {
25
- g as action,
26
- e as backupEventsContainer,
27
- m as completed,
28
- f as default,
41
+ l as action,
42
+ r as backupEventsContainer,
43
+ g as completed,
44
+ X as default,
29
45
  n as duration,
30
- h as error,
31
- c as eventItem,
32
- _ as eventList,
46
+ p as error,
47
+ U as errorDetails,
48
+ a as eventItem,
49
+ m as eventList,
33
50
  u as failed,
34
- r as hasCompleted,
35
- i as hasFailed,
36
- t as header,
37
- v as icon,
38
- o as inProgress,
51
+ i as hasCompleted,
52
+ s as hasFailed,
53
+ o as header,
54
+ E as icon,
55
+ t as inProgress,
39
56
  C as isError,
40
- b as isWarning,
41
- a as loading,
42
- l as phase,
43
- E as retrying,
44
- s as status,
45
- d as time,
46
- p as viewError
57
+ I as isWarning,
58
+ _ as loading,
59
+ H as mirrorCompleted,
60
+ f as mirrorEventsGroup,
61
+ y as mirrorEventsHeader,
62
+ S as mirrorEventsName,
63
+ x as mirrorEventsStatus,
64
+ D as mirrorFailed,
65
+ W as mirrorPending,
66
+ Q as mirrorProviderIcon,
67
+ w as mirrorRunning,
68
+ F as mirror_completed,
69
+ N as mirror_failed,
70
+ G as mirror_pending,
71
+ k as mirror_running,
72
+ P as mirrorsEventsSection,
73
+ L as noEvents,
74
+ d as phase,
75
+ h as retrying,
76
+ e as status,
77
+ c as time,
78
+ v as viewError
47
79
  };
48
80
  //# sourceMappingURL=BackupEvents.module.scss.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BackupEvents.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"BackupEvents.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"BackupProgress.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/BackupProgress/BackupProgress.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAKvD,UAAU,mBAAmB;IAC1B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC7B;AAED,QAAA,MAAM,cAAc,GAAI,8CAAyD,mBAAmB,4CA4LnG,CAAC;AACF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"BackupProgress.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/BackupProgress/BackupProgress.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAMvD,UAAU,mBAAmB;IAC1B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC7B;AAED,QAAA,MAAM,cAAc,GAAI,8CAAyD,mBAAmB,4CAoQnG,CAAC;AACF,eAAe,cAAc,CAAC"}