@plutonhq/core-frontend 0.1.32 → 0.1.34

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 (135) hide show
  1. package/dist-lib/@types/plans.d.ts +4 -0
  2. package/dist-lib/@types/plans.d.ts.map +1 -1
  3. package/dist-lib/components/Device/DeviceResticSettings/DeviceResticSettings.js +4 -4
  4. package/dist-lib/components/Device/DeviceResticSettings/DeviceResticSettings.js.map +1 -1
  5. package/dist-lib/components/Plan/AddPlan/AddPlan.d.ts.map +1 -1
  6. package/dist-lib/components/Plan/AddPlan/AddPlan.js +29 -24
  7. package/dist-lib/components/Plan/AddPlan/AddPlan.js.map +1 -1
  8. package/dist-lib/components/Plan/BackupProgress/BackupProgress.js +34 -33
  9. package/dist-lib/components/Plan/BackupProgress/BackupProgress.js.map +1 -1
  10. package/dist-lib/components/Plan/FilterPlans/FilterPlans.d.ts +9 -0
  11. package/dist-lib/components/Plan/FilterPlans/FilterPlans.d.ts.map +1 -0
  12. package/dist-lib/components/Plan/FilterPlans/FilterPlans.js +117 -0
  13. package/dist-lib/components/Plan/FilterPlans/FilterPlans.js.map +1 -0
  14. package/dist-lib/components/Plan/FilterPlans/FilterPlans.module.scss.js +20 -0
  15. package/dist-lib/components/Plan/FilterPlans/FilterPlans.module.scss.js.map +1 -0
  16. package/dist-lib/components/Plan/PlanForm/PlanForm.d.ts +4 -2
  17. package/dist-lib/components/Plan/PlanForm/PlanForm.d.ts.map +1 -1
  18. package/dist-lib/components/Plan/PlanForm/PlanForm.js +33 -29
  19. package/dist-lib/components/Plan/PlanForm/PlanForm.js.map +1 -1
  20. package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.d.ts +2 -1
  21. package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.d.ts.map +1 -1
  22. package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.js +85 -57
  23. package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.js.map +1 -1
  24. package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.module.scss.js +11 -9
  25. package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.module.scss.js.map +1 -1
  26. package/dist-lib/components/Plan/PlanItems/PlanItem.js +1 -1
  27. package/dist-lib/components/Plan/PlanItems/PlanItem.js.map +1 -1
  28. package/dist-lib/components/Plan/PlanRepair/PlanRepair.d.ts +9 -0
  29. package/dist-lib/components/Plan/PlanRepair/PlanRepair.d.ts.map +1 -0
  30. package/dist-lib/components/Plan/PlanRepair/PlanRepair.js +262 -0
  31. package/dist-lib/components/Plan/PlanRepair/PlanRepair.js.map +1 -0
  32. package/dist-lib/components/Plan/PlanRepair/PlanRepair.module.scss.js +14 -0
  33. package/dist-lib/components/Plan/PlanRepair/PlanRepair.module.scss.js.map +1 -0
  34. package/dist-lib/components/Plan/PlanSettings/PlanAdvancedSettings.d.ts +4 -2
  35. package/dist-lib/components/Plan/PlanSettings/PlanAdvancedSettings.d.ts.map +1 -1
  36. package/dist-lib/components/Plan/PlanSettings/PlanAdvancedSettings.js +24 -22
  37. package/dist-lib/components/Plan/PlanSettings/PlanAdvancedSettings.js.map +1 -1
  38. package/dist-lib/components/Plan/PlanSettings/PlanGeneralSettings.d.ts +4 -2
  39. package/dist-lib/components/Plan/PlanSettings/PlanGeneralSettings.d.ts.map +1 -1
  40. package/dist-lib/components/Plan/PlanSettings/PlanGeneralSettings.js +39 -28
  41. package/dist-lib/components/Plan/PlanSettings/PlanGeneralSettings.js.map +1 -1
  42. package/dist-lib/components/Plan/PlanSettings/PlanPerformanceSettings.js +2 -2
  43. package/dist-lib/components/Plan/PlanSettings/PlanPerformanceSettings.js.map +1 -1
  44. package/dist-lib/components/Plan/PlanSettings/PlanSettings.module.scss.js +66 -64
  45. package/dist-lib/components/Plan/PlanSettings/PlanSettings.module.scss.js.map +1 -1
  46. package/dist-lib/components/Plan/PlanSizeChart/PlanSizeChart.d.ts +7 -0
  47. package/dist-lib/components/Plan/PlanSizeChart/PlanSizeChart.d.ts.map +1 -0
  48. package/dist-lib/components/Plan/PlanSizeChart/PlanSizeChart.js +116 -0
  49. package/dist-lib/components/Plan/PlanSizeChart/PlanSizeChart.js.map +1 -0
  50. package/dist-lib/components/Plan/PlanSizeChart/PlanSizeChart.module.scss.js +20 -0
  51. package/dist-lib/components/Plan/PlanSizeChart/PlanSizeChart.module.scss.js.map +1 -0
  52. package/dist-lib/components/Plan/PlanStats/PlanStats.d.ts.map +1 -1
  53. package/dist-lib/components/Plan/PlanStats/PlanStats.js +29 -30
  54. package/dist-lib/components/Plan/PlanStats/PlanStats.js.map +1 -1
  55. package/dist-lib/components/Plan/PlanStats/PlanStats.module.scss.js +16 -14
  56. package/dist-lib/components/Plan/PlanStats/PlanStats.module.scss.js.map +1 -1
  57. package/dist-lib/components/common/FileManager/FileManager.module.scss.js +18 -16
  58. package/dist-lib/components/common/FileManager/FileManager.module.scss.js.map +1 -1
  59. package/dist-lib/components/common/Icon/Icon.d.ts.map +1 -1
  60. package/dist-lib/components/common/Icon/Icon.js +395 -378
  61. package/dist-lib/components/common/Icon/Icon.js.map +1 -1
  62. package/dist-lib/components/common/SortItems/SortItems.d.ts +2 -1
  63. package/dist-lib/components/common/SortItems/SortItems.d.ts.map +1 -1
  64. package/dist-lib/components/common/SortItems/SortItems.js +14 -14
  65. package/dist-lib/components/common/SortItems/SortItems.js.map +1 -1
  66. package/dist-lib/components/common/SortItems/SortItems.module.scss.js +1 -1
  67. package/dist-lib/components/common/form/MultiSelect/MultiSelect.module.scss.js +16 -16
  68. package/dist-lib/components/index.d.ts +2 -0
  69. package/dist-lib/components/index.d.ts.map +1 -1
  70. package/dist-lib/components.js +199 -195
  71. package/dist-lib/components.js.map +1 -1
  72. package/dist-lib/hooks/usePlanSingleActions.d.ts.map +1 -1
  73. package/dist-lib/hooks/usePlanSingleActions.js +22 -19
  74. package/dist-lib/hooks/usePlanSingleActions.js.map +1 -1
  75. package/dist-lib/node_modules/.pnpm/@kurkle_color@0.3.4/node_modules/@kurkle/color/dist/color.esm.js +449 -0
  76. package/dist-lib/node_modules/.pnpm/@kurkle_color@0.3.4/node_modules/@kurkle/color/dist/color.esm.js.map +1 -0
  77. package/dist-lib/node_modules/.pnpm/chart.js@4.5.1/node_modules/chart.js/dist/chart.js +5219 -0
  78. package/dist-lib/node_modules/.pnpm/chart.js@4.5.1/node_modules/chart.js/dist/chart.js.map +1 -0
  79. package/dist-lib/node_modules/.pnpm/chart.js@4.5.1/node_modules/chart.js/dist/chunks/helpers.dataset.js +1691 -0
  80. package/dist-lib/node_modules/.pnpm/chart.js@4.5.1/node_modules/chart.js/dist/chunks/helpers.dataset.js.map +1 -0
  81. package/dist-lib/node_modules/.pnpm/react-chartjs-2@5.3.1_chart.js@4.5.1_react@18.3.1/node_modules/react-chartjs-2/dist/index.js +93 -0
  82. package/dist-lib/node_modules/.pnpm/react-chartjs-2@5.3.1_chart.js@4.5.1_react@18.3.1/node_modules/react-chartjs-2/dist/index.js.map +1 -0
  83. package/dist-lib/routes/Login/Login.d.ts.map +1 -1
  84. package/dist-lib/routes/Login/Login.js +45 -36
  85. package/dist-lib/routes/Login/Login.js.map +1 -1
  86. package/dist-lib/routes/PlanSingle/PlanSingle.d.ts.map +1 -1
  87. package/dist-lib/routes/PlanSingle/PlanSingle.js +131 -118
  88. package/dist-lib/routes/PlanSingle/PlanSingle.js.map +1 -1
  89. package/dist-lib/routes/Plans/Plans.d.ts.map +1 -1
  90. package/dist-lib/routes/Plans/Plans.js +77 -51
  91. package/dist-lib/routes/Plans/Plans.js.map +1 -1
  92. package/dist-lib/services/plans.d.ts +33 -5
  93. package/dist-lib/services/plans.d.ts.map +1 -1
  94. package/dist-lib/services/plans.js +92 -67
  95. package/dist-lib/services/plans.js.map +1 -1
  96. package/dist-lib/services.js +93 -91
  97. package/dist-lib/styles/core-frontend.css +1 -1
  98. package/dist-lib/utils/helpers.d.ts +2 -0
  99. package/dist-lib/utils/helpers.d.ts.map +1 -1
  100. package/dist-lib/utils/helpers.js +68 -42
  101. package/dist-lib/utils/helpers.js.map +1 -1
  102. package/dist-lib/utils.js +36 -34
  103. package/package.json +3 -1
  104. package/src/@types/plans.ts +5 -0
  105. package/src/components/Device/DeviceResticSettings/DeviceResticSettings.tsx +2 -2
  106. package/src/components/Plan/AddPlan/AddPlan.tsx +22 -16
  107. package/src/components/Plan/BackupProgress/BackupProgress.tsx +1 -1
  108. package/src/components/Plan/FilterPlans/FilterPlans.module.scss +65 -0
  109. package/src/components/Plan/FilterPlans/FilterPlans.tsx +126 -0
  110. package/src/components/Plan/PlanForm/PlanForm.tsx +7 -1
  111. package/src/components/Plan/PlanIntegrity/PlanIntegrity.module.scss +19 -0
  112. package/src/components/Plan/PlanIntegrity/PlanIntegrity.tsx +40 -3
  113. package/src/components/Plan/PlanItems/PlanItem.tsx +1 -1
  114. package/src/components/Plan/PlanRepair/PlanRepair.module.scss +53 -0
  115. package/src/components/Plan/PlanRepair/PlanRepair.tsx +243 -0
  116. package/src/components/Plan/PlanSettings/PlanAdvancedSettings.tsx +6 -2
  117. package/src/components/Plan/PlanSettings/PlanGeneralSettings.tsx +14 -2
  118. package/src/components/Plan/PlanSettings/PlanPerformanceSettings.tsx +2 -2
  119. package/src/components/Plan/PlanSettings/PlanSettings.module.scss +8 -0
  120. package/src/components/Plan/PlanSizeChart/PlanSizeChart.module.scss +76 -0
  121. package/src/components/Plan/PlanSizeChart/PlanSizeChart.tsx +166 -0
  122. package/src/components/Plan/PlanStats/PlanStats.module.scss +16 -2
  123. package/src/components/Plan/PlanStats/PlanStats.tsx +8 -11
  124. package/src/components/common/FileManager/FileManager.module.scss +7 -0
  125. package/src/components/common/Icon/Icon.tsx +21 -0
  126. package/src/components/common/SortItems/SortItems.module.scss +3 -2
  127. package/src/components/common/SortItems/SortItems.tsx +6 -3
  128. package/src/components/common/form/MultiSelect/MultiSelect.module.scss +1 -0
  129. package/src/components/index.ts +2 -0
  130. package/src/hooks/usePlanSingleActions.tsx +26 -23
  131. package/src/routes/Login/Login.tsx +8 -2
  132. package/src/routes/PlanSingle/PlanSingle.tsx +17 -0
  133. package/src/routes/Plans/Plans.tsx +70 -35
  134. package/src/services/plans.ts +40 -4
  135. package/src/utils/helpers.ts +25 -0
