@plutonhq/core-frontend 0.1.13 → 0.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/dist-lib/@types/backups.d.ts +26 -0
  2. package/dist-lib/@types/backups.d.ts.map +1 -1
  3. package/dist-lib/@types/devices.d.ts +7 -0
  4. package/dist-lib/@types/devices.d.ts.map +1 -1
  5. package/dist-lib/@types/plans.d.ts +21 -1
  6. package/dist-lib/@types/plans.d.ts.map +1 -1
  7. package/dist-lib/@types/restores.d.ts +2 -0
  8. package/dist-lib/@types/restores.d.ts.map +1 -1
  9. package/dist-lib/components/Device/DeviceBackups/DeviceBackups.d.ts +3 -2
  10. package/dist-lib/components/Device/DeviceBackups/DeviceBackups.d.ts.map +1 -1
  11. package/dist-lib/components/Device/DeviceBackups/DeviceBackups.js +73 -85
  12. package/dist-lib/components/Device/DeviceBackups/DeviceBackups.js.map +1 -1
  13. package/dist-lib/components/Plan/BackupEvents/BackupEvents.d.ts.map +1 -1
  14. package/dist-lib/components/Plan/BackupEvents/BackupEvents.js +88 -50
  15. package/dist-lib/components/Plan/BackupEvents/BackupEvents.js.map +1 -1
  16. package/dist-lib/components/Plan/BackupEvents/BackupEvents.module.scss.js +70 -38
  17. package/dist-lib/components/Plan/BackupEvents/BackupEvents.module.scss.js.map +1 -1
  18. package/dist-lib/components/Plan/BackupProgress/BackupProgress.d.ts.map +1 -1
  19. package/dist-lib/components/Plan/BackupProgress/BackupProgress.js +166 -123
  20. package/dist-lib/components/Plan/BackupProgress/BackupProgress.js.map +1 -1
  21. package/dist-lib/components/Plan/BackupProgress/BackupProgress.module.scss.js +64 -30
  22. package/dist-lib/components/Plan/BackupProgress/BackupProgress.module.scss.js.map +1 -1
  23. package/dist-lib/components/Plan/Backups/Backups.d.ts +8 -1
  24. package/dist-lib/components/Plan/Backups/Backups.d.ts.map +1 -1
  25. package/dist-lib/components/Plan/Backups/Backups.js +154 -125
  26. package/dist-lib/components/Plan/Backups/Backups.js.map +1 -1
  27. package/dist-lib/components/Plan/EditPlan/EditPlan.d.ts.map +1 -1
  28. package/dist-lib/components/Plan/EditPlan/EditPlan.js +11 -10
  29. package/dist-lib/components/Plan/EditPlan/EditPlan.js.map +1 -1
  30. package/dist-lib/components/Plan/Mirrors/MirrorDetails.d.ts +12 -0
  31. package/dist-lib/components/Plan/Mirrors/MirrorDetails.d.ts.map +1 -0
  32. package/dist-lib/components/Plan/Mirrors/MirrorDetails.js +68 -0
  33. package/dist-lib/components/Plan/Mirrors/MirrorDetails.js.map +1 -0
  34. package/dist-lib/components/Plan/Mirrors/MirrorDetails.module.scss.js +26 -0
  35. package/dist-lib/components/Plan/Mirrors/MirrorDetails.module.scss.js.map +1 -0
  36. package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.d.ts +11 -0
  37. package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.d.ts.map +1 -0
  38. package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.js +38 -0
  39. package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.js.map +1 -0
  40. package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.module.scss.js +16 -0
  41. package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.module.scss.js.map +1 -0
  42. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.d.ts +14 -0
  43. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.d.ts.map +1 -0
  44. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.js +54 -0
  45. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.js.map +1 -0
  46. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.module.scss.js +26 -0
  47. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.module.scss.js.map +1 -0
  48. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelectorModal.d.ts +15 -0
  49. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelectorModal.d.ts.map +1 -0
  50. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelectorModal.js +34 -0
  51. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelectorModal.js.map +1 -0
  52. package/dist-lib/components/Plan/PlanBackups/PlanBackups.d.ts.map +1 -1
  53. package/dist-lib/components/Plan/PlanBackups/PlanBackups.js +20 -17
  54. package/dist-lib/components/Plan/PlanBackups/PlanBackups.js.map +1 -1
  55. package/dist-lib/components/Plan/PlanForm/PlanForm.d.ts +2 -1
  56. package/dist-lib/components/Plan/PlanForm/PlanForm.d.ts.map +1 -1
  57. package/dist-lib/components/Plan/PlanForm/PlanForm.js +85 -58
  58. package/dist-lib/components/Plan/PlanForm/PlanForm.js.map +1 -1
  59. package/dist-lib/components/Plan/PlanItems/PlanItem.d.ts.map +1 -1
  60. package/dist-lib/components/Plan/PlanItems/PlanItem.js +58 -59
  61. package/dist-lib/components/Plan/PlanItems/PlanItem.js.map +1 -1
  62. package/dist-lib/components/Plan/PlanRemoveModal/PlanRemoveModal.js +8 -8
  63. package/dist-lib/components/Plan/PlanRemoveModal/PlanRemoveModal.js.map +1 -1
  64. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.d.ts +14 -0
  65. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.d.ts.map +1 -0
  66. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.js +290 -0
  67. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.js.map +1 -0
  68. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.module.scss.js +26 -0
  69. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.module.scss.js.map +1 -0
  70. package/dist-lib/components/Plan/PlanStats/PlanStats.d.ts.map +1 -1
  71. package/dist-lib/components/Plan/PlanStats/PlanStats.js +41 -42
  72. package/dist-lib/components/Plan/PlanStats/PlanStats.js.map +1 -1
  73. package/dist-lib/components/Plan/PlanStats/PlanStats.module.scss.js +5 -5
  74. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.d.ts +15 -0
  75. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.d.ts.map +1 -0
  76. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.js +69 -0
  77. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.js.map +1 -0
  78. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.module.scss.js +16 -0
  79. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.module.scss.js.map +1 -0
  80. package/dist-lib/components/Restore/RestoreWizard/RestoreConfirmStep.d.ts.map +1 -1
  81. package/dist-lib/components/Restore/RestoreWizard/RestoreConfirmStep.js +36 -34
  82. package/dist-lib/components/Restore/RestoreWizard/RestoreConfirmStep.js.map +1 -1
  83. package/dist-lib/components/Restore/RestoreWizard/RestorePreviewStep.d.ts.map +1 -1
  84. package/dist-lib/components/Restore/RestoreWizard/RestorePreviewStep.js +7 -5
  85. package/dist-lib/components/Restore/RestoreWizard/RestorePreviewStep.js.map +1 -1
  86. package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.d.ts +12 -4
  87. package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.d.ts.map +1 -1
  88. package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.js +44 -32
  89. package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.js.map +1 -1
  90. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.d.ts +5 -1
  91. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.d.ts.map +1 -1
  92. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.js +48 -44
  93. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.js.map +1 -1
  94. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.module.scss.js +32 -32
  95. package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.js +14 -14
  96. package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.js.map +1 -1
  97. package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.d.ts.map +1 -1
  98. package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.js +28 -19
  99. package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.js.map +1 -1
  100. package/dist-lib/components/common/Icon/Icon.d.ts.map +1 -1
  101. package/dist-lib/components/common/Icon/Icon.js +11 -0
  102. package/dist-lib/components/common/Icon/Icon.js.map +1 -1
  103. package/dist-lib/components/common/PageHeader/PageHeader.module.scss.js +6 -6
  104. package/dist-lib/components/index.d.ts +4 -0
  105. package/dist-lib/components/index.d.ts.map +1 -1
  106. package/dist-lib/components.js +86 -78
  107. package/dist-lib/components.js.map +1 -1
  108. package/dist-lib/hooks/usePwaAutoUpdate.d.ts +11 -2
  109. package/dist-lib/hooks/usePwaAutoUpdate.d.ts.map +1 -1
  110. package/dist-lib/hooks/usePwaAutoUpdate.js +32 -10
  111. package/dist-lib/hooks/usePwaAutoUpdate.js.map +1 -1
  112. package/dist-lib/router.d.ts.map +1 -1
  113. package/dist-lib/router.js +46 -35
  114. package/dist-lib/router.js.map +1 -1
  115. package/dist-lib/routes/DeviceSingle/DeviceSingle.d.ts.map +1 -1
  116. package/dist-lib/routes/DeviceSingle/DeviceSingle.js +40 -40
  117. package/dist-lib/routes/DeviceSingle/DeviceSingle.js.map +1 -1
  118. package/dist-lib/services/backups.d.ts +15 -2
  119. package/dist-lib/services/backups.d.ts.map +1 -1
  120. package/dist-lib/services/backups.js +119 -100
  121. package/dist-lib/services/backups.js.map +1 -1
  122. package/dist-lib/services/plans.d.ts +14 -0
  123. package/dist-lib/services/plans.d.ts.map +1 -1
  124. package/dist-lib/services/plans.js +160 -129
  125. package/dist-lib/services/plans.js.map +1 -1
  126. package/dist-lib/services/restores.d.ts +10 -2
  127. package/dist-lib/services/restores.d.ts.map +1 -1
  128. package/dist-lib/services/restores.js +61 -57
  129. package/dist-lib/services/restores.js.map +1 -1
  130. package/dist-lib/services/users.d.ts.map +1 -1
  131. package/dist-lib/services/users.js +32 -32
  132. package/dist-lib/services/users.js.map +1 -1
  133. package/dist-lib/services.js +107 -103
  134. package/dist-lib/styles/core-frontend.css +1 -1
  135. package/dist-lib/utils/progressHelpers.d.ts +12 -1
  136. package/dist-lib/utils/progressHelpers.d.ts.map +1 -1
  137. package/dist-lib/utils/progressHelpers.js +121 -63
  138. package/dist-lib/utils/progressHelpers.js.map +1 -1
  139. package/dist-lib/utils.js +29 -28
  140. package/package.json +1 -1
  141. package/src/@types/backups.ts +28 -0
  142. package/src/@types/devices.ts +8 -0
  143. package/src/@types/plans.ts +23 -1
  144. package/src/@types/restores.ts +2 -0
  145. package/src/components/Device/DeviceBackups/DeviceBackups.tsx +11 -36
  146. package/src/components/Plan/BackupEvents/BackupEvents.module.scss +65 -0
  147. package/src/components/Plan/BackupEvents/BackupEvents.tsx +65 -4
  148. package/src/components/Plan/BackupProgress/BackupProgress.module.scss +121 -3
  149. package/src/components/Plan/BackupProgress/BackupProgress.tsx +149 -71
  150. package/src/components/Plan/Backups/Backups.tsx +52 -4
  151. package/src/components/Plan/EditPlan/EditPlan.tsx +1 -0
  152. package/src/components/Plan/Mirrors/MirrorDetails.module.scss +76 -0
  153. package/src/components/Plan/Mirrors/MirrorDetails.tsx +100 -0
  154. package/src/components/Plan/Mirrors/MirrorStatusBadge.module.scss +25 -0
  155. package/src/components/Plan/Mirrors/MirrorStatusBadge.tsx +65 -0
  156. package/src/components/Plan/Mirrors/MirrorStorageSelector.module.scss +97 -0
  157. package/src/components/Plan/Mirrors/MirrorStorageSelector.tsx +70 -0
  158. package/src/components/Plan/Mirrors/MirrorStorageSelectorModal.tsx +40 -0
  159. package/src/components/Plan/PlanBackups/PlanBackups.tsx +4 -1
  160. package/src/components/Plan/PlanForm/PlanForm.tsx +30 -3
  161. package/src/components/Plan/PlanItems/PlanItem.tsx +3 -3
  162. package/src/components/Plan/PlanRemoveModal/PlanRemoveModal.tsx +1 -1
  163. package/src/components/Plan/PlanSettings/PlanReplicationSettings.module.scss +105 -0
  164. package/src/components/Plan/PlanSettings/PlanReplicationSettings.tsx +334 -0
  165. package/src/components/Plan/PlanStats/PlanStats.module.scss +1 -1
  166. package/src/components/Plan/PlanStats/PlanStats.tsx +8 -8
  167. package/src/components/Plan/PlanStorageInfo/PlanStorageInfo.module.scss +43 -0
  168. package/src/components/Plan/PlanStorageInfo/PlanStorageInfo.tsx +83 -0
  169. package/src/components/Restore/RestoreWizard/RestoreConfirmStep.tsx +2 -0
  170. package/src/components/Restore/RestoreWizard/RestorePreviewStep.tsx +2 -0
  171. package/src/components/Restore/RestoreWizard/RestoreSettingsStep.tsx +36 -13
  172. package/src/components/Restore/RestoreWizard/RestoreWizard.module.scss +4 -0
  173. package/src/components/Restore/RestoreWizard/RestoreWizard.tsx +9 -1
  174. package/src/components/Settings/GeneralSettings/GeneralSettings.tsx +1 -1
  175. package/src/components/Settings/IntegrationSettings/IntegrationSettings.tsx +9 -2
  176. package/src/components/common/Icon/Icon.tsx +10 -1
  177. package/src/components/common/PageHeader/PageHeader.module.scss +3 -0
  178. package/src/components/index.ts +6 -0
  179. package/src/hooks/usePwaAutoUpdate.ts +51 -11
  180. package/src/router.tsx +26 -17
  181. package/src/routes/DeviceSingle/DeviceSingle.tsx +3 -3
  182. package/src/services/backups.ts +32 -9
  183. package/src/services/plans.ts +45 -0
  184. package/src/services/restores.ts +10 -2
  185. package/src/services/users.ts +14 -5
  186. package/src/utils/progressHelpers.ts +85 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RestoreSettingsStep.js","sources":["../../../../src/components/Restore/RestoreWizard/RestoreSettingsStep.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport Select from '../../common/form/Select/Select';\r\nimport Input from '../../common/form/Input/Input';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport classes from './RestoreWizard.module.scss';\r\nimport FolderPicker from '../../common/FolderPicker/FolderPicker';\r\nimport { RestoreSettings } from '../../../@types/restores';\r\nimport Toggle from '../../common/form/Toggle/Toggle';\r\n\r\ninterface settingsStepProps {\r\n backupId: string;\r\n settings: RestoreSettings;\r\n updateSettings: (settings: settingsStepProps['settings']) => void;\r\n goNext: () => void;\r\n close: () => void;\r\n}\r\n\r\nconst settingsStep = ({ backupId, settings, updateSettings, goNext, close }: settingsStepProps) => {\r\n const [showFileManager, setShowFileManager] = useState(false);\r\n const [showCustomPathError, setShowCustomPathError] = useState(false);\r\n\r\n const gotoPreviewStep = () => {\r\n if ((settings.type === 'custom' && settings.path) || settings.type === 'original') {\r\n goNext();\r\n } else {\r\n setShowCustomPathError(true);\r\n }\r\n };\r\n\r\n return (\r\n <div className={classes.stepContent}>\r\n <div className={classes.step}>\r\n <p>\r\n Select where you want to restore <strong>\"backup-{backupId}\"</strong>\r\n </p>\r\n <div className={classes.settingBlock}>\r\n <Select\r\n label=\"\"\r\n options={[\r\n { label: 'Restore to Original Path(s)', value: 'original' },\r\n { label: 'Restore to a Custom Path', value: 'custom' },\r\n ]}\r\n fieldValue={settings.type || 'sun'}\r\n onUpdate={(val: string) => updateSettings({ ...settings, type: val as 'original' | 'custom' })}\r\n full={true}\r\n />\r\n </div>\r\n {settings.type === 'custom' && (\r\n <div className={`${classes.settingBlock} ${showCustomPathError ? classes.settingBlockError : ''}`}>\r\n <Input\r\n label=\"Restore Backup To\"\r\n placeholder=\"Restore Path\"\r\n fieldValue={settings.path}\r\n onUpdate={(val) => {\r\n updateSettings({ ...settings, path: val });\r\n if (showCustomPathError) {\r\n setShowCustomPathError(false);\r\n }\r\n }}\r\n full={true}\r\n />\r\n <button\r\n data-tooltip-id=\"appTooltip\"\r\n data-tooltip-content=\"Open FileManager to Select Path\"\r\n data-tooltip-place=\"top\"\r\n className={classes.fileManagerBtn}\r\n onClick={() => setShowFileManager(true)}\r\n >\r\n <Icon type=\"folders\" size={16} />\r\n </button>\r\n </div>\r\n )}\r\n\r\n <div className={classes.settingBlock}>\r\n <div className={classes.checkboxSettings}>\r\n <div className={classes.label}>Overwrite Policy</div>\r\n <div className={classes.checkboxSettingsOpts}>\r\n <div\r\n onClick={() => updateSettings({ ...settings, overwrite: 'always' })}\r\n className={` ${classes.checkboxOption} ${settings.overwrite === 'always' ? classes.checkboxOptionActive : ''} `}\r\n >\r\n <div>\r\n <Icon type={settings.overwrite === 'always' ? 'check-circle-filled' : 'check-circle'} size={16} />\r\n </div>\r\n <div>\r\n <h5>Always Overwrite (Default)</h5>\r\n <div>\r\n Always overwrites already existing files. Existing file content will be verified first and only mismatching parts will\r\n be restored to minimize downloads. Updates the metadata of all files.\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n onClick={() => updateSettings({ ...settings, overwrite: 'if-changed' })}\r\n className={` ${classes.checkboxOption} ${settings.overwrite === 'if-changed' ? classes.checkboxOptionActive : ''} `}\r\n >\r\n <div>\r\n <Icon type={settings.overwrite === 'if-changed' ? 'check-circle-filled' : 'check-circle'} size={16} />\r\n </div>\r\n <div>\r\n <h5>Overwrite If Changed</h5>\r\n <div>\r\n Like the previous case, but speeds up the file content check by assuming that files with matching size and modification\r\n time (mtime) are already up to date. In case of a mismatch, the full file content is verified. Updates the metadata of\r\n all files.\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n onClick={() => updateSettings({ ...settings, overwrite: 'if-newer' })}\r\n className={` ${classes.checkboxOption} ${settings.overwrite === 'if-newer' ? classes.checkboxOptionActive : ''} `}\r\n >\r\n <div>\r\n <Icon type={settings.overwrite === 'if-newer' ? 'check-circle-filled' : 'check-circle'} size={16} />\r\n </div>\r\n <div>\r\n <h5>Overwrite If Newer</h5>\r\n <div>Only overwrite existing files if the file in the snapshot has a newer modification time (mtime).</div>\r\n </div>\r\n </div>\r\n <div\r\n onClick={() => updateSettings({ ...settings, overwrite: 'never' })}\r\n className={` ${classes.checkboxOption} ${settings.overwrite === 'never' ? classes.checkboxOptionActive : ''} `}\r\n >\r\n <div>\r\n <Icon type={settings.overwrite === 'never' ? 'check-circle-filled' : 'check-circle'} size={16} />\r\n </div>\r\n <div>\r\n <h5>Never Overwrite</h5>\r\n <div>Never overwrite existing files.</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div className={classes.settingBlock}>\r\n <Toggle\r\n label=\"Delete Files that are not in the Snapshot from the Target Restore Path\"\r\n fieldValue={settings.delete}\r\n inline={false}\r\n onUpdate={(val) => {\r\n updateSettings({ ...settings, delete: val });\r\n }}\r\n />\r\n </div>\r\n </div>\r\n <div className={classes.footer}>\r\n <div className={classes.footerLeft}></div>\r\n <div className={classes.footerRight}>\r\n <button onClick={() => close()}>Cancel</button>\r\n <button onClick={() => gotoPreviewStep()}>\r\n Next: Select Files to Restore <Icon type=\"arrow-right\" size={14} />\r\n </button>\r\n </div>\r\n </div>\r\n\r\n {showFileManager && (\r\n <FolderPicker\r\n deviceId={'main'}\r\n title=\"Choose a Path to Restore\"\r\n footerText=\"Select a Path where you want to restore your backup\"\r\n selected={settings.path}\r\n close={() => setShowFileManager(false)}\r\n onSelect={(p) => updateSettings({ ...settings, path: p })}\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default settingsStep;\r\n"],"names":["settingsStep","backupId","settings","updateSettings","goNext","close","showFileManager","setShowFileManager","useState","showCustomPathError","setShowCustomPathError","gotoPreviewStep","jsxs","classes","jsx","Select","val","Input","Icon","Toggle","FolderPicker","p"],"mappings":"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"}
