@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
@@ -0,0 +1,34 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import { useState as m } from "react";
3
+ import n from "../../common/ActionModal/ActionModal.js";
4
+ import c from "./MirrorStorageSelector.js";
5
+ const g = ({ mirrors: r, primaryStorage: i, onSelect: a, onClose: l, actionLabel: o = "Download" }) => {
6
+ const [s, d] = m(void 0);
7
+ return /* @__PURE__ */ t(
8
+ n,
9
+ {
10
+ title: `Choose a Mirror to ${o} From`,
11
+ message: /* @__PURE__ */ t(
12
+ c,
13
+ {
14
+ mirrors: r,
15
+ primaryStorage: i,
16
+ onChange: (e) => e && d(e)
17
+ }
18
+ ),
19
+ closeModal: l,
20
+ width: "450px",
21
+ primaryAction: {
22
+ title: o,
23
+ type: "default",
24
+ isPending: !1,
25
+ icon: "download",
26
+ action: () => a(s)
27
+ }
28
+ }
29
+ );
30
+ };
31
+ export {
32
+ g as default
33
+ };
34
+ //# sourceMappingURL=MirrorStorageSelectorModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MirrorStorageSelectorModal.js","sources":["../../../../src/components/Plan/Mirrors/MirrorStorageSelectorModal.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport { BackupMirror } from '../../../@types/backups';\r\nimport ActionModal from '../../common/ActionModal/ActionModal';\r\nimport MirrorStorageSelector from './MirrorStorageSelector';\r\n\r\ninterface MirrorStorageSelectorProps {\r\n mirrors: BackupMirror[];\r\n primaryStorage: { id: string; type: string; name: string };\r\n onSelect: (replicationId?: string) => void;\r\n onClose: () => void;\r\n actionLabel?: string;\r\n}\r\n\r\nconst MirrorStorageSelectorModal = ({ mirrors, primaryStorage, onSelect, onClose, actionLabel = 'Download' }: MirrorStorageSelectorProps) => {\r\n const [selected, setSelected] = useState<string | undefined>(undefined);\r\n\r\n return (\r\n <ActionModal\r\n title={`Choose a Mirror to ${actionLabel} From`}\r\n message={\r\n <MirrorStorageSelector\r\n mirrors={mirrors}\r\n primaryStorage={primaryStorage}\r\n onChange={(replicationId) => replicationId && setSelected(replicationId)}\r\n />\r\n }\r\n closeModal={onClose}\r\n width=\"450px\"\r\n primaryAction={{\r\n title: actionLabel,\r\n type: 'default',\r\n isPending: false,\r\n icon: 'download',\r\n action: () => onSelect(selected),\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default MirrorStorageSelectorModal;\r\n"],"names":["MirrorStorageSelectorModal","mirrors","primaryStorage","onSelect","onClose","actionLabel","selected","setSelected","useState","jsx","ActionModal","MirrorStorageSelector","replicationId"],"mappings":";;;;AAaA,MAAMA,IAA6B,CAAC,EAAE,SAAAC,GAAS,gBAAAC,GAAgB,UAAAC,GAAU,SAAAC,GAAS,aAAAC,IAAc,iBAA6C;AAC1I,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAA6B,MAAS;AAEtE,SACG,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,OAAO,sBAAsBL,CAAW;AAAA,MACxC,SACG,gBAAAI;AAAA,QAACE;AAAA,QAAA;AAAA,UACE,SAAAV;AAAA,UACA,gBAAAC;AAAA,UACA,UAAU,CAACU,MAAkBA,KAAiBL,EAAYK,CAAa;AAAA,QAAA;AAAA,MAAA;AAAA,MAG7E,YAAYR;AAAA,MACZ,OAAM;AAAA,MACN,eAAe;AAAA,QACZ,OAAOC;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,QACX,MAAM;AAAA,QACN,QAAQ,MAAMF,EAASG,CAAQ;AAAA,MAAA;AAAA,IAClC;AAAA,EAAA;AAGT;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlanBackups.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/PlanBackups/PlanBackups.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAK7C,UAAU,gBAAgB;IACvB,IAAI,EAAE,IAAI,CAAC;CACb;AAED,QAAA,MAAM,WAAW,GAAI,UAAU,gBAAgB,4CAwC9C,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"PlanBackups.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/PlanBackups/PlanBackups.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAK7C,UAAU,gBAAgB;IACvB,IAAI,EAAE,IAAI,CAAC;CACb;AAED,QAAA,MAAM,WAAW,GAAI,UAAU,gBAAgB,4CA2C9C,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -1,20 +1,20 @@
1
1
  import { jsxs as s, jsx as r } from "react/jsx-runtime";
2
- import { useState as v } from "react";
2
+ import { useState as g } from "react";
3
3
  import e from "./PlanBackups.module.scss.js";
4
4
  import { formatBytes as N } from "../../../utils/helpers.js";
