@plutonhq/core-frontend 0.1.12 → 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 (190) 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/PlanSettings/PlanSourceSettings.d.ts.map +1 -1
  71. package/dist-lib/components/Plan/PlanSettings/PlanSourceSettings.js +29 -28
  72. package/dist-lib/components/Plan/PlanSettings/PlanSourceSettings.js.map +1 -1
  73. package/dist-lib/components/Plan/PlanStats/PlanStats.d.ts.map +1 -1
  74. package/dist-lib/components/Plan/PlanStats/PlanStats.js +41 -42
  75. package/dist-lib/components/Plan/PlanStats/PlanStats.js.map +1 -1
  76. package/dist-lib/components/Plan/PlanStats/PlanStats.module.scss.js +5 -5
  77. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.d.ts +15 -0
  78. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.d.ts.map +1 -0
  79. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.js +69 -0
  80. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.js.map +1 -0
  81. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.module.scss.js +16 -0
  82. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.module.scss.js.map +1 -0
  83. package/dist-lib/components/Restore/RestoreWizard/RestoreConfirmStep.d.ts.map +1 -1
  84. package/dist-lib/components/Restore/RestoreWizard/RestoreConfirmStep.js +36 -34
  85. package/dist-lib/components/Restore/RestoreWizard/RestoreConfirmStep.js.map +1 -1
  86. package/dist-lib/components/Restore/RestoreWizard/RestorePreviewStep.d.ts.map +1 -1
  87. package/dist-lib/components/Restore/RestoreWizard/RestorePreviewStep.js +7 -5
  88. package/dist-lib/components/Restore/RestoreWizard/RestorePreviewStep.js.map +1 -1
  89. package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.d.ts +12 -4
  90. package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.d.ts.map +1 -1
  91. package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.js +44 -32
  92. package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.js.map +1 -1
  93. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.d.ts +5 -1
  94. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.d.ts.map +1 -1
  95. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.js +48 -44
  96. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.js.map +1 -1
  97. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.module.scss.js +32 -32
  98. package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.js +14 -14
  99. package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.js.map +1 -1
  100. package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.d.ts.map +1 -1
  101. package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.js +28 -19
  102. package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.js.map +1 -1
  103. package/dist-lib/components/common/Icon/Icon.d.ts.map +1 -1
  104. package/dist-lib/components/common/Icon/Icon.js +162 -144
  105. package/dist-lib/components/common/Icon/Icon.js.map +1 -1
  106. package/dist-lib/components/common/PageHeader/PageHeader.module.scss.js +6 -6
  107. package/dist-lib/components/index.d.ts +4 -0
  108. package/dist-lib/components/index.d.ts.map +1 -1
  109. package/dist-lib/components.js +86 -78
  110. package/dist-lib/components.js.map +1 -1
  111. package/dist-lib/hooks/usePwaAutoUpdate.d.ts +11 -2
  112. package/dist-lib/hooks/usePwaAutoUpdate.d.ts.map +1 -1
  113. package/dist-lib/hooks/usePwaAutoUpdate.js +32 -10
  114. package/dist-lib/hooks/usePwaAutoUpdate.js.map +1 -1
  115. package/dist-lib/router.d.ts.map +1 -1
  116. package/dist-lib/router.js +46 -35
  117. package/dist-lib/router.js.map +1 -1
  118. package/dist-lib/routes/DeviceSingle/DeviceSingle.d.ts.map +1 -1
  119. package/dist-lib/routes/DeviceSingle/DeviceSingle.js +40 -40
  120. package/dist-lib/routes/DeviceSingle/DeviceSingle.js.map +1 -1
  121. package/dist-lib/services/backups.d.ts +15 -2
  122. package/dist-lib/services/backups.d.ts.map +1 -1
  123. package/dist-lib/services/backups.js +119 -100
  124. package/dist-lib/services/backups.js.map +1 -1
  125. package/dist-lib/services/plans.d.ts +14 -0
  126. package/dist-lib/services/plans.d.ts.map +1 -1
  127. package/dist-lib/services/plans.js +160 -129
  128. package/dist-lib/services/plans.js.map +1 -1
  129. package/dist-lib/services/restores.d.ts +10 -2
  130. package/dist-lib/services/restores.d.ts.map +1 -1
  131. package/dist-lib/services/restores.js +61 -57
  132. package/dist-lib/services/restores.js.map +1 -1
  133. package/dist-lib/services/users.d.ts.map +1 -1
  134. package/dist-lib/services/users.js +32 -32
  135. package/dist-lib/services/users.js.map +1 -1
  136. package/dist-lib/services.js +107 -103
  137. package/dist-lib/styles/core-frontend.css +1 -1
  138. package/dist-lib/utils/progressHelpers.d.ts +12 -1
  139. package/dist-lib/utils/progressHelpers.d.ts.map +1 -1
  140. package/dist-lib/utils/progressHelpers.js +121 -63
  141. package/dist-lib/utils/progressHelpers.js.map +1 -1
  142. package/dist-lib/utils.js +29 -28
  143. package/package.json +1 -1
  144. package/src/@types/backups.ts +28 -0
  145. package/src/@types/devices.ts +8 -0
  146. package/src/@types/plans.ts +23 -1
  147. package/src/@types/restores.ts +2 -0
  148. package/src/components/Device/DeviceBackups/DeviceBackups.tsx +11 -36
  149. package/src/components/Plan/BackupEvents/BackupEvents.module.scss +65 -0
  150. package/src/components/Plan/BackupEvents/BackupEvents.tsx +65 -4
  151. package/src/components/Plan/BackupProgress/BackupProgress.module.scss +121 -3
  152. package/src/components/Plan/BackupProgress/BackupProgress.tsx +149 -71
  153. package/src/components/Plan/Backups/Backups.tsx +52 -4
  154. package/src/components/Plan/EditPlan/EditPlan.tsx +1 -0
  155. package/src/components/Plan/Mirrors/MirrorDetails.module.scss +76 -0
  156. package/src/components/Plan/Mirrors/MirrorDetails.tsx +100 -0
  157. package/src/components/Plan/Mirrors/MirrorStatusBadge.module.scss +25 -0
  158. package/src/components/Plan/Mirrors/MirrorStatusBadge.tsx +65 -0
  159. package/src/components/Plan/Mirrors/MirrorStorageSelector.module.scss +97 -0
  160. package/src/components/Plan/Mirrors/MirrorStorageSelector.tsx +70 -0
  161. package/src/components/Plan/Mirrors/MirrorStorageSelectorModal.tsx +40 -0
  162. package/src/components/Plan/PlanBackups/PlanBackups.tsx +4 -1
  163. package/src/components/Plan/PlanForm/PlanForm.tsx +30 -3
  164. package/src/components/Plan/PlanItems/PlanItem.tsx +3 -3
  165. package/src/components/Plan/PlanRemoveModal/PlanRemoveModal.tsx +1 -1
  166. package/src/components/Plan/PlanSettings/PlanReplicationSettings.module.scss +105 -0
  167. package/src/components/Plan/PlanSettings/PlanReplicationSettings.tsx +334 -0
  168. package/src/components/Plan/PlanSettings/PlanSourceSettings.tsx +1 -0
  169. package/src/components/Plan/PlanStats/PlanStats.module.scss +1 -1
  170. package/src/components/Plan/PlanStats/PlanStats.tsx +8 -8
  171. package/src/components/Plan/PlanStorageInfo/PlanStorageInfo.module.scss +43 -0
  172. package/src/components/Plan/PlanStorageInfo/PlanStorageInfo.tsx +83 -0
  173. package/src/components/Restore/RestoreWizard/RestoreConfirmStep.tsx +2 -0
  174. package/src/components/Restore/RestoreWizard/RestorePreviewStep.tsx +2 -0
  175. package/src/components/Restore/RestoreWizard/RestoreSettingsStep.tsx +36 -13
  176. package/src/components/Restore/RestoreWizard/RestoreWizard.module.scss +4 -0
  177. package/src/components/Restore/RestoreWizard/RestoreWizard.tsx +9 -1
  178. package/src/components/Settings/GeneralSettings/GeneralSettings.tsx +1 -1
  179. package/src/components/Settings/IntegrationSettings/IntegrationSettings.tsx +9 -2
  180. package/src/components/common/Icon/Icon.tsx +18 -1
  181. package/src/components/common/PageHeader/PageHeader.module.scss +3 -0
  182. package/src/components/index.ts +6 -0
  183. package/src/hooks/usePwaAutoUpdate.ts +51 -11
  184. package/src/router.tsx +26 -17
  185. package/src/routes/DeviceSingle/DeviceSingle.tsx +3 -3
  186. package/src/services/backups.ts +32 -9
  187. package/src/services/plans.ts +45 -0
  188. package/src/services/restores.ts +10 -2
  189. package/src/services/users.ts +14 -5
  190. package/src/utils/progressHelpers.ts +85 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PlanStats.js","sources":["../../../../src/components/Plan/PlanStats/PlanStats.tsx"],"sourcesContent":["import Icon from '../../common/Icon/Icon';\r\nimport { Plan } from '../../../@types/plans';\r\nimport { formatBytes, formatNumberToK } from '../../../utils/helpers';\r\nimport PlanHistory from '../PlanHistory/PlanHistory';\r\nimport classes from './PlanStats.module.scss';\r\n\r\ninterface PlanStatsProps {\r\n plan: Plan;\r\n isSync: boolean;\r\n lastBackupItem: any;\r\n}\r\n\r\nconst PlanStats = ({ plan, isSync, lastBackupItem }: PlanStatsProps) => {\r\n const { sourceConfig, storage, storagePath, isActive, settings } = plan;\r\n const { interval } = settings;\r\n\r\n const totalFiles = lastBackupItem?.totalFiles || 0;\r\n const totalSize = lastBackupItem?.totalSize || 0;\r\n\r\n const sourceTooltipHTML = (sources: Plan['sourceConfig']) => {\r\n let html = '';\r\n if (sources && sources.includes && sources.includes.length > 0) {\r\n html += `<div><strong>Includes</strong></div>`;\r\n html += sources.includes.map((p) => `<div>${plan.device.name} -> ${p}</div>`).join('');\r\n }\r\n if (sources && sources.excludes && sources.excludes.length > 0) {\r\n html += `<div><strong>Excludes</strong></div>`;\r\n html += sources.excludes.map((p) => `<div>${p}</div>`).join('');\r\n }\r\n return html;\r\n };\r\n\r\n return (\r\n <div className={classes.planStats}>\r\n <div className={classes.sources}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"backup\" size={12} /> {isSync ? 'Syncing' : 'Backing Up'}\r\n </div>\r\n <div className={classes.sourceContent}>\r\n <div data-tooltip-id=\"htmlToolTip\" data-tooltip-place=\"top\" data-tooltip-html={sourceTooltipHTML(sourceConfig)}>\r\n <Icon type=\"folders\" size={18} />\r\n <span>{sourceConfig?.includes.length} Sources</span>\r\n </div>\r\n <div\r\n data-tooltip-id=\"htmlToolTip\"\r\n data-tooltip-place=\"top\"\r\n data-tooltip-html={\r\n isActive\r\n ? isSync\r\n ? `Syncing changes every ${interval.minutes} minutes`\r\n : `Copying changes ${['hours', 'minutes', 'days'].includes(interval.type) ? interval[interval.type as 'hours' | 'minutes' | 'days'] + interval.type : interval.type}`\r\n : 'Plan is Not Active'\r\n }\r\n >\r\n <Icon type={isActive ? (isSync ? 'reload' : 'copy') : 'pause'} size={16} />\r\n <div className={classes.sourceArrow}>→</div>\r\n </div>\r\n <div\r\n data-tooltip-id=\"htmlToolTip\"\r\n data-tooltip-place=\"top\"\r\n data-tooltip-html={`<div><strong>Storage:</strong> ${storage?.name}</div><div><strong>Path:</strong> ${storagePath || '/'}</div>`}\r\n >\r\n {storage?.type && <img src={`/providers/${storage?.type}.png`} />}\r\n {storage?.name}\r\n </div>\r\n </div>\r\n </div>\r\n <div className={classes.snapshots}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"folders\" size={12} /> Source Stats\r\n </div>\r\n <div className={classes.snapshotsContent}>\r\n <div>\r\n <span>{totalFiles ? formatNumberToK(totalFiles) : 0}</span>\r\n <span>Files</span>\r\n </div>\r\n <div></div>\r\n <div>\r\n <span>{totalSize ? formatBytes(totalSize) : '0.00B'}</span>\r\n <span>Size</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className={classes.health}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"speed\" size={12} /> Health\r\n </div>\r\n <div className={classes.healthContent}>\r\n <PlanHistory planId={plan.id} history={plan.backups} itemsCount={90} />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default PlanStats;\r\n"],"names":["PlanStats","plan","isSync","lastBackupItem","sourceConfig","storage","storagePath","isActive","settings","interval","totalFiles","totalSize","sourceTooltipHTML","sources","html","jsxs","classes","jsx","Icon","formatNumberToK","formatBytes","PlanHistory"],"mappings":"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"}