1
+ {"version":3,"file":"RestoreSettingsStep.js","sources":["../../../../src/components/Restore/RestoreWizard/RestoreSettingsStep.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport Select from '../../common/form/Select/Select';\r\nimport Input from '../../common/form/Input/Input';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport classes from './RestoreWizard.module.scss';\r\nimport FolderPicker from '../../common/FolderPicker/FolderPicker';\r\nimport { RestoreSettings } from '../../../@types/restores';\r\nimport Toggle from '../../common/form/Toggle/Toggle';\r\nimport { Backup } from '../../..';\r\n\r\ninterface RestoreSettingsStepProps {\r\n backupId: string;\r\n deviceId: string;\r\n settings: RestoreSettings;\r\n mirrors?: Backup['mirrors'];\r\n primaryStorage: { id: string; type: string; name: string };\r\n updateSettings: (settings: RestoreSettingsStepProps['settings']) => void;\r\n goNext: () => void;\r\n close: () => void;\r\n}\r\n\r\nconst RestoreSettingsStep = ({ settings, mirrors = [], primaryStorage, updateSettings, goNext, close, deviceId }: RestoreSettingsStepProps) => {\r\n const [showFileManager, setShowFileManager] = useState(false);\r\n const [showCustomPathError, setShowCustomPathError] = useState(false);\r\n\r\n const gotoPreviewStep = () => {\r\n if ((settings.type === 'custom' && settings.path) || settings.type === 'original') {\r\n goNext();\r\n } else {\r\n setShowCustomPathError(true);\r\n }\r\n };\r\n\r\n return (\r\n <div className={classes.stepContent}>\r\n <div className={classes.step}>\r\n {mirrors && mirrors.length > 0 && (\r\n <div className={classes.settingBlock}>\r\n <Select\r\n customClasses={classes.storageSelect}\r\n label=\"Select Storage to Restore From\"\r\n options={[\r\n {\r\n label: primaryStorage!.name + ' (Primary)',\r\n value: 'primary',\r\n image: <img src={`/providers/${primaryStorage.type}.png`} />,\r\n },\r\n ...mirrors.map((m) => ({\r\n label: m.storageName + ' (Mirror)',\r\n value: m.replicationId,\r\n image: <img src={`/providers/${m.storageType}.png`} />,\r\n })),\r\n ]}\r\n fieldValue={settings.replicationId || primaryStorage.id}\r\n full={true}\r\n onUpdate={(value) => updateSettings({ ...settings, replicationId: value === 'primary' ? undefined : value })}\r\n />\r\n </div>\r\n )}\r\n\r\n <div className={classes.settingBlock}>\r\n <Select\r\n label=\"Select where you want to restore the backup\"\r\n options={[\r\n { label: 'Restore to Original Path(s)', value: 'original' },\r\n { label: 'Restore to a Custom Path', value: 'custom' },\r\n ]}\r\n fieldValue={settings.type || 'original'}\r\n onUpdate={(val: string) => updateSettings({ ...settings, type: val as 'original' | 'custom' })}\r\n full={true}\r\n />\r\n </div>\r\n {settings.type === 'custom' && (\r\n <div className={`${classes.settingBlock} ${showCustomPathError ? classes.settingBlockError : ''}`}>\r\n <Input\r\n label=\"Restore Backup To\"\r\n placeholder=\"Restore Path\"\r\n fieldValue={settings.path}\r\n onUpdate={(val) => {\r\n updateSettings({ ...settings, path: val });\r\n if (showCustomPathError) {\r\n setShowCustomPathError(false);\r\n }\r\n }}\r\n full={true}\r\n />\r\n <button\r\n data-tooltip-id=\"appTooltip\"\r\n data-tooltip-content=\"Open FileManager to Select Path\"\r\n data-tooltip-place=\"top\"\r\n className={classes.fileManagerBtn}\r\n onClick={() => setShowFileManager(true)}\r\n >\r\n <Icon type=\"folders\" size={16} />\r\n </button>\r\n </div>\r\n )}\r\n\r\n <div className={classes.settingBlock}>\r\n <div className={classes.checkboxSettings}>\r\n <div className={classes.label}>Overwrite Policy</div>\r\n <div className={classes.checkboxSettingsOpts}>\r\n <div\r\n onClick={() => updateSettings({ ...settings, overwrite: 'always' })}\r\n className={` ${classes.checkboxOption} ${settings.overwrite === 'always' ? classes.checkboxOptionActive : ''} `}\r\n >\r\n <div>\r\n <Icon type={settings.overwrite === 'always' ? 'check-circle-filled' : 'check-circle'} size={16} />\r\n </div>\r\n <div>\r\n <h5>Always Overwrite (Default)</h5>\r\n <div>\r\n Always overwrites already existing files. Existing file content will be verified first and only mismatching parts will\r\n be restored to minimize downloads. Updates the metadata of all files.\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n onClick={() => updateSettings({ ...settings, overwrite: 'if-changed' })}\r\n className={` ${classes.checkboxOption} ${settings.overwrite === 'if-changed' ? classes.checkboxOptionActive : ''} `}\r\n >\r\n <div>\r\n <Icon type={settings.overwrite === 'if-changed' ? 'check-circle-filled' : 'check-circle'} size={16} />\r\n </div>\r\n <div>\r\n <h5>Overwrite If Changed</h5>\r\n <div>\r\n Like the previous case, but speeds up the file content check by assuming that files with matching size and modification\r\n time (mtime) are already up to date. In case of a mismatch, the full file content is verified. Updates the metadata of\r\n all files.\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n onClick={() => updateSettings({ ...settings, overwrite: 'if-newer' })}\r\n className={` ${classes.checkboxOption} ${settings.overwrite === 'if-newer' ? classes.checkboxOptionActive : ''} `}\r\n >\r\n <div>\r\n <Icon type={settings.overwrite === 'if-newer' ? 'check-circle-filled' : 'check-circle'} size={16} />\r\n </div>\r\n <div>\r\n <h5>Overwrite If Newer</h5>\r\n <div>Only overwrite existing files if the file in the snapshot has a newer modification time (mtime).</div>\r\n </div>\r\n </div>\r\n <div\r\n onClick={() => updateSettings({ ...settings, overwrite: 'never' })}\r\n className={` ${classes.checkboxOption} ${settings.overwrite === 'never' ? classes.checkboxOptionActive : ''} `}\r\n >\r\n <div>\r\n <Icon type={settings.overwrite === 'never' ? 'check-circle-filled' : 'check-circle'} size={16} />\r\n </div>\r\n <div>\r\n <h5>Never Overwrite</h5>\r\n <div>Never overwrite existing files.</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div className={classes.settingBlock}>\r\n <Toggle\r\n label=\"Delete Files that are not in the Snapshot from the Target Restore Path\"\r\n fieldValue={settings.delete}\r\n inline={false}\r\n onUpdate={(val) => updateSettings({ ...settings, delete: val })}\r\n />\r\n </div>\r\n </div>\r\n <div className={classes.footer}>\r\n <div className={classes.footerLeft}></div>\r\n <div className={classes.footerRight}>\r\n <button onClick={() => close()}>Cancel</button>\r\n <button onClick={() => gotoPreviewStep()}>\r\n Next: Select Files to Restore <Icon type=\"arrow-right\" size={14} />\r\n </button>\r\n </div>\r\n </div>\r\n\r\n {showFileManager && (\r\n <FolderPicker\r\n deviceId={deviceId || 'main'}\r\n title=\"Choose a Path to Restore\"\r\n footerText=\"Select a Path where you want to restore your backup\"\r\n selected={settings.path}\r\n close={() => setShowFileManager(false)}\r\n onSelect={(p) => updateSettings({ ...settings, path: p })}\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default RestoreSettingsStep;\r\n"],"names":["RestoreSettingsStep","settings","mirrors","primaryStorage","updateSettings","goNext","close","deviceId","showFileManager","setShowFileManager","useState","showCustomPathError","setShowCustomPathError","gotoPreviewStep","jsxs","classes","jsx","Select","m","value","val","Input","Icon","Toggle","FolderPicker","p"],"mappings":"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"}
@@ -1,8 +1,12 @@
1
+ import { Backup, Plan } from '../../..';
1
2
  interface RestoreWizardProps {
2
3
  backupId: string;
3
4
  planId: string;
5
+ deviceId: string;
6
+ planStorage: Plan['storage'];
7
+ mirrors?: Backup['mirrors'];
4
8
  close: () => void;
5
9
  }