5
- import g from "../Restores/Restores.js";
6
- import B from "../Backups/Backups.js";
7
- import { useComponentOverride as C } from "../../../context/ComponentOverrideContext.js";
8
- const D = ({ plan: a }) => {
9
- var d;
10
- const h = C("Backups", B), [t, c] = v("backups"), { backups: k = [], stats: i, restores: n = [], method: o, sourceId: p, sourceType: m, settings: b } = a, l = [...k || []].sort((f, T) => new Date(T.started).getTime() - new Date(f.started).getTime()), u = o === "sync", y = ((d = i.snapshots) == null ? void 0 : d.length) || 0;
5
+ import B from "../Restores/Restores.js";
6
+ import C from "../Backups/Backups.js";
7
+ import { useComponentOverride as I } from "../../../context/ComponentOverrideContext.js";
8
+ const R = ({ plan: o }) => {
9
+ var h;
10
+ const k = I("Backups", C), [t, c] = g("backups"), { backups: b = [], stats: i, restores: n = [], method: a, sourceId: p, sourceType: d, settings: l, storage: y } = o, m = [...b || []].sort((v, T) => new Date(T.started).getTime() - new Date(v.started).getTime()), u = a === "sync", f = ((h = i.snapshots) == null ? void 0 : h.length) || 0;
11
11
  return /* @__PURE__ */ s("div", { className: e.backups, children: [
12
12
  /* @__PURE__ */ s("div", { className: e.backupsHeader, children: [
13
13
  /* @__PURE__ */ s("div", { className: e.historyTabs, children: [
14
14
  /* @__PURE__ */ s("button", { onClick: () => c("backups"), className: t === "backups" ? e.historyTabActive : "", children: [
15
15
  u ? "Sync Tasks" : "Backups",
16
16
  " ",
17
- /* @__PURE__ */ r("i", { children: l.length })
17
+ /* @__PURE__ */ r("i", { children: m.length })
18
18
  ] }),
19
19
  /* @__PURE__ */ s("button", { onClick: () => c("restores"), className: t === "restores" ? e.historyTabActive : "", children: [
20
20
  "Restores ",
@@ -22,7 +22,7 @@ const D = ({ plan: a }) => {
22
22
  ] })
23
23
  ] }),
24
24
  !u && t === "backups" && /* @__PURE__ */ s("div", { className: e.backupsInfo, children: [
25
- y,
25
+ f,
26
26
  " Active Snapshots ",
27
27
  /* @__PURE__ */ r("i", { className: "pipe", children: "|" }),
28
28
  " ",
@@ -30,20 +30,23 @@ const D = ({ plan: a }) => {
30
30
  ] })
31
31
  ] }),
32
32
  t === "backups" && /* @__PURE__ */ r(
33
- h,
33
+ k,
34
34
  {
35
- backups: l,
36
- planId: a.id,
37
- method: o,
35
+ backups: m,
36
+ planId: o.id,
37
+ method: a,
38
38
  sourceId: p,
39
- sourceType: m,
40
- snapLimit: b.prune.snapCount
39
+ sourceType: d,
40
+ deviceId: o.device.id,
41
+ storage: y,
42
+ snapLimit: l.prune.snapCount,
43
+ replicationSettings: l.replication
41
44
  }
42
45
  ),
43
- t === "restores" && /* @__PURE__ */ r(g, { restores: n, planId: a.id, method: o, sourceId: p, sourceType: m })
46
+ t === "restores" && /* @__PURE__ */ r(B, { restores: n, planId: o.id, method: a, sourceId: p, sourceType: d })
44
47
  ] });
45
48
  };
46
49
  export {
47
- D as default
50
+ R as default
48
51
  };
49
52
  //# sourceMappingURL=PlanBackups.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanBackups.js","sources":["../../../../src/components/Plan/PlanBackups/PlanBackups.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport classes from './PlanBackups.module.scss';\r\nimport { formatBytes } from '../../../utils/helpers';\r\nimport { Plan } from '../../../@types/plans';\r\nimport Restores from '../Restores/Restores';\r\nimport Backups from '../Backups/Backups';\r\nimport { useComponentOverride } from '../../../context/ComponentOverrideContext';\r\n\r\ninterface PlanBackupsProps {\r\n plan: Plan;\r\n}\r\n\r\nconst PlanBackups = ({ plan }: PlanBackupsProps) => {\r\n const AllBackups = useComponentOverride('Backups', Backups);\r\n const [historyTab, setHistoryTab] = useState<'backups' | 'restores'>('backups');\r\n\r\n const { backups = [], stats, restores = [], method, sourceId, sourceType, settings } = plan;\r\n\r\n const sortedHistory = [...(backups || [])].sort((a, b) => new Date(b.started).getTime() - new Date(a.started).getTime());\r\n const isSync = method === 'sync';\r\n const snapshotsCount = stats.snapshots?.length || 0;\r\n\r\n return (\r\n <div className={classes.backups}>\r\n <div className={classes.backupsHeader}>\r\n <div className={classes.historyTabs}>\r\n <button onClick={() => setHistoryTab('backups')} className={historyTab === 'backups' ? classes.historyTabActive : ''}>\r\n {isSync ? 'Sync Tasks' : 'Backups'} <i>{sortedHistory.length}</i>\r\n </button>\r\n <button onClick={() => setHistoryTab('restores')} className={historyTab === 'restores' ? classes.historyTabActive : ''}>\r\n Restores <i>{restores.length}</i>\r\n </button>\r\n </div>\r\n {!isSync && historyTab === 'backups' && (\r\n <div className={classes.backupsInfo}>\r\n {snapshotsCount} Active Snapshots <i className=\"pipe\">|</i> {formatBytes(stats.size)}\r\n </div>\r\n )}\r\n </div>\r\n {historyTab === 'backups' && (\r\n <AllBackups\r\n backups={sortedHistory}\r\n planId={plan.id}\r\n method={method}\r\n sourceId={sourceId}\r\n sourceType={sourceType}\r\n snapLimit={settings.prune.snapCount}\r\n />\r\n )}\r\n {historyTab === 'restores' && <Restores restores={restores} planId={plan.id} method={method} sourceId={sourceId} sourceType={sourceType} />}\r\n </div>\r\n );\r\n};\r\n\r\nexport default PlanBackups;\r\n"],"names":["PlanBackups","plan","AllBackups","useComponentOverride","Backups","historyTab","setHistoryTab","useState","backups","stats","restores","method","sourceId","sourceType","settings","sortedHistory","a","b","isSync","snapshotsCount","_a","jsxs","classes","jsx","formatBytes","Restores"],"mappings":";;;;;;;AAYA,MAAMA,IAAc,CAAC,EAAE,MAAAC,QAA6B;;AACjD,QAAMC,IAAaC,EAAqB,WAAWC,CAAO,GACpD,CAACC,GAAYC,CAAa,IAAIC,EAAiC,SAAS,GAExE,EAAE,SAAAC,IAAU,IAAI,OAAAC,GAAO,UAAAC,IAAW,IAAI,QAAAC,GAAQ,UAAAC,GAAU,YAAAC,GAAY,UAAAC,EAAA,IAAab,GAEjFc,IAAgB,CAAC,GAAIP,KAAW,CAAA,CAAG,EAAE,KAAK,CAACQ,GAAGC,MAAM,IAAI,KAAKA,EAAE,OAAO,EAAE,YAAY,IAAI,KAAKD,EAAE,OAAO,EAAE,SAAS,GACjHE,IAASP,MAAW,QACpBQ,MAAiBC,IAAAX,EAAM,cAAN,gBAAAW,EAAiB,WAAU;AAElD,SACG,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAQ,SACrB,UAAA;AAAA,IAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWC,EAAQ,eACrB,UAAA;AAAA,MAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWC,EAAQ,aACrB,UAAA;AAAA,QAAA,gBAAAD,EAAC,UAAA,EAAO,SAAS,MAAMf,EAAc,SAAS,GAAG,WAAWD,MAAe,YAAYiB,EAAQ,mBAAmB,IAC9G,UAAA;AAAA,UAAAJ,IAAS,eAAe;AAAA,UAAU;AAAA,UAAC,gBAAAK,EAAC,KAAA,EAAG,UAAAR,EAAc,OAAA,CAAO;AAAA,QAAA,GAChE;AAAA,QACA,gBAAAM,EAAC,UAAA,EAAO,SAAS,MAAMf,EAAc,UAAU,GAAG,WAAWD,MAAe,aAAaiB,EAAQ,mBAAmB,IAAI,UAAA;AAAA,UAAA;AAAA,UAC5G,gBAAAC,EAAC,KAAA,EAAG,UAAAb,EAAS,OAAA,CAAO;AAAA,QAAA,EAAA,CAChC;AAAA,MAAA,GACH;AAAA,MACC,CAACQ,KAAUb,MAAe,+BACvB,OAAA,EAAI,WAAWiB,EAAQ,aACpB,UAAA;AAAA,QAAAH;AAAA,QAAe;AAAA,QAAkB,gBAAAI,EAAC,KAAA,EAAE,WAAU,QAAO,UAAA,KAAC;AAAA,QAAI;AAAA,QAAEC,EAAYf,EAAM,IAAI;AAAA,MAAA,EAAA,CACtF;AAAA,IAAA,GAEN;AAAA,IACCJ,MAAe,aACb,gBAAAkB;AAAA,MAACrB;AAAA,MAAA;AAAA,QACE,SAASa;AAAA,QACT,QAAQd,EAAK;AAAA,QACb,QAAAU;AAAA,QACA,UAAAC;AAAA,QACA,YAAAC;AAAA,QACA,WAAWC,EAAS,MAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAG/BT,MAAe,cAAc,gBAAAkB,EAACE,GAAA,EAAS,UAAAf,GAAoB,QAAQT,EAAK,IAAI,QAAAU,GAAgB,UAAAC,GAAoB,YAAAC,EAAA,CAAwB;AAAA,EAAA,GAC5I;AAEN;"}
1
+ {"version":3,"file":"PlanBackups.js","sources":["../../../../src/components/Plan/PlanBackups/PlanBackups.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport classes from './PlanBackups.module.scss';\r\nimport { formatBytes } from '../../../utils/helpers';\r\nimport { Plan } from '../../../@types/plans';\r\nimport Restores from '../Restores/Restores';\r\nimport Backups from '../Backups/Backups';\r\nimport { useComponentOverride } from '../../../context/ComponentOverrideContext';\r\n\r\ninterface PlanBackupsProps {\r\n plan: Plan;\r\n}\r\n\r\nconst PlanBackups = ({ plan }: PlanBackupsProps) => {\r\n const AllBackups = useComponentOverride('Backups', Backups);\r\n const [historyTab, setHistoryTab] = useState<'backups' | 'restores'>('backups');\r\n\r\n const { backups = [], stats, restores = [], method, sourceId, sourceType, settings, storage } = plan;\r\n\r\n const sortedHistory = [...(backups || [])].sort((a, b) => new Date(b.started).getTime() - new Date(a.started).getTime());\r\n const isSync = method === 'sync';\r\n const snapshotsCount = stats.snapshots?.length || 0;\r\n\r\n return (\r\n <div className={classes.backups}>\r\n <div className={classes.backupsHeader}>\r\n <div className={classes.historyTabs}>\r\n <button onClick={() => setHistoryTab('backups')} className={historyTab === 'backups' ? classes.historyTabActive : ''}>\r\n {isSync ? 'Sync Tasks' : 'Backups'} <i>{sortedHistory.length}</i>\r\n </button>\r\n <button onClick={() => setHistoryTab('restores')} className={historyTab === 'restores' ? classes.historyTabActive : ''}>\r\n Restores <i>{restores.length}</i>\r\n </button>\r\n </div>\r\n {!isSync && historyTab === 'backups' && (\r\n <div className={classes.backupsInfo}>\r\n {snapshotsCount} Active Snapshots <i className=\"pipe\">|</i> {formatBytes(stats.size)}\r\n </div>\r\n )}\r\n </div>\r\n {historyTab === 'backups' && (\r\n <AllBackups\r\n backups={sortedHistory}\r\n planId={plan.id}\r\n method={method}\r\n sourceId={sourceId}\r\n sourceType={sourceType}\r\n deviceId={plan.device.id}\r\n storage={storage}\r\n snapLimit={settings.prune.snapCount}\r\n replicationSettings={settings.replication}\r\n />\r\n )}\r\n {historyTab === 'restores' && <Restores restores={restores} planId={plan.id} method={method} sourceId={sourceId} sourceType={sourceType} />}\r\n </div>\r\n );\r\n};\r\n\r\nexport default PlanBackups;\r\n"],"names":["PlanBackups","plan","AllBackups","useComponentOverride","Backups","historyTab","setHistoryTab","useState","backups","stats","restores","method","sourceId","sourceType","settings","storage","sortedHistory","a","b","isSync","snapshotsCount","_a","jsxs","classes","jsx","formatBytes","Restores"],"mappings":";;;;;;;AAYA,MAAMA,IAAc,CAAC,EAAE,MAAAC,QAA6B;;AACjD,QAAMC,IAAaC,EAAqB,WAAWC,CAAO,GACpD,CAACC,GAAYC,CAAa,IAAIC,EAAiC,SAAS,GAExE,EAAE,SAAAC,IAAU,IAAI,OAAAC,GAAO,UAAAC,IAAW,CAAA,GAAI,QAAAC,GAAQ,UAAAC,GAAU,YAAAC,GAAY,UAAAC,GAAU,SAAAC,MAAYd,GAE1Fe,IAAgB,CAAC,GAAIR,KAAW,CAAA,CAAG,EAAE,KAAK,CAACS,GAAGC,MAAM,IAAI,KAAKA,EAAE,OAAO,EAAE,YAAY,IAAI,KAAKD,EAAE,OAAO,EAAE,SAAS,GACjHE,IAASR,MAAW,QACpBS,MAAiBC,IAAAZ,EAAM,cAAN,gBAAAY,EAAiB,WAAU;AAElD,SACG,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAQ,SACrB,UAAA;AAAA,IAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWC,EAAQ,eACrB,UAAA;AAAA,MAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWC,EAAQ,aACrB,UAAA;AAAA,QAAA,gBAAAD,EAAC,UAAA,EAAO,SAAS,MAAMhB,EAAc,SAAS,GAAG,WAAWD,MAAe,YAAYkB,EAAQ,mBAAmB,IAC9G,UAAA;AAAA,UAAAJ,IAAS,eAAe;AAAA,UAAU;AAAA,UAAC,gBAAAK,EAAC,KAAA,EAAG,UAAAR,EAAc,OAAA,CAAO;AAAA,QAAA,GAChE;AAAA,QACA,gBAAAM,EAAC,UAAA,EAAO,SAAS,MAAMhB,EAAc,UAAU,GAAG,WAAWD,MAAe,aAAakB,EAAQ,mBAAmB,IAAI,UAAA;AAAA,UAAA;AAAA,UAC5G,gBAAAC,EAAC,KAAA,EAAG,UAAAd,EAAS,OAAA,CAAO;AAAA,QAAA,EAAA,CAChC;AAAA,MAAA,GACH;AAAA,MACC,CAACS,KAAUd,MAAe,+BACvB,OAAA,EAAI,WAAWkB,EAAQ,aACpB,UAAA;AAAA,QAAAH;AAAA,QAAe;AAAA,QAAkB,gBAAAI,EAAC,KAAA,EAAE,WAAU,QAAO,UAAA,KAAC;AAAA,QAAI;AAAA,QAAEC,EAAYhB,EAAM,IAAI;AAAA,MAAA,EAAA,CACtF;AAAA,IAAA,GAEN;AAAA,IACCJ,MAAe,aACb,gBAAAmB;AAAA,MAACtB;AAAA,MAAA;AAAA,QACE,SAASc;AAAA,QACT,QAAQf,EAAK;AAAA,QACb,QAAAU;AAAA,QACA,UAAAC;AAAA,QACA,YAAAC;AAAA,QACA,UAAUZ,EAAK,OAAO;AAAA,QACtB,SAAAc;AAAA,QACA,WAAWD,EAAS,MAAM;AAAA,QAC1B,qBAAqBA,EAAS;AAAA,MAAA;AAAA,IAAA;AAAA,IAGnCT,MAAe,cAAc,gBAAAmB,EAACE,GAAA,EAAS,UAAAhB,GAAoB,QAAQT,EAAK,IAAI,QAAAU,GAAgB,UAAAC,GAAoB,YAAAC,EAAA,CAAwB;AAAA,EAAA,GAC5I;AAEN;"}
@@ -9,7 +9,8 @@ type PlanFormProps = {
9
9
  close: () => void;
10
10
  storagePath?: string;
11
11
  storageId?: string;
12
+ planId?: string;
12
13
  };
13
- declare const PlanForm: ({ title, planSettings, type, onPlanSettingsChange, onSubmit, isSubmitting, close, storagePath, storageId }: PlanFormProps) => import("react/jsx-runtime").JSX.Element;
14
+ declare const PlanForm: ({ title, planSettings, type, onPlanSettingsChange, onSubmit, isSubmitting, close, storagePath, storageId, planId, }: PlanFormProps) => import("react/jsx-runtime").JSX.Element;
14
15
  export default PlanForm;
15
16
  //# sourceMappingURL=PlanForm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanForm.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/PlanForm/PlanForm.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAYxD,KAAK,aAAa,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,eAAe,CAAC;IAC9B,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,oBAAoB,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1D,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,QAAA,MAAM,QAAQ,GAAI,4GAA4G,aAAa,4CAkP1I,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"PlanForm.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/PlanForm/PlanForm.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAaxD,KAAK,aAAa,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,eAAe,CAAC;IAC9B,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,oBAAoB,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1D,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,QAAA,MAAM,QAAQ,GAAI,qHAWf,aAAa,4CAgQf,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -1,71 +1,83 @@
1
- import { jsxs as t, jsx as i } from "react/jsx-runtime";
2
- import { useState as R } from "react";
3
- import m from "../../common/Icon/Icon.js";
4
- import U from "../../common/SidePanel/SidePanel.js";
5
- import w from "../../common/form/StoragePicker/StoragePicker.js";
6
- import F from "../PlanSettings/PlanStrategySettings.js";
7
- import z from "../PlanSettings/PlanSourceSettings.js";
8
- import L from "../../common/form/NumberInput/NumberInput.js";
1
+ import { jsxs as o, jsx as i } from "react/jsx-runtime";
2
+ import { useState as w } from "react";
3
+ import n from "../../common/Icon/Icon.js";
4
+ import F from "../../common/SidePanel/SidePanel.js";
5
+ import z from "../../common/form/StoragePicker/StoragePicker.js";
6
+ import L from "../PlanSettings/PlanStrategySettings.js";
7
+ import V from "../PlanSettings/PlanSourceSettings.js";
8
+ import D from "../../common/form/NumberInput/NumberInput.js";
9
9
  import r from "../AddPlan/AddPlan.module.scss.js";
10
10
  import c from "./PlanForm.module.scss.js";
11
- import { useGetSettings as V } from "../../../services/settings.js";
11
+ import { useGetSettings as E } from "../../../services/settings.js";
12
12
  import q from "../PlanSettings/PlanAdvancedSettings.js";
13
13
  import { isPlanSettingsValid as d } from "../../../utils/plans.js";
14
14
  import A from "../../common/form/IntervalField/IntervalField.js";
15
- import D from "./PlanFormNav.js";
16
- import { useGetDevice as E } from "../../../services/devices.js";
17
- import T from "../PlanSettings/PlanPruneSettings.js";
18
- const ae = ({ title: k, planSettings: e, type: o, onPlanSettingsChange: s, onSubmit: f, isSubmitting: h, close: x, storagePath: B, storageId: I }) => {
19
- var N, b;
20
- const [l, n] = R(1), { data: u } = V(), P = ((N = u == null ? void 0 : u.result) == null ? void 0 : N.settings) || {}, { data: p } = E("main", !0), y = (b = p == null ? void 0 : p.result) == null ? void 0 : b.device, v = {
15
+ import T from "./PlanFormNav.js";
16
+ import { useGetDevice as j } from "../../../services/devices.js";
17
+ import G from "../PlanSettings/PlanPruneSettings.js";
18
+ import K from "../PlanSettings/PlanReplicationSettings.js";
19
+ const le = ({
20
+ title: I,
21
+ planSettings: e,
22
+ type: l,
23
+ onPlanSettingsChange: s,
24
+ onSubmit: f,
25
+ isSubmitting: h,
26
+ close: P,
27
+ storagePath: x,
28
+ storageId: B,
29
+ planId: y
30
+ }) => {
31
+ var N, b, k;
32
+ const [t, m] = w(1), { data: u } = E(), C = ((N = u == null ? void 0 : u.result) == null ? void 0 : N.settings) || {}, { data: p } = j("main", !0), R = (b = p == null ? void 0 : p.result) == null ? void 0 : b.device, v = {
21
33
  1: {
22
34
  title: "Next: Configure Source & Destination",
23
- onClick: () => d(e, l) && n(l + 1)
35
+ onClick: () => d(e, t) && m(t + 1)
24
36
  },
25
37
  2: {
26
38
  title: "Next: Setup Schedule & Retention",
27
- onClick: () => d(e, l) && n(l + 1)
39
+ onClick: () => d(e, t) && m(t + 1)
28
40
  },
29
- 3: { title: "Next: Advanced Settings", onClick: () => d(e, l) && n(l + 1) },
41
+ 3: { title: "Next: Advanced Settings", onClick: () => d(e, t) && m(t + 1) },
30
42
  4: {
31
43
  title: "Create Plan",
32
44
  onClick: () => d(e, !1) && f()
33
45
  }
34
- }, C = (a) => {
35
- if (o !== "edit")
46
+ }, U = (a) => {
47
+ if (l !== "edit")
36
48
  return;
37
- d(e, l) && n(a);
49
+ d(e, t) && m(a);
38
50
  };
39
- return /* @__PURE__ */ t(
40
- U,
51
+ return /* @__PURE__ */ o(
52
+ F,
41
53
  {
42
- title: k,
43
- icon: /* @__PURE__ */ i(m, { type: "backup", size: 20 }),
44
- width: o === "add" ? "100%" : void 0,
45
- headerWidth: o === "add" ? "740px" : void 0,
46
- close: x,
54
+ title: I,
55
+ icon: /* @__PURE__ */ i(n, { type: "backup", size: 20 }),
56
+ width: l === "add" ? "100%" : void 0,
57
+ headerWidth: l === "add" ? "740px" : void 0,
58
+ close: P,
47
59
  withTabs: !0,
48
- footer: /* @__PURE__ */ i("div", { className: c.planFormFooter, children: /* @__PURE__ */ t("div", { className: c.footerContainer, children: [
49
- /* @__PURE__ */ i("div", { className: r.footerLeft, children: /* @__PURE__ */ i("div", { className: r.summary, children: o === "add" && l > 1 && /* @__PURE__ */ t("button", { className: c.backButton, onClick: () => l > 0 && n(l - 1), disabled: h, children: [
50
- /* @__PURE__ */ i(m, { type: "arrow-left", size: 14 }),
60
+ footer: /* @__PURE__ */ i("div", { className: c.planFormFooter, children: /* @__PURE__ */ o("div", { className: c.footerContainer, children: [
61
+ /* @__PURE__ */ i("div", { className: r.footerLeft, children: /* @__PURE__ */ i("div", { className: r.summary, children: l === "add" && t > 1 && /* @__PURE__ */ o("button", { className: c.backButton, onClick: () => t > 0 && m(t - 1), disabled: h, children: [
62
+ /* @__PURE__ */ i(n, { type: "arrow-left", size: 14 }),
51
63
  " Back"
52
64
  ] }) }) }),
53
- /* @__PURE__ */ i("div", { className: r.footerRight, children: o === "add" ? /* @__PURE__ */ t("button", { className: r.createButton, onClick: v[l].onClick, children: [
54
- /* @__PURE__ */ i(m, { type: "check", size: 12 }),
65
+ /* @__PURE__ */ i("div", { className: r.footerRight, children: l === "add" ? /* @__PURE__ */ o("button", { className: r.createButton, onClick: v[t].onClick, children: [
66
+ /* @__PURE__ */ i(n, { type: "check", size: 12 }),
55
67
  " ",
56
- v[l].title
57
- ] }) : /* @__PURE__ */ t("button", { className: r.createButton, onClick: () => d(e, !1) && f(), children: [
58
- /* @__PURE__ */ i(m, { type: "check", size: 12 }),
68
+ v[t].title
69
+ ] }) : /* @__PURE__ */ o("button", { className: r.createButton, onClick: () => d(e, !1) && f(), children: [
70
+ /* @__PURE__ */ i(n, { type: "check", size: 12 }),
59
71
  " ",
60
72
  "Update Plan"
61
73
  ] }) })
62
74
  ] }) }),
63
75
  children: [
64
- /* @__PURE__ */ i(D, { step: l, type: o, gotoStep: C }),
65
- /* @__PURE__ */ t("div", { className: `${c.formContent} styled__scrollbar`, children: [
66
- h && /* @__PURE__ */ i("div", { className: r.loader, children: /* @__PURE__ */ i(m, { size: 36, type: "loading" }) }),
67
- l === 1 && /* @__PURE__ */ t("div", { className: c.planStep, children: [
68
- /* @__PURE__ */ t("div", { className: r.field, children: [
76
+ /* @__PURE__ */ i(T, { step: t, type: l, gotoStep: U }),
77
+ /* @__PURE__ */ o("div", { className: `${c.formContent} styled__scrollbar`, children: [
78
+ h && /* @__PURE__ */ i("div", { className: r.loader, children: /* @__PURE__ */ i(n, { size: 36, type: "loading" }) }),
79
+ t === 1 && /* @__PURE__ */ o("div", { className: c.planStep, children: [
80
+ /* @__PURE__ */ o("div", { className: r.field, children: [
69
81
  /* @__PURE__ */ i("label", { className: r.label, children: "Backup Plan Name*" }),
70
82
  !e.title && /* @__PURE__ */ i("span", { className: r.fieldErrorLabel, children: "Required" }),
71
83
  /* @__PURE__ */ i(
@@ -79,7 +91,7 @@ const ae = ({ title: k, planSettings: e, type: o, onPlanSettingsChange: s, onSub
79
91
  }
80
92
  )
81
93
  ] }),
82
- /* @__PURE__ */ t("div", { className: r.field, children: [
94
+ /* @__PURE__ */ o("div", { className: r.field, children: [
83
95
  /* @__PURE__ */ i("label", { className: r.label, children: "Backup Plan Description" }),
84
96
  /* @__PURE__ */ i(
85
97
  "input",
@@ -93,11 +105,11 @@ const ae = ({ title: k, planSettings: e, type: o, onPlanSettingsChange: s, onSub
93
105
  )
94
106
  ] }),
95
107
  e.sourceType === "device" && /* @__PURE__ */ i(
96
- F,
108
+ L,
97
109
  {
98
110
  plan: e,
99
111
  onUpdate: (a) => s({ ...e, method: a }),
100
- disabled: o === "edit",
112
+ disabled: l === "edit",
101
113
  options: [
102
114
  {
103
115
  value: "backup",
@@ -123,26 +135,26 @@ const ae = ({ title: k, planSettings: e, type: o, onPlanSettingsChange: s, onSub
123
135
  }
124
136
  )
125
137
  ] }),
126
- l === 2 && /* @__PURE__ */ t("div", { className: c.planStep, children: [
138
+ t === 2 && /* @__PURE__ */ o("div", { className: c.planStep, children: [
127
139
  /* @__PURE__ */ i(
128
- z,
140
+ V,
129
141
  {
130
142
  plan: e,
131
143
  onUpdate: (a) => s({ ...a }),
132
- isEditing: o === "edit",
144
+ isEditing: l === "edit",
133
145
  error: e.sourceConfig.includes.length === 0 ? "Required" : ""
134
146
  }
135
147
  ),
136
- /* @__PURE__ */ t("div", { className: r.field, children: [
148
+ /* @__PURE__ */ o("div", { className: r.field, children: [
137
149
  /* @__PURE__ */ i("label", { className: r.label, children: "Backup Destination*" }),
138
150
  !e.storage.name && /* @__PURE__ */ i("span", { className: r.fieldErrorLabel, children: "Required" }),
139
151
  /* @__PURE__ */ i(
140
- w,
152
+ z,
141
153
  {
142
- storagePath: B,
143
- storageId: I,
154
+ storagePath: x || e.storagePath,
155
+ storageId: B || ((k = e.storage) == null ? void 0 : k.id) || "",
144
156
  deviceId: e.sourceId || "main",
145
- disabled: o === "edit",
157
+ disabled: l === "edit",
146
158
  onUpdate: (a) => s({
147
159
  ...e,
148
160
  storagePath: a.path,
@@ -150,9 +162,24 @@ const ae = ({ title: k, planSettings: e, type: o, onPlanSettingsChange: s, onSub
150
162
  })
151
163
  }
152
164
  )
153
- ] })
165
+ ] }),
166
+ /* @__PURE__ */ i(
167
+ K,
168
+ {
169
+ replication: e.settings.replication,
170
+ primaryStorageId: e.storage.id,
171
+ primaryStoragePath: e.storagePath,
172
+ deviceId: e.sourceId || "main",
173
+ isEditing: l === "edit",
174
+ planID: y,
175
+ onUpdate: (a) => s({
176
+ ...e,
177
+ settings: { ...e.settings, replication: a }
178
+ })
179
+ }
180
+ )
154
181
  ] }),
155
- l === 3 && /* @__PURE__ */ t("div", { className: c.planStep, children: [
182
+ t === 3 && /* @__PURE__ */ o("div", { className: c.planStep, children: [
156
183
  /* @__PURE__ */ i("div", { className: r.field, style: { width: "150px" }, children: /* @__PURE__ */ i(
157
184
  A,
158
185
  {
@@ -162,7 +189,7 @@ const ae = ({ title: k, planSettings: e, type: o, onPlanSettingsChange: s, onSub
162
189
  }
163
190
  ) }),
164
191
  /* @__PURE__ */ i("div", { className: r.field, style: { width: "150px" }, children: /* @__PURE__ */ i(
165
- L,
192
+ D,
166
193
  {
167
194
  label: "Backups to Keep",
168
195
  fieldValue: e.settings.prune.snapCount,
@@ -177,7 +204,7 @@ const ae = ({ title: k, planSettings: e, type: o, onPlanSettingsChange: s, onSub
177
204
  }
178
205
  ) }),
179
206
  /* @__PURE__ */ i(
180
- T,
207
+ G,
181
208
  {
182
209
  plan: e,
183
210
  onUpdate: (a) => s({
@@ -187,13 +214,13 @@ const ae = ({ title: k, planSettings: e, type: o, onPlanSettingsChange: s, onSub
187
214
  }
188
215
  )
189
216
  ] }),
190
- l === 4 && /* @__PURE__ */ i("div", { className: c.planStep, children: /* @__PURE__ */ i(q, { plan: e, appSettings: P, onUpdate: s, device: y }) })
217
+ t === 4 && /* @__PURE__ */ i("div", { className: c.planStep, children: /* @__PURE__ */ i(q, { plan: e, appSettings: C, onUpdate: s, device: R }) })
191
218
  ] })
192
219
  ]
193
220
  }
194
221
  );
195
222
  };
196
223
  export {
197
- ae as default
224
+ le as default
198
225
  };
199
226
  //# sourceMappingURL=PlanForm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanForm.js","sources":["../../../../src/components/Plan/PlanForm/PlanForm.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport SidePanel from '../../common/SidePanel/SidePanel';\r\nimport StoragePicker from '../../common/form/StoragePicker/StoragePicker';\r\nimport PlanStrategySettings from '../PlanSettings/PlanStrategySettings';\r\nimport PlanSourceSettings from '../PlanSettings/PlanSourceSettings';\r\nimport { NewPlanSettings } from '../../../@types/plans';\r\nimport NumberInput from '../../common/form/NumberInput/NumberInput';\r\nimport classes from '../AddPlan/AddPlan.module.scss';\r\nimport PFClasses from './PlanForm.module.scss';\r\nimport { useGetSettings } from '../../../services/settings';\r\nimport PlanAdvancedSettings from '../PlanSettings/PlanAdvancedSettings';\r\nimport { isPlanSettingsValid } from '../../../utils/plans';\r\nimport IntervalField from '../../common/form/IntervalField/IntervalField';\r\nimport PlanFormNav from './PlanFormNav';\r\nimport { useGetDevice } from '../../../services/devices';\r\nimport PlanPruneSettings from '../PlanSettings/PlanPruneSettings';\r\n\r\ntype PlanFormProps = {\r\n title: string;\r\n planSettings: NewPlanSettings;\r\n type: 'add' | 'edit';\r\n onPlanSettingsChange: (settings: NewPlanSettings) => void;\r\n onSubmit: () => void;\r\n isSubmitting: boolean;\r\n close: () => void;\r\n storagePath?: string;\r\n storageId?: string;\r\n};\r\n\r\nconst PlanForm = ({ title, planSettings, type, onPlanSettingsChange, onSubmit, isSubmitting, close, storagePath, storageId }: PlanFormProps) => {\r\n const [step, setStep] = useState<number>(1);\r\n\r\n const { data: settingsData } = useGetSettings();\r\n const appSettings = settingsData?.result?.settings || {};\r\n // const smtpConnected = appSettings?.integration?.smtp?.connected ? true : false;\r\n\r\n const { data: deviceData } = useGetDevice('main', true);\r\n const deviceInstance = deviceData?.result?.device;\r\n\r\n const buttonTexts: Record<number, { title: string; onClick: () => void }> = {\r\n 1: {\r\n title: 'Next: Configure Source & Destination',\r\n onClick: () => isPlanSettingsValid(planSettings, step) && setStep(step + 1),\r\n },\r\n 2: {\r\n title: 'Next: Setup Schedule & Retention',\r\n onClick: () => isPlanSettingsValid(planSettings, step) && setStep(step + 1),\r\n },\r\n 3: { title: 'Next: Advanced Settings', onClick: () => isPlanSettingsValid(planSettings, step) && setStep(step + 1) },\r\n 4: {\r\n title: 'Create Plan',\r\n onClick: () => isPlanSettingsValid(planSettings, false) && onSubmit(),\r\n },\r\n };\r\n\r\n const gotoStep = (nStep: number) => {\r\n if (type !== 'edit') {\r\n return;\r\n }\r\n\r\n const isSettingsValid = isPlanSettingsValid(planSettings, step);\r\n if (isSettingsValid) {\r\n setStep(nStep);\r\n }\r\n };\r\n\r\n return (\r\n <SidePanel\r\n title={title}\r\n icon={<Icon type={'backup'} size={20} />}\r\n width={type === 'add' ? '100%' : undefined}\r\n headerWidth={type === 'add' ? '740px' : undefined}\r\n close={close}\r\n withTabs={true}\r\n footer={\r\n <div className={PFClasses.planFormFooter}>\r\n <div className={PFClasses.footerContainer}>\r\n <div className={classes.footerLeft}>\r\n <div className={classes.summary}>\r\n {type === 'add' && step > 1 && (\r\n <button className={PFClasses.backButton} onClick={() => step > 0 && setStep(step - 1)} disabled={isSubmitting}>\r\n <Icon type=\"arrow-left\" size={14} /> Back\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n <div className={classes.footerRight}>\r\n {type === 'add' ? (\r\n <button className={classes.createButton} onClick={buttonTexts[step].onClick}>\r\n <Icon type=\"check\" size={12} /> {buttonTexts[step].title}\r\n </button>\r\n ) : (\r\n <button className={classes.createButton} onClick={() => isPlanSettingsValid(planSettings, false) && onSubmit()}>\r\n <Icon type=\"check\" size={12} /> {'Update Plan'}\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n >\r\n <PlanFormNav step={step} type={type} gotoStep={gotoStep} />\r\n\r\n <div className={`${PFClasses.formContent} styled__scrollbar`}>\r\n {isSubmitting && (\r\n <div className={classes.loader}>\r\n <Icon size={36} type=\"loading\" />\r\n </div>\r\n )}\r\n {step === 1 && (\r\n <div className={PFClasses.planStep}>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Backup Plan Name*</label>\r\n {!planSettings.title && <span className={classes.fieldErrorLabel}>{'Required'}</span>}\r\n <input\r\n className={classes.titleInput}\r\n type=\"text\"\r\n placeholder=\"Plan Name\"\r\n value={planSettings.title || ''}\r\n onChange={(e) => onPlanSettingsChange({ ...planSettings, title: e.target.value })}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Backup Plan Description</label>\r\n <input\r\n className={classes.titleInput}\r\n type=\"text\"\r\n placeholder=\"Plan Description\"\r\n value={planSettings.description || ''}\r\n onChange={(e) => onPlanSettingsChange({ ...planSettings, description: e.target.value })}\r\n />\r\n </div>\r\n {/* <PlanTypeSettings\r\n plan={planSettings}\r\n onUpdate={(plan: NewPlanSettings) => onPlanSettingsChange({ ...plan })}\r\n disabled={type === 'edit' ? true : false}\r\n options={[\r\n {\r\n value: 'device',\r\n icon: 'computer',\r\n label: 'Device',\r\n description: 'Backup content of a Computer/Server',\r\n },\r\n {\r\n value: 'database',\r\n icon: 'database',\r\n label: 'Database',\r\n description: 'Backup a Database',\r\n disabled: true,\r\n },\r\n {\r\n value: 'googleworkspace',\r\n icon: 'google-workspace',\r\n label: 'Google Workspace',\r\n description: 'Backup Google Workspace',\r\n disabled: true,\r\n },\r\n {\r\n value: 'microsoft365',\r\n icon: 'microsoft-365',\r\n label: 'Microsoft 365',\r\n description: 'Backup Microsoft 365',\r\n disabled: true,\r\n },\r\n ]}\r\n /> */}\r\n {planSettings.sourceType === 'device' && (\r\n <PlanStrategySettings\r\n plan={planSettings}\r\n onUpdate={(method) => onPlanSettingsChange({ ...planSettings, method })}\r\n disabled={type === 'edit' ? true : false}\r\n options={[\r\n {\r\n value: 'backup',\r\n icon: 'backup',\r\n label: 'Incremental Backup',\r\n description: 'Periodically create Incremental backup snapshots of source',\r\n },\r\n {\r\n value: 'sync',\r\n icon: 'reload',\r\n label: 'Real-time Sync',\r\n description: 'Maintain identical source (with revisions)',\r\n disabled: true,\r\n },\r\n {\r\n value: 'rescue',\r\n icon: 'rescue',\r\n label: 'Linux Server Backup',\r\n description: 'Full Linux system backups with bootable ISO image',\r\n disabled: true,\r\n },\r\n ]}\r\n />\r\n )}\r\n </div>\r\n )}\r\n {step === 2 && (\r\n <div className={PFClasses.planStep}>\r\n <PlanSourceSettings\r\n plan={planSettings}\r\n onUpdate={(plan) => onPlanSettingsChange({ ...plan })}\r\n isEditing={type === 'edit' ? true : false}\r\n error={planSettings.sourceConfig.includes.length === 0 ? 'Required' : ''}\r\n />\r\n <div className={classes.field}>\r\n <label className={classes.label}>Backup Destination*</label>\r\n {!planSettings.storage.name && <span className={classes.fieldErrorLabel}>{'Required'}</span>}\r\n <StoragePicker\r\n storagePath={storagePath}\r\n storageId={storageId}\r\n deviceId={planSettings.sourceId || 'main'}\r\n disabled={type === 'edit' ? true : false}\r\n onUpdate={(s: { storage: { name: string; id: string; type: string }; path: string }) =>\r\n onPlanSettingsChange({\r\n ...planSettings,\r\n storagePath: s.path,\r\n storage: { id: s.storage.id, name: s.storage.name },\r\n })\r\n }\r\n />\r\n </div>\r\n </div>\r\n )}\r\n {step === 3 && (\r\n <div className={PFClasses.planStep}>\r\n <div className={classes.field} style={{ width: '150px' }}>\r\n <IntervalField\r\n label=\"Backup Interval*\"\r\n fieldValue={planSettings.settings.interval}\r\n onUpdate={(intervalSettings) =>\r\n onPlanSettingsChange({ ...planSettings, settings: { ...planSettings.settings, interval: intervalSettings } })\r\n }\r\n />\r\n </div>\r\n\r\n <div className={classes.field} style={{ width: '150px' }}>\r\n <NumberInput\r\n label=\"Backups to Keep\"\r\n fieldValue={planSettings.settings.prune.snapCount}\r\n onUpdate={(val) =>\r\n onPlanSettingsChange({\r\n ...planSettings,\r\n settings: { ...planSettings.settings, prune: { ...planSettings.settings.prune, snapCount: val } },\r\n })\r\n }\r\n placeholder=\"5\"\r\n min={1}\r\n inline={false}\r\n hint=\"Number of Active Restorable Backups/Snapshots to Keep regardless of the Removal Policy\"\r\n />\r\n </div>\r\n <PlanPruneSettings\r\n plan={planSettings}\r\n onUpdate={(pruneSettings) =>\r\n onPlanSettingsChange({\r\n ...planSettings,\r\n settings: { ...planSettings.settings, prune: pruneSettings },\r\n })\r\n }\r\n />\r\n </div>\r\n )}\r\n {step === 4 && (\r\n <div className={PFClasses.planStep}>\r\n <PlanAdvancedSettings plan={planSettings} appSettings={appSettings} onUpdate={onPlanSettingsChange} device={deviceInstance} />\r\n </div>\r\n )}\r\n </div>\r\n </SidePanel>\r\n );\r\n};\r\n\r\nexport default PlanForm;\r\n"],"names":["PlanForm","title","planSettings","type","onPlanSettingsChange","onSubmit","isSubmitting","close","storagePath","storageId","step","setStep","useState","settingsData","useGetSettings","appSettings","_a","deviceData","useGetDevice","deviceInstance","_b","buttonTexts","isPlanSettingsValid","gotoStep","nStep","jsxs","SidePanel","jsx","Icon","PFClasses","classes","PlanFormNav","e","PlanStrategySettings","method","PlanSourceSettings","plan","StoragePicker","s","IntervalField","intervalSettings","NumberInput","val","PlanPruneSettings","pruneSettings","PlanAdvancedSettings"],"mappings":"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"}
1
+ {"version":3,"file":"PlanForm.js","sources":["../../../../src/components/Plan/PlanForm/PlanForm.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport SidePanel from '../../common/SidePanel/SidePanel';\r\nimport StoragePicker from '../../common/form/StoragePicker/StoragePicker';\r\nimport PlanStrategySettings from '../PlanSettings/PlanStrategySettings';\r\nimport PlanSourceSettings from '../PlanSettings/PlanSourceSettings';\r\nimport { NewPlanSettings } from '../../../@types/plans';\r\nimport NumberInput from '../../common/form/NumberInput/NumberInput';\r\nimport classes from '../AddPlan/AddPlan.module.scss';\r\nimport PFClasses from './PlanForm.module.scss';\r\nimport { useGetSettings } from '../../../services/settings';\r\nimport PlanAdvancedSettings from '../PlanSettings/PlanAdvancedSettings';\r\nimport { isPlanSettingsValid } from '../../../utils/plans';\r\nimport IntervalField from '../../common/form/IntervalField/IntervalField';\r\nimport PlanFormNav from './PlanFormNav';\r\nimport { useGetDevice } from '../../../services/devices';\r\nimport PlanPruneSettings from '../PlanSettings/PlanPruneSettings';\r\nimport PlanReplicationSettings from '../PlanSettings/PlanReplicationSettings';\r\n\r\ntype PlanFormProps = {\r\n title: string;\r\n planSettings: NewPlanSettings;\r\n type: 'add' | 'edit';\r\n onPlanSettingsChange: (settings: NewPlanSettings) => void;\r\n onSubmit: () => void;\r\n isSubmitting: boolean;\r\n close: () => void;\r\n storagePath?: string;\r\n storageId?: string;\r\n planId?: string;\r\n};\r\n\r\nconst PlanForm = ({\r\n title,\r\n planSettings,\r\n type,\r\n onPlanSettingsChange,\r\n onSubmit,\r\n isSubmitting,\r\n close,\r\n storagePath,\r\n storageId,\r\n planId,\r\n}: PlanFormProps) => {\r\n const [step, setStep] = useState<number>(1);\r\n\r\n const { data: settingsData } = useGetSettings();\r\n const appSettings = settingsData?.result?.settings || {};\r\n // const smtpConnected = appSettings?.integration?.smtp?.connected ? true : false;\r\n\r\n const { data: deviceData } = useGetDevice('main', true);\r\n const deviceInstance = deviceData?.result?.device;\r\n\r\n const buttonTexts: Record<number, { title: string; onClick: () => void }> = {\r\n 1: {\r\n title: 'Next: Configure Source & Destination',\r\n onClick: () => isPlanSettingsValid(planSettings, step) && setStep(step + 1),\r\n },\r\n 2: {\r\n title: 'Next: Setup Schedule & Retention',\r\n onClick: () => isPlanSettingsValid(planSettings, step) && setStep(step + 1),\r\n },\r\n 3: { title: 'Next: Advanced Settings', onClick: () => isPlanSettingsValid(planSettings, step) && setStep(step + 1) },\r\n 4: {\r\n title: 'Create Plan',\r\n onClick: () => isPlanSettingsValid(planSettings, false) && onSubmit(),\r\n },\r\n };\r\n\r\n const gotoStep = (nStep: number) => {\r\n if (type !== 'edit') {\r\n return;\r\n }\r\n\r\n const isSettingsValid = isPlanSettingsValid(planSettings, step);\r\n if (isSettingsValid) {\r\n setStep(nStep);\r\n }\r\n };\r\n\r\n return (\r\n <SidePanel\r\n title={title}\r\n icon={<Icon type={'backup'} size={20} />}\r\n width={type === 'add' ? '100%' : undefined}\r\n headerWidth={type === 'add' ? '740px' : undefined}\r\n close={close}\r\n withTabs={true}\r\n footer={\r\n <div className={PFClasses.planFormFooter}>\r\n <div className={PFClasses.footerContainer}>\r\n <div className={classes.footerLeft}>\r\n <div className={classes.summary}>\r\n {type === 'add' && step > 1 && (\r\n <button className={PFClasses.backButton} onClick={() => step > 0 && setStep(step - 1)} disabled={isSubmitting}>\r\n <Icon type=\"arrow-left\" size={14} /> Back\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n <div className={classes.footerRight}>\r\n {type === 'add' ? (\r\n <button className={classes.createButton} onClick={buttonTexts[step].onClick}>\r\n <Icon type=\"check\" size={12} /> {buttonTexts[step].title}\r\n </button>\r\n ) : (\r\n <button className={classes.createButton} onClick={() => isPlanSettingsValid(planSettings, false) && onSubmit()}>\r\n <Icon type=\"check\" size={12} /> {'Update Plan'}\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n >\r\n <PlanFormNav step={step} type={type} gotoStep={gotoStep} />\r\n\r\n <div className={`${PFClasses.formContent} styled__scrollbar`}>\r\n {isSubmitting && (\r\n <div className={classes.loader}>\r\n <Icon size={36} type=\"loading\" />\r\n </div>\r\n )}\r\n {step === 1 && (\r\n <div className={PFClasses.planStep}>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Backup Plan Name*</label>\r\n {!planSettings.title && <span className={classes.fieldErrorLabel}>{'Required'}</span>}\r\n <input\r\n className={classes.titleInput}\r\n type=\"text\"\r\n placeholder=\"Plan Name\"\r\n value={planSettings.title || ''}\r\n onChange={(e) => onPlanSettingsChange({ ...planSettings, title: e.target.value })}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Backup Plan Description</label>\r\n <input\r\n className={classes.titleInput}\r\n type=\"text\"\r\n placeholder=\"Plan Description\"\r\n value={planSettings.description || ''}\r\n onChange={(e) => onPlanSettingsChange({ ...planSettings, description: e.target.value })}\r\n />\r\n </div>\r\n {/* <PlanTypeSettings\r\n plan={planSettings}\r\n onUpdate={(plan: NewPlanSettings) => onPlanSettingsChange({ ...plan })}\r\n disabled={type === 'edit' ? true : false}\r\n options={[\r\n {\r\n value: 'device',\r\n icon: 'computer',\r\n label: 'Device',\r\n description: 'Backup content of a Computer/Server',\r\n },\r\n {\r\n value: 'database',\r\n icon: 'database',\r\n label: 'Database',\r\n description: 'Backup a Database',\r\n disabled: true,\r\n },\r\n {\r\n value: 'googleworkspace',\r\n icon: 'google-workspace',\r\n label: 'Google Workspace',\r\n description: 'Backup Google Workspace',\r\n disabled: true,\r\n },\r\n {\r\n value: 'microsoft365',\r\n icon: 'microsoft-365',\r\n label: 'Microsoft 365',\r\n description: 'Backup Microsoft 365',\r\n disabled: true,\r\n },\r\n ]}\r\n /> */}\r\n {planSettings.sourceType === 'device' && (\r\n <PlanStrategySettings\r\n plan={planSettings}\r\n onUpdate={(method) => onPlanSettingsChange({ ...planSettings, method })}\r\n disabled={type === 'edit' ? true : false}\r\n options={[\r\n {\r\n value: 'backup',\r\n icon: 'backup',\r\n label: 'Incremental Backup',\r\n description: 'Periodically create Incremental backup snapshots of source',\r\n },\r\n {\r\n value: 'sync',\r\n icon: 'reload',\r\n label: 'Real-time Sync',\r\n description: 'Maintain identical source (with revisions)',\r\n disabled: true,\r\n },\r\n {\r\n value: 'rescue',\r\n icon: 'rescue',\r\n label: 'Linux Server Backup',\r\n description: 'Full Linux system backups with bootable ISO image',\r\n disabled: true,\r\n },\r\n ]}\r\n />\r\n )}\r\n </div>\r\n )}\r\n {step === 2 && (\r\n <div className={PFClasses.planStep}>\r\n <PlanSourceSettings\r\n plan={planSettings}\r\n onUpdate={(plan) => onPlanSettingsChange({ ...plan })}\r\n isEditing={type === 'edit' ? true : false}\r\n error={planSettings.sourceConfig.includes.length === 0 ? 'Required' : ''}\r\n />\r\n <div className={classes.field}>\r\n <label className={classes.label}>Backup Destination*</label>\r\n {!planSettings.storage.name && <span className={classes.fieldErrorLabel}>{'Required'}</span>}\r\n <StoragePicker\r\n storagePath={storagePath || planSettings.storagePath}\r\n storageId={storageId || planSettings.storage?.id || ''}\r\n deviceId={planSettings.sourceId || 'main'}\r\n disabled={type === 'edit' ? true : false}\r\n onUpdate={(s: { storage: { name: string; id: string; type: string }; path: string }) =>\r\n onPlanSettingsChange({\r\n ...planSettings,\r\n storagePath: s.path,\r\n storage: { id: s.storage.id, name: s.storage.name },\r\n })\r\n }\r\n />\r\n </div>\r\n <PlanReplicationSettings\r\n replication={planSettings.settings.replication}\r\n primaryStorageId={planSettings.storage.id}\r\n primaryStoragePath={planSettings.storagePath}\r\n deviceId={planSettings.sourceId || 'main'}\r\n isEditing={type === 'edit' ? true : false}\r\n planID={planId}\r\n onUpdate={(replication) =>\r\n onPlanSettingsChange({\r\n ...planSettings,\r\n settings: { ...planSettings.settings, replication: replication },\r\n })\r\n }\r\n />\r\n </div>\r\n )}\r\n {step === 3 && (\r\n <div className={PFClasses.planStep}>\r\n <div className={classes.field} style={{ width: '150px' }}>\r\n <IntervalField\r\n label=\"Backup Interval*\"\r\n fieldValue={planSettings.settings.interval}\r\n onUpdate={(intervalSettings) =>\r\n onPlanSettingsChange({ ...planSettings, settings: { ...planSettings.settings, interval: intervalSettings } })\r\n }\r\n />\r\n </div>\r\n\r\n <div className={classes.field} style={{ width: '150px' }}>\r\n <NumberInput\r\n label=\"Backups to Keep\"\r\n fieldValue={planSettings.settings.prune.snapCount}\r\n onUpdate={(val) =>\r\n onPlanSettingsChange({\r\n ...planSettings,\r\n settings: { ...planSettings.settings, prune: { ...planSettings.settings.prune, snapCount: val } },\r\n })\r\n }\r\n placeholder=\"5\"\r\n min={1}\r\n inline={false}\r\n hint=\"Number of Active Restorable Backups/Snapshots to Keep regardless of the Removal Policy\"\r\n />\r\n </div>\r\n <PlanPruneSettings\r\n plan={planSettings}\r\n onUpdate={(pruneSettings) =>\r\n onPlanSettingsChange({\r\n ...planSettings,\r\n settings: { ...planSettings.settings, prune: pruneSettings },\r\n })\r\n }\r\n />\r\n </div>\r\n )}\r\n {step === 4 && (\r\n <div className={PFClasses.planStep}>\r\n <PlanAdvancedSettings plan={planSettings} appSettings={appSettings} onUpdate={onPlanSettingsChange} device={deviceInstance} />\r\n </div>\r\n )}\r\n </div>\r\n </SidePanel>\r\n );\r\n};\r\n\r\nexport default PlanForm;\r\n"],"names":["PlanForm","title","planSettings","type","onPlanSettingsChange","onSubmit","isSubmitting","close","storagePath","storageId","planId","step","setStep","useState","settingsData","useGetSettings","appSettings","_a","deviceData","useGetDevice","deviceInstance","_b","buttonTexts","isPlanSettingsValid","gotoStep","nStep","jsxs","SidePanel","jsx","Icon","PFClasses","classes","PlanFormNav","e","PlanStrategySettings","method","PlanSourceSettings","plan","StoragePicker","_c","s","PlanReplicationSettings","replication","IntervalField","intervalSettings","NumberInput","val","PlanPruneSettings","pruneSettings","PlanAdvancedSettings"],"mappings":";;;;;;;;;;;;;;;;;;AAgCA,MAAMA,KAAW,CAAC;AAAA,EACf,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,MAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AACH,MAAqB;;AAClB,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAiB,CAAC,GAEpC,EAAE,MAAMC,EAAA,IAAiBC,EAAA,GACzBC,MAAcC,IAAAH,KAAA,gBAAAA,EAAc,WAAd,gBAAAG,EAAsB,aAAY,CAAA,GAGhD,EAAE,MAAMC,EAAA,IAAeC,EAAa,QAAQ,EAAI,GAChDC,KAAiBC,IAAAH,KAAA,gBAAAA,EAAY,WAAZ,gBAAAG,EAAoB,QAErCC,IAAsE;AAAA,IACzE,GAAG;AAAA,MACA,OAAO;AAAA,MACP,SAAS,MAAMC,EAAoBrB,GAAcS,CAAI,KAAKC,EAAQD,IAAO,CAAC;AAAA,IAAA;AAAA,IAE7E,GAAG;AAAA,MACA,OAAO;AAAA,MACP,SAAS,MAAMY,EAAoBrB,GAAcS,CAAI,KAAKC,EAAQD,IAAO,CAAC;AAAA,IAAA;AAAA,IAE7E,GAAG,EAAE,OAAO,2BAA2B,SAAS,MAAMY,EAAoBrB,GAAcS,CAAI,KAAKC,EAAQD,IAAO,CAAC,EAAA;AAAA,IACjH,GAAG;AAAA,MACA,OAAO;AAAA,MACP,SAAS,MAAMY,EAAoBrB,GAAc,EAAK,KAAKG,EAAA;AAAA,IAAS;AAAA,EACvE,GAGGmB,IAAW,CAACC,MAAkB;AACjC,QAAItB,MAAS;AACV;AAIH,IADwBoB,EAAoBrB,GAAcS,CAAI,KAE3DC,EAAQa,CAAK;AAAA,EAEnB;AAEA,SACG,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,OAAA1B;AAAA,MACA,MAAM,gBAAA2B,EAACC,GAAA,EAAK,MAAM,UAAU,MAAM,IAAI;AAAA,MACtC,OAAO1B,MAAS,QAAQ,SAAS;AAAA,MACjC,aAAaA,MAAS,QAAQ,UAAU;AAAA,MACxC,OAAAI;AAAA,MACA,UAAU;AAAA,MACV,QACG,gBAAAqB,EAAC,OAAA,EAAI,WAAWE,EAAU,gBACvB,UAAA,gBAAAJ,EAAC,OAAA,EAAI,WAAWI,EAAU,iBACvB,UAAA;AAAA,QAAA,gBAAAF,EAAC,OAAA,EAAI,WAAWG,EAAQ,YACrB,UAAA,gBAAAH,EAAC,OAAA,EAAI,WAAWG,EAAQ,SACpB,UAAA5B,MAAS,SAASQ,IAAO,KACvB,gBAAAe,EAAC,UAAA,EAAO,WAAWI,EAAU,YAAY,SAAS,MAAMnB,IAAO,KAAKC,EAAQD,IAAO,CAAC,GAAG,UAAUL,GAC9F,UAAA;AAAA,UAAA,gBAAAsB,EAACC,GAAA,EAAK,MAAK,cAAa,MAAM,IAAI;AAAA,UAAE;AAAA,QAAA,EAAA,CACvC,GAEN,GACH;AAAA,0BACC,OAAA,EAAI,WAAWE,EAAQ,aACpB,gBAAS,QACP,gBAAAL,EAAC,UAAA,EAAO,WAAWK,EAAQ,cAAc,SAAST,EAAYX,CAAI,EAAE,SACjE,UAAA;AAAA,UAAA,gBAAAiB,EAACC,GAAA,EAAK,MAAK,SAAQ,MAAM,IAAI;AAAA,UAAE;AAAA,UAAEP,EAAYX,CAAI,EAAE;AAAA,QAAA,EAAA,CACtD,IAEA,gBAAAe,EAAC,UAAA,EAAO,WAAWK,EAAQ,cAAc,SAAS,MAAMR,EAAoBrB,GAAc,EAAK,KAAKG,KACjG,UAAA;AAAA,UAAA,gBAAAuB,EAACC,GAAA,EAAK,MAAK,SAAQ,MAAM,IAAI;AAAA,UAAE;AAAA,UAAE;AAAA,QAAA,EAAA,CACpC,EAAA,CAEN;AAAA,MAAA,EAAA,CACH,EAAA,CACH;AAAA,MAGH,UAAA;AAAA,QAAA,gBAAAD,EAACI,GAAA,EAAY,MAAArB,GAAY,MAAAR,GAAY,UAAAqB,EAAA,CAAoB;AAAA,0BAExD,OAAA,EAAI,WAAW,GAAGM,EAAU,WAAW,sBACpC,UAAA;AAAA,UAAAxB,KACE,gBAAAsB,EAAC,OAAA,EAAI,WAAWG,EAAQ,QACrB,UAAA,gBAAAH,EAACC,GAAA,EAAK,MAAM,IAAI,MAAK,UAAA,CAAU,GAClC;AAAA,UAEFlB,MAAS,KACP,gBAAAe,EAAC,OAAA,EAAI,WAAWI,EAAU,UACvB,UAAA;AAAA,YAAA,gBAAAJ,EAAC,OAAA,EAAI,WAAWK,EAAQ,OACrB,UAAA;AAAA,cAAA,gBAAAH,EAAC,SAAA,EAAM,WAAWG,EAAQ,OAAO,UAAA,qBAAiB;AAAA,cACjD,CAAC7B,EAAa,SAAS,gBAAA0B,EAAC,UAAK,WAAWG,EAAQ,iBAAkB,UAAA,YAAW;AAAA,cAC9E,gBAAAH;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACE,WAAWG,EAAQ;AAAA,kBACnB,MAAK;AAAA,kBACL,aAAY;AAAA,kBACZ,OAAO7B,EAAa,SAAS;AAAA,kBAC7B,UAAU,CAAC+B,MAAM7B,EAAqB,EAAE,GAAGF,GAAc,OAAO+B,EAAE,OAAO,MAAA,CAAO;AAAA,gBAAA;AAAA,cAAA;AAAA,YACnF,GACH;AAAA,YACA,gBAAAP,EAAC,OAAA,EAAI,WAAWK,EAAQ,OACrB,UAAA;AAAA,cAAA,gBAAAH,EAAC,SAAA,EAAM,WAAWG,EAAQ,OAAO,UAAA,2BAAuB;AAAA,cACxD,gBAAAH;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACE,WAAWG,EAAQ;AAAA,kBACnB,MAAK;AAAA,kBACL,aAAY;AAAA,kBACZ,OAAO7B,EAAa,eAAe;AAAA,kBACnC,UAAU,CAAC+B,MAAM7B,EAAqB,EAAE,GAAGF,GAAc,aAAa+B,EAAE,OAAO,MAAA,CAAO;AAAA,gBAAA;AAAA,cAAA;AAAA,YACzF,GACH;AAAA,YAmCC/B,EAAa,eAAe,YAC1B,gBAAA0B;AAAA,cAACM;AAAA,cAAA;AAAA,gBACE,MAAMhC;AAAA,gBACN,UAAU,CAACiC,MAAW/B,EAAqB,EAAE,GAAGF,GAAc,QAAAiC,GAAQ;AAAA,gBACtE,UAAUhC,MAAS;AAAA,gBACnB,SAAS;AAAA,kBACN;AAAA,oBACG,OAAO;AAAA,oBACP,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP,aAAa;AAAA,kBAAA;AAAA,kBAEhB;AAAA,oBACG,OAAO;AAAA,oBACP,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP,aAAa;AAAA,oBACb,UAAU;AAAA,kBAAA;AAAA,kBAEb;AAAA,oBACG,OAAO;AAAA,oBACP,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP,aAAa;AAAA,oBACb,UAAU;AAAA,kBAAA;AAAA,gBACb;AAAA,cACH;AAAA,YAAA;AAAA,UACH,GAEN;AAAA,UAEFQ,MAAS,KACP,gBAAAe,EAAC,OAAA,EAAI,WAAWI,EAAU,UACvB,UAAA;AAAA,YAAA,gBAAAF;AAAA,cAACQ;AAAA,cAAA;AAAA,gBACE,MAAMlC;AAAA,gBACN,UAAU,CAACmC,MAASjC,EAAqB,EAAE,GAAGiC,GAAM;AAAA,gBACpD,WAAWlC,MAAS;AAAA,gBACpB,OAAOD,EAAa,aAAa,SAAS,WAAW,IAAI,aAAa;AAAA,cAAA;AAAA,YAAA;AAAA,YAEzE,gBAAAwB,EAAC,OAAA,EAAI,WAAWK,EAAQ,OACrB,UAAA;AAAA,cAAA,gBAAAH,EAAC,SAAA,EAAM,WAAWG,EAAQ,OAAO,UAAA,uBAAmB;AAAA,cACnD,CAAC7B,EAAa,QAAQ,0BAAS,QAAA,EAAK,WAAW6B,EAAQ,iBAAkB,UAAA,WAAA,CAAW;AAAA,cACrF,gBAAAH;AAAA,gBAACU;AAAA,gBAAA;AAAA,kBACE,aAAa9B,KAAeN,EAAa;AAAA,kBACzC,WAAWO,OAAa8B,IAAArC,EAAa,YAAb,gBAAAqC,EAAsB,OAAM;AAAA,kBACpD,UAAUrC,EAAa,YAAY;AAAA,kBACnC,UAAUC,MAAS;AAAA,kBACnB,UAAU,CAACqC,MACRpC,EAAqB;AAAA,oBAClB,GAAGF;AAAA,oBACH,aAAasC,EAAE;AAAA,oBACf,SAAS,EAAE,IAAIA,EAAE,QAAQ,IAAI,MAAMA,EAAE,QAAQ,KAAA;AAAA,kBAAK,CACpD;AAAA,gBAAA;AAAA,cAAA;AAAA,YAEP,GACH;AAAA,YACA,gBAAAZ;AAAA,cAACa;AAAA,cAAA;AAAA,gBACE,aAAavC,EAAa,SAAS;AAAA,gBACnC,kBAAkBA,EAAa,QAAQ;AAAA,gBACvC,oBAAoBA,EAAa;AAAA,gBACjC,UAAUA,EAAa,YAAY;AAAA,gBACnC,WAAWC,MAAS;AAAA,gBACpB,QAAQO;AAAA,gBACR,UAAU,CAACgC,MACRtC,EAAqB;AAAA,kBAClB,GAAGF;AAAA,kBACH,UAAU,EAAE,GAAGA,EAAa,UAAU,aAAAwC,EAAA;AAAA,gBAAyB,CACjE;AAAA,cAAA;AAAA,YAAA;AAAA,UAEP,GACH;AAAA,UAEF/B,MAAS,KACP,gBAAAe,EAAC,OAAA,EAAI,WAAWI,EAAU,UACvB,UAAA;AAAA,YAAA,gBAAAF,EAAC,OAAA,EAAI,WAAWG,EAAQ,OAAO,OAAO,EAAE,OAAO,WAC5C,UAAA,gBAAAH;AAAA,cAACe;AAAA,cAAA;AAAA,gBACE,OAAM;AAAA,gBACN,YAAYzC,EAAa,SAAS;AAAA,gBAClC,UAAU,CAAC0C,MACRxC,EAAqB,EAAE,GAAGF,GAAc,UAAU,EAAE,GAAGA,EAAa,UAAU,UAAU0C,EAAA,GAAoB;AAAA,cAAA;AAAA,YAAA,GAGrH;AAAA,YAEA,gBAAAhB,EAAC,SAAI,WAAWG,EAAQ,OAAO,OAAO,EAAE,OAAO,QAAA,GAC5C,UAAA,gBAAAH;AAAA,cAACiB;AAAA,cAAA;AAAA,gBACE,OAAM;AAAA,gBACN,YAAY3C,EAAa,SAAS,MAAM;AAAA,gBACxC,UAAU,CAAC4C,MACR1C,EAAqB;AAAA,kBAClB,GAAGF;AAAA,kBACH,UAAU,EAAE,GAAGA,EAAa,UAAU,OAAO,EAAE,GAAGA,EAAa,SAAS,OAAO,WAAW4C,IAAI;AAAA,gBAAE,CAClG;AAAA,gBAEJ,aAAY;AAAA,gBACZ,KAAK;AAAA,gBACL,QAAQ;AAAA,gBACR,MAAK;AAAA,cAAA;AAAA,YAAA,GAEX;AAAA,YACA,gBAAAlB;AAAA,cAACmB;AAAA,cAAA;AAAA,gBACE,MAAM7C;AAAA,gBACN,UAAU,CAAC8C,MACR5C,EAAqB;AAAA,kBAClB,GAAGF;AAAA,kBACH,UAAU,EAAE,GAAGA,EAAa,UAAU,OAAO8C,EAAA;AAAA,gBAAc,CAC7D;AAAA,cAAA;AAAA,YAAA;AAAA,UAEP,GACH;AAAA,UAEFrC,MAAS,KACP,gBAAAiB,EAAC,OAAA,EAAI,WAAWE,EAAU,UACvB,UAAA,gBAAAF,EAACqB,GAAA,EAAqB,MAAM/C,GAAc,aAAAc,GAA0B,UAAUZ,GAAsB,QAAQgB,GAAgB,EAAA,CAC/H;AAAA,QAAA,EAAA,CAEN;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGT;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlanItem.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/PlanItems/PlanItem.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAQ7C,UAAU,aAAa;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B;AAED,QAAA,MAAM,QAAQ,GAAI,kBAA2B,aAAa,4CAkMzD,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"PlanItem.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/PlanItems/PlanItem.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAS7C,UAAU,aAAa;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B;AAED,QAAA,MAAM,QAAQ,GAAI,kBAA2B,aAAa,4CAiMzD,CAAC;AAEF,eAAe,QAAQ,CAAC"}