@@ -1,25 +1,25 @@
1
- import { jsxs as c, jsx as t, Fragment as g } from "react/jsx-runtime";
2
- import { useState as h, useMemo as y } from "react";
1
+ import { jsxs as c, jsx as t, Fragment as y } from "react/jsx-runtime";
2
+ import { useState as P, useMemo as T } from "react";
3
3
  import l from "../../common/Icon/Icon.js";
4
4
  import n from "./PlanSettings.module.scss.js";
5
- import P from "./PlanNotificationSettings.js";
6
- import T from "./PlanPerformanceSettings.js";
7
- import G from "../../common/form/TagsInput/TagsInput.js";
8
- import M from "./PlanGeneralSettings.js";
9
- import { isMobile as A } from "../../../utils/helpers.js";
10
- import C from "../../common/form/Select/Select.js";
11
- import z from "./PlanScriptsSettings.js";
12
- const F = ({ plan: i, appSettings: s, device: m, onUpdate: r, isEditing: u }) => {
5
+ import G from "./PlanNotificationSettings.js";
6
+ import M from "./PlanPerformanceSettings.js";
7
+ import A from "../../common/form/TagsInput/TagsInput.js";
8
+ import C from "./PlanGeneralSettings.js";
9
+ import { isMobile as z } from "../../../utils/helpers.js";
10
+ import k from "../../common/form/Select/Select.js";
11
+ import _ from "./PlanScriptsSettings.js";
12
+ const q = ({ plan: i, appSettings: s, device: m, onUpdate: r, isEditing: u, runSettings: N, setRunSettings: g }) => {
13
13
  var v, b;
14
- const [a, o] = h("General"), d = i.settings, N = y(() => {
14
+ const [a, o] = P("General"), d = i.settings, h = T(() => {
15
15
  const e = [];
16
16
  return s != null && s.integration && Object.keys(s.integration).forEach((f) => {
17
17
  s.integration[f] && s.integration[f].connected && e.push(f);
18
18
  }), e;
19
19
  }, [s]);
20
20
  return /* @__PURE__ */ c("div", { className: `${n.advancedOptions} styled__scrollbar`, children: [
21
- A() ? /* @__PURE__ */ t(
22
- C,
21
+ z() ? /* @__PURE__ */ t(
22
+ k,
23
23
  {
24
24
  customClasses: n.advancedSettingsSelect,
25
25
  options: [
@@ -33,7 +33,7 @@ const F = ({ plan: i, appSettings: s, device: m, onUpdate: r, isEditing: u }) =>
33
33
  full: !0,
34
34
  onUpdate: (e) => o(e)
35
35
  }
36
- ) : /* @__PURE__ */ t(g, { children: /* @__PURE__ */ c("ul", { className: n.advancedTabs, children: [
36
+ ) : /* @__PURE__ */ t(y, { children: /* @__PURE__ */ c("ul", { className: n.advancedTabs, children: [
37
37
  /* @__PURE__ */ c("li", { onClick: () => o("General"), className: a === "General" ? n.advancedTabActive : "", children: [
38
38
  /* @__PURE__ */ t(l, { size: 13, type: "folders" }),
39
39
  " General"
@@ -57,17 +57,19 @@ const F = ({ plan: i, appSettings: s, device: m, onUpdate: r, isEditing: u }) =>
57
57
  ] }) }),
58
58
  /* @__PURE__ */ c("div", { className: n.advancedTabContent, children: [
59
59
  a === "General" && /* @__PURE__ */ t(
60
- M,
60
+ C,
61
61
  {
62
62
  settings: d,
63
63
  onUpdate: (e) => r({ ...i, settings: e }),
64
- isEditing: u
64
+ isEditing: u,
65
+ runSettings: N,
66
+ setRunSettings: g
65
67
  }
66
68
  ),
67
69
  a === "Notification" && /* @__PURE__ */ t(
68
- P,
70
+ G,
69
71
  {
70
- types: N,
72
+ types: h,
71
73
  planID: i.id,
72
74
  isSync: i.method === "sync",
73
75
  admin_email: s == null ? void 0 : s.admin_email,
@@ -75,13 +77,13 @@ const F = ({ plan: i, appSettings: s, device: m, onUpdate: r, isEditing: u }) =>
75
77
  onUpdate: (e) => r({ ...i, settings: { ...d, notification: e } })
76
78
  }
77
79
  ),
78
- a === "Performance" && /* @__PURE__ */ t(T, { plan: i, onUpdate: (e) => r({ ...i, settings: { ...d, performance: e } }) }),
80
+ a === "Performance" && /* @__PURE__ */ t(M, { plan: i, onUpdate: (e) => r({ ...i, settings: { ...d, performance: e } }) }),
79
81
  a === "Misc" && /* @__PURE__ */ c("div", { className: n.field, children: [
80
82
  /* @__PURE__ */ t("label", { className: n.label, children: "Tags" }),
81
- /* @__PURE__ */ t(G, { fieldValue: i.tags || [], onUpdate: (e) => r({ ...i, tags: e }) })
83
+ /* @__PURE__ */ t(A, { fieldValue: i.tags || [], onUpdate: (e) => r({ ...i, tags: e }) })
82
84
  ] }),
83
85
  a === "Scripts" && /* @__PURE__ */ t(
84
- z,
86
+ _,
85
87
  {
86
88
  settings: ((b = i.settings) == null ? void 0 : b.scripts) || {},
87
89
  platform: (m == null ? void 0 : m.platform) || void 0,
@@ -92,6 +94,6 @@ const F = ({ plan: i, appSettings: s, device: m, onUpdate: r, isEditing: u }) =>
92
94
  ] });
93
95
  };
94
96
  export {
95
- F as default
97
+ q as default
96
98
  };
97
99
  //# sourceMappingURL=PlanAdvancedSettings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanAdvancedSettings.js","sources":["../../../../src/components/Plan/PlanSettings/PlanAdvancedSettings.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport classes from './PlanSettings.module.scss';\r\nimport PlanNotificationSettings from './PlanNotificationSettings';\r\nimport PlanPerformanceSettings from './PlanPerformanceSettings';\r\nimport { NewPlanSettings } from '../../../@types/plans';\r\nimport TagsInput from '../../common/form/TagsInput/TagsInput';\r\nimport PlanGeneralSettings from './PlanGeneralSettings';\r\nimport { isMobile } from '../../../utils/helpers';\r\nimport Select from '../../common/form/Select/Select';\r\nimport PlanScriptsSettings from './PlanScriptsSettings';\r\nimport { Device } from '../../../@types/devices';\r\n\r\ninterface PlanAdvancedSettingsProps {\r\n plan: NewPlanSettings;\r\n appSettings?: Record<string, any>;\r\n device: Device;\r\n onUpdate: (notificationSettings: NewPlanSettings) => void;\r\n isEditing: boolean;\r\n}\r\n\r\nconst PlanAdvancedSettings = ({ plan, appSettings, device, onUpdate, isEditing }: PlanAdvancedSettingsProps) => {\r\n const [advancedTab, setAdvancedTab] = useState('General');\r\n const settings = plan.settings;\r\n const integrationTypes = useMemo(() => {\r\n const types: string[] = [];\r\n if (appSettings?.integration) {\r\n Object.keys(appSettings.integration).forEach((k) => {\r\n if (appSettings.integration[k] && appSettings.integration[k].connected) {\r\n types.push(k);\r\n }\r\n });\r\n }\r\n return types;\r\n }, [appSettings]);\r\n\r\n return (\r\n <div className={`${classes.advancedOptions} styled__scrollbar`}>\r\n {isMobile() ? (\r\n <Select\r\n customClasses={classes.advancedSettingsSelect}\r\n options={[\r\n { label: 'General', value: 'General', icon: 'folders' },\r\n // { label: 'Prune', value: 'Prune', icon: 'prune' },\r\n { label: 'Performance', value: 'Performance', icon: 'performance' },\r\n { label: 'Notification', value: 'Notification', icon: 'notification' },\r\n { label: 'Misc.', value: 'Misc', icon: 'settings-alt' },\r\n ]}\r\n fieldValue={advancedTab}\r\n full={true}\r\n onUpdate={(val) => setAdvancedTab(val)}\r\n />\r\n ) : (\r\n <>\r\n <ul className={classes.advancedTabs}>\r\n <li onClick={() => setAdvancedTab('General')} className={advancedTab === 'General' ? classes.advancedTabActive : ''}>\r\n <Icon size={13} type=\"folders\" /> General\r\n </li>\r\n {/* <li onClick={() => setAdvancedTab('Prune')} className={advancedTab === 'Prune' ? classes.advancedTabActive : ''}>\r\n <Icon size={13} type=\"prune\" /> Prune\r\n </li> */}\r\n <li onClick={() => setAdvancedTab('Performance')} className={advancedTab === 'Performance' ? classes.advancedTabActive : ''}>\r\n <Icon size={13} type=\"performance\" /> Performance\r\n </li>\r\n <li onClick={() => setAdvancedTab('Notification')} className={advancedTab === 'Notification' ? classes.advancedTabActive : ''}>\r\n <Icon size={13} type=\"notification\" /> Notification\r\n </li>\r\n <li onClick={() => setAdvancedTab('Scripts')} className={advancedTab === 'Scripts' ? classes.advancedTabActive : ''}>\r\n <Icon size={13} type=\"cli\" /> Scripts\r\n </li>\r\n <li onClick={() => setAdvancedTab('Misc')} className={advancedTab === 'Misc' ? classes.advancedTabActive : ''}>\r\n <Icon size={14} type=\"settings-alt\" /> Misc.\r\n </li>\r\n </ul>\r\n </>\r\n )}\r\n <div className={classes.advancedTabContent}>\r\n {advancedTab === 'General' && (\r\n <PlanGeneralSettings\r\n settings={settings}\r\n onUpdate={(newSettings) => onUpdate({ ...plan, settings: newSettings })}\r\n isEditing={isEditing}\r\n />\r\n )}\r\n {advancedTab === 'Notification' && (\r\n <PlanNotificationSettings\r\n types={integrationTypes}\r\n planID={plan.id}\r\n isSync={plan.method === 'sync'}\r\n admin_email={appSettings?.admin_email}\r\n notificationSettings={plan.settings?.notification || {}}\r\n onUpdate={(notification) => onUpdate({ ...plan, settings: { ...settings, notification } })}\r\n />\r\n )}\r\n {/* {advancedTab === 'Prune' && (\r\n <PlanPruneSettings plan={plan} onUpdate={(prune) => onUpdate({ ...plan, settings: { ...settings, prune } })} />\r\n )} */}\r\n {advancedTab === 'Performance' && (\r\n <PlanPerformanceSettings plan={plan} onUpdate={(performance) => onUpdate({ ...plan, settings: { ...settings, performance } })} />\r\n )}\r\n {advancedTab === 'Misc' && (\r\n <div className={classes.field}>\r\n <label className={classes.label}>Tags</label>\r\n <TagsInput fieldValue={plan.tags || []} onUpdate={(val) => onUpdate({ ...plan, tags: val })} />\r\n </div>\r\n )}\r\n {advancedTab === 'Scripts' && (\r\n <PlanScriptsSettings\r\n settings={plan.settings?.scripts || {}}\r\n platform={device?.platform || undefined}\r\n onUpdate={(scripts: NewPlanSettings['settings']['scripts']) => onUpdate({ ...plan, settings: { ...plan.settings, scripts } })}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default PlanAdvancedSettings;\r\n"],"names":["PlanAdvancedSettings","plan","appSettings","device","onUpdate","isEditing","advancedTab","setAdvancedTab","useState","settings","integrationTypes","useMemo","types","k","classes","isMobile","jsx","Select","val","Fragment","jsxs","Icon","PlanGeneralSettings","newSettings","PlanNotificationSettings","_a","notification","PlanPerformanceSettings","performance","TagsInput","PlanScriptsSettings","_b","scripts"],"mappings":"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"}
1
+ {"version":3,"file":"PlanAdvancedSettings.js","sources":["../../../../src/components/Plan/PlanSettings/PlanAdvancedSettings.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport classes from './PlanSettings.module.scss';\r\nimport PlanNotificationSettings from './PlanNotificationSettings';\r\nimport PlanPerformanceSettings from './PlanPerformanceSettings';\r\nimport { NewPlanSettings, PlanAddRunSettings } from '../../../@types/plans';\r\nimport TagsInput from '../../common/form/TagsInput/TagsInput';\r\nimport PlanGeneralSettings from './PlanGeneralSettings';\r\nimport { isMobile } from '../../../utils/helpers';\r\nimport Select from '../../common/form/Select/Select';\r\nimport PlanScriptsSettings from './PlanScriptsSettings';\r\nimport { Device } from '../../../@types/devices';\r\n\r\ninterface PlanAdvancedSettingsProps {\r\n plan: NewPlanSettings;\r\n appSettings?: Record<string, any>;\r\n device: Device;\r\n onUpdate: (notificationSettings: NewPlanSettings) => void;\r\n isEditing: boolean;\r\n runSettings?: PlanAddRunSettings;\r\n setRunSettings?: (runSettings: PlanAddRunSettings) => void;\r\n}\r\n\r\nconst PlanAdvancedSettings = ({ plan, appSettings, device, onUpdate, isEditing, runSettings, setRunSettings }: PlanAdvancedSettingsProps) => {\r\n const [advancedTab, setAdvancedTab] = useState('General');\r\n const settings = plan.settings;\r\n const integrationTypes = useMemo(() => {\r\n const types: string[] = [];\r\n if (appSettings?.integration) {\r\n Object.keys(appSettings.integration).forEach((k) => {\r\n if (appSettings.integration[k] && appSettings.integration[k].connected) {\r\n types.push(k);\r\n }\r\n });\r\n }\r\n return types;\r\n }, [appSettings]);\r\n\r\n return (\r\n <div className={`${classes.advancedOptions} styled__scrollbar`}>\r\n {isMobile() ? (\r\n <Select\r\n customClasses={classes.advancedSettingsSelect}\r\n options={[\r\n { label: 'General', value: 'General', icon: 'folders' },\r\n // { label: 'Prune', value: 'Prune', icon: 'prune' },\r\n { label: 'Performance', value: 'Performance', icon: 'performance' },\r\n { label: 'Notification', value: 'Notification', icon: 'notification' },\r\n { label: 'Misc.', value: 'Misc', icon: 'settings-alt' },\r\n ]}\r\n fieldValue={advancedTab}\r\n full={true}\r\n onUpdate={(val) => setAdvancedTab(val)}\r\n />\r\n ) : (\r\n <>\r\n <ul className={classes.advancedTabs}>\r\n <li onClick={() => setAdvancedTab('General')} className={advancedTab === 'General' ? classes.advancedTabActive : ''}>\r\n <Icon size={13} type=\"folders\" /> General\r\n </li>\r\n {/* <li onClick={() => setAdvancedTab('Prune')} className={advancedTab === 'Prune' ? classes.advancedTabActive : ''}>\r\n <Icon size={13} type=\"prune\" /> Prune\r\n </li> */}\r\n <li onClick={() => setAdvancedTab('Performance')} className={advancedTab === 'Performance' ? classes.advancedTabActive : ''}>\r\n <Icon size={13} type=\"performance\" /> Performance\r\n </li>\r\n <li onClick={() => setAdvancedTab('Notification')} className={advancedTab === 'Notification' ? classes.advancedTabActive : ''}>\r\n <Icon size={13} type=\"notification\" /> Notification\r\n </li>\r\n <li onClick={() => setAdvancedTab('Scripts')} className={advancedTab === 'Scripts' ? classes.advancedTabActive : ''}>\r\n <Icon size={13} type=\"cli\" /> Scripts\r\n </li>\r\n <li onClick={() => setAdvancedTab('Misc')} className={advancedTab === 'Misc' ? classes.advancedTabActive : ''}>\r\n <Icon size={14} type=\"settings-alt\" /> Misc.\r\n </li>\r\n </ul>\r\n </>\r\n )}\r\n <div className={classes.advancedTabContent}>\r\n {advancedTab === 'General' && (\r\n <PlanGeneralSettings\r\n settings={settings}\r\n onUpdate={(newSettings) => onUpdate({ ...plan, settings: newSettings })}\r\n isEditing={isEditing}\r\n runSettings={runSettings}\r\n setRunSettings={setRunSettings}\r\n />\r\n )}\r\n {advancedTab === 'Notification' && (\r\n <PlanNotificationSettings\r\n types={integrationTypes}\r\n planID={plan.id}\r\n isSync={plan.method === 'sync'}\r\n admin_email={appSettings?.admin_email}\r\n notificationSettings={plan.settings?.notification || {}}\r\n onUpdate={(notification) => onUpdate({ ...plan, settings: { ...settings, notification } })}\r\n />\r\n )}\r\n {/* {advancedTab === 'Prune' && (\r\n <PlanPruneSettings plan={plan} onUpdate={(prune) => onUpdate({ ...plan, settings: { ...settings, prune } })} />\r\n )} */}\r\n {advancedTab === 'Performance' && (\r\n <PlanPerformanceSettings plan={plan} onUpdate={(performance) => onUpdate({ ...plan, settings: { ...settings, performance } })} />\r\n )}\r\n {advancedTab === 'Misc' && (\r\n <div className={classes.field}>\r\n <label className={classes.label}>Tags</label>\r\n <TagsInput fieldValue={plan.tags || []} onUpdate={(val) => onUpdate({ ...plan, tags: val })} />\r\n </div>\r\n )}\r\n {advancedTab === 'Scripts' && (\r\n <PlanScriptsSettings\r\n settings={plan.settings?.scripts || {}}\r\n platform={device?.platform || undefined}\r\n onUpdate={(scripts: NewPlanSettings['settings']['scripts']) => onUpdate({ ...plan, settings: { ...plan.settings, scripts } })}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default PlanAdvancedSettings;\r\n"],"names":["PlanAdvancedSettings","plan","appSettings","device","onUpdate","isEditing","runSettings","setRunSettings","advancedTab","setAdvancedTab","useState","settings","integrationTypes","useMemo","types","k","classes","isMobile","jsx","Select","val","Fragment","jsxs","Icon","PlanGeneralSettings","newSettings","PlanNotificationSettings","_a","notification","PlanPerformanceSettings","performance","TagsInput","PlanScriptsSettings","_b","scripts"],"mappings":"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"}
@@ -1,9 +1,11 @@
1
- import { NewPlanSettings } from '../../../@types/plans';
1
+ import { NewPlanSettings, PlanAddRunSettings } from '../../../@types/plans';
2
2
  interface PlanGeneralSettingsProps {
3
3
  settings: NewPlanSettings['settings'];
4
4
  onUpdate: (settings: NewPlanSettings['settings']) => void;
5
5
  isEditing: boolean;
6
+ runSettings?: PlanAddRunSettings;
7
+ setRunSettings?: (runSettings: PlanAddRunSettings) => void;
6
8
  }
7
- declare const PlanGeneralSettings: ({ settings, onUpdate, isEditing }: PlanGeneralSettingsProps) => import("react/jsx-runtime").JSX.Element;
9
+ declare const PlanGeneralSettings: ({ settings, onUpdate, isEditing, runSettings, setRunSettings }: PlanGeneralSettingsProps) => import("react/jsx-runtime").JSX.Element;
8
10
  export default PlanGeneralSettings;
9
11
  //# sourceMappingURL=PlanGeneralSettings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanGeneralSettings.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/PlanSettings/PlanGeneralSettings.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAKxD,UAAU,wBAAwB;IAC/B,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IACtC,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IAC1D,SAAS,EAAE,OAAO,CAAC;CACrB;AAED,QAAA,MAAM,mBAAmB,GAAI,mCAAmC,wBAAwB,4CAyCvF,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"PlanGeneralSettings.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/PlanSettings/PlanGeneralSettings.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAK5E,UAAU,wBAAwB;IAC/B,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IACtC,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IAC1D,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC7D;AAED,QAAA,MAAM,mBAAmB,GAAI,gEAAgE,wBAAwB,4CAmDpH,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -1,56 +1,67 @@
1
- import { jsxs as s, Fragment as p, jsx as e } from "react/jsx-runtime";
2
- import o from "../../common/form/NumberInput/NumberInput.js";
3
- import n from "../../common/form/Toggle/Toggle.js";
4
- import i from "./PlanSettings.module.scss.js";
5
- const N = ({ settings: r, onUpdate: a, isEditing: c }) => {
6
- const { encryption: d, compression: t, retries: f, retryDelay: m } = r;
7
- return /* @__PURE__ */ s(p, { children: [
8
- /* @__PURE__ */ s("div", { className: i.field, children: [
9
- /* @__PURE__ */ e("label", { className: i.label, children: "Encryption" }),
1
+ import { jsxs as c, Fragment as t, jsx as e } from "react/jsx-runtime";
2
+ import m from "../../common/form/NumberInput/NumberInput.js";
3
+ import s from "../../common/form/Toggle/Toggle.js";
4
+ import a from "./PlanSettings.module.scss.js";
5
+ const k = ({ settings: r, onUpdate: i, isEditing: n, runSettings: o, setRunSettings: d }) => {
6
+ const { encryption: p, compression: f, retries: b, retryDelay: u } = r;
7
+ return /* @__PURE__ */ c(t, { children: [
8
+ /* @__PURE__ */ c("div", { className: a.field, children: [
9
+ /* @__PURE__ */ e("label", { className: a.label, children: "Encryption" }),
10
10
  /* @__PURE__ */ e(
11
- n,
11
+ s,
12
12
  {
13
- fieldValue: d,
14
- disabled: c,
15
- onUpdate: (l) => a({ ...r, encryption: l }),
13
+ fieldValue: p,
14
+ disabled: n,
15
+ onUpdate: (l) => i({ ...r, encryption: l }),
16
16
  description: "Encrypt Source Files before backup"
17
17
  }
18
18
  )
19
19
  ] }),
20
- /* @__PURE__ */ s("div", { className: i.field, children: [
21
- /* @__PURE__ */ e("label", { className: i.label, children: "Compression" }),
20
+ /* @__PURE__ */ c("div", { className: a.field, children: [
21
+ /* @__PURE__ */ e("label", { className: a.label, children: "Compression" }),
22
22
  /* @__PURE__ */ e(
23
- n,
23
+ s,
24
24
  {
25
- fieldValue: t,
26
- onUpdate: (l) => a({ ...r, compression: l }),
25
+ fieldValue: f,
26
+ onUpdate: (l) => i({ ...r, compression: l }),
27
27
  description: "Compress Source Files before backup"
28
28
  }
29
29
  )
30
30
  ] }),
31
- /* @__PURE__ */ e("div", { className: i.field, children: /* @__PURE__ */ e(
32
- o,
31
+ /* @__PURE__ */ e("div", { className: a.field, children: /* @__PURE__ */ e(
32
+ m,
33
33
  {
34
34
  label: "Retries",
35
- fieldValue: f,
36
- onUpdate: (l) => a({ ...r, retries: l }),
35
+ fieldValue: b,
36
+ onUpdate: (l) => i({ ...r, retries: l }),
37
37
  hint: "How many times a failed backups is retried. Default: 5.",
38
38
  inline: !1
39
39
  }
40
40
  ) }),
41
- /* @__PURE__ */ e("div", { className: i.field, children: /* @__PURE__ */ e(
42
- o,
41
+ /* @__PURE__ */ e("div", { className: a.field, children: /* @__PURE__ */ e(
42
+ m,
43
43
  {
44
44
  label: "Retries Delay",
45
- fieldValue: m,
46
- onUpdate: (l) => a({ ...r, retryDelay: l }),
45
+ fieldValue: u,
46
+ onUpdate: (l) => i({ ...r, retryDelay: l }),
47
47
  hint: "How long to wait before retrying a failed backup. Default: 300 seconds.",
48
48
  inline: !1
49
49
  }
50
- ) })
50
+ ) }),
51
+ !n && d && /* @__PURE__ */ c("div", { className: `${a.field} ${a.runNowField}`, children: [
52
+ /* @__PURE__ */ e("label", { className: a.label, children: "Run Backup Now" }),
53
+ /* @__PURE__ */ e(
54
+ s,
55
+ {
56
+ fieldValue: (o == null ? void 0 : o.runNow) ?? !0,
57
+ onUpdate: (l) => d && d({ ...o, runNow: l }),
58
+ description: "Run backup immediately after creating the plan"
59
+ }
60
+ )
61
+ ] })
51
62
  ] });
52
63
  };
53
64
  export {
54
- N as default
65
+ k as default
55
66
  };
56
67
  //# sourceMappingURL=PlanGeneralSettings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanGeneralSettings.js","sources":["../../../../src/components/Plan/PlanSettings/PlanGeneralSettings.tsx"],"sourcesContent":["import { NewPlanSettings } from '../../../@types/plans';\r\nimport NumberInput from '../../common/form/NumberInput/NumberInput';\r\nimport Toggle from '../../common/form/Toggle/Toggle';\r\nimport classes from './PlanSettings.module.scss';\r\n\r\ninterface PlanGeneralSettingsProps {\r\n settings: NewPlanSettings['settings'];\r\n onUpdate: (settings: NewPlanSettings['settings']) => void;\r\n isEditing: boolean;\r\n}\r\n\r\nconst PlanGeneralSettings = ({ settings, onUpdate, isEditing }: PlanGeneralSettingsProps) => {\r\n const { encryption, compression, retries, retryDelay } = settings;\r\n return (\r\n <>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Encryption</label>\r\n <Toggle\r\n fieldValue={encryption}\r\n disabled={isEditing}\r\n onUpdate={(val: boolean) => onUpdate({ ...settings, encryption: val })}\r\n description=\"Encrypt Source Files before backup\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Compression</label>\r\n <Toggle\r\n fieldValue={compression}\r\n onUpdate={(val: boolean) => onUpdate({ ...settings, compression: val })}\r\n description=\"Compress Source Files before backup\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Retries\"\r\n fieldValue={retries}\r\n onUpdate={(val: number) => onUpdate({ ...settings, retries: val })}\r\n hint=\"How many times a failed backups is retried. Default: 5.\"\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Retries Delay\"\r\n fieldValue={retryDelay}\r\n onUpdate={(val: number) => onUpdate({ ...settings, retryDelay: val })}\r\n hint=\"How long to wait before retrying a failed backup. Default: 300 seconds.\"\r\n inline={false}\r\n />\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default PlanGeneralSettings;\r\n"],"names":["PlanGeneralSettings","settings","onUpdate","isEditing","encryption","compression","retries","retryDelay","jsxs","Fragment","classes","jsx","Toggle","val","NumberInput"],"mappings":";;;;AAWA,MAAMA,IAAsB,CAAC,EAAE,UAAAC,GAAU,UAAAC,GAAU,WAAAC,QAA0C;AAC1F,QAAM,EAAE,YAAAC,GAAY,aAAAC,GAAa,SAAAC,GAAS,YAAAC,MAAeN;AACzD,SACG,gBAAAO,EAAAC,GAAA,EACG,UAAA;AAAA,IAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWE,EAAQ,OACrB,UAAA;AAAA,MAAA,gBAAAC,EAAC,SAAA,EAAM,WAAWD,EAAQ,OAAO,UAAA,cAAU;AAAA,MAC3C,gBAAAC;AAAA,QAACC;AAAA,QAAA;AAAA,UACE,YAAYR;AAAA,UACZ,UAAUD;AAAA,UACV,UAAU,CAACU,MAAiBX,EAAS,EAAE,GAAGD,GAAU,YAAYY,GAAK;AAAA,UACrE,aAAY;AAAA,QAAA;AAAA,MAAA;AAAA,IACf,GACH;AAAA,IACA,gBAAAL,EAAC,OAAA,EAAI,WAAWE,EAAQ,OACrB,UAAA;AAAA,MAAA,gBAAAC,EAAC,SAAA,EAAM,WAAWD,EAAQ,OAAO,UAAA,eAAW;AAAA,MAC5C,gBAAAC;AAAA,QAACC;AAAA,QAAA;AAAA,UACE,YAAYP;AAAA,UACZ,UAAU,CAACQ,MAAiBX,EAAS,EAAE,GAAGD,GAAU,aAAaY,GAAK;AAAA,UACtE,aAAY;AAAA,QAAA;AAAA,MAAA;AAAA,IACf,GACH;AAAA,IACA,gBAAAF,EAAC,OAAA,EAAI,WAAWD,EAAQ,OACrB,UAAA,gBAAAC;AAAA,MAACG;AAAA,MAAA;AAAA,QACE,OAAM;AAAA,QACN,YAAYR;AAAA,QACZ,UAAU,CAACO,MAAgBX,EAAS,EAAE,GAAGD,GAAU,SAASY,GAAK;AAAA,QACjE,MAAK;AAAA,QACL,QAAQ;AAAA,MAAA;AAAA,IAAA,GAEd;AAAA,IACA,gBAAAF,EAAC,OAAA,EAAI,WAAWD,EAAQ,OACrB,UAAA,gBAAAC;AAAA,MAACG;AAAA,MAAA;AAAA,QACE,OAAM;AAAA,QACN,YAAYP;AAAA,QACZ,UAAU,CAACM,MAAgBX,EAAS,EAAE,GAAGD,GAAU,YAAYY,GAAK;AAAA,QACpE,MAAK;AAAA,QACL,QAAQ;AAAA,MAAA;AAAA,IAAA,EACX,CACH;AAAA,EAAA,GACH;AAEN;"}
1
+ {"version":3,"file":"PlanGeneralSettings.js","sources":["../../../../src/components/Plan/PlanSettings/PlanGeneralSettings.tsx"],"sourcesContent":["import { NewPlanSettings, PlanAddRunSettings } from '../../../@types/plans';\r\nimport NumberInput from '../../common/form/NumberInput/NumberInput';\r\nimport Toggle from '../../common/form/Toggle/Toggle';\r\nimport classes from './PlanSettings.module.scss';\r\n\r\ninterface PlanGeneralSettingsProps {\r\n settings: NewPlanSettings['settings'];\r\n onUpdate: (settings: NewPlanSettings['settings']) => void;\r\n isEditing: boolean;\r\n runSettings?: PlanAddRunSettings;\r\n setRunSettings?: (runSettings: PlanAddRunSettings) => void;\r\n}\r\n\r\nconst PlanGeneralSettings = ({ settings, onUpdate, isEditing, runSettings, setRunSettings }: PlanGeneralSettingsProps) => {\r\n const { encryption, compression, retries, retryDelay } = settings;\r\n return (\r\n <>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Encryption</label>\r\n <Toggle\r\n fieldValue={encryption}\r\n disabled={isEditing}\r\n onUpdate={(val: boolean) => onUpdate({ ...settings, encryption: val })}\r\n description=\"Encrypt Source Files before backup\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Compression</label>\r\n <Toggle\r\n fieldValue={compression}\r\n onUpdate={(val: boolean) => onUpdate({ ...settings, compression: val })}\r\n description=\"Compress Source Files before backup\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Retries\"\r\n fieldValue={retries}\r\n onUpdate={(val: number) => onUpdate({ ...settings, retries: val })}\r\n hint=\"How many times a failed backups is retried. Default: 5.\"\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Retries Delay\"\r\n fieldValue={retryDelay}\r\n onUpdate={(val: number) => onUpdate({ ...settings, retryDelay: val })}\r\n hint=\"How long to wait before retrying a failed backup. Default: 300 seconds.\"\r\n inline={false}\r\n />\r\n </div>\r\n {!isEditing && setRunSettings && (\r\n <div className={`${classes.field} ${classes.runNowField}`}>\r\n <label className={classes.label}>Run Backup Now</label>\r\n <Toggle\r\n fieldValue={runSettings?.runNow ?? true}\r\n onUpdate={(val: boolean) => setRunSettings && setRunSettings({ ...runSettings, runNow: val })}\r\n description={'Run backup immediately after creating the plan'}\r\n />\r\n </div>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default PlanGeneralSettings;\r\n"],"names":["PlanGeneralSettings","settings","onUpdate","isEditing","runSettings","setRunSettings","encryption","compression","retries","retryDelay","jsxs","Fragment","classes","jsx","Toggle","val","NumberInput"],"mappings":";;;;AAaA,MAAMA,IAAsB,CAAC,EAAE,UAAAC,GAAU,UAAAC,GAAU,WAAAC,GAAW,aAAAC,GAAa,gBAAAC,QAA+C;AACvH,QAAM,EAAE,YAAAC,GAAY,aAAAC,GAAa,SAAAC,GAAS,YAAAC,MAAeR;AACzD,SACG,gBAAAS,EAAAC,GAAA,EACG,UAAA;AAAA,IAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWE,EAAQ,OACrB,UAAA;AAAA,MAAA,gBAAAC,EAAC,SAAA,EAAM,WAAWD,EAAQ,OAAO,UAAA,cAAU;AAAA,MAC3C,gBAAAC;AAAA,QAACC;AAAA,QAAA;AAAA,UACE,YAAYR;AAAA,UACZ,UAAUH;AAAA,UACV,UAAU,CAACY,MAAiBb,EAAS,EAAE,GAAGD,GAAU,YAAYc,GAAK;AAAA,UACrE,aAAY;AAAA,QAAA;AAAA,MAAA;AAAA,IACf,GACH;AAAA,IACA,gBAAAL,EAAC,OAAA,EAAI,WAAWE,EAAQ,OACrB,UAAA;AAAA,MAAA,gBAAAC,EAAC,SAAA,EAAM,WAAWD,EAAQ,OAAO,UAAA,eAAW;AAAA,MAC5C,gBAAAC;AAAA,QAACC;AAAA,QAAA;AAAA,UACE,YAAYP;AAAA,UACZ,UAAU,CAACQ,MAAiBb,EAAS,EAAE,GAAGD,GAAU,aAAac,GAAK;AAAA,UACtE,aAAY;AAAA,QAAA;AAAA,MAAA;AAAA,IACf,GACH;AAAA,IACA,gBAAAF,EAAC,OAAA,EAAI,WAAWD,EAAQ,OACrB,UAAA,gBAAAC;AAAA,MAACG;AAAA,MAAA;AAAA,QACE,OAAM;AAAA,QACN,YAAYR;AAAA,QACZ,UAAU,CAACO,MAAgBb,EAAS,EAAE,GAAGD,GAAU,SAASc,GAAK;AAAA,QACjE,MAAK;AAAA,QACL,QAAQ;AAAA,MAAA;AAAA,IAAA,GAEd;AAAA,IACA,gBAAAF,EAAC,OAAA,EAAI,WAAWD,EAAQ,OACrB,UAAA,gBAAAC;AAAA,MAACG;AAAA,MAAA;AAAA,QACE,OAAM;AAAA,QACN,YAAYP;AAAA,QACZ,UAAU,CAACM,MAAgBb,EAAS,EAAE,GAAGD,GAAU,YAAYc,GAAK;AAAA,QACpE,MAAK;AAAA,QACL,QAAQ;AAAA,MAAA;AAAA,IAAA,GAEd;AAAA,IACC,CAACZ,KAAaE,KACZ,gBAAAK,EAAC,OAAA,EAAI,WAAW,GAAGE,EAAQ,KAAK,IAAIA,EAAQ,WAAW,IACpD,UAAA;AAAA,MAAA,gBAAAC,EAAC,SAAA,EAAM,WAAWD,EAAQ,OAAO,UAAA,kBAAc;AAAA,MAC/C,gBAAAC;AAAA,QAACC;AAAA,QAAA;AAAA,UACE,aAAYV,KAAA,gBAAAA,EAAa,WAAU;AAAA,UACnC,UAAU,CAACW,MAAiBV,KAAkBA,EAAe,EAAE,GAAGD,GAAa,QAAQW,GAAK;AAAA,UAC5F,aAAa;AAAA,QAAA;AAAA,MAAA;AAAA,IAChB,EAAA,CACH;AAAA,EAAA,GAEN;AAEN;"}
@@ -31,8 +31,8 @@ const b = ({ plan: s, onUpdate: r }) => {
31
31
  c,
32
32
  {
33
33
  label: "Packet Size (MB)",
34
- fieldValue: e != null && e.packSize ? parseInt(e.packSize.replace("MiB", ""), 10) : "",
35
- onUpdate: (a) => r({ ...e, packSize: a + "MiB" }),
34
+ fieldValue: e != null && e.packSize ? parseInt(e.packSize, 10) : "",
35
+ onUpdate: (a) => r({ ...e, packSize: a ? a.toString() : "" }),
36
36
  min: 0,
37
37
  max: 4e3
38
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PlanPerformanceSettings.js","sources":["../../../../src/components/Plan/PlanSettings/PlanPerformanceSettings.tsx"],"sourcesContent":["import classes from './PlanSettings.module.scss';\r\nimport Toggle from '../../common/form/Toggle/Toggle';\r\nimport { NewPlanSettings } from '../../../@types/plans';\r\nimport NumberInput from '../../common/form/NumberInput/NumberInput';\r\n\r\ninterface PlanPerformanceSettingsProps {\r\n plan: NewPlanSettings;\r\n onUpdate: (perfSettings: NewPlanSettings['settings']['performance']) => void;\r\n}\r\n\r\nconst PlanPerformanceSettings = ({ plan, onUpdate }: PlanPerformanceSettingsProps) => {\r\n const perfSettings = plan.settings?.performance || {};\r\n return (\r\n <>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Max Processor Cores\"\r\n fieldValue={perfSettings?.maxProcessor || ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, maxProcessor: val })}\r\n min={0}\r\n max={64}\r\n hint=\"Keep 0 or empty to use all cores\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Read Concurrency\"\r\n fieldValue={perfSettings?.readConcurrency || ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, readConcurrency: val })}\r\n min={0}\r\n hint=\"Read n files Concurrently. Default: 2\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Packet Size (MB)\"\r\n fieldValue={perfSettings?.packSize ? parseInt(perfSettings.packSize.replace('MiB', ''), 10) : ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, packSize: val + 'MiB' })}\r\n min={0}\r\n max={4000}\r\n />\r\n </div>\r\n\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Concurrent File Uploads\"\r\n fieldValue={perfSettings?.transfers || ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, transfers: val })}\r\n min={0}\r\n max={100}\r\n hint=\"Default: 4\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Multi Thread Streams\"\r\n fieldValue={perfSettings?.multiThreadStream || ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, multiThreadStream: val })}\r\n min={0}\r\n max={100}\r\n hint=\"Useful for large files. Default: 4\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Buffer Size (MB)\"\r\n fieldValue={perfSettings?.bufferSize ? parseInt(perfSettings.bufferSize.replace('M', ''), 10) : ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, bufferSize: val ? val + 'M' : '' })}\r\n min={0}\r\n max={100}\r\n hint=\"In Megabytes. Helps with streaming large files. Default: 4\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Toggle\r\n label=\"Scan Before Backup\"\r\n fieldValue={perfSettings.scan || false}\r\n onUpdate={(val: boolean) => onUpdate({ ...perfSettings, scan: val })}\r\n hint=\"Scan Before Backup for estimated Backup Time\"\r\n inline={true}\r\n />\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default PlanPerformanceSettings;\r\n"],"names":["PlanPerformanceSettings","plan","onUpdate","perfSettings","_a","jsxs","Fragment","jsx","classes","NumberInput","val","Toggle"],"mappings":"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"}
1
+ {"version":3,"file":"PlanPerformanceSettings.js","sources":["../../../../src/components/Plan/PlanSettings/PlanPerformanceSettings.tsx"],"sourcesContent":["import classes from './PlanSettings.module.scss';\r\nimport Toggle from '../../common/form/Toggle/Toggle';\r\nimport { NewPlanSettings } from '../../../@types/plans';\r\nimport NumberInput from '../../common/form/NumberInput/NumberInput';\r\n\r\ninterface PlanPerformanceSettingsProps {\r\n plan: NewPlanSettings;\r\n onUpdate: (perfSettings: NewPlanSettings['settings']['performance']) => void;\r\n}\r\n\r\nconst PlanPerformanceSettings = ({ plan, onUpdate }: PlanPerformanceSettingsProps) => {\r\n const perfSettings = plan.settings?.performance || {};\r\n return (\r\n <>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Max Processor Cores\"\r\n fieldValue={perfSettings?.maxProcessor || ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, maxProcessor: val })}\r\n min={0}\r\n max={64}\r\n hint=\"Keep 0 or empty to use all cores\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Read Concurrency\"\r\n fieldValue={perfSettings?.readConcurrency || ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, readConcurrency: val })}\r\n min={0}\r\n hint=\"Read n files Concurrently. Default: 2\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Packet Size (MB)\"\r\n fieldValue={perfSettings?.packSize ? parseInt(perfSettings.packSize, 10) : ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, packSize: val ? val.toString() : '' })}\r\n min={0}\r\n max={4000}\r\n />\r\n </div>\r\n\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Concurrent File Uploads\"\r\n fieldValue={perfSettings?.transfers || ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, transfers: val })}\r\n min={0}\r\n max={100}\r\n hint=\"Default: 4\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Multi Thread Streams\"\r\n fieldValue={perfSettings?.multiThreadStream || ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, multiThreadStream: val })}\r\n min={0}\r\n max={100}\r\n hint=\"Useful for large files. Default: 4\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Buffer Size (MB)\"\r\n fieldValue={perfSettings?.bufferSize ? parseInt(perfSettings.bufferSize.replace('M', ''), 10) : ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, bufferSize: val ? val + 'M' : '' })}\r\n min={0}\r\n max={100}\r\n hint=\"In Megabytes. Helps with streaming large files. Default: 4\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Toggle\r\n label=\"Scan Before Backup\"\r\n fieldValue={perfSettings.scan || false}\r\n onUpdate={(val: boolean) => onUpdate({ ...perfSettings, scan: val })}\r\n hint=\"Scan Before Backup for estimated Backup Time\"\r\n inline={true}\r\n />\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default PlanPerformanceSettings;\r\n"],"names":["PlanPerformanceSettings","plan","onUpdate","perfSettings","_a","jsxs","Fragment","jsx","classes","NumberInput","val","Toggle"],"mappings":"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"}
@@ -1,78 +1,80 @@
1
- const t = "_field_9carP", i = "_fieldErrorLabel_xGxve", e = "_fieldNotice_QxZ4n", n = "_label_xwNgM", o = "_forgetByAgeField_e2RLj", c = "_customPolicyOption_fSJHz", s = "_advancedTabContent_kLrNt", a = "_advancedTabs_muCSl", _ = "_advancedTabActive_nnoTr", r = "_advancedSettingsSelect_pUFko", d = "_eventTabs_n0umQ", p = "_eventTab_yzXfs", l = "_eventTabHead_6UQ2q", T = "_eventTabHeadTitle_Qxkiy", f = "_eventTabContent_E6x5i", b = "_addScriptButton_lkWxx", v = "_scriptItem_GNGoc", g = "_scriptHeader_shIgU", S = "_scriptTitle_RQ4O3", u = "_scriptPositionControls_f9kOj", m = "_scriptPathInput_JcKQN", O = "_scriptFooter_8jm3T", C = "_scriptOptions_xGU10", N = "_scriptOptionCheckbox_4qqu1", x = "_removeScriptButton_t4MgA", h = "_scriptOptionTimeout_YdnK6", B = "_hasTimeOutSettings_V94p5", y = "_timeoutSettings_LhUOR", F = "_notificationTestField_5mlYR", H = "_notificationSettingsSection_pJymd", P = "_notificationToggle_Xl9Ui", k = "_notificationSettings_IMmAg", A = "_testNotificationContainer_WRyXt", I = "_testNotificationButton_Ghxzv", L = "_disabled_DTMsr", Q = "_testNotificationOptions_XZww9", U = {
1
+ const t = "_field_dFRJC", i = "_fieldErrorLabel_jCO9z", e = "_fieldNotice_HFCZG", n = "_runNowField_mE2sZ", o = "_label_p1Fb5", c = "_forgetByAgeField_rBL8f", s = "_customPolicyOption_jQvbx", a = "_advancedTabContent_d73Ma", _ = "_advancedTabs_HrflJ", d = "_advancedTabActive_Q7VZD", r = "_advancedSettingsSelect_WwLFi", p = "_eventTabs_GPKQo", l = "_eventTab_DiaIH", T = "_eventTabHead_4bx94", b = "_eventTabHeadTitle_V6jPX", v = "_eventTabContent_YyHkl", f = "_addScriptButton_Vcv8Q", S = "_scriptItem_JwyjB", u = "_scriptHeader_cwVvq", g = "_scriptTitle_cGYF8", O = "_scriptPositionControls_j0iUF", m = "_scriptPathInput_8qOtG", F = "_scriptFooter_z1STm", B = "_scriptOptions_B16LV", C = "_scriptOptionCheckbox_tlpxA", N = "_removeScriptButton_aQASR", H = "_scriptOptionTimeout_vRASq", P = "_hasTimeOutSettings_tL0hS", h = "_timeoutSettings_BnDYx", x = "_notificationTestField_W7xP1", y = "_notificationSettingsSection_d179L", A = "_notificationToggle_O2kFq", I = "_notificationSettings_DnJv6", L = "_testNotificationContainer_uy7jp", w = "_testNotificationButton_rwXRI", j = "_disabled_BMTEz", k = "_testNotificationOptions_BgulU", E = {
2
2
  field: t,
3
3
  fieldErrorLabel: i,
4
4
  fieldNotice: e,
5
- label: n,
6
- forgetByAgeField: o,
7
- customPolicyOption: c,
8
- advancedTabContent: s,
9
- advancedTabs: a,
10
- advancedTabActive: _,
5
+ runNowField: n,
6
+ label: o,
7
+ forgetByAgeField: c,
8
+ customPolicyOption: s,
9
+ advancedTabContent: a,
10
+ advancedTabs: _,
11
+ advancedTabActive: d,
11
12
  advancedSettingsSelect: r,
12
- eventTabs: d,
13
- eventTab: p,
14
- eventTabHead: l,
15
- eventTabHeadTitle: T,
16
- eventTabContent: f,
17
- addScriptButton: b,
18
- scriptItem: v,
19
- scriptHeader: g,
20
- scriptTitle: S,
21
- scriptPositionControls: u,
13
+ eventTabs: p,
14
+ eventTab: l,
15
+ eventTabHead: T,
16
+ eventTabHeadTitle: b,
17
+ eventTabContent: v,
18
+ addScriptButton: f,
19
+ scriptItem: S,
20
+ scriptHeader: u,
21
+ scriptTitle: g,
22
+ scriptPositionControls: O,
22
23
  scriptPathInput: m,
23
- scriptFooter: O,
24
- scriptOptions: C,
25
- scriptOptionCheckbox: N,
26
- removeScriptButton: x,
27
- scriptOptionTimeout: h,
28
- hasTimeOutSettings: B,
29
- timeoutSettings: y,
30
- notificationTestField: F,
31
- notificationSettingsSection: H,
32
- notificationToggle: P,
33
- notificationSettings: k,
34
- testNotificationContainer: A,
35
- testNotificationButton: I,
36
- disabled: L,
37
- testNotificationOptions: Q
24
+ scriptFooter: F,
25
+ scriptOptions: B,
26
+ scriptOptionCheckbox: C,
27
+ removeScriptButton: N,
28
+ scriptOptionTimeout: H,
29
+ hasTimeOutSettings: P,
30
+ timeoutSettings: h,
31
+ notificationTestField: x,
32
+ notificationSettingsSection: y,
33
+ notificationToggle: A,
34
+ notificationSettings: I,
35
+ testNotificationContainer: L,
36
+ testNotificationButton: w,
37
+ disabled: j,
38
+ testNotificationOptions: k
38
39
  };
39
40
  export {
40
- b as addScriptButton,
41
+ f as addScriptButton,
41
42
  r as advancedSettingsSelect,
42
- _ as advancedTabActive,
43
- s as advancedTabContent,
44
- a as advancedTabs,
45
- c as customPolicyOption,
46
- U as default,
47
- L as disabled,
48
- p as eventTab,
49
- f as eventTabContent,
50
- l as eventTabHead,
51
- T as eventTabHeadTitle,
52
- d as eventTabs,
43
+ d as advancedTabActive,
44
+ a as advancedTabContent,
45
+ _ as advancedTabs,
46
+ s as customPolicyOption,
47
+ E as default,
48
+ j as disabled,
49
+ l as eventTab,
50
+ v as eventTabContent,
51
+ T as eventTabHead,
52
+ b as eventTabHeadTitle,
53
+ p as eventTabs,
53
54
  t as field,
54
55
  i as fieldErrorLabel,
55
56
  e as fieldNotice,
56
- o as forgetByAgeField,
57
- B as hasTimeOutSettings,
58
- n as label,
59
- k as notificationSettings,
60
- H as notificationSettingsSection,
61
- F as notificationTestField,
62
- P as notificationToggle,
63
- x as removeScriptButton,
64
- O as scriptFooter,
65
- g as scriptHeader,
66
- v as scriptItem,
67
- N as scriptOptionCheckbox,
68
- h as scriptOptionTimeout,
69
- C as scriptOptions,
57
+ c as forgetByAgeField,
58
+ P as hasTimeOutSettings,
59
+ o as label,
60
+ I as notificationSettings,
61
+ y as notificationSettingsSection,
62
+ x as notificationTestField,
63
+ A as notificationToggle,
64
+ N as removeScriptButton,
65
+ n as runNowField,
66
+ F as scriptFooter,
67
+ u as scriptHeader,
68
+ S as scriptItem,
69
+ C as scriptOptionCheckbox,
70
+ H as scriptOptionTimeout,
71
+ B as scriptOptions,
70
72
  m as scriptPathInput,
71
- u as scriptPositionControls,
72
- S as scriptTitle,
73
- I as testNotificationButton,
74
- A as testNotificationContainer,
75
- Q as testNotificationOptions,
76
- y as timeoutSettings
73
+ O as scriptPositionControls,
74
+ g as scriptTitle,
75
+ w as testNotificationButton,
76
+ L as testNotificationContainer,
77
+ k as testNotificationOptions,
78
+ h as timeoutSettings
77
79
  };
78
80
  //# sourceMappingURL=PlanSettings.module.scss.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanSettings.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"PlanSettings.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,7 @@
1
+ import { Backup } from '../../../@types/backups';
2
+ interface PlanSizeChartProps {
3
+ backups: Backup[];
4
+ }
5
+ declare const PlanSizeChart: ({ backups }: PlanSizeChartProps) => import("react/jsx-runtime").JSX.Element;
6
+ export default PlanSizeChart;
7
+ //# sourceMappingURL=PlanSizeChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanSizeChart.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/PlanSizeChart/PlanSizeChart.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAgBjD,UAAU,kBAAkB;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,QAAA,MAAM,aAAa,GAAI,aAAa,kBAAkB,4CA2IrD,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,116 @@
1
+ import { jsxs as u, jsx as r } from "react/jsx-runtime";
2
+ import { useState as g, useRef as S, useEffect as N, useMemo as D } from "react";
3
+ import { Chart as z, CategoryScale as R, LinearScale as w, PointElement as x, LineElement as L, Filler as A, Tooltip as B, Legend as E } from "../../../node_modules/.pnpm/chart.js@4.5.1/node_modules/chart.js/dist/chart.js";
4
+ import { Line as T } from "../../../node_modules/.pnpm/react-chartjs-2@5.3.1_chart.js@4.5.1_react@18.3.1/node_modules/react-chartjs-2/dist/index.js";
5
+ import I from "../../common/Icon/Icon.js";
6
+ import { formatBytes as H, formatNumberToK as M, isDarkMode as f } from "../../../utils/helpers.js";
7
+ import a from "./PlanSizeChart.module.scss.js";
8
+ z.register(R, w, x, L, A, B, E);
9
+ const p = [
10
+ { key: "7d", label: "7d", labelFull: "7 days", days: 7 },
11
+ { key: "14d", label: "14d", labelFull: "14 days", days: 14 },
12
+ { key: "1m", label: "1m", labelFull: "1 month", days: 30 },
13
+ { key: "3m", label: "3m", labelFull: "3 months", days: 90 },
14
+ { key: "6m", label: "6m", labelFull: "6 months", days: 180 }
15
+ ], G = ({ backups: l }) => {
16
+ const [y, b] = g("3m"), [i, d] = g(!1), c = S(null);
17
+ N(() => {
18
+ if (!i) return;
19
+ const e = (s) => {
20
+ c.current && !c.current.contains(s.target) && d(!1);
21
+ };
22
+ return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
23
+ }, [i]);
24
+ const m = p.find((e) => e.key === y) || p[3], n = D(() => {
25
+ const e = Date.now() - m.days * 24 * 60 * 60 * 1e3;
26
+ return [...l && l.length === 1 ? [l[0], l[0]] : l || []].filter((o) => {
27
+ const t = new Date(o.started).getTime();
28
+ return !isNaN(t) && t >= e;
29
+ }).sort((o, t) => new Date(o.started).getTime() - new Date(t.started).getTime());
30
+ }, [l, m.days]), h = n.map((e) => new Date(e.started).toLocaleString()), C = n.map((e) => e.totalSize || 0), k = n.map((e) => e.totalFiles || 0), v = {
31
+ labels: h,
32
+ datasets: [
33
+ {
34
+ label: "Size",
35
+ data: C,
36
+ yAxisID: "ySize",
37
+ borderColor: "transparent",
38
+ backgroundColor: "rgba(87, 132, 255, 0.12)",
39
+ fill: !0,
40
+ tension: 0.4,
41
+ borderWidth: 1.5,
42
+ pointRadius: 0,
43
+ pointHoverRadius: 4,
44
+ pointHoverBackgroundColor: "rgba(87, 90, 255, 1)"
45
+ },
46
+ {
47
+ label: "Files",
48
+ data: k,
49
+ yAxisID: "yFiles",
50
+ borderColor: "#9a9bff",
51
+ backgroundColor: "transparent",
52
+ borderDash: [3, 3],
53
+ fill: !1,
54
+ tension: 0.4,
55
+ borderWidth: 1.2,
56
+ pointRadius: 0,
57
+ pointHoverRadius: 4,
58
+ pointHoverBackgroundColor: "rgba(87, 90, 255, 1)"
59
+ }
60
+ ]
61
+ }, F = {
62
+ responsive: !0,
63
+ animation: !1,
64
+ maintainAspectRatio: !1,
65
+ interaction: { mode: "index", intersect: !1 },
66
+ plugins: {
67
+ legend: { display: !1 },
68
+ tooltip: {
69
+ displayColors: !1,
70
+ backgroundColor: f ? "rgba(0, 0, 0, 0.9)" : "rgba(255, 255, 255, 1)",
71
+ titleColor: f ? "#fff" : "#666",
72
+ bodyColor: f ? "#ccc" : "#888",
73
+ padding: 8,
74
+ titleFont: { size: 11 },
75
+ bodyFont: { size: 11 },
76
+ callbacks: {
77
+ title: (e) => {
78
+ var t;
79
+ const s = ((t = e[0]) == null ? void 0 : t.dataIndex) ?? 0, o = n[s];
80
+ return o ? new Date(o.started).toLocaleString() : "";
81
+ },
82
+ label: (e) => e.dataset.label === "Size" ? `Size: ${H(e.parsed.y || 0)}` : `Files: ${M(e.parsed.y || 0)}`
83
+ }
84
+ }
85
+ },
86
+ scales: {
87
+ x: { display: !1 },
88
+ ySize: { display: !1, beginAtZero: !0 },
89
+ yFiles: { display: !1, beginAtZero: !0, position: "right" }
90
+ }
91
+ };
92
+ return /* @__PURE__ */ u("div", { className: a.chartWrap, children: [
93
+ /* @__PURE__ */ u("div", { className: a.rangeSelector, ref: c, children: [
94
+ /* @__PURE__ */ r("button", { type: "button", className: a.rangeBtn, onClick: () => d((e) => !e), children: m.label }),
95
+ i && /* @__PURE__ */ r("ul", { className: a.rangeMenu, children: p.slice().reverse().map((e) => /* @__PURE__ */ r(
96
+ "li",
97
+ {
98
+ className: e.key === y ? a.active : "",
99
+ onClick: () => {
100
+ b(e.key), d(!1);
101
+ },
102
+ children: e.labelFull
103
+ },
104
+ e.key
105
+ )) })
106
+ ] }),
107
+ n.length === 0 ? /* @__PURE__ */ u("div", { className: a.empty, children: [
108
+ /* @__PURE__ */ r(I, { type: "folders", size: 16 }),
109
+ " No data in range"
110
+ ] }) : /* @__PURE__ */ r("div", { className: a.chartCanvas, children: /* @__PURE__ */ r(T, { data: v, options: F }) })
111
+ ] });
112
+ };
113
+ export {
114
+ G as default
115
+ };
116
+ //# sourceMappingURL=PlanSizeChart.js.map