6
- declare const RestoreWizard: ({ backupId, planId, close }: RestoreWizardProps) => import("react/jsx-runtime").JSX.Element;
10
+ declare const RestoreWizard: ({ backupId, planId, deviceId, mirrors, planStorage, close }: RestoreWizardProps) => import("react/jsx-runtime").JSX.Element;
7
11
  export default RestoreWizard;
8
12
  //# sourceMappingURL=RestoreWizard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RestoreWizard.d.ts","sourceRoot":"","sources":["../../../../src/components/Restore/RestoreWizard/RestoreWizard.tsx"],"names":[],"mappings":"AAWA,UAAU,kBAAkB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,QAAA,MAAM,aAAa,GAAI,6BAA6B,kBAAkB,4CAmHrE,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"RestoreWizard.d.ts","sourceRoot":"","sources":["../../../../src/components/Restore/RestoreWizard/RestoreWizard.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAExC,UAAU,kBAAkB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5B,KAAK,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,QAAA,MAAM,aAAa,GAAI,6DAA6D,kBAAkB,4CAuHrG,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1,115 +1,119 @@
1
1
  import { jsx as t, jsxs as r } from "react/jsx-runtime";
2
- import { useState as h, useMemo as x } from "react";
3
- import { useIsFetching as P, useIsMutating as R } from "@tanstack/react-query";
4
- import o from "../../common/Icon/Icon.js";
2
+ import { useState as h, useMemo as k } from "react";
3
+ import { useIsFetching as $, useIsMutating as C } from "@tanstack/react-query";
4
+ import n from "../../common/Icon/Icon.js";
5
5
  import s from "./RestoreWizard.module.scss.js";