1
+ {"version":3,"file":"PlanStats.js","sources":["../../../../src/components/Plan/PlanStats/PlanStats.tsx"],"sourcesContent":["import Icon from '../../common/Icon/Icon';\r\nimport { Plan } from '../../../@types/plans';\r\nimport { formatBytes, formatNumberToK } from '../../../utils/helpers';\r\nimport PlanHistory from '../PlanHistory/PlanHistory';\r\nimport classes from './PlanStats.module.scss';\r\nimport PlanStorageInfo from '../PlanStorageInfo/PlanStorageInfo';\r\n\r\ninterface PlanStatsProps {\r\n plan: Plan;\r\n isSync: boolean;\r\n lastBackupItem: any;\r\n}\r\n\r\nconst PlanStats = ({ plan, isSync, lastBackupItem }: PlanStatsProps) => {\r\n const { sourceConfig, storage, storagePath, isActive, settings } = plan;\r\n const { interval } = settings;\r\n\r\n const totalFiles = lastBackupItem?.totalFiles || 0;\r\n const totalSize = lastBackupItem?.totalSize || 0;\r\n\r\n const sourceTooltipHTML = (sources: Plan['sourceConfig']) => {\r\n let html = '';\r\n if (sources && sources.includes && sources.includes.length > 0) {\r\n html += `<div><strong>Includes</strong></div>`;\r\n html += sources.includes.map((p) => `<div>${plan.device.name} -> ${p}</div>`).join('');\r\n }\r\n if (sources && sources.excludes && sources.excludes.length > 0) {\r\n html += `<div><strong>Excludes</strong></div>`;\r\n html += sources.excludes.map((p) => `<div>${p}</div>`).join('');\r\n }\r\n return html;\r\n };\r\n\r\n return (\r\n <div className={classes.planStats}>\r\n <div className={classes.sources}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"backup\" size={12} /> {isSync ? 'Syncing' : 'Backing Up'}\r\n </div>\r\n <div className={classes.sourceContent}>\r\n <div data-tooltip-id=\"htmlToolTip\" data-tooltip-place=\"top\" data-tooltip-html={sourceTooltipHTML(sourceConfig)}>\r\n <Icon type=\"folders\" size={18} />\r\n <span>{sourceConfig?.includes.length} Sources</span>\r\n </div>\r\n <div\r\n data-tooltip-id=\"htmlToolTip\"\r\n data-tooltip-place=\"top\"\r\n data-tooltip-html={\r\n isActive\r\n ? isSync\r\n ? `Syncing changes every ${interval.minutes} minutes`\r\n : `Copying changes ${['hours', 'minutes', 'days'].includes(interval.type) ? interval[interval.type as 'hours' | 'minutes' | 'days'] + interval.type : interval.type}`\r\n : 'Plan is Not Active'\r\n }\r\n >\r\n <Icon type={isActive ? (isSync ? 'reload' : 'copy') : 'pause'} size={16} />\r\n <div className={classes.sourceArrow}>→</div>\r\n </div>\r\n <PlanStorageInfo\r\n disableTooltip={false}\r\n inline={false}\r\n replicationSettings={plan.settings.replication}\r\n storage={storage}\r\n storagePath={storagePath}\r\n />\r\n </div>\r\n </div>\r\n <div className={classes.snapshots}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"folders\" size={12} /> Source Stats\r\n </div>\r\n <div className={classes.snapshotsContent}>\r\n <div>\r\n <span>{totalFiles ? formatNumberToK(totalFiles) : 0}</span>\r\n <span>Files</span>\r\n </div>\r\n <div></div>\r\n <div>\r\n <span>{totalSize ? formatBytes(totalSize) : '0.00B'}</span>\r\n <span>Size</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className={classes.health}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"speed\" size={12} /> Health\r\n </div>\r\n <div className={classes.healthContent}>\r\n <PlanHistory planId={plan.id} history={plan.backups} itemsCount={90} />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default PlanStats;\r\n"],"names":["PlanStats","plan","isSync","lastBackupItem","sourceConfig","storage","storagePath","isActive","settings","interval","totalFiles","totalSize","sourceTooltipHTML","sources","html","p","jsxs","classes","jsx","Icon","PlanStorageInfo","formatNumberToK","formatBytes","PlanHistory"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- const s = "_planStats_Wa7Nw", t = "_widgetTitle_nMFL3", o = "_sources_mEh1x", n = "_snapshots_j4WO4", e = "_health_WLxE7", a = "_sourceContent_IVx9v", c = "_sourceArrow_L93n4", r = "_snapshotsContent_oCZ63", _ = {
1
+ const s = "_planStats_rYcAd", t = "_widgetTitle_PJX4o", o = "_sources_KFvuD", n = "_snapshots_s9ThB", e = "_health_Tux66", c = "_sourceContent_ioGQg", a = "_sourceArrow_VI4d7", r = "_snapshotsContent_ZuAcY", _ = {
2
2
  planStats: s,
3
3
  widgetTitle: t,
4
4
  sources: o,
5
5
  snapshots: n,
6
6
  health: e,
7
- sourceContent: a,
8
- sourceArrow: c,
7
+ sourceContent: c,
8
+ sourceArrow: a,
9
9
  snapshotsContent: r
10
10
  };
11
11
  export {
@@ -14,8 +14,8 @@ export {
14
14
  s as planStats,
15
15
  n as snapshots,
16
16
  r as snapshotsContent,
17
- c as sourceArrow,
18
- a as sourceContent,
17
+ a as sourceArrow,
18
+ c as sourceContent,
19
19
  o as sources,
20
20
  t as widgetTitle
21
21
  };
@@ -0,0 +1,15 @@
1
+ import { PlanReplicationSettings } from '../../../@types';
2
+ interface PlanStorageInfoProps {
3
+ storage: {
4
+ name: string;
5
+ type: string;
6
+ id: string;
7
+ };
8
+ storagePath: string;
9
+ replicationSettings?: PlanReplicationSettings;
10
+ disableTooltip?: boolean;
11
+ inline?: boolean;
12
+ }
13
+ declare const PlanStorageInfo: ({ replicationSettings, storage, storagePath, disableTooltip, inline }: PlanStorageInfoProps) => import("react/jsx-runtime").JSX.Element;
14
+ export default PlanStorageInfo;
15
+ //# sourceMappingURL=PlanStorageInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanStorageInfo.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/PlanStorageInfo/PlanStorageInfo.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAG1D,UAAU,oBAAoB;IAC3B,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;IAC9C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,QAAA,MAAM,eAAe,GAAI,uEAAqF,oBAAoB,4CAqEjI,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,69 @@
1
+ import { jsx as e, Fragment as o, jsxs as t } from "react/jsx-runtime";
2
+ import d from "./PlanStorageInfo.module.scss.js";
3
+ const s = ({ replicationSettings: p, storage: i, storagePath: n, disableTooltip: a = !0, inline: m = !0 }) => (console.log("replicationSettings :", p), /* @__PURE__ */ e(o, { children: p && p.enabled && p.storages.length > 0 ? /* @__PURE__ */ e(
4
+ "div",
5
+ {
6
+ className: `${d.planStorages} ${m ? d.inline : ""}`,
7
+ "data-tooltip-hidden": a,
8
+ "data-tooltip-id": "htmlToolTip",
9
+ "data-tooltip-place": "top",
10
+ "data-tooltip-html": `
11
+ <div style="display: flex; flex-direction: column; gap: 8px;">
12
+ <div>
13
+ <div style="display: flex; align-items: center; gap: 8px; margin-top: 4px;">
14
+ <img style="width: 24px; height: 24px;" src="/providers/${i == null ? void 0 : i.type}.png" />
15
+ <div>
16
+ <strong style="display: block;">${i == null ? void 0 : i.name}</strong>
17
+ ${n || "/"}
18
+ </div>
19
+ </div>
20
+ </div>
21
+ ${p.storages.slice(0, 3).map(
22
+ (l) => `
23
+ <div style="display: flex; align-items: center; gap: 8px; margin-top: 4px;">
24
+ <img style="width: 24px; height: 24px;" src="/providers/${l == null ? void 0 : l.storageType}.png" />
25
+ <div>
26
+ <strong style="display: block;">${l == null ? void 0 : l.storageName} (Mirror)</strong>
27
+ ${(l == null ? void 0 : l.storagePath) || "/"}
28
+ </div>
29
+ </div>
30
+ `
31
+ ).join("")}
32
+ </div>`,
33
+ children: /* @__PURE__ */ t("div", { className: d.storageWithReplications, children: [
34
+ /* @__PURE__ */ t("div", { className: d.storageIcons, children: [
35
+ /* @__PURE__ */ e("img", { src: `/providers/${i == null ? void 0 : i.type}.png` }),
36
+ p.storages.map((l, c) => /* @__PURE__ */ e("img", { src: `/providers/${l.storageType}.png`, style: { zIndex: 98 - c } }, l.replicationId))
37
+ ] }),
38
+ /* @__PURE__ */ t("div", { className: d.storageName, children: [
39
+ p.storages.length + 1,
40
+ " Storages"
41
+ ] })
42
+ ] })
43
+ }
44
+ ) : /* @__PURE__ */ t(
45
+ "div",
46
+ {
47
+ className: `${d.planStorages} ${m ? d.inline : ""}`,
48
+ "data-tooltip-hidden": a,
49
+ "data-tooltip-id": "htmlToolTip",
50
+ "data-tooltip-place": "top",
51
+ "data-tooltip-html": `
52
+ <div style="display: flex; align-items: center; gap: 8px; margin-top: 4px;">
53
+ <img style="width: 24px; height: 24px;" src="/providers/${i == null ? void 0 : i.type}.png" />
54
+ <div>
55
+ <strong style="display: block;">${i == null ? void 0 : i.name}</strong>
56
+ ${n || "/"}
57
+ </div>
58
+ </div>
59
+ `,
60
+ children: [
61
+ /* @__PURE__ */ e("img", { src: `/providers/${i == null ? void 0 : i.type}.png` }),
62
+ /* @__PURE__ */ e("div", { className: d.storageName, children: i == null ? void 0 : i.name })
63
+ ]
64
+ }
65
+ ) }));
66
+ export {
67
+ s as default
68
+ };
69
+ //# sourceMappingURL=PlanStorageInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanStorageInfo.js","sources":["../../../../src/components/Plan/PlanStorageInfo/PlanStorageInfo.tsx"],"sourcesContent":["import { PlanReplicationSettings } from '../../../@types';\r\nimport classes from './PlanStorageInfo.module.scss';\r\n\r\ninterface PlanStorageInfoProps {\r\n storage: { name: string; type: string; id: string };\r\n storagePath: string;\r\n replicationSettings?: PlanReplicationSettings;\r\n disableTooltip?: boolean;\r\n inline?: boolean;\r\n}\r\n\r\nconst PlanStorageInfo = ({ replicationSettings, storage, storagePath, disableTooltip = true, inline = true }: PlanStorageInfoProps) => {\r\n console.log('replicationSettings :', replicationSettings);\r\n return (\r\n <>\r\n {replicationSettings && replicationSettings.enabled && replicationSettings.storages.length > 0 ? (\r\n <div\r\n className={`${classes.planStorages} ${inline ? classes.inline : ''}`}\r\n data-tooltip-hidden={disableTooltip}\r\n data-tooltip-id=\"htmlToolTip\"\r\n data-tooltip-place=\"top\"\r\n data-tooltip-html={`\r\n <div style=\"display: flex; flex-direction: column; gap: 8px;\">\r\n <div>\r\n <div style=\"display: flex; align-items: center; gap: 8px; margin-top: 4px;\">\r\n <img style=\"width: 24px; height: 24px;\" src=\"/providers/${storage?.type}.png\" />\r\n <div>\r\n <strong style=\"display: block;\">${storage?.name}</strong>\r\n ${storagePath || '/'}\r\n </div>\r\n </div>\r\n </div>\r\n ${replicationSettings.storages\r\n .slice(0, 3)\r\n .map(\r\n (s) => `\r\n <div style=\"display: flex; align-items: center; gap: 8px; margin-top: 4px;\">\r\n <img style=\"width: 24px; height: 24px;\" src=\"/providers/${s?.storageType}.png\" />\r\n <div>\r\n <strong style=\"display: block;\">${s?.storageName} (Mirror)</strong>\r\n ${s?.storagePath || '/'}\r\n </div>\r\n </div>\r\n `,\r\n )\r\n .join('')}\r\n </div>`}\r\n >\r\n <div className={classes.storageWithReplications}>\r\n <div className={classes.storageIcons}>\r\n <img src={`/providers/${storage?.type}.png`} />\r\n {replicationSettings.storages.map((s, index) => (\r\n <img key={s.replicationId} src={`/providers/${s.storageType}.png`} style={{ zIndex: 98 - index }} />\r\n ))}\r\n </div>\r\n <div className={classes.storageName}>{replicationSettings.storages.length + 1} Storages</div>\r\n </div>\r\n </div>\r\n ) : (\r\n <div\r\n className={`${classes.planStorages} ${inline ? classes.inline : ''}`}\r\n data-tooltip-hidden={disableTooltip}\r\n data-tooltip-id=\"htmlToolTip\"\r\n data-tooltip-place=\"top\"\r\n data-tooltip-html={`\r\n <div style=\"display: flex; align-items: center; gap: 8px; margin-top: 4px;\">\r\n <img style=\"width: 24px; height: 24px;\" src=\"/providers/${storage?.type}.png\" />\r\n <div>\r\n <strong style=\"display: block;\">${storage?.name}</strong>\r\n ${storagePath || '/'}\r\n </div>\r\n </div>\r\n `}\r\n >\r\n <img src={`/providers/${storage?.type}.png`} />\r\n <div className={classes.storageName}>{storage?.name}</div>\r\n </div>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default PlanStorageInfo;\r\n"],"names":["PlanStorageInfo","replicationSettings","storage","storagePath","disableTooltip","inline","jsx","classes","s","jsxs","index"],"mappings":";;AAWA,MAAMA,IAAkB,CAAC,EAAE,qBAAAC,GAAqB,SAAAC,GAAS,aAAAC,GAAa,gBAAAC,IAAiB,IAAM,QAAAC,IAAS,UACnG,QAAQ,IAAI,yBAAyBJ,CAAmB,0BAGjD,UAAAA,KAAuBA,EAAoB,WAAWA,EAAoB,SAAS,SAAS,IAC1F,gBAAAK;AAAA,EAAC;AAAA,EAAA;AAAA,IACE,WAAW,GAAGC,EAAQ,YAAY,IAAIF,IAASE,EAAQ,SAAS,EAAE;AAAA,IAClE,uBAAqBH;AAAA,IACrB,mBAAgB;AAAA,IAChB,sBAAmB;AAAA,IACnB,qBAAmB;AAAA;AAAA;AAAA;AAAA,2FAIyDF,KAAA,gBAAAA,EAAS,IAAI;AAAA;AAAA,sEAElCA,KAAA,gBAAAA,EAAS,IAAI;AAAA,sCAC7CC,KAAe,GAAG;AAAA;AAAA;AAAA;AAAA,6BAI3BF,EAAoB,SAClB,MAAM,GAAG,CAAC,EACV;AAAA,MACE,CAACO,MAAM;AAAA;AAAA,2FAEmDA,KAAA,gBAAAA,EAAG,WAAW;AAAA;AAAA,sEAEnCA,KAAA,gBAAAA,EAAG,WAAW;AAAA,uCAC9CA,KAAA,gBAAAA,EAAG,gBAAe,GAAG;AAAA;AAAA;AAAA;AAAA,IAAA,EAK5B,KAAK,EAAE,CAAC;AAAA;AAAA,IAGxB,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWF,EAAQ,yBACrB,UAAA;AAAA,MAAA,gBAAAE,EAAC,OAAA,EAAI,WAAWF,EAAQ,cACrB,UAAA;AAAA,QAAA,gBAAAD,EAAC,OAAA,EAAI,KAAK,cAAcJ,KAAA,gBAAAA,EAAS,IAAI,QAAQ;AAAA,QAC5CD,EAAoB,SAAS,IAAI,CAACO,GAAGE,MACnC,gBAAAJ,EAAC,SAA0B,KAAK,cAAcE,EAAE,WAAW,QAAQ,OAAO,EAAE,QAAQ,KAAKE,EAAA,EAAM,GAArFF,EAAE,aAAsF,CACpG;AAAA,MAAA,GACJ;AAAA,MACA,gBAAAC,EAAC,OAAA,EAAI,WAAWF,EAAQ,aAAc,UAAA;AAAA,QAAAN,EAAoB,SAAS,SAAS;AAAA,QAAE;AAAA,MAAA,EAAA,CAAS;AAAA,IAAA,EAAA,CAC1F;AAAA,EAAA;AAAA,IAGH,gBAAAQ;AAAA,EAAC;AAAA,EAAA;AAAA,IACE,WAAW,GAAGF,EAAQ,YAAY,IAAIF,IAASE,EAAQ,SAAS,EAAE;AAAA,IAClE,uBAAqBH;AAAA,IACrB,mBAAgB;AAAA,IAChB,sBAAmB;AAAA,IACnB,qBAAmB;AAAA;AAAA,wFAEsDF,KAAA,gBAAAA,EAAS,IAAI;AAAA;AAAA,mEAElCA,KAAA,gBAAAA,EAAS,IAAI;AAAA,mCAC7CC,KAAe,GAAG;AAAA;AAAA;AAAA;AAAA,IAKtC,UAAA;AAAA,MAAA,gBAAAG,EAAC,OAAA,EAAI,KAAK,cAAcJ,KAAA,gBAAAA,EAAS,IAAI,QAAQ;AAAA,wBAC5C,OAAA,EAAI,WAAWK,EAAQ,aAAc,iCAAS,KAAA,CAAK;AAAA,IAAA;AAAA,EAAA;AAAA,GAG7D;"}
@@ -0,0 +1,16 @@
1
+ const s = "_planStorages_DdpLV", t = "_storageWithReplications_aJsXf", a = "_storageIcons_rXEQe", e = "_inline_QDGT4", o = "_storageName_VtLFx", n = {
2
+ planStorages: s,
3
+ storageWithReplications: t,
4
+ storageIcons: a,
5
+ inline: e,
6
+ storageName: o
7
+ };
8
+ export {
9
+ n as default,
10
+ e as inline,
11
+ s as planStorages,
12
+ a as storageIcons,
13
+ o as storageName,
14
+ t as storageWithReplications
15
+ };
16
+ //# sourceMappingURL=PlanStorageInfo.module.scss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanStorageInfo.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"RestoreConfirmStep.d.ts","sourceRoot":"","sources":["../../../../src/components/Restore/RestoreWizard/RestoreConfirmStep.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE/E,UAAU,uBAAuB;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,QAAA,MAAM,kBAAkB,GAAI,8EAA8E,uBAAuB,4CA2FhI,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"RestoreConfirmStep.d.ts","sourceRoot":"","sources":["../../../../src/components/Restore/RestoreWizard/RestoreConfirmStep.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE/E,UAAU,uBAAuB;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,QAAA,MAAM,kBAAkB,GAAI,8EAA8E,uBAAuB,4CA6FhI,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1,77 +1,79 @@
1
- import { jsxs as r, jsx as t, Fragment as p } from "react/jsx-runtime";
1
+ import { jsxs as o, jsx as s, Fragment as m } from "react/jsx-runtime";
2
2
  import { toast as P } from "react-toastify";
3
3
  import { useNavigate as R } from "react-router";
4
4
  import n from "../../common/Icon/Icon.js";
5
5
  import { useRestoreBackup as S } from "../../../services/restores.js";
6
- import o from "./RestoreWizard.module.scss.js";
7
- const j = ({ backupId: c, planId: h, settings: s, stats: f, snapshotsStats: g, method: y, goBack: N, close: a }) => {
8
- var u;
9
- const e = S(), v = R(), i = f, d = y === "sync", C = () => {
10
- console.log("restore :", c), e.mutate(
6
+ import t from "./RestoreWizard.module.scss.js";
7
+ const b = ({ backupId: c, planId: h, settings: e, stats: f, snapshotsStats: g, method: y, goBack: N, close: a }) => {
8
+ var p;
9
+ const r = S(), v = R(), i = f, d = y === "sync", C = () => {
10
+ console.log("restore :", c), r.mutate(
11
11
  {
12
12
  backupId: c,
13
13
  planId: h,
14
- overwrite: s.overwrite,
15
- target: s.type === "custom" ? s.path : "",
16
- includes: s.includes,
17
- excludes: s.excludes,
18
- deleteOption: s.delete
14
+ overwrite: e.overwrite,
15
+ target: e.type === "custom" ? e.path : "",
16
+ includes: e.includes,
17
+ excludes: e.excludes,
18
+ deleteOption: e.delete,
19
+ storageId: e.storageId,
20
+ replicationId: e.replicationId
19
21
  },
20
22
  {
21
23
  onSuccess: (w, l) => {
22
24
  console.log("Success :", w), P.success("Restore Started", { autoClose: 5e3 });
23
- const m = l == null ? void 0 : l.planId;
24
- m && v(`/plan/${m}?pendingrestore=1`), a();
25
+ const u = l == null ? void 0 : l.planId;
26
+ u && v(`/plan/${u}?pendingrestore=1`), a();
25
27
  }
26
28
  }
27
29
  );
28
30
  };
29
- return /* @__PURE__ */ r("div", { className: o.stepContent, children: [
30
- /* @__PURE__ */ r("div", { className: o.step, children: [
31
- !e.isSuccess && /* @__PURE__ */ r("div", { className: o.restoreConfirm, children: [
32
- /* @__PURE__ */ r("p", { children: [
33
- i ? /* @__PURE__ */ r("strong", { children: [
31
+ return /* @__PURE__ */ o("div", { className: t.stepContent, children: [
32
+ /* @__PURE__ */ o("div", { className: t.step, children: [
33
+ !r.isSuccess && /* @__PURE__ */ o("div", { className: t.restoreConfirm, children: [
34
+ /* @__PURE__ */ o("p", { children: [
35
+ i ? /* @__PURE__ */ o("strong", { children: [
34
36
  i == null ? void 0 : i.files_restored,
35
37
  d ? "" : `/${g.total_files} files`
36
38
  ] }) : `The content of the Backup (${c}) `,
37
39
  " ",
38
40
  "will be restored to",
39
41
  " ",
40
- /* @__PURE__ */ t("strong", { children: s.type === "original" ? d ? "the original source path" : "their original source paths" : `"${s.path}"` }),
42
+ /* @__PURE__ */ s("strong", { children: e.type === "original" ? d ? "the original source path" : "their original source paths" : `"${e.path}"` }),
41
43
  ". Are you sure you want to proceed with the Restore?"
42
44
  ] }),
43
- /* @__PURE__ */ t(
45
+ /* @__PURE__ */ s(
44
46
  "button",
45
47
  {
46
- className: `${o.restoreButton} ${e.isPending ? o.restoreDisabled : ""}`,
48
+ className: `${t.restoreButton} ${r.isPending ? t.restoreDisabled : ""}`,
47
49
  onClick: () => C(),
48
- disabled: e.isPending,
49
- children: e.isPending ? /* @__PURE__ */ r(p, { children: [
50
- /* @__PURE__ */ t(n, { type: "loading", size: 12 }),
50
+ disabled: r.isPending,
51
+ children: r.isPending ? /* @__PURE__ */ o(m, { children: [
52
+ /* @__PURE__ */ s(n, { type: "loading", size: 12 }),
51
53
  " Starting Restore..."
52
- ] }) : /* @__PURE__ */ r(p, { children: [
53
- /* @__PURE__ */ t(n, { type: "restore", size: 14 }),
54
+ ] }) : /* @__PURE__ */ o(m, { children: [
55
+ /* @__PURE__ */ s(n, { type: "restore", size: 14 }),
54
56
  " Yes, Restore"
55
57
  ] })
56
58
  }
57
59
  )
58
60
  ] }),
59
- e.isError && /* @__PURE__ */ r("div", { className: o.restoreError, children: [
60
- /* @__PURE__ */ t(n, { type: "error", size: 14, color: "red" }),
61
+ r.isError && /* @__PURE__ */ o("div", { className: t.restoreError, children: [
62
+ /* @__PURE__ */ s(n, { type: "error", size: 14, color: "red" }),
61
63
  " ",
62
- ((u = e.error) == null ? void 0 : u.message) || "Failed to Generate Preview"
64
+ ((p = r.error) == null ? void 0 : p.message) || "Failed to Generate Preview"
63
65
  ] })
64
66
  ] }),
65
- /* @__PURE__ */ r("div", { className: o.footer, children: [
66
- /* @__PURE__ */ t("div", { className: o.footerLeft, children: !e.isSuccess && /* @__PURE__ */ r("button", { className: o.backButton, onClick: () => N(), disabled: e.isPending, children: [
67
- /* @__PURE__ */ t(n, { type: "arrow-left", size: 14 }),
67
+ /* @__PURE__ */ o("div", { className: t.footer, children: [
68
+ /* @__PURE__ */ s("div", { className: t.footerLeft, children: !r.isSuccess && /* @__PURE__ */ o("button", { className: t.backButton, onClick: () => N(), disabled: r.isPending, children: [
69
+ /* @__PURE__ */ s(n, { type: "arrow-left", size: 14 }),
68
70
  " Back"
69
71
  ] }) }),
70
- /* @__PURE__ */ t("div", { className: o.footerRight, children: /* @__PURE__ */ t("button", { onClick: () => a(), disabled: e.isPending, children: "Cancel" }) })
72
+ /* @__PURE__ */ s("div", { className: t.footerRight, children: /* @__PURE__ */ s("button", { onClick: () => a(), disabled: r.isPending, children: "Cancel" }) })
71
73
  ] })
72
74
  ] });
73
75
  };
74
76
  export {
75
- j as default
77
+ b as default
76
78
  };
77
79
  //# sourceMappingURL=RestoreConfirmStep.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RestoreConfirmStep.js","sources":["../../../../src/components/Restore/RestoreWizard/RestoreConfirmStep.tsx"],"sourcesContent":["import { toast } from 'react-toastify';\r\nimport { useNavigate } from 'react-router';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport { useRestoreBackup } from '../../../services/restores';\r\nimport classes from './RestoreWizard.module.scss';\r\nimport { RestoredItemsStats, RestoreSettings } from '../../../@types/restores';\r\n\r\ninterface RestoreConfirmStepProps {\r\n backupId: string;\r\n planId: string;\r\n settings: RestoreSettings;\r\n stats: RestoredItemsStats | null;\r\n method: string;\r\n snapshotsStats: { total_files: number; total_bytes: number };\r\n goBack: () => void;\r\n close: () => void;\r\n}\r\n\r\nconst RestoreConfirmStep = ({ backupId, planId, settings, stats, snapshotsStats, method, goBack, close }: RestoreConfirmStepProps) => {\r\n const restoreMutation = useRestoreBackup();\r\n const navigate = useNavigate();\r\n const restoreStats = stats;\r\n const isSync = method === 'sync';\r\n\r\n const restoreBackup = () => {\r\n console.log('restore :', backupId);\r\n restoreMutation.mutate(\r\n {\r\n backupId,\r\n planId,\r\n overwrite: settings.overwrite,\r\n target: settings.type === 'custom' ? settings.path : '',\r\n includes: settings.includes,\r\n excludes: settings.excludes,\r\n deleteOption: settings.delete,\r\n },\r\n {\r\n onSuccess: (data: any, variables) => {\r\n console.log('Success :', data);\r\n toast.success(`Restore Started`, { autoClose: 5000 });\r\n const targetPlanId = variables?.planId;\r\n if (targetPlanId) {\r\n navigate(`/plan/${targetPlanId}?pendingrestore=1`);\r\n }\r\n close();\r\n },\r\n },\r\n );\r\n };\r\n\r\n return (\r\n <div className={classes.stepContent}>\r\n <div className={classes.step}>\r\n {!restoreMutation.isSuccess && (\r\n <div className={classes.restoreConfirm}>\r\n <p>\r\n {restoreStats ? (\r\n <strong>\r\n {restoreStats?.files_restored}\r\n {!isSync ? `/${snapshotsStats.total_files} files` : ''}\r\n </strong>\r\n ) : (\r\n `The content of the Backup (${backupId}) `\r\n )}{' '}\r\n will be restored to{' '}\r\n <strong>\r\n {settings.type === 'original' ? (isSync ? 'the original source path' : 'their original source paths') : `\"${settings.path}\"`}\r\n </strong>\r\n . Are you sure you want to proceed with the Restore?\r\n </p>\r\n <button\r\n className={`${classes.restoreButton} ${restoreMutation.isPending ? classes.restoreDisabled : ''}`}\r\n onClick={() => restoreBackup()}\r\n disabled={restoreMutation.isPending}\r\n >\r\n {restoreMutation.isPending ? (\r\n <>\r\n <Icon type=\"loading\" size={12} /> Starting Restore...\r\n </>\r\n ) : (\r\n <>\r\n <Icon type=\"restore\" size={14} /> Yes, Restore\r\n </>\r\n )}\r\n </button>\r\n </div>\r\n )}\r\n {restoreMutation.isError && (\r\n <div className={classes.restoreError}>\r\n <Icon type=\"error\" size={14} color=\"red\" /> {restoreMutation.error?.message || 'Failed to Generate Preview'}\r\n </div>\r\n )}\r\n </div>\r\n <div className={classes.footer}>\r\n <div className={classes.footerLeft}>\r\n {!restoreMutation.isSuccess && (\r\n <button className={classes.backButton} onClick={() => goBack()} disabled={restoreMutation.isPending}>\r\n <Icon type=\"arrow-left\" size={14} /> Back\r\n </button>\r\n )}\r\n </div>\r\n <div className={classes.footerRight}>\r\n <button onClick={() => close()} disabled={restoreMutation.isPending}>\r\n Cancel\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default RestoreConfirmStep;\r\n"],"names":["RestoreConfirmStep","backupId","planId","settings","stats","snapshotsStats","method","goBack","close","restoreMutation","useRestoreBackup","navigate","useNavigate","restoreStats","isSync","restoreBackup","data","variables","toast","targetPlanId","jsxs","classes","jsx","Fragment","Icon","_a"],"mappings":"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"}
1
+ {"version":3,"file":"RestoreConfirmStep.js","sources":["../../../../src/components/Restore/RestoreWizard/RestoreConfirmStep.tsx"],"sourcesContent":["import { toast } from 'react-toastify';\r\nimport { useNavigate } from 'react-router';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport { useRestoreBackup } from '../../../services/restores';\r\nimport classes from './RestoreWizard.module.scss';\r\nimport { RestoredItemsStats, RestoreSettings } from '../../../@types/restores';\r\n\r\ninterface RestoreConfirmStepProps {\r\n backupId: string;\r\n planId: string;\r\n settings: RestoreSettings;\r\n stats: RestoredItemsStats | null;\r\n method: string;\r\n snapshotsStats: { total_files: number; total_bytes: number };\r\n goBack: () => void;\r\n close: () => void;\r\n}\r\n\r\nconst RestoreConfirmStep = ({ backupId, planId, settings, stats, snapshotsStats, method, goBack, close }: RestoreConfirmStepProps) => {\r\n const restoreMutation = useRestoreBackup();\r\n const navigate = useNavigate();\r\n const restoreStats = stats;\r\n const isSync = method === 'sync';\r\n\r\n const restoreBackup = () => {\r\n console.log('restore :', backupId);\r\n restoreMutation.mutate(\r\n {\r\n backupId,\r\n planId,\r\n overwrite: settings.overwrite,\r\n target: settings.type === 'custom' ? settings.path : '',\r\n includes: settings.includes,\r\n excludes: settings.excludes,\r\n deleteOption: settings.delete,\r\n storageId: settings.storageId,\r\n replicationId: settings.replicationId,\r\n },\r\n {\r\n onSuccess: (data: any, variables) => {\r\n console.log('Success :', data);\r\n toast.success(`Restore Started`, { autoClose: 5000 });\r\n const targetPlanId = variables?.planId;\r\n if (targetPlanId) {\r\n navigate(`/plan/${targetPlanId}?pendingrestore=1`);\r\n }\r\n close();\r\n },\r\n },\r\n );\r\n };\r\n\r\n return (\r\n <div className={classes.stepContent}>\r\n <div className={classes.step}>\r\n {!restoreMutation.isSuccess && (\r\n <div className={classes.restoreConfirm}>\r\n <p>\r\n {restoreStats ? (\r\n <strong>\r\n {restoreStats?.files_restored}\r\n {!isSync ? `/${snapshotsStats.total_files} files` : ''}\r\n </strong>\r\n ) : (\r\n `The content of the Backup (${backupId}) `\r\n )}{' '}\r\n will be restored to{' '}\r\n <strong>\r\n {settings.type === 'original' ? (isSync ? 'the original source path' : 'their original source paths') : `\"${settings.path}\"`}\r\n </strong>\r\n . Are you sure you want to proceed with the Restore?\r\n </p>\r\n <button\r\n className={`${classes.restoreButton} ${restoreMutation.isPending ? classes.restoreDisabled : ''}`}\r\n onClick={() => restoreBackup()}\r\n disabled={restoreMutation.isPending}\r\n >\r\n {restoreMutation.isPending ? (\r\n <>\r\n <Icon type=\"loading\" size={12} /> Starting Restore...\r\n </>\r\n ) : (\r\n <>\r\n <Icon type=\"restore\" size={14} /> Yes, Restore\r\n </>\r\n )}\r\n </button>\r\n </div>\r\n )}\r\n {restoreMutation.isError && (\r\n <div className={classes.restoreError}>\r\n <Icon type=\"error\" size={14} color=\"red\" /> {restoreMutation.error?.message || 'Failed to Generate Preview'}\r\n </div>\r\n )}\r\n </div>\r\n <div className={classes.footer}>\r\n <div className={classes.footerLeft}>\r\n {!restoreMutation.isSuccess && (\r\n <button className={classes.backButton} onClick={() => goBack()} disabled={restoreMutation.isPending}>\r\n <Icon type=\"arrow-left\" size={14} /> Back\r\n </button>\r\n )}\r\n </div>\r\n <div className={classes.footerRight}>\r\n <button onClick={() => close()} disabled={restoreMutation.isPending}>\r\n Cancel\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default RestoreConfirmStep;\r\n"],"names":["RestoreConfirmStep","backupId","planId","settings","stats","snapshotsStats","method","goBack","close","restoreMutation","useRestoreBackup","navigate","useNavigate","restoreStats","isSync","restoreBackup","data","variables","toast","targetPlanId","jsxs","classes","jsx","Fragment","Icon","_a"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RestorePreviewStep.d.ts","sourceRoot":"","sources":["../../../../src/components/Restore/RestoreWizard/RestorePreviewStep.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAIjG,UAAU,uBAAuB;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE;QAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAC;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,CAAC,OAAO,EAAE,uBAAuB,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IACrE,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,QAAA,MAAM,kBAAkB,GAAI,0FAA0F,uBAAuB,4CAsG5I,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"RestorePreviewStep.d.ts","sourceRoot":"","sources":["../../../../src/components/Restore/RestoreWizard/RestorePreviewStep.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAIjG,UAAU,uBAAuB;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE;QAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAC;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,CAAC,OAAO,EAAE,uBAAuB,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IACrE,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,QAAA,MAAM,kBAAkB,GAAI,0FAA0F,uBAAuB,4CAwG5I,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -4,9 +4,9 @@ import o from "./RestoreWizard.module.scss.js";
4
4
  import { useGetDryRestoreStats as R } from "../../../services/restores.js";
5
5
  import B from "../RestoredFileBrowser/RestoredFileBrowser.js";
6
6
  import d from "../../common/Icon/Icon.js";
7
- const E = ({ backupId: n, planId: w, settings: e, preview: m, nextLabel: y, goBack: v, updatePreview: a, goNext: N, close: P }) => {
8
- var p;
9
- const c = m.stats, b = m.files || [], r = window[`pluton-restore-prev-${n}-settings`], t = R();
7
+ const E = ({ backupId: n, planId: w, settings: e, preview: p, nextLabel: y, goBack: v, updatePreview: a, goNext: N, close: P }) => {
8
+ var m;
9
+ const c = p.stats, b = p.files || [], r = window[`pluton-restore-prev-${n}-settings`], t = R();
10
10
  C(() => {
11
11
  if ((e.includes !== (r == null ? void 0 : r.includes) || e.excludes !== (r == null ? void 0 : r.excludes)) && (a({ files: [], stats: null }), t.reset()), e.delete !== (r == null ? void 0 : r.delete) && (a({ files: [], stats: null }), t.reset()), e.type === "custom" && e.path || e.type === "original") {
12
12
  const l = r && (r.type !== e.type || r.path !== e.path || r.overwrite !== e.overwrite);
@@ -22,7 +22,9 @@ const E = ({ backupId: n, planId: w, settings: e, preview: m, nextLabel: y, goBa
22
22
  overwrite: e.overwrite,
23
23
  includes: e.includes,
24
24
  excludes: e.excludes,
25
- deleteOption: e.delete
25
+ deleteOption: e.delete,
26
+ storageId: e.storageId,
27
+ replicationId: e.replicationId
26
28
  },
27
29
  {
28
30
  onSuccess: (l) => {
@@ -35,7 +37,7 @@ const E = ({ backupId: n, planId: w, settings: e, preview: m, nextLabel: y, goBa
35
37
  return console.log("[RestorePreviewStep] :", e, c), /* @__PURE__ */ i("div", { className: o.stepContent, children: [
36
38
  /* @__PURE__ */ i("div", { className: o.step, children: [
37
39
  !c && /* @__PURE__ */ i("div", { className: `${o.preview} ${c ? "" : o.previewEmpty}`, children: [
38
- t.isError && /* @__PURE__ */ s("div", { className: o.previewError, children: ((p = t.error) == null ? void 0 : p.message) || "Failed to Generate Preview" }),
40
+ t.isError && /* @__PURE__ */ s("div", { className: o.previewError, children: ((m = t.error) == null ? void 0 : m.message) || "Failed to Generate Preview" }),
39
41
  /* @__PURE__ */ s("p", { children: "Before proceeding with the restoration, perform a dry run to preview what files will be restored" }),
40
42
  /* @__PURE__ */ s(
41
43
  "button",
@@ -1 +1 @@
1
- {"version":3,"file":"RestorePreviewStep.js","sources":["../../../../src/components/Restore/RestoreWizard/RestorePreviewStep.tsx"],"sourcesContent":["import { useEffect } from 'react';\r\nimport classes from './RestoreWizard.module.scss';\r\nimport { useGetDryRestoreStats } from '../../../services/restores';\r\nimport { RestoredFileItem, RestoredItemsStats, RestoreSettings } from '../../../@types/restores';\r\nimport RestoredFileBrowser from '../RestoredFileBrowser/RestoredFileBrowser';\r\nimport Icon from '../../common/Icon/Icon';\r\n\r\ninterface RestorePreviewStepProps {\r\n backupId: string;\r\n planId: string;\r\n settings: RestoreSettings;\r\n preview: { stats: RestoredItemsStats | null; files: RestoredFileItem[] };\r\n nextLabel?: string;\r\n updatePreview: (preview: RestorePreviewStepProps['preview']) => void;\r\n goBack: () => void;\r\n goNext: () => void;\r\n close: () => void;\r\n}\r\n\r\nconst RestorePreviewStep = ({ backupId, planId, settings, preview, nextLabel, goBack, updatePreview, goNext, close }: RestorePreviewStepProps) => {\r\n const restoreStats = preview.stats;\r\n const restoredFiles = preview.files || [];\r\n // const [previousSettings, setPreviousSettings] = useState({ type: 'original', path: '', overwrite: 'always' });\r\n const previousSettings: undefined | RestorePreviewStepProps['settings'] = (window as any)[`pluton-restore-prev-${backupId}-settings`];\r\n const restoreStatsMutation = useGetDryRestoreStats();\r\n\r\n useEffect(() => {\r\n if (settings.includes !== previousSettings?.includes || settings.excludes !== previousSettings?.excludes) {\r\n updatePreview({ files: [], stats: null });\r\n restoreStatsMutation.reset();\r\n }\r\n if (settings.delete !== previousSettings?.delete) {\r\n updatePreview({ files: [], stats: null });\r\n restoreStatsMutation.reset();\r\n }\r\n if ((settings.type === 'custom' && settings.path) || settings.type === 'original') {\r\n const settingsChanged =\r\n previousSettings &&\r\n (previousSettings.type !== settings.type || previousSettings.path !== settings.path || previousSettings.overwrite !== settings.overwrite);\r\n console.log('settingsChanged :', settingsChanged, settings, previousSettings);\r\n if (settingsChanged) {\r\n updatePreview({ files: [], stats: null });\r\n restoreStatsMutation.reset();\r\n }\r\n }\r\n }, [settings, previousSettings]);\r\n\r\n const getDryRestoreStats = () => {\r\n console.log('restore :', backupId);\r\n\r\n restoreStatsMutation.mutate(\r\n {\r\n backupId: backupId,\r\n planId,\r\n target: settings.type === 'custom' ? settings.path : '',\r\n overwrite: settings.overwrite,\r\n includes: settings.includes,\r\n excludes: settings.excludes,\r\n deleteOption: settings.delete,\r\n },\r\n {\r\n onSuccess: (data) => {\r\n console.log('getDryRestoreStats Data :', data);\r\n updatePreview({ files: data?.result?.files || [], stats: data?.result?.stats || null });\r\n (window as any)[`pluton-restore-prev-${backupId}-settings`] = settings;\r\n },\r\n },\r\n );\r\n };\r\n\r\n console.log('[RestorePreviewStep] :', settings, restoreStats);\r\n\r\n return (\r\n <div className={classes.stepContent}>\r\n <div className={classes.step}>\r\n {!restoreStats && (\r\n <div className={`${classes.preview} ${!restoreStats ? classes.previewEmpty : ''}`}>\r\n {restoreStatsMutation.isError && (\r\n <div className={classes.previewError}>{restoreStatsMutation.error?.message || 'Failed to Generate Preview'}</div>\r\n )}\r\n <p>Before proceeding with the restoration, perform a dry run to preview what files will be restored</p>\r\n <button\r\n className={`${classes.previewButton} ${restoreStatsMutation.isPending ? classes.restoreDisabled : ''}`}\r\n onClick={() => getDryRestoreStats()}\r\n disabled={restoreStatsMutation.isPending}\r\n >\r\n {restoreStatsMutation.isPending ? (\r\n <>\r\n <Icon type=\"loading\" size={12} /> Generating Preview...\r\n </>\r\n ) : (\r\n <>\r\n <Icon type=\"eye\" size={13} /> Generate Preview\r\n </>\r\n )}\r\n </button>\r\n </div>\r\n )}\r\n {restoreStats && <RestoredFileBrowser files={restoredFiles} stats={restoreStats} isPreview={true} />}\r\n </div>\r\n <div className={classes.footer}>\r\n <div className={classes.footerLeft}>\r\n <button className={classes.backButton} onClick={() => goBack()} disabled={restoreStatsMutation.isPending}>\r\n <Icon type=\"arrow-left\" size={14} /> Back\r\n </button>\r\n </div>\r\n <div className={classes.footerRight}>\r\n <button onClick={() => close()} disabled={restoreStatsMutation.isPending}>\r\n Cancel\r\n </button>\r\n <button\r\n title={!restoreStats ? 'Generate the Preview First' : ''}\r\n className={!restoreStats ? classes.restoreDisabled : ''}\r\n onClick={() => ((settings.type === 'custom' && settings.path) || settings.type === 'original') && restoreStats && goNext()}\r\n >\r\n {nextLabel || 'Next: Restore Backup'} <Icon type=\"arrow-right\" size={14} />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default RestorePreviewStep;\r\n"],"names":["RestorePreviewStep","backupId","planId","settings","preview","nextLabel","goBack","updatePreview","goNext","close","restoreStats","restoredFiles","previousSettings","restoreStatsMutation","useGetDryRestoreStats","useEffect","settingsChanged","getDryRestoreStats","data","_a","_b","jsxs","classes","jsx","Fragment","Icon","RestoredFileBrowser"],"mappings":"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"}
1
+ {"version":3,"file":"RestorePreviewStep.js","sources":["../../../../src/components/Restore/RestoreWizard/RestorePreviewStep.tsx"],"sourcesContent":["import { useEffect } from 'react';\r\nimport classes from './RestoreWizard.module.scss';\r\nimport { useGetDryRestoreStats } from '../../../services/restores';\r\nimport { RestoredFileItem, RestoredItemsStats, RestoreSettings } from '../../../@types/restores';\r\nimport RestoredFileBrowser from '../RestoredFileBrowser/RestoredFileBrowser';\r\nimport Icon from '../../common/Icon/Icon';\r\n\r\ninterface RestorePreviewStepProps {\r\n backupId: string;\r\n planId: string;\r\n settings: RestoreSettings;\r\n preview: { stats: RestoredItemsStats | null; files: RestoredFileItem[] };\r\n nextLabel?: string;\r\n updatePreview: (preview: RestorePreviewStepProps['preview']) => void;\r\n goBack: () => void;\r\n goNext: () => void;\r\n close: () => void;\r\n}\r\n\r\nconst RestorePreviewStep = ({ backupId, planId, settings, preview, nextLabel, goBack, updatePreview, goNext, close }: RestorePreviewStepProps) => {\r\n const restoreStats = preview.stats;\r\n const restoredFiles = preview.files || [];\r\n // const [previousSettings, setPreviousSettings] = useState({ type: 'original', path: '', overwrite: 'always' });\r\n const previousSettings: undefined | RestorePreviewStepProps['settings'] = (window as any)[`pluton-restore-prev-${backupId}-settings`];\r\n const restoreStatsMutation = useGetDryRestoreStats();\r\n\r\n useEffect(() => {\r\n if (settings.includes !== previousSettings?.includes || settings.excludes !== previousSettings?.excludes) {\r\n updatePreview({ files: [], stats: null });\r\n restoreStatsMutation.reset();\r\n }\r\n if (settings.delete !== previousSettings?.delete) {\r\n updatePreview({ files: [], stats: null });\r\n restoreStatsMutation.reset();\r\n }\r\n if ((settings.type === 'custom' && settings.path) || settings.type === 'original') {\r\n const settingsChanged =\r\n previousSettings &&\r\n (previousSettings.type !== settings.type || previousSettings.path !== settings.path || previousSettings.overwrite !== settings.overwrite);\r\n console.log('settingsChanged :', settingsChanged, settings, previousSettings);\r\n if (settingsChanged) {\r\n updatePreview({ files: [], stats: null });\r\n restoreStatsMutation.reset();\r\n }\r\n }\r\n }, [settings, previousSettings]);\r\n\r\n const getDryRestoreStats = () => {\r\n console.log('restore :', backupId);\r\n\r\n restoreStatsMutation.mutate(\r\n {\r\n backupId: backupId,\r\n planId,\r\n target: settings.type === 'custom' ? settings.path : '',\r\n overwrite: settings.overwrite,\r\n includes: settings.includes,\r\n excludes: settings.excludes,\r\n deleteOption: settings.delete,\r\n storageId: settings.storageId,\r\n replicationId: settings.replicationId,\r\n },\r\n {\r\n onSuccess: (data) => {\r\n console.log('getDryRestoreStats Data :', data);\r\n updatePreview({ files: data?.result?.files || [], stats: data?.result?.stats || null });\r\n (window as any)[`pluton-restore-prev-${backupId}-settings`] = settings;\r\n },\r\n },\r\n );\r\n };\r\n\r\n console.log('[RestorePreviewStep] :', settings, restoreStats);\r\n\r\n return (\r\n <div className={classes.stepContent}>\r\n <div className={classes.step}>\r\n {!restoreStats && (\r\n <div className={`${classes.preview} ${!restoreStats ? classes.previewEmpty : ''}`}>\r\n {restoreStatsMutation.isError && (\r\n <div className={classes.previewError}>{restoreStatsMutation.error?.message || 'Failed to Generate Preview'}</div>\r\n )}\r\n <p>Before proceeding with the restoration, perform a dry run to preview what files will be restored</p>\r\n <button\r\n className={`${classes.previewButton} ${restoreStatsMutation.isPending ? classes.restoreDisabled : ''}`}\r\n onClick={() => getDryRestoreStats()}\r\n disabled={restoreStatsMutation.isPending}\r\n >\r\n {restoreStatsMutation.isPending ? (\r\n <>\r\n <Icon type=\"loading\" size={12} /> Generating Preview...\r\n </>\r\n ) : (\r\n <>\r\n <Icon type=\"eye\" size={13} /> Generate Preview\r\n </>\r\n )}\r\n </button>\r\n </div>\r\n )}\r\n {restoreStats && <RestoredFileBrowser files={restoredFiles} stats={restoreStats} isPreview={true} />}\r\n </div>\r\n <div className={classes.footer}>\r\n <div className={classes.footerLeft}>\r\n <button className={classes.backButton} onClick={() => goBack()} disabled={restoreStatsMutation.isPending}>\r\n <Icon type=\"arrow-left\" size={14} /> Back\r\n </button>\r\n </div>\r\n <div className={classes.footerRight}>\r\n <button onClick={() => close()} disabled={restoreStatsMutation.isPending}>\r\n Cancel\r\n </button>\r\n <button\r\n title={!restoreStats ? 'Generate the Preview First' : ''}\r\n className={!restoreStats ? classes.restoreDisabled : ''}\r\n onClick={() => ((settings.type === 'custom' && settings.path) || settings.type === 'original') && restoreStats && goNext()}\r\n >\r\n {nextLabel || 'Next: Restore Backup'} <Icon type=\"arrow-right\" size={14} />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default RestorePreviewStep;\r\n"],"names":["RestorePreviewStep","backupId","planId","settings","preview","nextLabel","goBack","updatePreview","goNext","close","restoreStats","restoredFiles","previousSettings","restoreStatsMutation","useGetDryRestoreStats","useEffect","settingsChanged","getDryRestoreStats","data","_a","_b","jsxs","classes","jsx","Fragment","Icon","RestoredFileBrowser"],"mappings":"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"}
@@ -1,11 +1,19 @@
1
1
  import { RestoreSettings } from '../../../@types/restores';
2
- interface settingsStepProps {
2
+ import { Backup } from '../../..';
3
+ interface RestoreSettingsStepProps {
3
4
  backupId: string;
5
+ deviceId: string;
4
6
  settings: RestoreSettings;
5
- updateSettings: (settings: settingsStepProps['settings']) => void;
7
+ mirrors?: Backup['mirrors'];
8
+ primaryStorage: {
9
+ id: string;
10
+ type: string;
11
+ name: string;
12
+ };
13
+ updateSettings: (settings: RestoreSettingsStepProps['settings']) => void;
6
14
  goNext: () => void;
7
15
  close: () => void;
8
16
  }
9
- declare const settingsStep: ({ backupId, settings, updateSettings, goNext, close }: settingsStepProps) => import("react/jsx-runtime").JSX.Element;
10
- export default settingsStep;
17
+ declare const RestoreSettingsStep: ({ settings, mirrors, primaryStorage, updateSettings, goNext, close, deviceId }: RestoreSettingsStepProps) => import("react/jsx-runtime").JSX.Element;
18
+ export default RestoreSettingsStep;
11
19
  //# sourceMappingURL=RestoreSettingsStep.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RestoreSettingsStep.d.ts","sourceRoot":"","sources":["../../../../src/components/Restore/RestoreWizard/RestoreSettingsStep.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG3D,UAAU,iBAAiB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,eAAe,CAAC;IAC1B,cAAc,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IAClE,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,QAAA,MAAM,YAAY,GAAI,uDAAuD,iBAAiB,4CAuJ7F,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"RestoreSettingsStep.d.ts","sourceRoot":"","sources":["../../../../src/components/Restore/RestoreWizard/RestoreSettingsStep.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,UAAU,wBAAwB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5B,cAAc,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,cAAc,EAAE,CAAC,QAAQ,EAAE,wBAAwB,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IACzE,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,QAAA,MAAM,mBAAmB,GAAI,gFAAqF,wBAAwB,4CA0KzI,CAAC;AAEF,eAAe,mBAAmB,CAAC"}