@plutonhq/core-frontend 0.1.9 → 0.1.10

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 (38) hide show
  1. package/dist-lib/components/Plan/PlanStats/PlanStats.js +9 -9
  2. package/dist-lib/components/Plan/PlanStats/PlanStats.js.map +1 -1
  3. package/dist-lib/components/Storage/AddStorage/AddStorage.d.ts.map +1 -1
  4. package/dist-lib/components/Storage/AddStorage/AddStorage.js +52 -51
  5. package/dist-lib/components/Storage/AddStorage/AddStorage.js.map +1 -1
  6. package/dist-lib/components/Storage/StorageItem/StorageItem.d.ts.map +1 -1
  7. package/dist-lib/components/Storage/StorageItem/StorageItem.js +36 -36
  8. package/dist-lib/components/Storage/StorageItem/StorageItem.js.map +1 -1
  9. package/dist-lib/components/common/Icon/Icon.d.ts.map +1 -1
  10. package/dist-lib/components/common/Icon/Icon.js +7 -0
  11. package/dist-lib/components/common/Icon/Icon.js.map +1 -1
  12. package/dist-lib/components/common/form/Select/Select.js +12 -12
  13. package/dist-lib/components/common/form/Select/Select.js.map +1 -1
  14. package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.d.ts +20 -0
  15. package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.d.ts.map +1 -0
  16. package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.js +75 -0
  17. package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.js.map +1 -0
  18. package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.module.scss.js +30 -0
  19. package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.module.scss.js.map +1 -0
  20. package/dist-lib/providers/drime.png +0 -0
  21. package/dist-lib/providers/filelu.png +0 -0
  22. package/dist-lib/providers/filen.png +0 -0
  23. package/dist-lib/providers/internxt.png +0 -0
  24. package/dist-lib/providers/shade.png +0 -0
  25. package/dist-lib/styles/core-frontend.css +1 -1
  26. package/dist-lib/utils/storageProviders.d.ts +40 -0
  27. package/dist-lib/utils/storageProviders.d.ts.map +1 -1
  28. package/dist-lib/utils/storageProviders.js +35 -0
  29. package/dist-lib/utils/storageProviders.js.map +1 -1
  30. package/package.json +11 -10
  31. package/src/components/Plan/PlanStats/PlanStats.tsx +1 -1
  32. package/src/components/Storage/AddStorage/AddStorage.tsx +7 -6
  33. package/src/components/Storage/StorageItem/StorageItem.tsx +9 -2
  34. package/src/components/common/Icon/Icon.tsx +8 -0
  35. package/src/components/common/form/Select/Select.tsx +1 -1
  36. package/src/components/common/form/StorageProviderSelect/StorageProviderSelect.module.scss +223 -0
  37. package/src/components/common/form/StorageProviderSelect/StorageProviderSelect.tsx +106 -0
  38. package/src/utils/storageProviders.ts +35 -0
@@ -3,23 +3,23 @@ import a from "../../common/Icon/Icon.js";
3
3
  import { formatNumberToK as f, formatBytes as u } from "../../../utils/helpers.js";
4
4
  import S from "../PlanHistory/PlanHistory.js";
5
5
  import d from "./PlanStats.module.scss.js";