6
- import k from "./RestoreSettingsStep.js";
7
- import $ from "./RestorePreviewStep.js";
8
- import C from "./RestoreConfirmStep.js";
9
- import { useGetSnapshotFiles as F } from "../../../services/backups.js";
10
- import B from "./RestoreFileSelectorStep.js";
11
- const J = ({ backupId: c, planId: u, close: l }) => {
12
- const [e, n] = h(1), [p, g] = h({
6
+ import F from "./RestoreSettingsStep.js";
7
+ import B from "./RestorePreviewStep.js";
8
+ import M from "./RestoreConfirmStep.js";
9
+ import { useGetSnapshotFiles as W } from "../../../services/backups.js";
10
+ import j from "./RestoreFileSelectorStep.js";
11
+ const Q = ({ backupId: a, planId: g, deviceId: v, mirrors: y, planStorage: N, close: c }) => {
12
+ const [e, o] = h(1), [p, u] = h({
13
13
  type: "original",
14
14
  path: "",
15
15
  overwrite: "always",
16
16
  includes: [],
17
17
  excludes: [],
18
- delete: !1
19
- }), [S, v] = h({ stats: null, files: [] }), y = P(), N = R(), f = y > 0 || N > 0, { data: a, error: m } = F({ backupId: c }), d = a != null && a.result && Array.isArray(a.result) ? a.result : [], z = x(() => ({
18
+ delete: !1,
19
+ storageId: void 0
20
+ }), [S, z] = h({ stats: null, files: [] }), R = $(), w = C(), f = R > 0 || w > 0, { data: l, error: m } = W({ backupId: a }), d = l != null && l.result && Array.isArray(l.result) ? l.result : [], x = k(() => ({
20
21
  total_files: d.length,
21
- total_bytes: d.reduce((i, w) => i + w.size, 0)
22
+ total_bytes: d.reduce((i, P) => i + P.size, 0)
22
23
  }), [d]);
23
24
  return /* @__PURE__ */ t("div", { className: s.restoreWizard, children: /* @__PURE__ */ r("div", { className: s.content, style: { maxWidth: (e === 2 || e === 3) && 1200 || void 0 }, children: [
24
25
  /* @__PURE__ */ r("div", { className: s.header, children: [
25
26
  /* @__PURE__ */ r("h3", { children: [
26
- /* @__PURE__ */ t(o, { type: "restore", size: 16 }),
27
+ /* @__PURE__ */ t(n, { type: "restore", size: 16 }),
27
28
  " Restore Backup"
28
29
  ] }),
29
- /* @__PURE__ */ t("button", { className: s.close, onClick: () => !f && l(), children: /* @__PURE__ */ t(o, { type: "close", size: 24 }) })
30
+ /* @__PURE__ */ t("button", { className: s.close, onClick: () => !f && c(), children: /* @__PURE__ */ t(n, { type: "close", size: 24 }) })
30
31
  ] }),
31
32
  /* @__PURE__ */ t("div", { className: s.steps, children: /* @__PURE__ */ r("ul", { children: [
32
33
  /* @__PURE__ */ r("li", { className: ` ${e >= 1 ? s.stepCurrent : ""} ${e > 1 ? s.stepPassed : ""}`, children: [
33
34
  /* @__PURE__ */ r("span", { children: [
34
- e > 1 && /* @__PURE__ */ t(o, { type: "check", size: 11 }),
35
+ e > 1 && /* @__PURE__ */ t(n, { type: "check", size: 11 }),
35
36
  e === 1 ? "●" : ""
36
37
  ] }),
37
38
  /* @__PURE__ */ t("i", { children: "Settings" })
38
39
  ] }),
39
40
  /* @__PURE__ */ r("li", { className: ` ${e >= 2 ? s.stepCurrent : ""} ${e > 2 ? s.stepPassed : ""}`, children: [
40
41
  /* @__PURE__ */ r("span", { children: [
41
- e > 2 && /* @__PURE__ */ t(o, { type: "check", size: 11 }),
42
+ e > 2 && /* @__PURE__ */ t(n, { type: "check", size: 11 }),
42
43
  e === 2 ? "●" : ""
43
44
  ] }),
44
45
  /* @__PURE__ */ t("i", { children: "Select Files" })
45
46
  ] }),
46
47
  /* @__PURE__ */ r("li", { className: ` ${e >= 3 ? s.stepCurrent : ""} ${e > 3 ? s.stepPassed : ""}`, children: [
47
48
  /* @__PURE__ */ r("span", { children: [
48
- e > 3 && /* @__PURE__ */ t(o, { type: "check", size: 11 }),
49
+ e > 3 && /* @__PURE__ */ t(n, { type: "check", size: 11 }),
49
50
  e === 3 ? "●" : ""
50
51
  ] }),
51
52
  /* @__PURE__ */ t("i", { children: "Preview" })
52
53
  ] }),
53
54
  /* @__PURE__ */ r("li", { className: ` ${e === 4 ? s.stepCurrent : ""}`, children: [
54
- /* @__PURE__ */ t("span", { children: e === 4 && /* @__PURE__ */ t(o, { type: "check", size: 11 }) }),
55
+ /* @__PURE__ */ t("span", { children: e === 4 && /* @__PURE__ */ t(n, { type: "check", size: 11 }) }),
55
56
  /* @__PURE__ */ t("i", { children: "Restore" })
56
57
  ] })
57
58
  ] }) }),
58
59
  e === 1 && /* @__PURE__ */ t(
59
- k,
60
+ F,
60
61
  {
61
- backupId: c,
62
+ backupId: a,
63
+ deviceId: v,
62
64
  settings: p,
63
- updateSettings: (i) => g(i),
64
- goNext: () => n(2),
65
- close: l
65
+ primaryStorage: N,
66
+ mirrors: y,
67
+ updateSettings: (i) => u(i),
68
+ goNext: () => o(2),
69
+ close: c
66
70
  }
67
71
  ),
68
72
  e === 2 && /* @__PURE__ */ t(
69
- B,
73
+ j,
70
74
  {
71
- backupId: c,
75
+ backupId: a,
72
76
  settings: p,
73
- updateSettings: (i) => g(i),
77
+ updateSettings: (i) => u(i),
74
78
  files: d,
75
79
  isLoading: f,
76
80
  errorFetching: (m == null ? void 0 : m.message) || null,
77
81
  currentStep: e,
78
- goBack: () => e > 0 && n(e - 1),
79
- goNext: () => n(3),
80
- close: l,
82
+ goBack: () => e > 0 && o(e - 1),
83
+ goNext: () => o(3),
84
+ close: c,
81
85
  method: "backup"
82
86
  }
83
87
  ),
84
88
  e === 3 && /* @__PURE__ */ t(
85
- $,
89
+ B,
86
90
  {
87
- backupId: c,
88
- planId: u,
91
+ backupId: a,
92
+ planId: g,
89
93
  settings: p,
90
94
  preview: S,
91
- updatePreview: (i) => v(i),
92
- goBack: () => e > 0 && n(e - 1),
93
- goNext: () => n(4),
94
- close: l
95
+ updatePreview: (i) => z(i),
96
+ goBack: () => e > 0 && o(e - 1),
97
+ goNext: () => o(4),
98
+ close: c
95
99
  }
96
100
  ),
97
101
  e === 4 && /* @__PURE__ */ t(
98
- C,
102
+ M,
99
103
  {
100
- backupId: c,
101
- planId: u,
104
+ backupId: a,
105
+ planId: g,
102
106
  settings: p,
103
107
  stats: S.stats,
104
- snapshotsStats: z,
108
+ snapshotsStats: x,
105
109
  method: "backup",
106
- goBack: () => e > 0 && n(e - 1),
107
- close: l
110
+ goBack: () => e > 0 && o(e - 1),
111
+ close: c
108
112
  }
109
113
  )
110
114
  ] }) });
111
115
  };
112
116
  export {
113
- J as default
117
+ Q as default
114
118
  };
115
119
  //# sourceMappingURL=RestoreWizard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RestoreWizard.js","sources":["../../../../src/components/Restore/RestoreWizard/RestoreWizard.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\r\nimport { useIsFetching, useIsMutating } from '@tanstack/react-query';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport classes from './RestoreWizard.module.scss';\r\nimport RestoreSettingsStep from './RestoreSettingsStep';\r\nimport RestorePreviewStep from './RestorePreviewStep';\r\nimport RestoreConfirmStep from './RestoreConfirmStep';\r\nimport { RestoredFileItem, RestoredItemsStats, RestoreFileItem, RestoreSettings } from '../../../@types/restores';\r\nimport { useGetSnapshotFiles } from '../../../services/backups';\r\nimport RestoreFileSelectorStep from './RestoreFileSelectorStep';\r\n\r\ninterface RestoreWizardProps {\r\n backupId: string;\r\n planId: string;\r\n close: () => void;\r\n}\r\n\r\nconst RestoreWizard = ({ backupId, planId, close }: RestoreWizardProps) => {\r\n const [step, setStep] = useState(1);\r\n const [restoreSettings, setRestoreSettings] = useState<RestoreSettings>({\r\n type: 'original',\r\n path: '',\r\n overwrite: 'always',\r\n includes: [],\r\n excludes: [],\r\n delete: false,\r\n });\r\n const [restorePreview, setRestorePreview] = useState<{ stats: RestoredItemsStats | null; files: RestoredFileItem[] }>({ stats: null, files: [] });\r\n const isFetching = useIsFetching();\r\n const isMutating = useIsMutating();\r\n const isLoading = isFetching > 0 || isMutating > 0;\r\n const { data: snapshotData, error: snapShotError } = useGetSnapshotFiles({ backupId });\r\n const files: RestoreFileItem[] = snapshotData?.result && Array.isArray(snapshotData.result) ? snapshotData.result : [];\r\n\r\n const snapShotsStats = useMemo(() => {\r\n return {\r\n total_files: files.length,\r\n total_bytes: files.reduce((acc, file) => acc + file.size, 0),\r\n };\r\n }, [files]);\r\n\r\n return (\r\n <div className={classes.restoreWizard}>\r\n <div className={classes.content} style={{ maxWidth: ((step === 2 || step === 3) && 1200) || undefined }}>\r\n <div className={classes.header}>\r\n <h3>\r\n <Icon type=\"restore\" size={16} /> Restore Backup\r\n </h3>\r\n <button className={classes.close} onClick={() => !isLoading && close()}>\r\n <Icon type=\"close\" size={24} />\r\n </button>\r\n </div>\r\n <div className={classes.steps}>\r\n <ul>\r\n <li className={` ${step >= 1 ? classes.stepCurrent : ''} ${step > 1 ? classes.stepPassed : ''}`}>\r\n <span>\r\n {step > 1 && <Icon type=\"check\" size={11} />}\r\n {step === 1 ? '●' : ''}\r\n </span>\r\n <i>Settings</i>\r\n </li>\r\n <li className={` ${step >= 2 ? classes.stepCurrent : ''} ${step > 2 ? classes.stepPassed : ''}`}>\r\n <span>\r\n {step > 2 && <Icon type=\"check\" size={11} />}\r\n {step === 2 ? '●' : ''}\r\n </span>\r\n <i>Select Files</i>\r\n </li>\r\n <li className={` ${step >= 3 ? classes.stepCurrent : ''} ${step > 3 ? classes.stepPassed : ''}`}>\r\n <span>\r\n {step > 3 && <Icon type=\"check\" size={11} />}\r\n {step === 3 ? '●' : ''}\r\n </span>\r\n <i>Preview</i>\r\n </li>\r\n <li className={` ${step === 4 ? classes.stepCurrent : ''}`}>\r\n <span>{step === 4 && <Icon type=\"check\" size={11} />}</span>\r\n <i>Restore</i>\r\n </li>\r\n </ul>\r\n </div>\r\n {step === 1 && (\r\n <RestoreSettingsStep\r\n backupId={backupId}\r\n settings={restoreSettings}\r\n updateSettings={(settings) => setRestoreSettings(settings)}\r\n goNext={() => setStep(2)}\r\n close={close}\r\n />\r\n )}\r\n {step === 2 && (\r\n <RestoreFileSelectorStep\r\n backupId={backupId}\r\n settings={restoreSettings}\r\n updateSettings={(settings) => setRestoreSettings(settings as RestoreSettings)}\r\n files={files}\r\n isLoading={isLoading}\r\n errorFetching={snapShotError?.message || null}\r\n currentStep={step}\r\n goBack={() => step > 0 && setStep(step - 1)}\r\n goNext={() => setStep(3)}\r\n close={close}\r\n method=\"backup\"\r\n />\r\n )}\r\n {step === 3 && (\r\n <RestorePreviewStep\r\n backupId={backupId}\r\n planId={planId}\r\n settings={restoreSettings}\r\n preview={restorePreview}\r\n updatePreview={(preview) => setRestorePreview(preview)}\r\n goBack={() => step > 0 && setStep(step - 1)}\r\n goNext={() => setStep(4)}\r\n close={close}\r\n />\r\n )}\r\n {step === 4 && (\r\n <RestoreConfirmStep\r\n backupId={backupId}\r\n planId={planId}\r\n settings={restoreSettings}\r\n stats={restorePreview.stats}\r\n snapshotsStats={snapShotsStats}\r\n method=\"backup\"\r\n goBack={() => step > 0 && setStep(step - 1)}\r\n close={close}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default RestoreWizard;\r\n"],"names":["RestoreWizard","backupId","planId","close","step","setStep","useState","restoreSettings","setRestoreSettings","restorePreview","setRestorePreview","isFetching","useIsFetching","isMutating","useIsMutating","isLoading","snapshotData","snapShotError","useGetSnapshotFiles","files","snapShotsStats","useMemo","acc","file","classes","jsxs","jsx","Icon","RestoreSettingsStep","settings","RestoreFileSelectorStep","RestorePreviewStep","preview","RestoreConfirmStep"],"mappings":"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"}
1
+ {"version":3,"file":"RestoreWizard.js","sources":["../../../../src/components/Restore/RestoreWizard/RestoreWizard.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\r\nimport { useIsFetching, useIsMutating } from '@tanstack/react-query';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport classes from './RestoreWizard.module.scss';\r\nimport RestoreSettingsStep from './RestoreSettingsStep';\r\nimport RestorePreviewStep from './RestorePreviewStep';\r\nimport RestoreConfirmStep from './RestoreConfirmStep';\r\nimport { RestoredFileItem, RestoredItemsStats, RestoreFileItem, RestoreSettings } from '../../../@types/restores';\r\nimport { useGetSnapshotFiles } from '../../../services/backups';\r\nimport RestoreFileSelectorStep from './RestoreFileSelectorStep';\r\nimport { Backup, Plan } from '../../..';\r\n\r\ninterface RestoreWizardProps {\r\n backupId: string;\r\n planId: string;\r\n deviceId: string;\r\n planStorage: Plan['storage'];\r\n mirrors?: Backup['mirrors'];\r\n close: () => void;\r\n}\r\n\r\nconst RestoreWizard = ({ backupId, planId, deviceId, mirrors, planStorage, close }: RestoreWizardProps) => {\r\n const [step, setStep] = useState(1);\r\n const [restoreSettings, setRestoreSettings] = useState<RestoreSettings>({\r\n type: 'original',\r\n path: '',\r\n overwrite: 'always',\r\n includes: [],\r\n excludes: [],\r\n delete: false,\r\n storageId: undefined,\r\n });\r\n const [restorePreview, setRestorePreview] = useState<{ stats: RestoredItemsStats | null; files: RestoredFileItem[] }>({ stats: null, files: [] });\r\n const isFetching = useIsFetching();\r\n const isMutating = useIsMutating();\r\n const isLoading = isFetching > 0 || isMutating > 0;\r\n const { data: snapshotData, error: snapShotError } = useGetSnapshotFiles({ backupId });\r\n const files: RestoreFileItem[] = snapshotData?.result && Array.isArray(snapshotData.result) ? snapshotData.result : [];\r\n\r\n const snapShotsStats = useMemo(() => {\r\n return {\r\n total_files: files.length,\r\n total_bytes: files.reduce((acc, file) => acc + file.size, 0),\r\n };\r\n }, [files]);\r\n\r\n return (\r\n <div className={classes.restoreWizard}>\r\n <div className={classes.content} style={{ maxWidth: ((step === 2 || step === 3) && 1200) || undefined }}>\r\n <div className={classes.header}>\r\n <h3>\r\n <Icon type=\"restore\" size={16} /> Restore Backup\r\n </h3>\r\n <button className={classes.close} onClick={() => !isLoading && close()}>\r\n <Icon type=\"close\" size={24} />\r\n </button>\r\n </div>\r\n <div className={classes.steps}>\r\n <ul>\r\n <li className={` ${step >= 1 ? classes.stepCurrent : ''} ${step > 1 ? classes.stepPassed : ''}`}>\r\n <span>\r\n {step > 1 && <Icon type=\"check\" size={11} />}\r\n {step === 1 ? '●' : ''}\r\n </span>\r\n <i>Settings</i>\r\n </li>\r\n <li className={` ${step >= 2 ? classes.stepCurrent : ''} ${step > 2 ? classes.stepPassed : ''}`}>\r\n <span>\r\n {step > 2 && <Icon type=\"check\" size={11} />}\r\n {step === 2 ? '●' : ''}\r\n </span>\r\n <i>Select Files</i>\r\n </li>\r\n <li className={` ${step >= 3 ? classes.stepCurrent : ''} ${step > 3 ? classes.stepPassed : ''}`}>\r\n <span>\r\n {step > 3 && <Icon type=\"check\" size={11} />}\r\n {step === 3 ? '●' : ''}\r\n </span>\r\n <i>Preview</i>\r\n </li>\r\n <li className={` ${step === 4 ? classes.stepCurrent : ''}`}>\r\n <span>{step === 4 && <Icon type=\"check\" size={11} />}</span>\r\n <i>Restore</i>\r\n </li>\r\n </ul>\r\n </div>\r\n {step === 1 && (\r\n <RestoreSettingsStep\r\n backupId={backupId}\r\n deviceId={deviceId}\r\n settings={restoreSettings}\r\n primaryStorage={planStorage}\r\n mirrors={mirrors}\r\n updateSettings={(settings) => setRestoreSettings(settings)}\r\n goNext={() => setStep(2)}\r\n close={close}\r\n />\r\n )}\r\n {step === 2 && (\r\n <RestoreFileSelectorStep\r\n backupId={backupId}\r\n settings={restoreSettings}\r\n updateSettings={(settings) => setRestoreSettings(settings as RestoreSettings)}\r\n files={files}\r\n isLoading={isLoading}\r\n errorFetching={snapShotError?.message || null}\r\n currentStep={step}\r\n goBack={() => step > 0 && setStep(step - 1)}\r\n goNext={() => setStep(3)}\r\n close={close}\r\n method=\"backup\"\r\n />\r\n )}\r\n {step === 3 && (\r\n <RestorePreviewStep\r\n backupId={backupId}\r\n planId={planId}\r\n settings={restoreSettings}\r\n preview={restorePreview}\r\n updatePreview={(preview) => setRestorePreview(preview)}\r\n goBack={() => step > 0 && setStep(step - 1)}\r\n goNext={() => setStep(4)}\r\n close={close}\r\n />\r\n )}\r\n {step === 4 && (\r\n <RestoreConfirmStep\r\n backupId={backupId}\r\n planId={planId}\r\n settings={restoreSettings}\r\n stats={restorePreview.stats}\r\n snapshotsStats={snapShotsStats}\r\n method=\"backup\"\r\n goBack={() => step > 0 && setStep(step - 1)}\r\n close={close}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default RestoreWizard;\r\n"],"names":["RestoreWizard","backupId","planId","deviceId","mirrors","planStorage","close","step","setStep","useState","restoreSettings","setRestoreSettings","restorePreview","setRestorePreview","isFetching","useIsFetching","isMutating","useIsMutating","isLoading","snapshotData","snapShotError","useGetSnapshotFiles","files","snapShotsStats","useMemo","acc","file","classes","jsxs","jsx","Icon","RestoreSettingsStep","settings","RestoreFileSelectorStep","RestorePreviewStep","preview","RestoreConfirmStep"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- const t = "_restoreWizard_sFTj0", e = "_content_pzve9", o = "_header_lVx7o", s = "_close_lxYtd", r = "_steps_MtJoL", n = "_stepCurrent_ChpYC", c = "_stepPassed_VW7Ub", _ = "_stepContent_TyRSf", i = "_step_6Gek8", p = "_settingBlock_ZrYM2", a = "_label_WS4nz", l = "_fileManagerBtn_WzWxG", k = "_settingBlockError_n40cs", b = "_preview_eQ0pk", h = "_previewError_sQsVK", v = "_previewButton_6vKzE", g = "_previewEmpty_ETnVM", x = "_restoreConfirm_MxhKX", B = "_restoreButton_Do8Sv", f = "_restoreError_10HHM", d = "_footer_xisOv", E = "_backButton_hq7vg", u = "_footerRight_7c691", w = "_restoreDisabled_jG2LO", C = "_checkboxSettings_fytx3", O = "_checkboxSettingsOpts_n9FNs", M = "_checkboxOption_9hMT3", S = "_checkboxOptionActive_A0T1V", z = {
1
+ const t = "_restoreWizard_wOgi9", e = "_content_nSjit", o = "_header_Vkxq0", r = "_close_8GR4N", s = "_steps_Pby13", n = "_stepCurrent_8yTis", c = "_stepPassed_8Zj6o", _ = "_stepContent_kTqdE", i = "_step_Hn0FW", p = "_settingBlock_7GPIv", a = "_label_dK7yV", l = "_fileManagerBtn_mY14R", b = "_settingBlockError_rsQRx", k = "_preview_GNDQl", g = "_previewError_j2xz9", x = "_previewButton_mrCKR", h = "_previewEmpty_qW6AM", B = "_restoreConfirm_n6NRE", d = "_restoreButton_yzxcd", v = "_restoreError_S2Gmn", E = "_footer_ypHCA", f = "_backButton_rPUX7", u = "_footerRight_XfMMx", w = "_restoreDisabled_N1CZT", C = "_checkboxSettings_NAeEi", m = "_checkboxSettingsOpts_rglV2", O = "_checkboxOption_4bmMx", R = "_checkboxOptionActive_RNL3I", y = {
2
2
  restoreWizard: t,
3
3
  content: e,
4
4
  header: o,
5
- close: s,
6
- steps: r,
5
+ close: r,
6
+ steps: s,
7
7
  stepCurrent: n,
8
8
  stepPassed: c,
9
9
  stepContent: _,
@@ -11,52 +11,52 @@ const t = "_restoreWizard_sFTj0", e = "_content_pzve9", o = "_header_lVx7o", s =
11
11
  settingBlock: p,
12
12
  label: a,
13
13
  fileManagerBtn: l,
14
- settingBlockError: k,
15
- preview: b,
16
- previewError: h,
17
- previewButton: v,
18
- previewEmpty: g,
19
- restoreConfirm: x,
20
- restoreButton: B,
21
- restoreError: f,
22
- footer: d,
23
- backButton: E,
14
+ settingBlockError: b,
15
+ preview: k,
16
+ previewError: g,
17
+ previewButton: x,
18
+ previewEmpty: h,
19
+ restoreConfirm: B,
20
+ restoreButton: d,
21
+ restoreError: v,
22
+ footer: E,
23
+ backButton: f,
24
24
  footerRight: u,
25
25
  restoreDisabled: w,
26
26
  checkboxSettings: C,
27
- checkboxSettingsOpts: O,
28
- checkboxOption: M,
29
- checkboxOptionActive: S
27
+ checkboxSettingsOpts: m,
28
+ checkboxOption: O,
29
+ checkboxOptionActive: R
30
30
  };
31
31
  export {
32
- E as backButton,
33
- M as checkboxOption,
34
- S as checkboxOptionActive,
32
+ f as backButton,
33
+ O as checkboxOption,
34
+ R as checkboxOptionActive,
35
35
  C as checkboxSettings,
36
- O as checkboxSettingsOpts,
37
- s as close,
36
+ m as checkboxSettingsOpts,
37
+ r as close,
38
38
  e as content,
39
- z as default,
39
+ y as default,
40
40
  l as fileManagerBtn,
41
- d as footer,
41
+ E as footer,
42
42
  u as footerRight,
43
43
  o as header,
44
44
  a as label,
45
- b as preview,
46
- v as previewButton,
47
- g as previewEmpty,
48
- h as previewError,
49
- B as restoreButton,
50
- x as restoreConfirm,
45
+ k as preview,
46
+ x as previewButton,
47
+ h as previewEmpty,
48
+ g as previewError,
49
+ d as restoreButton,
50
+ B as restoreConfirm,
51
51
  w as restoreDisabled,
52
- f as restoreError,
52
+ v as restoreError,
53
53
  t as restoreWizard,
54
54
  p as settingBlock,
55
- k as settingBlockError,
55
+ b as settingBlockError,
56
56
  i as step,
57
57
  _ as stepContent,
58
58
  n as stepCurrent,
59
59
  c as stepPassed,
60
- r as steps
60
+ s as steps
61
61
  };
62
62
  //# sourceMappingURL=RestoreWizard.module.scss.js.map
@@ -1,19 +1,19 @@
1
1
  import { jsxs as c, jsx as a } from "react/jsx-runtime";
2
2
  import { useTheme as n } from "../../../context/ThemeContext.js";
3
3
  import m from "../../common/form/Input/Input.js";
4
- import p from "../../common/form/Tristate/Tristate.js";
4
+ import f from "../../common/form/Tristate/Tristate.js";
5
5
  import d from "./GeneralSettings.module.scss.js";
6
- const t = ({ settings: e, onUpdate: i }) => {
7
- const { setTheme: o } = n(), r = (l) => {
8
- o(l), i({ ...e, theme: l });
6
+ const t = ({ settings: l, onUpdate: i }) => {
7
+ const { setTheme: o } = n(), r = (e) => {
8
+ o(e), i({ ...l, theme: e });
9
9
  };
10
10
  return /* @__PURE__ */ c("div", { children: [
11
11
  /* @__PURE__ */ a("div", { className: d.field, children: /* @__PURE__ */ a(
12
12
  m,
13
13
  {
14
14
  label: "App Instance Title",
15
- fieldValue: (e == null ? void 0 : e.title) || "",
16
- onUpdate: (l) => i({ ...e, title: l }),
15
+ fieldValue: (l == null ? void 0 : l.title) || "",
16
+ onUpdate: (e) => i({ ...l, title: e }),
17
17
  inline: !1
18
18
  }
19
19
  ) }),
@@ -21,8 +21,8 @@ const t = ({ settings: e, onUpdate: i }) => {
21
21
  m,
22
22
  {
23
23
  label: "App Instance Description",
24
- fieldValue: (e == null ? void 0 : e.description) || "",
25
- onUpdate: (l) => i({ ...e, description: l }),
24
+ fieldValue: (l == null ? void 0 : l.description) || "",
25
+ onUpdate: (e) => i({ ...l, description: e }),
26
26
  inline: !1
27
27
  }
28
28
  ) }),
@@ -30,25 +30,25 @@ const t = ({ settings: e, onUpdate: i }) => {
30
30
  m,
31
31
  {
32
32
  label: "Admin Email",
33
- fieldValue: e.admin_email || "",
34
- onUpdate: (l) => i({ ...e, admin_email: l }),
33
+ fieldValue: l.admin_email || "",
34
+ onUpdate: (e) => i({ ...l, admin_email: e }),
35
35
  type: "email",
36
36
  placeholder: "johndoe@mail.com",
37
37
  inline: !1
38
38
  }
39
39
  ) }),
40
40
  /* @__PURE__ */ a("div", { className: d.field, children: /* @__PURE__ */ a(
41
- p,
41
+ f,
42
42
  {
43
43
  label: "Color Scheme",
44
- fieldValue: e.theme,
44
+ fieldValue: l.theme,
45
45
  options: [
46
46
  { label: "Auto", value: "auto" },
47
47
  { label: "Dark", value: "dark" },
48
48
  { label: "Light", value: "light" }
49
49
  ],
50
- onUpdate: (l) => r(l),
51
- inline: !0
50
+ onUpdate: (e) => r(e),
51
+ inline: !1
52
52
  }
53
53
  ) })
54
54
  ] });
@@ -1 +1 @@
1
- {"version":3,"file":"GeneralSettings.js","sources":["../../../../src/components/Settings/GeneralSettings/GeneralSettings.tsx"],"sourcesContent":["import { useTheme } from '../../../context/ThemeContext';\r\nimport Input from '../../common/form/Input/Input';\r\nimport Tristate from '../../common/form/Tristate/Tristate';\r\nimport classes from './GeneralSettings.module.scss';\r\n\r\ninterface GeneralSettingsProps {\r\n settingsID: number;\r\n settings: Record<string, any>;\r\n onUpdate: (settings: Record<string, any>) => void;\r\n}\r\n\r\nconst GeneralSettings = ({ settings, onUpdate }: GeneralSettingsProps) => {\r\n const { setTheme } = useTheme();\r\n\r\n const handleThemeChange = (newThemeValue: 'auto' | 'light' | 'dark') => {\r\n setTheme(newThemeValue);\r\n onUpdate({ ...settings, theme: newThemeValue });\r\n };\r\n\r\n return (\r\n <div>\r\n <div className={classes.field}>\r\n <Input\r\n label=\"App Instance Title\"\r\n fieldValue={(settings?.title || '') as string}\r\n onUpdate={(val) => onUpdate({ ...settings, title: val })}\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Input\r\n label=\"App Instance Description\"\r\n fieldValue={(settings?.description || '') as string}\r\n onUpdate={(val) => onUpdate({ ...settings, description: val })}\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Input\r\n label=\"Admin Email\"\r\n fieldValue={settings.admin_email || ''}\r\n onUpdate={(val) => onUpdate({ ...settings, admin_email: val })}\r\n type=\"email\"\r\n placeholder=\"johndoe@mail.com\"\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Tristate\r\n label=\"Color Scheme\"\r\n fieldValue={settings.theme as string}\r\n options={[\r\n { label: 'Auto', value: 'auto' },\r\n { label: 'Dark', value: 'dark' },\r\n { label: 'Light', value: 'light' },\r\n ]}\r\n onUpdate={(val: string) => handleThemeChange(val as 'auto' | 'light' | 'dark')}\r\n inline={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default GeneralSettings;\r\n"],"names":["GeneralSettings","settings","onUpdate","setTheme","useTheme","handleThemeChange","newThemeValue","jsx","classes","Input","val","Tristate"],"mappings":";;;;;AAWA,MAAMA,IAAkB,CAAC,EAAE,UAAAC,GAAU,UAAAC,QAAqC;AACvE,QAAM,EAAE,UAAAC,EAAA,IAAaC,EAAA,GAEfC,IAAoB,CAACC,MAA6C;AACrE,IAAAH,EAASG,CAAa,GACtBJ,EAAS,EAAE,GAAGD,GAAU,OAAOK,GAAe;AAAA,EACjD;AAEA,2BACI,OAAA,EACE,UAAA;AAAA,IAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAQ,OACrB,UAAA,gBAAAD;AAAA,MAACE;AAAA,MAAA;AAAA,QACE,OAAM;AAAA,QACN,aAAaR,KAAA,gBAAAA,EAAU,UAAS;AAAA,QAChC,UAAU,CAACS,MAAQR,EAAS,EAAE,GAAGD,GAAU,OAAOS,GAAK;AAAA,QACvD,QAAQ;AAAA,MAAA;AAAA,IAAA,GAEd;AAAA,IACA,gBAAAH,EAAC,OAAA,EAAI,WAAWC,EAAQ,OACrB,UAAA,gBAAAD;AAAA,MAACE;AAAA,MAAA;AAAA,QACE,OAAM;AAAA,QACN,aAAaR,KAAA,gBAAAA,EAAU,gBAAe;AAAA,QACtC,UAAU,CAACS,MAAQR,EAAS,EAAE,GAAGD,GAAU,aAAaS,GAAK;AAAA,QAC7D,QAAQ;AAAA,MAAA;AAAA,IAAA,GAEd;AAAA,IACA,gBAAAH,EAAC,OAAA,EAAI,WAAWC,EAAQ,OACrB,UAAA,gBAAAD;AAAA,MAACE;AAAA,MAAA;AAAA,QACE,OAAM;AAAA,QACN,YAAYR,EAAS,eAAe;AAAA,QACpC,UAAU,CAACS,MAAQR,EAAS,EAAE,GAAGD,GAAU,aAAaS,GAAK;AAAA,QAC7D,MAAK;AAAA,QACL,aAAY;AAAA,QACZ,QAAQ;AAAA,MAAA;AAAA,IAAA,GAEd;AAAA,IACA,gBAAAH,EAAC,OAAA,EAAI,WAAWC,EAAQ,OACrB,UAAA,gBAAAD;AAAA,MAACI;AAAA,MAAA;AAAA,QACE,OAAM;AAAA,QACN,YAAYV,EAAS;AAAA,QACrB,SAAS;AAAA,UACN,EAAE,OAAO,QAAQ,OAAO,OAAA;AAAA,UACxB,EAAE,OAAO,QAAQ,OAAO,OAAA;AAAA,UACxB,EAAE,OAAO,SAAS,OAAO,QAAA;AAAA,QAAQ;AAAA,QAEpC,UAAU,CAACS,MAAgBL,EAAkBK,CAAgC;AAAA,QAC7E,QAAQ;AAAA,MAAA;AAAA,IAAA,EACX,CACH;AAAA,EAAA,GACH;AAEN;"}
1
+ {"version":3,"file":"GeneralSettings.js","sources":["../../../../src/components/Settings/GeneralSettings/GeneralSettings.tsx"],"sourcesContent":["import { useTheme } from '../../../context/ThemeContext';\r\nimport Input from '../../common/form/Input/Input';\r\nimport Tristate from '../../common/form/Tristate/Tristate';\r\nimport classes from './GeneralSettings.module.scss';\r\n\r\ninterface GeneralSettingsProps {\r\n settingsID: number;\r\n settings: Record<string, any>;\r\n onUpdate: (settings: Record<string, any>) => void;\r\n}\r\n\r\nconst GeneralSettings = ({ settings, onUpdate }: GeneralSettingsProps) => {\r\n const { setTheme } = useTheme();\r\n\r\n const handleThemeChange = (newThemeValue: 'auto' | 'light' | 'dark') => {\r\n setTheme(newThemeValue);\r\n onUpdate({ ...settings, theme: newThemeValue });\r\n };\r\n\r\n return (\r\n <div>\r\n <div className={classes.field}>\r\n <Input\r\n label=\"App Instance Title\"\r\n fieldValue={(settings?.title || '') as string}\r\n onUpdate={(val) => onUpdate({ ...settings, title: val })}\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Input\r\n label=\"App Instance Description\"\r\n fieldValue={(settings?.description || '') as string}\r\n onUpdate={(val) => onUpdate({ ...settings, description: val })}\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Input\r\n label=\"Admin Email\"\r\n fieldValue={settings.admin_email || ''}\r\n onUpdate={(val) => onUpdate({ ...settings, admin_email: val })}\r\n type=\"email\"\r\n placeholder=\"johndoe@mail.com\"\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Tristate\r\n label=\"Color Scheme\"\r\n fieldValue={settings.theme as string}\r\n options={[\r\n { label: 'Auto', value: 'auto' },\r\n { label: 'Dark', value: 'dark' },\r\n { label: 'Light', value: 'light' },\r\n ]}\r\n onUpdate={(val: string) => handleThemeChange(val as 'auto' | 'light' | 'dark')}\r\n inline={false}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default GeneralSettings;\r\n"],"names":["GeneralSettings","settings","onUpdate","setTheme","useTheme","handleThemeChange","newThemeValue","jsx","classes","Input","val","Tristate"],"mappings":";;;;;AAWA,MAAMA,IAAkB,CAAC,EAAE,UAAAC,GAAU,UAAAC,QAAqC;AACvE,QAAM,EAAE,UAAAC,EAAA,IAAaC,EAAA,GAEfC,IAAoB,CAACC,MAA6C;AACrE,IAAAH,EAASG,CAAa,GACtBJ,EAAS,EAAE,GAAGD,GAAU,OAAOK,GAAe;AAAA,EACjD;AAEA,2BACI,OAAA,EACE,UAAA;AAAA,IAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAQ,OACrB,UAAA,gBAAAD;AAAA,MAACE;AAAA,MAAA;AAAA,QACE,OAAM;AAAA,QACN,aAAaR,KAAA,gBAAAA,EAAU,UAAS;AAAA,QAChC,UAAU,CAACS,MAAQR,EAAS,EAAE,GAAGD,GAAU,OAAOS,GAAK;AAAA,QACvD,QAAQ;AAAA,MAAA;AAAA,IAAA,GAEd;AAAA,IACA,gBAAAH,EAAC,OAAA,EAAI,WAAWC,EAAQ,OACrB,UAAA,gBAAAD;AAAA,MAACE;AAAA,MAAA;AAAA,QACE,OAAM;AAAA,QACN,aAAaR,KAAA,gBAAAA,EAAU,gBAAe;AAAA,QACtC,UAAU,CAACS,MAAQR,EAAS,EAAE,GAAGD,GAAU,aAAaS,GAAK;AAAA,QAC7D,QAAQ;AAAA,MAAA;AAAA,IAAA,GAEd;AAAA,IACA,gBAAAH,EAAC,OAAA,EAAI,WAAWC,EAAQ,OACrB,UAAA,gBAAAD;AAAA,MAACE;AAAA,MAAA;AAAA,QACE,OAAM;AAAA,QACN,YAAYR,EAAS,eAAe;AAAA,QACpC,UAAU,CAACS,MAAQR,EAAS,EAAE,GAAGD,GAAU,aAAaS,GAAK;AAAA,QAC7D,MAAK;AAAA,QACL,aAAY;AAAA,QACZ,QAAQ;AAAA,MAAA;AAAA,IAAA,GAEd;AAAA,IACA,gBAAAH,EAAC,OAAA,EAAI,WAAWC,EAAQ,OACrB,UAAA,gBAAAD;AAAA,MAACI;AAAA,MAAA;AAAA,QACE,OAAM;AAAA,QACN,YAAYV,EAAS;AAAA,QACrB,SAAS;AAAA,UACN,EAAE,OAAO,QAAQ,OAAO,OAAA;AAAA,UACxB,EAAE,OAAO,QAAQ,OAAO,OAAA;AAAA,UACxB,EAAE,OAAO,SAAS,OAAO,QAAA;AAAA,QAAQ;AAAA,QAEpC,UAAU,CAACS,MAAgBL,EAAkBK,CAAgC;AAAA,QAC7E,QAAQ;AAAA,MAAA;AAAA,IAAA,EACX,CACH;AAAA,EAAA,GACH;AAEN;"}
@@ -1 +1 @@
1
- {"version":3,"file":"IntegrationSettings.d.ts","sourceRoot":"","sources":["../../../../src/components/Settings/IntegrationSettings/IntegrationSettings.tsx"],"names":[],"mappings":"AAOA,UAAU,wBAAwB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,QAAQ,EAAE,CAAC,QAAQ,EAAE,wBAAwB,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;CACrE;AAED,QAAA,MAAM,mBAAmB,GAAI,oCAAoC,wBAAwB,4CA8CxF,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"IntegrationSettings.d.ts","sourceRoot":"","sources":["../../../../src/components/Settings/IntegrationSettings/IntegrationSettings.tsx"],"names":[],"mappings":"AAOA,UAAU,wBAAwB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,QAAQ,EAAE,CAAC,QAAQ,EAAE,wBAAwB,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;CACrE;AAED,QAAA,MAAM,mBAAmB,GAAI,oCAAoC,wBAAwB,4CAqDxF,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -1,47 +1,56 @@
1
- import { jsxs as g, jsx as t, Fragment as f } from "react/jsx-runtime";
2
- import { useState as n } from "react";
3
- import M from "./IntegrationSettings.module.scss.js";
1
+ import { jsxs as M, jsx as e, Fragment as T } from "react/jsx-runtime";
2
+ import { useState as m } from "react";
3
+ import h from "./IntegrationSettings.module.scss.js";
4
4
  import S from "../../common/form/Input/Input.js";
5
- import T from "../../common/ActionModal/ActionModal.js";
6
- import { useValidateIntegration as h } from "../../../services/settings.js";
7
- import y from "./SMTPSettings.js";
8
- const j = ({ settingsID: r, settings: e, onUpdate: m }) => {
5
+ import I from "../../common/ActionModal/ActionModal.js";
6
+ import { useValidateIntegration as E } from "../../../services/settings.js";
7
+ import v from "./SMTPSettings.js";
8
+ const V = ({ settingsID: c, settings: o, onUpdate: d }) => {
9
9
  var l;
10
- const [i, c] = n(""), [d, o] = n(""), p = (e == null ? void 0 : e.integration) || {}, { smtp: a } = p || {}, s = h();
11
- return console.log("smtp :", a), /* @__PURE__ */ g("div", { className: M.integrations, children: [
12
- /* @__PURE__ */ t("div", { children: /* @__PURE__ */ t(y, { settings: a, onUpdate: m, showTestModal: o }) }),
13
- d && /* @__PURE__ */ t(
14
- T,
10
+ const [n, p] = m(""), [g, a] = m(""), i = (o == null ? void 0 : o.integration) || {}, { smtp: u } = i || {}, s = E(), f = (t, r) => {
11
+ console.log("onIntegrationUpdate :", t, r), d({ ...i, [t]: { ...i[t], ...r } });
12
+ };
13
+ return /* @__PURE__ */ M("div", { className: h.integrations, children: [
14
+ /* @__PURE__ */ e("div", { children: /* @__PURE__ */ e(
15
+ v,
16
+ {
17
+ settings: u,
18
+ onUpdate: (t) => f("smtp", t),
19
+ showTestModal: (t) => a(t)
20
+ }
21
+ ) }),
22
+ g && /* @__PURE__ */ e(
23
+ I,
15
24
  {
16
25
  title: "Test SMTP Integration",
17
- message: /* @__PURE__ */ t(f, { children: /* @__PURE__ */ t(
26
+ message: /* @__PURE__ */ e(T, { children: /* @__PURE__ */ e(
18
27
  S,
19
28
  {
20
29
  label: "Send Test Email to this email",
21
30
  full: !0,
22
- fieldValue: i,
23
- onUpdate: (u) => c(u),
31
+ fieldValue: n,
32
+ onUpdate: (t) => p(t),
24
33
  type: "email",
25
34
  placeholder: "test@test.com"
26
35
  }
27
36
  ) }),
28
37
  errorMessage: (l = s.error) == null ? void 0 : l.message,
29
38
  successMessage: s.isSuccess ? "Test email sent. Integration validated successfully." : "",
30
- closeModal: () => o(""),
39
+ closeModal: () => a(""),
31
40
  width: "400px",
32
- secondaryAction: { title: "Close", action: () => o("") },
41
+ secondaryAction: { title: "Close", action: () => a("") },
33
42
  primaryAction: {
34
43
  title: "Send Test Email",
35
44
  type: "default",
36
45
  icon: "email",
37
46
  isPending: s.isPending,
38
- action: () => s.mutate({ settingsID: r, type: "smtp", settings: e, test: { email: i } })
47
+ action: () => s.mutate({ settingsID: c, type: "smtp", settings: o, test: { email: n } })
39
48
  }
40
49
  }
41
50
  )
42
51
  ] });
43
52
  };
44
53
  export {
45
- j as default
54
+ V as default
46
55
  };
47
56
  //# sourceMappingURL=IntegrationSettings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IntegrationSettings.js","sources":["../../../../src/components/Settings/IntegrationSettings/IntegrationSettings.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport classes from './IntegrationSettings.module.scss';\r\nimport Input from '../../common/form/Input/Input';\r\nimport ActionModal from '../../common/ActionModal/ActionModal';\r\nimport { useValidateIntegration } from '../../../services/settings';\r\nimport SMTPSettings from './SMTPSettings';\r\n\r\ninterface IntegrationSettingsProps {\r\n settingsID: number;\r\n settings: Record<string, any>;\r\n onUpdate: (settings: IntegrationSettingsProps['settings']) => void;\r\n}\r\n\r\nconst IntegrationSettings = ({ settingsID, settings, onUpdate }: IntegrationSettingsProps) => {\r\n const [testEmail, setTestEmail] = useState('');\r\n const [showEmailTestModal, setShowEmailTestModal] = useState<'' | 'smtp'>('');\r\n const integrationSettings = settings?.integration || {};\r\n const { smtp } = integrationSettings || {};\r\n\r\n const validationMutation = useValidateIntegration();\r\n\r\n console.log('smtp :', smtp);\r\n\r\n return (\r\n <div className={classes.integrations}>\r\n <div>\r\n <SMTPSettings settings={smtp} onUpdate={onUpdate} showTestModal={setShowEmailTestModal} />\r\n </div>\r\n {showEmailTestModal && (\r\n <ActionModal\r\n title={`Test SMTP Integration`}\r\n message={\r\n <>\r\n <Input\r\n label=\"Send Test Email to this email\"\r\n full={true}\r\n fieldValue={testEmail}\r\n onUpdate={(val) => setTestEmail(val)}\r\n type=\"email\"\r\n placeholder=\"test@test.com\"\r\n />\r\n </>\r\n }\r\n errorMessage={validationMutation.error?.message}\r\n successMessage={validationMutation.isSuccess ? 'Test email sent. Integration validated successfully.' : ''}\r\n closeModal={() => setShowEmailTestModal('')}\r\n width=\"400px\"\r\n secondaryAction={{ title: 'Close', action: () => setShowEmailTestModal('') }}\r\n primaryAction={{\r\n title: `Send Test Email`,\r\n type: 'default',\r\n icon: 'email',\r\n isPending: validationMutation.isPending,\r\n action: () => validationMutation.mutate({ settingsID, type: 'smtp', settings: settings, test: { email: testEmail } }),\r\n }}\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default IntegrationSettings;\r\n"],"names":["IntegrationSettings","settingsID","settings","onUpdate","testEmail","setTestEmail","useState","showEmailTestModal","setShowEmailTestModal","integrationSettings","smtp","validationMutation","useValidateIntegration","jsxs","classes","jsx","SMTPSettings","ActionModal","Fragment","Input","val","_a"],"mappings":";;;;;;;AAaA,MAAMA,IAAsB,CAAC,EAAE,YAAAC,GAAY,UAAAC,GAAU,UAAAC,QAAyC;;AAC3F,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAE,GACvC,CAACC,GAAoBC,CAAqB,IAAIF,EAAsB,EAAE,GACtEG,KAAsBP,KAAA,gBAAAA,EAAU,gBAAe,CAAA,GAC/C,EAAE,MAAAQ,MAASD,KAAuB,CAAA,GAElCE,IAAqBC,EAAA;AAE3B,iBAAQ,IAAI,UAAUF,CAAI,GAGvB,gBAAAG,EAAC,OAAA,EAAI,WAAWC,EAAQ,cACrB,UAAA;AAAA,IAAA,gBAAAC,EAAC,OAAA,EACE,4BAACC,GAAA,EAAa,UAAUN,GAAM,UAAAP,GAAoB,eAAeK,GAAuB,EAAA,CAC3F;AAAA,IACCD,KACE,gBAAAQ;AAAA,MAACE;AAAA,MAAA;AAAA,QACE,OAAO;AAAA,QACP,SACG,gBAAAF,EAAAG,GAAA,EACG,UAAA,gBAAAH;AAAA,UAACI;AAAA,UAAA;AAAA,YACE,OAAM;AAAA,YACN,MAAM;AAAA,YACN,YAAYf;AAAA,YACZ,UAAU,CAACgB,MAAQf,EAAae,CAAG;AAAA,YACnC,MAAK;AAAA,YACL,aAAY;AAAA,UAAA;AAAA,QAAA,GAElB;AAAA,QAEH,eAAcC,IAAAV,EAAmB,UAAnB,gBAAAU,EAA0B;AAAA,QACxC,gBAAgBV,EAAmB,YAAY,yDAAyD;AAAA,QACxG,YAAY,MAAMH,EAAsB,EAAE;AAAA,QAC1C,OAAM;AAAA,QACN,iBAAiB,EAAE,OAAO,SAAS,QAAQ,MAAMA,EAAsB,EAAE,EAAA;AAAA,QACzE,eAAe;AAAA,UACZ,OAAO;AAAA,UACP,MAAM;AAAA,UACN,MAAM;AAAA,UACN,WAAWG,EAAmB;AAAA,UAC9B,QAAQ,MAAMA,EAAmB,OAAO,EAAE,YAAAV,GAAY,MAAM,QAAQ,UAAAC,GAAoB,MAAM,EAAE,OAAOE,EAAA,GAAa;AAAA,QAAA;AAAA,MACvH;AAAA,IAAA;AAAA,EACH,GAEN;AAEN;"}
1
+ {"version":3,"file":"IntegrationSettings.js","sources":["../../../../src/components/Settings/IntegrationSettings/IntegrationSettings.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport classes from './IntegrationSettings.module.scss';\r\nimport Input from '../../common/form/Input/Input';\r\nimport ActionModal from '../../common/ActionModal/ActionModal';\r\nimport { useValidateIntegration } from '../../../services/settings';\r\nimport SMTPSettings from './SMTPSettings';\r\n\r\ninterface IntegrationSettingsProps {\r\n settingsID: number;\r\n settings: Record<string, any>;\r\n onUpdate: (settings: IntegrationSettingsProps['settings']) => void;\r\n}\r\n\r\nconst IntegrationSettings = ({ settingsID, settings, onUpdate }: IntegrationSettingsProps) => {\r\n const [testEmail, setTestEmail] = useState('');\r\n const [showEmailTestModal, setShowEmailTestModal] = useState<'' | 'smtp'>('');\r\n const integrationSettings = settings?.integration || {};\r\n const { smtp } = integrationSettings || {};\r\n\r\n const validationMutation = useValidateIntegration();\r\n\r\n const onIntegrationUpdate = (key: string, intSettings: Record<string, any>) => {\r\n console.log('onIntegrationUpdate :', key, intSettings);\r\n onUpdate({ ...integrationSettings, [key]: { ...integrationSettings[key], ...intSettings } });\r\n };\r\n\r\n return (\r\n <div className={classes.integrations}>\r\n <div>\r\n <SMTPSettings\r\n settings={smtp}\r\n onUpdate={(iSettings) => onIntegrationUpdate('smtp', iSettings)}\r\n showTestModal={(type) => setShowEmailTestModal(type)}\r\n />\r\n </div>\r\n {showEmailTestModal && (\r\n <ActionModal\r\n title={`Test SMTP Integration`}\r\n message={\r\n <>\r\n <Input\r\n label=\"Send Test Email to this email\"\r\n full={true}\r\n fieldValue={testEmail}\r\n onUpdate={(val) => setTestEmail(val)}\r\n type=\"email\"\r\n placeholder=\"test@test.com\"\r\n />\r\n </>\r\n }\r\n errorMessage={validationMutation.error?.message}\r\n successMessage={validationMutation.isSuccess ? 'Test email sent. Integration validated successfully.' : ''}\r\n closeModal={() => setShowEmailTestModal('')}\r\n width=\"400px\"\r\n secondaryAction={{ title: 'Close', action: () => setShowEmailTestModal('') }}\r\n primaryAction={{\r\n title: `Send Test Email`,\r\n type: 'default',\r\n icon: 'email',\r\n isPending: validationMutation.isPending,\r\n action: () => validationMutation.mutate({ settingsID, type: 'smtp', settings: settings, test: { email: testEmail } }),\r\n }}\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default IntegrationSettings;\r\n"],"names":["IntegrationSettings","settingsID","settings","onUpdate","testEmail","setTestEmail","useState","showEmailTestModal","setShowEmailTestModal","integrationSettings","smtp","validationMutation","useValidateIntegration","onIntegrationUpdate","key","intSettings","jsxs","classes","jsx","SMTPSettings","iSettings","type","ActionModal","Fragment","Input","val","_a"],"mappings":";;;;;;;AAaA,MAAMA,IAAsB,CAAC,EAAE,YAAAC,GAAY,UAAAC,GAAU,UAAAC,QAAyC;;AAC3F,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAE,GACvC,CAACC,GAAoBC,CAAqB,IAAIF,EAAsB,EAAE,GACtEG,KAAsBP,KAAA,gBAAAA,EAAU,gBAAe,CAAA,GAC/C,EAAE,MAAAQ,MAASD,KAAuB,CAAA,GAElCE,IAAqBC,EAAA,GAErBC,IAAsB,CAACC,GAAaC,MAAqC;AAC5E,YAAQ,IAAI,yBAAyBD,GAAKC,CAAW,GACrDZ,EAAS,EAAE,GAAGM,GAAqB,CAACK,CAAG,GAAG,EAAE,GAAGL,EAAoBK,CAAG,GAAG,GAAGC,EAAA,GAAe;AAAA,EAC9F;AAEA,SACG,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAQ,cACrB,UAAA;AAAA,IAAA,gBAAAC,EAAC,OAAA,EACE,UAAA,gBAAAA;AAAA,MAACC;AAAA,MAAA;AAAA,QACE,UAAUT;AAAA,QACV,UAAU,CAACU,MAAcP,EAAoB,QAAQO,CAAS;AAAA,QAC9D,eAAe,CAACC,MAASb,EAAsBa,CAAI;AAAA,MAAA;AAAA,IAAA,GAEzD;AAAA,IACCd,KACE,gBAAAW;AAAA,MAACI;AAAA,MAAA;AAAA,QACE,OAAO;AAAA,QACP,SACG,gBAAAJ,EAAAK,GAAA,EACG,UAAA,gBAAAL;AAAA,UAACM;AAAA,UAAA;AAAA,YACE,OAAM;AAAA,YACN,MAAM;AAAA,YACN,YAAYpB;AAAA,YACZ,UAAU,CAACqB,MAAQpB,EAAaoB,CAAG;AAAA,YACnC,MAAK;AAAA,YACL,aAAY;AAAA,UAAA;AAAA,QAAA,GAElB;AAAA,QAEH,eAAcC,IAAAf,EAAmB,UAAnB,gBAAAe,EAA0B;AAAA,QACxC,gBAAgBf,EAAmB,YAAY,yDAAyD;AAAA,QACxG,YAAY,MAAMH,EAAsB,EAAE;AAAA,QAC1C,OAAM;AAAA,QACN,iBAAiB,EAAE,OAAO,SAAS,QAAQ,MAAMA,EAAsB,EAAE,EAAA;AAAA,QACzE,eAAe;AAAA,UACZ,OAAO;AAAA,UACP,MAAM;AAAA,UACN,MAAM;AAAA,UACN,WAAWG,EAAmB;AAAA,UAC9B,QAAQ,MAAMA,EAAmB,OAAO,EAAE,YAAAV,GAAY,MAAM,QAAQ,UAAAC,GAAoB,MAAM,EAAE,OAAOE,EAAA,GAAa;AAAA,QAAA;AAAA,MACvH;AAAA,IAAA;AAAA,EACH,GAEN;AAEN;"}