6
- const w = ({ plan: c, isSync: p, lastBackupItem: n }) => {
7
- const { sourceConfig: r, storage: e, storagePath: g, isActive: v, settings: N } = c, { interval: o } = N, m = (n == null ? void 0 : n.totalFiles) || 0, y = (n == null ? void 0 : n.totalSize) || 0, T = (l) => {
6
+ const w = ({ plan: r, isSync: h, lastBackupItem: n }) => {
7
+ const { sourceConfig: c, storage: e, storagePath: g, isActive: v, settings: N } = r, { interval: o } = N, m = (n == null ? void 0 : n.totalFiles) || 0, y = (n == null ? void 0 : n.totalSize) || 0, T = (l) => {
8
8
  let s = "";
9
- return l && l.includes && l.includes.length > 0 && (s += "<div><strong>Includes</strong></div>", s += l.includes.map((h) => `<div>${h}</div>`).join("")), l && l.excludes && l.excludes.length > 0 && (s += "<div><strong>Excludes</strong></div>", s += l.excludes.map((h) => `<div>${h}</div>`).join("")), s;
9
+ return l && l.includes && l.includes.length > 0 && (s += "<div><strong>Includes</strong></div>", s += l.includes.map((p) => `<div>${r.device.name} -> ${p}</div>`).join("")), l && l.excludes && l.excludes.length > 0 && (s += "<div><strong>Excludes</strong></div>", s += l.excludes.map((p) => `<div>${p}</div>`).join("")), s;
10
10
  };
11
11
  return /* @__PURE__ */ i("div", { className: d.planStats, children: [
12
12
  /* @__PURE__ */ i("div", { className: d.sources, children: [
13
13
  /* @__PURE__ */ i("div", { className: d.widgetTitle, children: [
14
14
  /* @__PURE__ */ t(a, { type: "backup", size: 12 }),
15
15
  " ",
16
- p ? "Syncing" : "Backing Up"
16
+ h ? "Syncing" : "Backing Up"
17
17
  ] }),
18
18
  /* @__PURE__ */ i("div", { className: d.sourceContent, children: [
19
- /* @__PURE__ */ i("div", { "data-tooltip-id": "htmlToolTip", "data-tooltip-place": "top", "data-tooltip-html": T(r), children: [
19
+ /* @__PURE__ */ i("div", { "data-tooltip-id": "htmlToolTip", "data-tooltip-place": "top", "data-tooltip-html": T(c), children: [
20
20
  /* @__PURE__ */ t(a, { type: "folders", size: 18 }),
21
21
  /* @__PURE__ */ i("span", { children: [
22
- r == null ? void 0 : r.includes.length,
22
+ c == null ? void 0 : c.includes.length,
23
23
  " Sources"
24
24
  ] })
25
25
  ] }),
@@ -28,9 +28,9 @@ const w = ({ plan: c, isSync: p, lastBackupItem: n }) => {
28
28
  {
29
29
  "data-tooltip-id": "htmlToolTip",
30
30
  "data-tooltip-place": "top",
31
- "data-tooltip-html": v ? p ? `Syncing changes every ${o.minutes} minutes` : `Copying changes ${["hours", "minutes", "days"].includes(o.type) ? o[o.type] + o.type : o.type}` : "Plan is Not Active",
31
+ "data-tooltip-html": v ? h ? `Syncing changes every ${o.minutes} minutes` : `Copying changes ${["hours", "minutes", "days"].includes(o.type) ? o[o.type] + o.type : o.type}` : "Plan is Not Active",
32
32
  children: [
33
- /* @__PURE__ */ t(a, { type: v ? p ? "reload" : "copy" : "pause", size: 16 }),
33
+ /* @__PURE__ */ t(a, { type: v ? h ? "reload" : "copy" : "pause", size: 16 }),
34
34
  /* @__PURE__ */ t("div", { className: d.sourceArrow, children: "→" })
35
35
  ]
36
36
  }
@@ -71,7 +71,7 @@ const w = ({ plan: c, isSync: p, lastBackupItem: n }) => {
71
71
  /* @__PURE__ */ t(a, { type: "speed", size: 12 }),
72
72
  " Health"
73
73
  ] }),
74
- /* @__PURE__ */ t("div", { className: d.healthContent, children: /* @__PURE__ */ t(S, { planId: c.id, history: c.backups, itemsCount: 90 }) })
74
+ /* @__PURE__ */ t("div", { className: d.healthContent, children: /* @__PURE__ */ t(S, { planId: r.id, history: r.backups, itemsCount: 90 }) })
75
75
  ] })
76
76
  ] });
77
77
  };
@@ -1 +1 @@
1
- {"version":3,"file":"PlanStats.js","sources":["../../../../src/components/Plan/PlanStats/PlanStats.tsx"],"sourcesContent":["import Icon from '../../common/Icon/Icon';\r\nimport { Plan } from '../../../@types/plans';\r\nimport { formatBytes, formatNumberToK } from '../../../utils/helpers';\r\nimport PlanHistory from '../PlanHistory/PlanHistory';\r\nimport classes from './PlanStats.module.scss';\r\n\r\ninterface PlanStatsProps {\r\n plan: Plan;\r\n isSync: boolean;\r\n lastBackupItem: any;\r\n}\r\n\r\nconst PlanStats = ({ plan, isSync, lastBackupItem }: PlanStatsProps) => {\r\n const { sourceConfig, storage, storagePath, isActive, settings } = plan;\r\n const { interval } = settings;\r\n\r\n const totalFiles = lastBackupItem?.totalFiles || 0;\r\n const totalSize = lastBackupItem?.totalSize || 0;\r\n\r\n const sourceTooltipHTML = (sources: Plan['sourceConfig']) => {\r\n let html = '';\r\n if (sources && sources.includes && sources.includes.length > 0) {\r\n html += `<div><strong>Includes</strong></div>`;\r\n html += sources.includes.map((p) => `<div>${p}</div>`).join('');\r\n }\r\n if (sources && sources.excludes && sources.excludes.length > 0) {\r\n html += `<div><strong>Excludes</strong></div>`;\r\n html += sources.excludes.map((p) => `<div>${p}</div>`).join('');\r\n }\r\n return html;\r\n };\r\n\r\n return (\r\n <div className={classes.planStats}>\r\n <div className={classes.sources}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"backup\" size={12} /> {isSync ? 'Syncing' : 'Backing Up'}\r\n </div>\r\n <div className={classes.sourceContent}>\r\n <div data-tooltip-id=\"htmlToolTip\" data-tooltip-place=\"top\" data-tooltip-html={sourceTooltipHTML(sourceConfig)}>\r\n <Icon type=\"folders\" size={18} />\r\n <span>{sourceConfig?.includes.length} Sources</span>\r\n </div>\r\n <div\r\n data-tooltip-id=\"htmlToolTip\"\r\n data-tooltip-place=\"top\"\r\n data-tooltip-html={\r\n isActive\r\n ? isSync\r\n ? `Syncing changes every ${interval.minutes} minutes`\r\n : `Copying changes ${['hours', 'minutes', 'days'].includes(interval.type) ? interval[interval.type as 'hours' | 'minutes' | 'days'] + interval.type : interval.type}`\r\n : 'Plan is Not Active'\r\n }\r\n >\r\n <Icon type={isActive ? (isSync ? 'reload' : 'copy') : 'pause'} size={16} />\r\n <div className={classes.sourceArrow}>→</div>\r\n </div>\r\n <div\r\n data-tooltip-id=\"htmlToolTip\"\r\n data-tooltip-place=\"top\"\r\n data-tooltip-html={`<div><strong>Storage:</strong> ${storage?.name}</div><div><strong>Path:</strong> ${storagePath || '/'}</div>`}\r\n >\r\n {storage?.type && <img src={`/providers/${storage?.type}.png`} />}\r\n {storage?.name}\r\n </div>\r\n </div>\r\n </div>\r\n <div className={classes.snapshots}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"folders\" size={12} /> Source Stats\r\n </div>\r\n <div className={classes.snapshotsContent}>\r\n <div>\r\n <span>{totalFiles ? formatNumberToK(totalFiles) : 0}</span>\r\n <span>Files</span>\r\n </div>\r\n <div></div>\r\n <div>\r\n <span>{totalSize ? formatBytes(totalSize) : '0.00B'}</span>\r\n <span>Size</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className={classes.health}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"speed\" size={12} /> Health\r\n </div>\r\n <div className={classes.healthContent}>\r\n <PlanHistory planId={plan.id} history={plan.backups} itemsCount={90} />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default PlanStats;\r\n"],"names":["PlanStats","plan","isSync","lastBackupItem","sourceConfig","storage","storagePath","isActive","settings","interval","totalFiles","totalSize","sourceTooltipHTML","sources","html","p","jsxs","classes","jsx","Icon","formatNumberToK","formatBytes","PlanHistory"],"mappings":"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"}
1
+ {"version":3,"file":"PlanStats.js","sources":["../../../../src/components/Plan/PlanStats/PlanStats.tsx"],"sourcesContent":["import Icon from '../../common/Icon/Icon';\r\nimport { Plan } from '../../../@types/plans';\r\nimport { formatBytes, formatNumberToK } from '../../../utils/helpers';\r\nimport PlanHistory from '../PlanHistory/PlanHistory';\r\nimport classes from './PlanStats.module.scss';\r\n\r\ninterface PlanStatsProps {\r\n plan: Plan;\r\n isSync: boolean;\r\n lastBackupItem: any;\r\n}\r\n\r\nconst PlanStats = ({ plan, isSync, lastBackupItem }: PlanStatsProps) => {\r\n const { sourceConfig, storage, storagePath, isActive, settings } = plan;\r\n const { interval } = settings;\r\n\r\n const totalFiles = lastBackupItem?.totalFiles || 0;\r\n const totalSize = lastBackupItem?.totalSize || 0;\r\n\r\n const sourceTooltipHTML = (sources: Plan['sourceConfig']) => {\r\n let html = '';\r\n if (sources && sources.includes && sources.includes.length > 0) {\r\n html += `<div><strong>Includes</strong></div>`;\r\n html += sources.includes.map((p) => `<div>${plan.device.name} -> ${p}</div>`).join('');\r\n }\r\n if (sources && sources.excludes && sources.excludes.length > 0) {\r\n html += `<div><strong>Excludes</strong></div>`;\r\n html += sources.excludes.map((p) => `<div>${p}</div>`).join('');\r\n }\r\n return html;\r\n };\r\n\r\n return (\r\n <div className={classes.planStats}>\r\n <div className={classes.sources}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"backup\" size={12} /> {isSync ? 'Syncing' : 'Backing Up'}\r\n </div>\r\n <div className={classes.sourceContent}>\r\n <div data-tooltip-id=\"htmlToolTip\" data-tooltip-place=\"top\" data-tooltip-html={sourceTooltipHTML(sourceConfig)}>\r\n <Icon type=\"folders\" size={18} />\r\n <span>{sourceConfig?.includes.length} Sources</span>\r\n </div>\r\n <div\r\n data-tooltip-id=\"htmlToolTip\"\r\n data-tooltip-place=\"top\"\r\n data-tooltip-html={\r\n isActive\r\n ? isSync\r\n ? `Syncing changes every ${interval.minutes} minutes`\r\n : `Copying changes ${['hours', 'minutes', 'days'].includes(interval.type) ? interval[interval.type as 'hours' | 'minutes' | 'days'] + interval.type : interval.type}`\r\n : 'Plan is Not Active'\r\n }\r\n >\r\n <Icon type={isActive ? (isSync ? 'reload' : 'copy') : 'pause'} size={16} />\r\n <div className={classes.sourceArrow}>→</div>\r\n </div>\r\n <div\r\n data-tooltip-id=\"htmlToolTip\"\r\n data-tooltip-place=\"top\"\r\n data-tooltip-html={`<div><strong>Storage:</strong> ${storage?.name}</div><div><strong>Path:</strong> ${storagePath || '/'}</div>`}\r\n >\r\n {storage?.type && <img src={`/providers/${storage?.type}.png`} />}\r\n {storage?.name}\r\n </div>\r\n </div>\r\n </div>\r\n <div className={classes.snapshots}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"folders\" size={12} /> Source Stats\r\n </div>\r\n <div className={classes.snapshotsContent}>\r\n <div>\r\n <span>{totalFiles ? formatNumberToK(totalFiles) : 0}</span>\r\n <span>Files</span>\r\n </div>\r\n <div></div>\r\n <div>\r\n <span>{totalSize ? formatBytes(totalSize) : '0.00B'}</span>\r\n <span>Size</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className={classes.health}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"speed\" size={12} /> Health\r\n </div>\r\n <div className={classes.healthContent}>\r\n <PlanHistory planId={plan.id} history={plan.backups} itemsCount={90} />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default PlanStats;\r\n"],"names":["PlanStats","plan","isSync","lastBackupItem","sourceConfig","storage","storagePath","isActive","settings","interval","totalFiles","totalSize","sourceTooltipHTML","sources","html","jsxs","classes","jsx","Icon","formatNumberToK","formatBytes","PlanHistory"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AddStorage.d.ts","sourceRoot":"","sources":["../../../../src/components/Storage/AddStorage/AddStorage.tsx"],"names":[],"mappings":"AAcA,KAAK,eAAe,GAAG;IACpB,KAAK,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,UAAU,GAAI,WAAW,eAAe,4CAoQ7C,CAAC;AACF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"AddStorage.d.ts","sourceRoot":"","sources":["../../../../src/components/Storage/AddStorage/AddStorage.tsx"],"names":[],"mappings":"AAcA,KAAK,eAAe,GAAG;IACpB,KAAK,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,UAAU,GAAI,WAAW,eAAe,4CAqQ7C,CAAC;AACF,eAAe,UAAU,CAAC"}
@@ -1,29 +1,32 @@
1
- import { jsx as t, jsxs as n, Fragment as B } from "react/jsx-runtime";
1
+ import { jsx as t, jsxs as d, Fragment as B } from "react/jsx-runtime";
2
2
  import { useState as p, useMemo as O, useEffect as j } from "react";
3
3
  import { toast as R } from "react-toastify";
4
4
  import a from "./AddStorage.module.scss.js";
5
5
  import m from "../../common/Icon/Icon.js";
6
- import I from "../../common/form/Select/Select.js";
7
- import { useAddStorage as L, useGetAvailableStorages as V } from "../../../services/storage.js";
8
- import G from "../../common/SidePanel/SidePanel.js";
9
- import M from "../../common/form/TagsInput/TagsInput.js";
10
- import H from "../StorageSettings/StorageSettings.js";
11
- import { shouldDisplayStorageField as J } from "../../../utils/helpers.js";
12
- import K from "../StorageAuthSettings/StorageAuthSettings.js";
6
+ import { useAddStorage as I, useGetAvailableStorages as L } from "../../../services/storage.js";
7
+ import V from "../../common/SidePanel/SidePanel.js";
8
+ import G from "../../common/form/TagsInput/TagsInput.js";
9
+ import M from "../StorageSettings/StorageSettings.js";
10
+ import { shouldDisplayStorageField as H } from "../../../utils/helpers.js";
11
+ import J from "../StorageAuthSettings/StorageAuthSettings.js";
12
+ import K from "../../common/form/StorageProviderSelect/StorageProviderSelect.js";
13
13
  const le = ({ close: A }) => {
14
- const [g, f] = p({}), [y, k] = p(""), [r, w] = p(""), [v, z] = p(""), [T, $] = p(!1), [h, N] = p({}), [b, E] = p({}), [C, x] = p([]), q = L(), { data: F } = V(), d = (F == null ? void 0 : F.result) || {}, P = O(() => Object.keys(d).map((e) => ({
15
- label: d[e].name,
14
+ const [g, f] = p({}), [y, P] = p(""), [r, w] = p(""), [S, $] = p(""), [T, k] = p(!1), [h, N] = p({}), [F, E] = p({}), [C, x] = p([]), q = I(), { data: b } = L(), i = (b == null ? void 0 : b.result) || {};
15
+ console.log("storageProviders :", i);
16
+ const z = O(() => Object.keys(i).map((e) => ({
17
+ label: i[e].name,
16
18
  value: e,
19
+ doc: i[e].doc,
17
20
  image: /* @__PURE__ */ t("img", { src: `providers/${e}.png` })
18
- })).sort((e, s) => e.label.localeCompare(s.label)), [d]), c = O(() => {
19
- var l, S;
20
- const e = ((l = d[r]) == null ? void 0 : l.settings) || [], s = { required: [], optional: [], authFields: { fields: [], types: [] } };
21
- e.forEach((i) => {
22
- i.required ? s.required.push(i) : i.authFieldType || s.optional.push(i);
21
+ })).sort((e, s) => e.label.localeCompare(s.label)), [i]), c = O(() => {
22
+ var l, v;
23
+ const e = ((l = i[r]) == null ? void 0 : l.settings) || [], s = { required: [], optional: [], authFields: { fields: [], types: [] } };
24
+ e.forEach((n) => {
25
+ n.required ? s.required.push(n) : n.authFieldType || s.optional.push(n);
23
26
  });
24
- const u = (S = d[r]) == null ? void 0 : S.authTypes, o = e.filter((i) => i.authFieldType);
27
+ const u = (v = i[r]) == null ? void 0 : v.authTypes, o = e.filter((n) => n.authFieldType);
25
28
  return s.authFields = { fields: o, types: u }, s;
26
- }, [d, r]);
29
+ }, [i, r]);
27
30
  j(() => {
28
31
  if (r) {
29
32
  const e = {};
@@ -48,20 +51,20 @@ const le = ({ close: A }) => {
48
51
  const U = () => {
49
52
  var u;
50
53
  f({});
51
- const e = {}, s = ((u = d[r]) == null ? void 0 : u.settings) || [];
54
+ const e = {}, s = ((u = i[r]) == null ? void 0 : u.settings) || [];
52
55
  if (s.forEach((o) => {
53
- if (!o.required || !J(o, b, s)) return;
56
+ if (!o.required || !H(o, F, s)) return;
54
57
  const l = !!o.authFieldType;
55
- if (!(!l || o.authFieldType === v)) return;
56
- const i = l ? h[o.value] : b[o.value];
57
- (i == null || i === "") && (e[o.value] = "Required");
58
- }), y || (e.title = "Required"), r || (e.storageType = "Required"), console.log("storageType :", r, v, h), console.log("errors :", e), Object.keys(e).length === 0) {
58
+ if (!(!l || o.authFieldType === S)) return;
59
+ const n = l ? h[o.value] : F[o.value];
60
+ (n == null || n === "") && (e[o.value] = "Required");
61
+ }), y || (e.title = "Required"), r || (e.storageType = "Required"), console.log("storageType :", r, S, h), console.log("errors :", e), Object.keys(e).length === 0) {
59
62
  const o = {
60
63
  name: y,
61
64
  type: r,
62
- settings: b,
65
+ settings: F,
63
66
  credentials: h,
64
- authType: v,
67
+ authType: S,
65
68
  tags: C
66
69
  };
67
70
  console.log("payload :", o), q.mutate(o, {
@@ -76,22 +79,22 @@ const le = ({ close: A }) => {
76
79
  f(e);
77
80
  };
78
81
  return /* @__PURE__ */ t(
79
- G,
82
+ V,
80
83
  {
81
84
  title: "Add New Remote Storage",
82
85
  icon: /* @__PURE__ */ t(m, { type: "storages", size: 18 }),
83
86
  close: A,
84
- footer: /* @__PURE__ */ n(B, { children: [
87
+ footer: /* @__PURE__ */ d(B, { children: [
85
88
  /* @__PURE__ */ t("div", { className: a.footerLeft, children: /* @__PURE__ */ t("div", { className: a.summary }) }),
86
- /* @__PURE__ */ t("div", { className: a.footerRight, children: /* @__PURE__ */ n("button", { className: a.createButton, onClick: () => U(), children: [
89
+ /* @__PURE__ */ t("div", { className: a.footerRight, children: /* @__PURE__ */ d("button", { className: a.createButton, onClick: () => U(), children: [
87
90
  /* @__PURE__ */ t(m, { type: "check", size: 12 }),
88
91
  " Add Storage"
89
92
  ] }) })
90
93
  ] }),
91
- children: /* @__PURE__ */ n("div", { className: a.addStorageContent, children: [
94
+ children: /* @__PURE__ */ d("div", { className: a.addStorageContent, children: [
92
95
  q.isPending && /* @__PURE__ */ t("div", { className: a.loader, children: /* @__PURE__ */ t(m, { size: 36, type: "loading" }) }),
93
- /* @__PURE__ */ n("div", { className: a.field, children: [
94
- /* @__PURE__ */ n("label", { className: a.label, children: [
96
+ /* @__PURE__ */ d("div", { className: a.field, children: [
97
+ /* @__PURE__ */ d("label", { className: a.label, children: [
95
98
  "Storage Name*",
96
99
  /* @__PURE__ */ t("i", { "data-tooltip-id": "hintTooltip", "data-tooltip-content": "Storage name cannot be changed in future", "data-tooltip-place": "top", children: /* @__PURE__ */ t(m, { type: "help", size: 13 }) })
97
100
  ] }),
@@ -104,39 +107,37 @@ const le = ({ close: A }) => {
104
107
  placeholder: "Give your Storage a Name",
105
108
  value: y || "",
106
109
  required: !0,
107
- onChange: (e) => k(e.target.value)
110
+ onChange: (e) => P(e.target.value)
108
111
  }
109
112
  )
110
113
  ] }),
111
- /* @__PURE__ */ n("div", { className: a.field, children: [
114
+ /* @__PURE__ */ d("div", { className: a.field, children: [
112
115
  /* @__PURE__ */ t("label", { className: a.label, children: "Storage Type*" }),
113
116
  g.storageType && /* @__PURE__ */ t("span", { className: a.fieldErrorLabel, children: g.storageType }),
114
117
  /* @__PURE__ */ t("div", { className: a.selectField, children: /* @__PURE__ */ t(
115
- I,
118
+ K,
116
119
  {
117
- options: [{ label: "Select Storage Type", value: "" }, ...P],
120
+ options: [...z],
118
121
  fieldValue: r,
122
+ full: !0,
119
123
  onUpdate: (e) => {
120
124
  var o;
121
125
  N({}), E({}), w(e);
122
- const u = (((o = d[e]) == null ? void 0 : o.fields) || []).reduce(
123
- (l, S) => ({
126
+ const u = (((o = i[e]) == null ? void 0 : o.fields) || []).reduce(
127
+ (l, v) => ({
124
128
  ...l,
125
- [S.value]: ""
129
+ [v.value]: ""
126
130
  }),
127
131
  {}
128
132
  );
129
133
  N(u);
130
134
  },
131
- size: "large",
132
- full: !0,
133
- search: !0,
134
135
  error: g.storageType
135
136
  }
136
137
  ) })
137
138
  ] }),
138
139
  r && c.authFields.fields.length > 0 && /* @__PURE__ */ t(
139
- K,
140
+ J,
140
141
  {
141
142
  storageType: r,
142
143
  fields: c.authFields.fields,
@@ -144,15 +145,15 @@ const le = ({ close: A }) => {
144
145
  settings: h,
145
146
  onUpdate: (e) => N(e),
146
147
  errors: g,
147
- currentAuthType: v,
148
- onAuthTypeChange: z
148
+ currentAuthType: S,
149
+ onAuthTypeChange: $
149
150
  }
150
151
  ),
151
- Object.keys(c.optional).length > 0 && /* @__PURE__ */ n(
152
+ Object.keys(c.optional).length > 0 && /* @__PURE__ */ d(
152
153
  "div",
153
154
  {
154
155
  className: `${a.advancedButton} ${T ? a.advancedButtonActive : ""}`,
155
- onClick: () => $(!T),
156
+ onClick: () => k(!T),
156
157
  children: [
157
158
  /* @__PURE__ */ t(m, { type: "settings" }),
158
159
  /* @__PURE__ */ t("span", { children: "Advanced Options" }),
@@ -160,18 +161,18 @@ const le = ({ close: A }) => {
160
161
  ]
161
162
  }
162
163
  ),
163
- T && Object.keys(c.optional).length > 0 && /* @__PURE__ */ n("div", { className: a.advancedOptions, children: [
164
+ T && Object.keys(c.optional).length > 0 && /* @__PURE__ */ d("div", { className: a.advancedOptions, children: [
164
165
  /* @__PURE__ */ t(
165
- H,
166
+ M,
166
167
  {
167
168
  fields: c.optional,
168
- settings: b,
169
+ settings: F,
169
170
  onUpdate: (e) => E(e)
170
171
  }
171
172
  ),
172
- /* @__PURE__ */ n("div", { className: a.field, children: [
173
+ /* @__PURE__ */ d("div", { className: a.field, children: [
173
174
  /* @__PURE__ */ t("label", { className: a.label, children: "Tags" }),
174
- /* @__PURE__ */ t(M, { fieldValue: C, onUpdate: (e) => x(e) })
175
+ /* @__PURE__ */ t(G, { fieldValue: C, onUpdate: (e) => x(e) })
175
176
  ] })
176
177
  ] })
177
178
  ] })
@@ -1 +1 @@
1
- {"version":3,"file":"AddStorage.js","sources":["../../../../src/components/Storage/AddStorage/AddStorage.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport classes from './AddStorage.module.scss';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport Select from '../../common/form/Select/Select';\r\nimport { useAddStorage, useGetAvailableStorages } from '../../../services/storage';\r\nimport SidePanel from '../../common/SidePanel/SidePanel';\r\nimport TagsInput from '../../common/form/TagsInput/TagsInput';\r\nimport { storageOptionField } from '../../../@types/storages';\r\nimport StorageSettings from '../StorageSettings/StorageSettings';\r\n// import { useGetDevice } from '../../../services/devices';\r\nimport { shouldDisplayStorageField } from '../../../utils/helpers';\r\nimport StorageAuthSettings from '../StorageAuthSettings/StorageAuthSettings';\r\n\r\ntype AddStorageProps = {\r\n close: () => void;\r\n};\r\n\r\nconst AddStorage = ({ close }: AddStorageProps) => {\r\n const [inputError, setInputError] = useState<Record<string, string>>({});\r\n const [storageTitle, setStorageTitle] = useState('');\r\n const [storageType, setStorageType] = useState('');\r\n const [currentAuthType, setCurrentAuthType] = useState<string>('');\r\n const [showAdvanced, setShowAdvanced] = useState(false);\r\n const [storageCredentials, setStorageCredentials] = useState<Record<string, string | number | boolean>>({});\r\n const [storageSettings, setStorageSettings] = useState<Record<string, string | number | boolean>>({});\r\n const [storageTags, setStorageTags] = useState<string[]>([]);\r\n const addStorageMutation = useAddStorage();\r\n const { data } = useGetAvailableStorages();\r\n // const { data: deviceData } = useGetDevice('main', true);\r\n // const mainDeviceIsServer =\r\n // deviceData?.result?.os && deviceData?.result?.platform ? isServerEdition(deviceData.result.os, deviceData.result.platform) : false;\r\n const storageProviders = data?.result || {};\r\n\r\n const providersOptions = useMemo(() => {\r\n return Object.keys(storageProviders)\r\n .map((k) => ({\r\n label: storageProviders[k as keyof typeof storageProviders].name,\r\n value: k,\r\n image: <img src={`providers/${k}.png`} />,\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label));\r\n }, [storageProviders]);\r\n\r\n const storageFields = useMemo(() => {\r\n const allFields: storageOptionField[] = storageProviders[storageType as keyof typeof storageProviders]?.settings || [];\r\n const groupedFields = { required: [], optional: [], authFields: { fields: [], types: [] } } as {\r\n required: storageOptionField[];\r\n optional: storageOptionField[];\r\n authFields: { fields: storageOptionField[]; types: string[] };\r\n };\r\n\r\n allFields.forEach((field: storageOptionField) => {\r\n if (field.required) {\r\n (groupedFields.required as storageOptionField[]).push(field);\r\n } else {\r\n if (!field.authFieldType) {\r\n (groupedFields.optional as storageOptionField[]).push(field);\r\n }\r\n }\r\n });\r\n const types: string[] = storageProviders[storageType as keyof typeof storageProviders]?.authTypes;\r\n const authFields = allFields.filter((f) => f.authFieldType);\r\n groupedFields.authFields = { fields: authFields, types };\r\n\r\n return groupedFields;\r\n }, [storageProviders, storageType]);\r\n\r\n // Initialize credentials when storage type changes\r\n useEffect(() => {\r\n if (storageType) {\r\n const storageCreds: Record<string, string> = {};\r\n storageFields.required.forEach((field: storageOptionField) => {\r\n storageCreds[field.value] = '';\r\n });\r\n setStorageCredentials(storageCreds);\r\n }\r\n }, [storageType, storageFields]);\r\n\r\n useEffect(() => {\r\n if (storageTitle) {\r\n setInputError((currentState) => {\r\n const data = { ...currentState };\r\n delete data['title'];\r\n return data;\r\n });\r\n }\r\n if (storageType) {\r\n setInputError((currentState) => {\r\n const data = { ...currentState };\r\n delete data['storageType'];\r\n return data;\r\n });\r\n }\r\n Object.entries(storageCredentials).forEach(([key, value]) => {\r\n if (value) {\r\n setInputError((currentState) => {\r\n const data = { ...currentState };\r\n delete data[key];\r\n return data;\r\n });\r\n }\r\n });\r\n console.log('storageCredentials :', storageCredentials);\r\n }, [storageTitle, storageType, storageCredentials]);\r\n\r\n const addStorage = () => {\r\n setInputError({});\r\n const errors: Record<string, string> = {};\r\n // Get all fields for the selected storage type\r\n const allFields: storageOptionField[] = storageProviders[storageType as keyof typeof storageProviders]?.settings || [];\r\n\r\n // Validate required fields that are visible AND relevant to current auth type\r\n allFields.forEach((fieldDef) => {\r\n if (!fieldDef.required) return;\r\n\r\n // Check if this field should be displayed based on conditions\r\n if (!shouldDisplayStorageField(fieldDef, storageSettings, allFields)) return;\r\n\r\n // Check if this field is relevant to the current auth type\r\n const isAuthField = !!fieldDef.authFieldType;\r\n const isRelevantAuthField = !isAuthField || fieldDef.authFieldType === currentAuthType;\r\n if (!isRelevantAuthField) return;\r\n\r\n // Get the field value from the appropriate state object\r\n const fieldValue = isAuthField ? storageCredentials[fieldDef.value] : storageSettings[fieldDef.value];\r\n\r\n // Check if the value is empty\r\n const isEmpty = fieldValue === undefined || fieldValue === null || fieldValue === '';\r\n\r\n if (isEmpty) {\r\n errors[fieldDef.value] = 'Required';\r\n }\r\n });\r\n if (!storageTitle) {\r\n errors['title'] = 'Required';\r\n }\r\n if (!storageType) {\r\n errors['storageType'] = 'Required';\r\n }\r\n console.log('storageType :', storageType, currentAuthType, storageCredentials);\r\n console.log('errors :', errors);\r\n\r\n if (Object.keys(errors).length === 0) {\r\n const storagePayload = {\r\n name: storageTitle,\r\n type: storageType,\r\n settings: storageSettings,\r\n credentials: storageCredentials,\r\n authType: currentAuthType,\r\n tags: storageTags,\r\n };\r\n console.log('payload :', storagePayload);\r\n\r\n addStorageMutation.mutate(storagePayload, {\r\n onError: (error: Error) => {\r\n console.log('error :', error?.message);\r\n toast.error(error.message || `Error Adding Storage!`);\r\n },\r\n onSuccess: (data: any) => {\r\n console.log('Success :', data);\r\n toast.success(`Successfully Added Storage!`, { autoClose: 5000 });\r\n close();\r\n },\r\n });\r\n } else {\r\n setInputError(errors);\r\n }\r\n };\r\n\r\n return (\r\n <SidePanel\r\n title=\"Add New Remote Storage\"\r\n icon={<Icon type={'storages'} size={18} />}\r\n close={close}\r\n footer={\r\n <>\r\n <div className={classes.footerLeft}>\r\n <div className={classes.summary}></div>\r\n </div>\r\n <div className={classes.footerRight}>\r\n <button className={classes.createButton} onClick={() => addStorage()}>\r\n <Icon type=\"check\" size={12} /> Add Storage\r\n </button>\r\n </div>\r\n </>\r\n }\r\n >\r\n <div className={classes.addStorageContent}>\r\n {addStorageMutation.isPending && (\r\n <div className={classes.loader}>\r\n <Icon size={36} type=\"loading\" />\r\n </div>\r\n )}\r\n <div className={classes.field}>\r\n <label className={classes.label}>\r\n Storage Name*\r\n <i data-tooltip-id=\"hintTooltip\" data-tooltip-content={'Storage name cannot be changed in future'} data-tooltip-place=\"top\">\r\n <Icon type=\"help\" size={13} />\r\n </i>\r\n </label>\r\n {inputError['title'] && <span className={classes.fieldErrorLabel}>{inputError['title']}</span>}\r\n <input\r\n className={`${classes.input} ${inputError['title'] ? classes.inputHasError : ''}`}\r\n type=\"text\"\r\n placeholder=\"Give your Storage a Name\"\r\n value={storageTitle || ''}\r\n required\r\n onChange={(e) => setStorageTitle(e.target.value)}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Storage Type*</label>\r\n {inputError['storageType'] && <span className={classes.fieldErrorLabel}>{inputError['storageType']}</span>}\r\n <div className={classes.selectField}>\r\n <Select\r\n options={[{ label: 'Select Storage Type', value: '' }, ...providersOptions]}\r\n fieldValue={storageType}\r\n onUpdate={(val: string) => {\r\n setStorageCredentials({});\r\n setStorageSettings({});\r\n setStorageType(val);\r\n const fields = storageProviders[val as keyof typeof storageProviders]?.fields || [];\r\n const newCredentials = fields.reduce(\r\n (acc: any, field: { value: any }) => ({\r\n ...acc,\r\n [field.value]: '',\r\n }),\r\n {},\r\n );\r\n setStorageCredentials(newCredentials);\r\n }}\r\n size=\"large\"\r\n full={true}\r\n search={true}\r\n error={inputError['storageType']}\r\n />\r\n </div>\r\n </div>\r\n\r\n {storageType && storageFields.authFields.fields.length > 0 && (\r\n <StorageAuthSettings\r\n storageType={storageType}\r\n fields={storageFields.authFields.fields}\r\n authTypes={storageFields.authFields.types}\r\n settings={storageCredentials}\r\n onUpdate={(newSettings) => setStorageCredentials(newSettings)}\r\n errors={inputError}\r\n currentAuthType={currentAuthType}\r\n onAuthTypeChange={setCurrentAuthType}\r\n />\r\n )}\r\n {Object.keys(storageFields.optional).length > 0 && (\r\n <div\r\n className={`${classes.advancedButton} ${showAdvanced ? classes.advancedButtonActive : ''}`}\r\n onClick={() => setShowAdvanced(!showAdvanced)}\r\n >\r\n <Icon type={'settings'} />\r\n <span>Advanced Options</span>\r\n <Icon type={showAdvanced ? 'caret-up' : 'caret-down'} />\r\n </div>\r\n )}\r\n {showAdvanced && Object.keys(storageFields.optional).length > 0 && (\r\n <div className={classes.advancedOptions}>\r\n <StorageSettings\r\n fields={storageFields.optional}\r\n settings={storageSettings}\r\n onUpdate={(newSettings) => setStorageSettings(newSettings)}\r\n />\r\n <div className={classes.field}>\r\n <label className={classes.label}>Tags</label>\r\n <TagsInput fieldValue={storageTags} onUpdate={(val) => setStorageTags(val)} />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </SidePanel>\r\n );\r\n};\r\nexport default AddStorage;\r\n"],"names":["AddStorage","close","inputError","setInputError","useState","storageTitle","setStorageTitle","storageType","setStorageType","currentAuthType","setCurrentAuthType","showAdvanced","setShowAdvanced","storageCredentials","setStorageCredentials","storageSettings","setStorageSettings","storageTags","setStorageTags","addStorageMutation","useAddStorage","data","useGetAvailableStorages","storageProviders","providersOptions","useMemo","k","jsx","a","b","storageFields","allFields","_a","groupedFields","field","types","_b","authFields","f","useEffect","storageCreds","currentState","key","value","addStorage","errors","fieldDef","shouldDisplayStorageField","isAuthField","fieldValue","storagePayload","error","toast","SidePanel","Icon","jsxs","Fragment","classes","Select","val","newCredentials","acc","StorageAuthSettings","newSettings","StorageSettings","TagsInput"],"mappings":"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"}
1
+ {"version":3,"file":"AddStorage.js","sources":["../../../../src/components/Storage/AddStorage/AddStorage.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport classes from './AddStorage.module.scss';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport { useAddStorage, useGetAvailableStorages } from '../../../services/storage';\r\nimport SidePanel from '../../common/SidePanel/SidePanel';\r\nimport TagsInput from '../../common/form/TagsInput/TagsInput';\r\nimport { storageOptionField } from '../../../@types/storages';\r\nimport StorageSettings from '../StorageSettings/StorageSettings';\r\n// import { useGetDevice } from '../../../services/devices';\r\nimport { shouldDisplayStorageField } from '../../../utils/helpers';\r\nimport StorageAuthSettings from '../StorageAuthSettings/StorageAuthSettings';\r\nimport StorageProviderSelect from '../../common/form/StorageProviderSelect/StorageProviderSelect';\r\n\r\ntype AddStorageProps = {\r\n close: () => void;\r\n};\r\n\r\nconst AddStorage = ({ close }: AddStorageProps) => {\r\n const [inputError, setInputError] = useState<Record<string, string>>({});\r\n const [storageTitle, setStorageTitle] = useState('');\r\n const [storageType, setStorageType] = useState('');\r\n const [currentAuthType, setCurrentAuthType] = useState<string>('');\r\n const [showAdvanced, setShowAdvanced] = useState(false);\r\n const [storageCredentials, setStorageCredentials] = useState<Record<string, string | number | boolean>>({});\r\n const [storageSettings, setStorageSettings] = useState<Record<string, string | number | boolean>>({});\r\n const [storageTags, setStorageTags] = useState<string[]>([]);\r\n const addStorageMutation = useAddStorage();\r\n const { data } = useGetAvailableStorages();\r\n // const { data: deviceData } = useGetDevice('main', true);\r\n // const mainDeviceIsServer =\r\n // deviceData?.result?.os && deviceData?.result?.platform ? isServerEdition(deviceData.result.os, deviceData.result.platform) : false;\r\n const storageProviders = data?.result || {};\r\n\r\n console.log('storageProviders :', storageProviders);\r\n\r\n const providersOptions = useMemo(() => {\r\n return Object.keys(storageProviders)\r\n .map((k) => ({\r\n label: storageProviders[k as keyof typeof storageProviders].name,\r\n value: k,\r\n doc: storageProviders[k as keyof typeof storageProviders].doc,\r\n image: <img src={`providers/${k}.png`} />,\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label));\r\n }, [storageProviders]);\r\n\r\n const storageFields = useMemo(() => {\r\n const allFields: storageOptionField[] = storageProviders[storageType as keyof typeof storageProviders]?.settings || [];\r\n const groupedFields = { required: [], optional: [], authFields: { fields: [], types: [] } } as {\r\n required: storageOptionField[];\r\n optional: storageOptionField[];\r\n authFields: { fields: storageOptionField[]; types: string[] };\r\n };\r\n\r\n allFields.forEach((field: storageOptionField) => {\r\n if (field.required) {\r\n (groupedFields.required as storageOptionField[]).push(field);\r\n } else {\r\n if (!field.authFieldType) {\r\n (groupedFields.optional as storageOptionField[]).push(field);\r\n }\r\n }\r\n });\r\n const types: string[] = storageProviders[storageType as keyof typeof storageProviders]?.authTypes;\r\n const authFields = allFields.filter((f) => f.authFieldType);\r\n groupedFields.authFields = { fields: authFields, types };\r\n\r\n return groupedFields;\r\n }, [storageProviders, storageType]);\r\n\r\n // Initialize credentials when storage type changes\r\n useEffect(() => {\r\n if (storageType) {\r\n const storageCreds: Record<string, string> = {};\r\n storageFields.required.forEach((field: storageOptionField) => {\r\n storageCreds[field.value] = '';\r\n });\r\n setStorageCredentials(storageCreds);\r\n }\r\n }, [storageType, storageFields]);\r\n\r\n useEffect(() => {\r\n if (storageTitle) {\r\n setInputError((currentState) => {\r\n const data = { ...currentState };\r\n delete data['title'];\r\n return data;\r\n });\r\n }\r\n if (storageType) {\r\n setInputError((currentState) => {\r\n const data = { ...currentState };\r\n delete data['storageType'];\r\n return data;\r\n });\r\n }\r\n Object.entries(storageCredentials).forEach(([key, value]) => {\r\n if (value) {\r\n setInputError((currentState) => {\r\n const data = { ...currentState };\r\n delete data[key];\r\n return data;\r\n });\r\n }\r\n });\r\n console.log('storageCredentials :', storageCredentials);\r\n }, [storageTitle, storageType, storageCredentials]);\r\n\r\n const addStorage = () => {\r\n setInputError({});\r\n const errors: Record<string, string> = {};\r\n // Get all fields for the selected storage type\r\n const allFields: storageOptionField[] = storageProviders[storageType as keyof typeof storageProviders]?.settings || [];\r\n\r\n // Validate required fields that are visible AND relevant to current auth type\r\n allFields.forEach((fieldDef) => {\r\n if (!fieldDef.required) return;\r\n\r\n // Check if this field should be displayed based on conditions\r\n if (!shouldDisplayStorageField(fieldDef, storageSettings, allFields)) return;\r\n\r\n // Check if this field is relevant to the current auth type\r\n const isAuthField = !!fieldDef.authFieldType;\r\n const isRelevantAuthField = !isAuthField || fieldDef.authFieldType === currentAuthType;\r\n if (!isRelevantAuthField) return;\r\n\r\n // Get the field value from the appropriate state object\r\n const fieldValue = isAuthField ? storageCredentials[fieldDef.value] : storageSettings[fieldDef.value];\r\n\r\n // Check if the value is empty\r\n const isEmpty = fieldValue === undefined || fieldValue === null || fieldValue === '';\r\n\r\n if (isEmpty) {\r\n errors[fieldDef.value] = 'Required';\r\n }\r\n });\r\n if (!storageTitle) {\r\n errors['title'] = 'Required';\r\n }\r\n if (!storageType) {\r\n errors['storageType'] = 'Required';\r\n }\r\n console.log('storageType :', storageType, currentAuthType, storageCredentials);\r\n console.log('errors :', errors);\r\n\r\n if (Object.keys(errors).length === 0) {\r\n const storagePayload = {\r\n name: storageTitle,\r\n type: storageType,\r\n settings: storageSettings,\r\n credentials: storageCredentials,\r\n authType: currentAuthType,\r\n tags: storageTags,\r\n };\r\n console.log('payload :', storagePayload);\r\n\r\n addStorageMutation.mutate(storagePayload, {\r\n onError: (error: Error) => {\r\n console.log('error :', error?.message);\r\n toast.error(error.message || `Error Adding Storage!`);\r\n },\r\n onSuccess: (data: any) => {\r\n console.log('Success :', data);\r\n toast.success(`Successfully Added Storage!`, { autoClose: 5000 });\r\n close();\r\n },\r\n });\r\n } else {\r\n setInputError(errors);\r\n }\r\n };\r\n\r\n return (\r\n <SidePanel\r\n title=\"Add New Remote Storage\"\r\n icon={<Icon type={'storages'} size={18} />}\r\n close={close}\r\n footer={\r\n <>\r\n <div className={classes.footerLeft}>\r\n <div className={classes.summary}></div>\r\n </div>\r\n <div className={classes.footerRight}>\r\n <button className={classes.createButton} onClick={() => addStorage()}>\r\n <Icon type=\"check\" size={12} /> Add Storage\r\n </button>\r\n </div>\r\n </>\r\n }\r\n >\r\n <div className={classes.addStorageContent}>\r\n {addStorageMutation.isPending && (\r\n <div className={classes.loader}>\r\n <Icon size={36} type=\"loading\" />\r\n </div>\r\n )}\r\n <div className={classes.field}>\r\n <label className={classes.label}>\r\n Storage Name*\r\n <i data-tooltip-id=\"hintTooltip\" data-tooltip-content={'Storage name cannot be changed in future'} data-tooltip-place=\"top\">\r\n <Icon type=\"help\" size={13} />\r\n </i>\r\n </label>\r\n {inputError['title'] && <span className={classes.fieldErrorLabel}>{inputError['title']}</span>}\r\n <input\r\n className={`${classes.input} ${inputError['title'] ? classes.inputHasError : ''}`}\r\n type=\"text\"\r\n placeholder=\"Give your Storage a Name\"\r\n value={storageTitle || ''}\r\n required\r\n onChange={(e) => setStorageTitle(e.target.value)}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Storage Type*</label>\r\n {inputError['storageType'] && <span className={classes.fieldErrorLabel}>{inputError['storageType']}</span>}\r\n <div className={classes.selectField}>\r\n <StorageProviderSelect\r\n options={[...providersOptions]}\r\n fieldValue={storageType}\r\n full={true}\r\n onUpdate={(val: string) => {\r\n setStorageCredentials({});\r\n setStorageSettings({});\r\n setStorageType(val);\r\n const fields = storageProviders[val as keyof typeof storageProviders]?.fields || [];\r\n const newCredentials = fields.reduce(\r\n (acc: any, field: { value: any }) => ({\r\n ...acc,\r\n [field.value]: '',\r\n }),\r\n {},\r\n );\r\n setStorageCredentials(newCredentials);\r\n }}\r\n error={inputError['storageType']}\r\n />\r\n </div>\r\n </div>\r\n\r\n {storageType && storageFields.authFields.fields.length > 0 && (\r\n <StorageAuthSettings\r\n storageType={storageType}\r\n fields={storageFields.authFields.fields}\r\n authTypes={storageFields.authFields.types}\r\n settings={storageCredentials}\r\n onUpdate={(newSettings) => setStorageCredentials(newSettings)}\r\n errors={inputError}\r\n currentAuthType={currentAuthType}\r\n onAuthTypeChange={setCurrentAuthType}\r\n />\r\n )}\r\n {Object.keys(storageFields.optional).length > 0 && (\r\n <div\r\n className={`${classes.advancedButton} ${showAdvanced ? classes.advancedButtonActive : ''}`}\r\n onClick={() => setShowAdvanced(!showAdvanced)}\r\n >\r\n <Icon type={'settings'} />\r\n <span>Advanced Options</span>\r\n <Icon type={showAdvanced ? 'caret-up' : 'caret-down'} />\r\n </div>\r\n )}\r\n {showAdvanced && Object.keys(storageFields.optional).length > 0 && (\r\n <div className={classes.advancedOptions}>\r\n <StorageSettings\r\n fields={storageFields.optional}\r\n settings={storageSettings}\r\n onUpdate={(newSettings) => setStorageSettings(newSettings)}\r\n />\r\n <div className={classes.field}>\r\n <label className={classes.label}>Tags</label>\r\n <TagsInput fieldValue={storageTags} onUpdate={(val) => setStorageTags(val)} />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </SidePanel>\r\n );\r\n};\r\nexport default AddStorage;\r\n"],"names":["AddStorage","close","inputError","setInputError","useState","storageTitle","setStorageTitle","storageType","setStorageType","currentAuthType","setCurrentAuthType","showAdvanced","setShowAdvanced","storageCredentials","setStorageCredentials","storageSettings","setStorageSettings","storageTags","setStorageTags","addStorageMutation","useAddStorage","data","useGetAvailableStorages","storageProviders","providersOptions","useMemo","k","jsx","a","b","storageFields","allFields","_a","groupedFields","field","types","_b","authFields","f","useEffect","storageCreds","currentState","key","value","addStorage","errors","fieldDef","shouldDisplayStorageField","isAuthField","fieldValue","storagePayload","error","toast","SidePanel","Icon","jsxs","Fragment","classes","StorageProviderSelect","val","newCredentials","acc","StorageAuthSettings","newSettings","StorageSettings","TagsInput"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"StorageItem.d.ts","sourceRoot":"","sources":["../../../../src/components/Storage/StorageItem/StorageItem.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAOnD,UAAU,gBAAgB;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED,QAAA,MAAM,WAAW,GAAI,qBAAqB,gBAAgB,4CAoIzD,CAAC;AACF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"StorageItem.d.ts","sourceRoot":"","sources":["../../../../src/components/Storage/StorageItem/StorageItem.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAOnD,UAAU,gBAAgB;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED,QAAA,MAAM,WAAW,GAAI,qBAAqB,gBAAgB,4CA2IzD,CAAC;AACF,eAAe,WAAW,CAAC"}
@@ -1,39 +1,39 @@
1
- import { jsxs as t, jsx as e, Fragment as l } from "react/jsx-runtime";
1
+ import { jsxs as t, jsx as e, Fragment as a } from "react/jsx-runtime";
2
2
  import { useState as d } from "react";
3
- import { toast as C } from "react-toastify";
3
+ import { toast as z } from "react-toastify";
4
4
  import i from "../../common/Icon/Icon.js";
5
5
  import o from "./StorageItem.module.scss.js";
6
- import { formatBytes as $ } from "../../../utils/helpers.js";
7
- import b from "../EditStorage/EditStorage.js";
8
- import P from "../../common/Modal/Modal.js";
9
- import { useDeleteStorage as x, useVerifyStorage as A } from "../../../services/storage.js";
6
+ import { formatBytes as P } from "../../../utils/helpers.js";
7
+ import x from "../EditStorage/EditStorage.js";
8
+ import A from "../../common/Modal/Modal.js";
9
+ import { useDeleteStorage as D, useVerifyStorage as T } from "../../../services/storage.js";
10
10
  import B from "../../common/ActionModal/ActionModal.js";
11
- const H = ({ storage: n, layout: N }) => {
12
- var M;
13
- const [m, a] = d(!1), [h, g] = d(!1), [f, p] = d(!1), [u, S] = d(!1), { id: y, name: z, type: k, plans: w = [], usedSize: E = 200, storageTypeName: R } = n, v = x(), s = A(), c = y === "local", V = () => {
11
+ const K = ({ storage: n, layout: C }) => {
12
+ var N;
13
+ const [m, l] = d(!1), [p, g] = d(!1), [h, f] = d(!1), [u, y] = d(!1), { id: S, name: k, type: w, plans: E = [], usedSize: R = 200, storageTypeName: V, settings: $ = {} } = n, v = D(), s = T(), c = S === "local", M = $.description, b = () => {
14
14
  v.mutate(n.id, {
15
15
  onError: (r) => {
16
- console.log("error :", r == null ? void 0 : r.message), C.error(r.message || "Error Removing Storage!");
16
+ console.log("error :", r == null ? void 0 : r.message), z.error(r.message || "Error Removing Storage!");
17
17
  },
18
18
  onSuccess: (r) => {
19
- console.log("Success :", r), C.success("Removed Storage Successfully!", { autoClose: 5e3 }), close();
19
+ console.log("Success :", r), z.success("Removed Storage Successfully!", { autoClose: 5e3 }), close();
20
20
  }
21
21
  });
22
22
  };
23
23
  return /* @__PURE__ */ t(
24
24
  "div",
25
25
  {
26
- className: `${o.storage} ${N === "grid" ? o.storageGrid : o.storageList} ${h || f || u ? o.storageEditing : ""}`,
26
+ className: `${o.storage} ${C === "grid" ? o.storageGrid : o.storageList} ${p || h || u ? o.storageEditing : ""}`,
27
27
  children: [
28
28
  /* @__PURE__ */ t("div", { className: o.leftContent, children: [
29
- /* @__PURE__ */ e("div", { className: o.storageType, children: /* @__PURE__ */ e("img", { src: `providers/${k}.png` }) }),
29
+ /* @__PURE__ */ e("div", { className: o.storageType, children: /* @__PURE__ */ e("img", { src: `providers/${w}.png` }) }),
30
30
  /* @__PURE__ */ t("div", { className: o.content, children: [
31
31
  /* @__PURE__ */ t("div", { className: o.title, onClick: () => !c && g(!0), children: [
32
- /* @__PURE__ */ e("h4", { children: z }),
33
- " ",
32
+ /* @__PURE__ */ e("h4", { children: k }),
33
+ M && /* @__PURE__ */ e("i", { className: o.planDescription, "data-tooltip-id": "appTooltip", "data-tooltip-content": M, "data-tooltip-place": "top", children: /* @__PURE__ */ e(i, { type: "note", size: 13 }) }),
34
34
  c && /* @__PURE__ */ e(i, { type: "lock", size: 14 })
35
35
  ] }),
36
- /* @__PURE__ */ e("div", { children: R })
36
+ /* @__PURE__ */ e("div", { children: V })
37
37
  ] })
38
38
  ] }),
39
39
  /* @__PURE__ */ t("div", { className: o.rightContent, children: [
@@ -41,31 +41,31 @@ const H = ({ storage: n, layout: N }) => {
41
41
  /* @__PURE__ */ e(i, { type: "backup", size: 14 }),
42
42
  " ",
43
43
  /* @__PURE__ */ t("i", { children: [
44
- w.length,
44
+ E.length,
45
45
  " Plans"
46
46
  ] })
47
47
  ] }),
48
48
  /* @__PURE__ */ t("div", { className: o.info, children: [
49
49
  /* @__PURE__ */ e(i, { type: "disk", size: 14 }),
50
50
  " ",
51
- /* @__PURE__ */ e("i", { children: $(E) })
51
+ /* @__PURE__ */ e("i", { children: P(R) })
52
52
  ] }),
53
53
  /* @__PURE__ */ e(
54
54
  "button",
55
55
  {
56
56
  className: `${o.moreBtn} ${m ? o.moreBtnActive : ""}`,
57
- onClick: () => a(!m),
57
+ onClick: () => l(!m),
58
58
  disabled: c,
59
59
  children: /* @__PURE__ */ e(i, { type: "dots-vertical", size: 14 })
60
60
  }
61
61
  )
62
62
  ] }),
63
- m && /* @__PURE__ */ e("div", { className: o.settings, children: !c && /* @__PURE__ */ t(l, { children: [
63
+ m && /* @__PURE__ */ e("div", { className: o.settings, children: !c && /* @__PURE__ */ t(a, { children: [
64
64
  /* @__PURE__ */ t(
65
65
  "button",
66
66
  {
67
67
  onClick: () => {
68
- g(!0), a(!1);
68
+ g(!0), l(!1);
69
69
  },
70
70
  children: [
71
71
  /* @__PURE__ */ e(i, { type: "edit-settings", size: 14 }),
@@ -77,7 +77,7 @@ const H = ({ storage: n, layout: N }) => {
77
77
  "button",
78
78
  {
79
79
  onClick: () => {
80
- S(!0), a(!1), s.mutate(n.id);
80
+ y(!0), l(!1), s.mutate(n.id);
81
81
  },
82
82
  children: [
83
83
  /* @__PURE__ */ e(i, { type: "verify", size: 14 }),
@@ -89,7 +89,7 @@ const H = ({ storage: n, layout: N }) => {
89
89
  "button",
90
90
  {
91
91
  onClick: () => {
92
- p(!0), a(!1);
92
+ f(!0), l(!1);
93
93
  },
94
94
  children: [
95
95
  /* @__PURE__ */ e(i, { type: "trash", size: 14 }),
@@ -98,52 +98,52 @@ const H = ({ storage: n, layout: N }) => {
98
98
  }
99
99
  )
100
100
  ] }) }),
101
- h && /* @__PURE__ */ e(b, { close: () => g(!1), storage: n }),
101
+ p && /* @__PURE__ */ e(x, { close: () => g(!1), storage: n }),
102
102
  u && /* @__PURE__ */ e(
103
- P,
103
+ A,
104
104
  {
105
105
  title: `Verifying Storage "${n.name}"`,
106
- closeModal: () => !s.isPending && S(!1),
106
+ closeModal: () => !s.isPending && y(!1),
107
107
  width: "600px",
108
108
  children: /* @__PURE__ */ t("div", { className: o.verifyModalContent, children: [
109
- s.isPending && /* @__PURE__ */ t(l, { children: [
109
+ s.isPending && /* @__PURE__ */ t(a, { children: [
110
110
  /* @__PURE__ */ e(i, { type: "loading", size: 16 }),
111
111
  " Verifying Remote Storage Connection..."
112
112
  ] }),
113
- s.isSuccess && /* @__PURE__ */ t(l, { children: [
113
+ s.isSuccess && /* @__PURE__ */ t(a, { children: [
114
114
  /* @__PURE__ */ e(i, { type: "check", color: "teal", size: 14 }),
115
115
  " Verification Successful! This Remote Storage Connection is Working Perfectly!"
116
116
  ] }),
117
- s.isError && /* @__PURE__ */ t(l, { children: [
117
+ s.isError && /* @__PURE__ */ t(a, { children: [
118
118
  /* @__PURE__ */ e(i, { type: "error", color: "indianred", size: 16 }),
119
119
  " Error Verifying Remote Storage Connection!",
120
120
  " ",
121
- ((M = s.error) == null ? void 0 : M.toString()) || ""
121
+ ((N = s.error) == null ? void 0 : N.toString()) || ""
122
122
  ] })
123
123
  ] })
124
124
  }
125
125
  ),
126
- f && /* @__PURE__ */ e(
126
+ h && /* @__PURE__ */ e(
127
127
  B,
128
128
  {
129
129
  title: "Remove Storage",
130
- message: /* @__PURE__ */ e(l, { children: "Are you sure you want to delete this Storage?" }),
131
- closeModal: () => p(!1),
130
+ message: /* @__PURE__ */ e(a, { children: "Are you sure you want to delete this Storage?" }),
131
+ closeModal: () => f(!1),
132
132
  primaryAction: {
133
133
  title: "Yes, Remove Storage",
134
134
  type: "danger",
135
135
  icon: "trash",
136
136
  isPending: v.isPending,
137
- action: () => V()
137
+ action: () => b()
138
138
  }
139
139
  }
140
140
  )
141
141
  ]
142
142
  },
143
- y
143
+ S
144
144
  );
145
145
  };
146
146
  export {
147
- H as default
147
+ K as default
148
148
  };
149
149
  //# sourceMappingURL=StorageItem.js.map