@plutonhq/core-frontend 0.1.8 → 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 (55) hide show
  1. package/dist-lib/components/Plan/BackupEvents/BackupEvents.d.ts.map +1 -1
  2. package/dist-lib/components/Plan/BackupEvents/BackupEvents.js +35 -34
  3. package/dist-lib/components/Plan/BackupEvents/BackupEvents.js.map +1 -1
  4. package/dist-lib/components/Plan/BackupEvents/BackupEvents.module.scss.js +28 -26
  5. package/dist-lib/components/Plan/BackupEvents/BackupEvents.module.scss.js.map +1 -1
  6. package/dist-lib/components/Plan/PlanSettings/PlanSourceSettings.js +21 -21
  7. package/dist-lib/components/Plan/PlanSettings/PlanSourceSettings.js.map +1 -1
  8. package/dist-lib/components/Plan/PlanStats/PlanStats.js +9 -9
  9. package/dist-lib/components/Plan/PlanStats/PlanStats.js.map +1 -1
  10. package/dist-lib/components/Storage/AddStorage/AddStorage.d.ts.map +1 -1
  11. package/dist-lib/components/Storage/AddStorage/AddStorage.js +52 -51
  12. package/dist-lib/components/Storage/AddStorage/AddStorage.js.map +1 -1
  13. package/dist-lib/components/Storage/StorageItem/StorageItem.d.ts.map +1 -1
  14. package/dist-lib/components/Storage/StorageItem/StorageItem.js +36 -36
  15. package/dist-lib/components/Storage/StorageItem/StorageItem.js.map +1 -1
  16. package/dist-lib/components/common/Icon/Icon.d.ts.map +1 -1
  17. package/dist-lib/components/common/Icon/Icon.js +7 -0
  18. package/dist-lib/components/common/Icon/Icon.js.map +1 -1
  19. package/dist-lib/components/common/form/Select/Select.js +12 -12
  20. package/dist-lib/components/common/form/Select/Select.js.map +1 -1
  21. package/dist-lib/components/common/form/StoragePicker/StoragePicker.js +22 -22
  22. package/dist-lib/components/common/form/StoragePicker/StoragePicker.js.map +1 -1
  23. package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.d.ts +20 -0
  24. package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.d.ts.map +1 -0
  25. package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.js +75 -0
  26. package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.js.map +1 -0
  27. package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.module.scss.js +30 -0
  28. package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.module.scss.js.map +1 -0
  29. package/dist-lib/hooks/usePlanSingleActions.d.ts.map +1 -1
  30. package/dist-lib/hooks/usePlanSingleActions.js +8 -7
  31. package/dist-lib/hooks/usePlanSingleActions.js.map +1 -1
  32. package/dist-lib/providers/drime.png +0 -0
  33. package/dist-lib/providers/filelu.png +0 -0
  34. package/dist-lib/providers/filen.png +0 -0
  35. package/dist-lib/providers/internxt.png +0 -0
  36. package/dist-lib/providers/shade.png +0 -0
  37. package/dist-lib/styles/core-frontend.css +1 -1
  38. package/dist-lib/utils/storageProviders.d.ts +40 -0
  39. package/dist-lib/utils/storageProviders.d.ts.map +1 -1
  40. package/dist-lib/utils/storageProviders.js +35 -0
  41. package/dist-lib/utils/storageProviders.js.map +1 -1
  42. package/package.json +11 -10
  43. package/src/components/Plan/BackupEvents/BackupEvents.module.scss +8 -0
  44. package/src/components/Plan/BackupEvents/BackupEvents.tsx +6 -1
  45. package/src/components/Plan/PlanSettings/PlanSourceSettings.tsx +1 -1
  46. package/src/components/Plan/PlanStats/PlanStats.tsx +1 -1
  47. package/src/components/Storage/AddStorage/AddStorage.tsx +7 -6
  48. package/src/components/Storage/StorageItem/StorageItem.tsx +9 -2
  49. package/src/components/common/Icon/Icon.tsx +8 -0
  50. package/src/components/common/form/Select/Select.tsx +1 -1
  51. package/src/components/common/form/StoragePicker/StoragePicker.tsx +1 -1
  52. package/src/components/common/form/StorageProviderSelect/StorageProviderSelect.module.scss +223 -0
  53. package/src/components/common/form/StorageProviderSelect/StorageProviderSelect.tsx +106 -0
  54. package/src/hooks/usePlanSingleActions.tsx +1 -0
  55. package/src/utils/storageProviders.ts +35 -0
@@ -1,9 +1,9 @@
1
1
  import { jsx as a, jsxs as t } from "react/jsx-runtime";
2
2
  import { useState as I } from "react";
3
3
  import s from "./Select.module.scss.js";
4
- import d from "../../Icon/Icon.js";
4
+ import r from "../../Icon/Icon.js";
5
5
  import j from "../FormField/FormField.js";
6
- const E = ({
6
+ const H = ({
7
7
  label: b = "",
8
8
  options: c = [],
9
9
  description: $,
@@ -18,9 +18,9 @@ const E = ({
18
18
  search: C = !1,
19
19
  onUpdate: F
20
20
  }) => {
21
- const [n, h] = I(!1), [r, p] = I(""), f = c.length > 0 && i ? c.findIndex((e) => e.value === i) : null, l = f === -1 ? c[0] : c[f || 0], S = l && l.label ? l.label : c[0] && c[0].label || "Select Item..", z = l && l.value ? l.value : c[0] && c[0].value || "", D = l && l.image ? l.image : "", v = l && l.icon ? l.icon : "", k = (e) => {
21
+ const [n, h] = I(!1), [d, p] = I(""), f = c.length > 0 && i ? c.findIndex((e) => e.value === i) : null, l = f === -1 ? c[0] : c[f || 0], S = l && l.label ? l.label : c[0] && c[0].label || "Select Item..", z = l && l.value ? l.value : c[0] && c[0].value || "", D = l && l.image ? l.image : "", v = l && l.icon ? l.icon : "", k = (e) => {
22
22
  F(e), h(!1);
23
- }, o = r ? c.filter((e) => e.label.toLowerCase().includes(r.toLowerCase())) : c;
23
+ }, o = d ? c.filter((e) => e.label.toLowerCase().includes(d.toLowerCase())) : c;
24
24
  return /* @__PURE__ */ a(
25
25
  j,
26
26
  {
@@ -37,17 +37,17 @@ const E = ({
37
37
  /* @__PURE__ */ t("span", { children: [
38
38
  D,
39
39
  " ",
40
- v && /* @__PURE__ */ a(d, { type: v, size: 13 }),
40
+ v && /* @__PURE__ */ a(r, { type: v, size: 13 }),
41
41
  " ",
42
42
  S
43
43
  ] }),
44
- /* @__PURE__ */ a("button", { className: s.dropBtn, children: /* @__PURE__ */ a(d, { type: n ? "caret-up" : "caret-down", size: 12 }) })
44
+ /* @__PURE__ */ a("button", { className: s.dropBtn, children: /* @__PURE__ */ a(r, { type: n ? "caret-up" : "caret-down", size: 12 }) })
45
45
  ] }),
46
46
  n && /* @__PURE__ */ t("div", { children: [
47
47
  C && /* @__PURE__ */ t("div", { className: s.search, children: [
48
- /* @__PURE__ */ a(d, { type: "search", size: 15 }),
49
- /* @__PURE__ */ a("input", { placeholder: "Search Providers...", value: r, onChange: (e) => p(e.target.value) }),
50
- r && /* @__PURE__ */ a("button", { onClick: () => p(""), children: /* @__PURE__ */ a(d, { type: "close", size: 15 }) })
48
+ /* @__PURE__ */ a(r, { type: "search", size: 15 }),
49
+ /* @__PURE__ */ a("input", { placeholder: "Search...", value: d, onChange: (e) => p(e.target.value) }),
50
+ d && /* @__PURE__ */ a("button", { onClick: () => p(""), children: /* @__PURE__ */ a(r, { type: "close", size: 15 }) })
51
51
  ] }),
52
52
  /* @__PURE__ */ t("div", { className: `${s.lists} styled__scrollbar`, children: [
53
53
  /* @__PURE__ */ a("ul", { children: o.length > 0 && o.map((e, L) => /* @__PURE__ */ t(
@@ -56,14 +56,14 @@ const E = ({
56
56
  onClick: () => !e.pro && !e.disabled && k(e.value),
57
57
  className: `${e.value === z ? s.selectedItem : ""} ${e.disabled ? s.disabledItem : ""}`,
58
58
  children: [
59
- e.icon && /* @__PURE__ */ a(d, { type: e.icon, size: 13 }),
59
+ e.icon && /* @__PURE__ */ a(r, { type: e.icon, size: 13 }),
60
60
  e.image && e.image,
61
61
  e.label
62
62
  ]
63
63
  },
64
64
  L
65
65
  )) }),
66
- r && !o && /* @__PURE__ */ a("div", { children: "No Providers Found" })
66
+ d && !o && /* @__PURE__ */ a("div", { children: "No Providers Found" })
67
67
  ] })
68
68
  ] })
69
69
  ] })
@@ -71,6 +71,6 @@ const E = ({
71
71
  );
72
72
  };
73
73
  export {
74
- E as default
74
+ H as default
75
75
  };
76
76
  //# sourceMappingURL=Select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../../../../src/components/common/form/Select/Select.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport classes from './Select.module.scss';\r\nimport Icon from '../../Icon/Icon';\r\nimport FormField from '../FormField/FormField';\r\n\r\ntype SelectOptionType = {\r\n id?: string;\r\n icon?: string;\r\n pro?: boolean;\r\n image?: JSX.Element;\r\n label: string;\r\n value: string;\r\n disabled?: boolean;\r\n};\r\n\r\ntype SelectProps = {\r\n label?: string;\r\n size?: 'large' | 'medium' | 'small' | 'mini';\r\n full?: boolean;\r\n inline?: boolean;\r\n description?: string;\r\n customClasses?: string;\r\n disabled?: boolean;\r\n hint?: string;\r\n error?: string;\r\n search?: boolean;\r\n fieldValue: string;\r\n options: SelectOptionType[];\r\n onUpdate: (f: string) => void;\r\n};\r\n\r\nconst Select = ({\r\n label = '',\r\n options = [],\r\n description,\r\n customClasses = '',\r\n fieldValue = '',\r\n size = 'medium',\r\n full = false,\r\n inline = false,\r\n disabled = false,\r\n hint = '',\r\n error = '',\r\n search = false,\r\n onUpdate,\r\n}: SelectProps) => {\r\n const [showDropDown, setShowDropDown] = useState(false);\r\n const [searchText, setSearchText] = useState('');\r\n\r\n const selectedItemIndex = options.length > 0 && fieldValue ? options.findIndex((x) => x.value === fieldValue) : null;\r\n const selectedItem = selectedItemIndex === -1 ? options[0] : options[selectedItemIndex || 0];\r\n const selectedItemLabel = selectedItem && selectedItem.label ? selectedItem.label : (options[0] && options[0].label) || 'Select Item..';\r\n const selectedItemValue = selectedItem && selectedItem.value ? selectedItem.value : (options[0] && options[0].value) || '';\r\n const selectedItemImage = selectedItem && selectedItem.image ? selectedItem.image : '';\r\n const selectedItemIcon = selectedItem && selectedItem.icon ? selectedItem.icon : '';\r\n\r\n const updateOption = (val: string) => {\r\n onUpdate(val);\r\n setShowDropDown(false);\r\n };\r\n\r\n const optionsItems = searchText ? options.filter((s) => s.label.toLowerCase().includes(searchText.toLowerCase())) : options;\r\n\r\n return (\r\n <FormField\r\n type=\"select\"\r\n label={label}\r\n description={description}\r\n hint={hint}\r\n error={error}\r\n required={false}\r\n inline={inline}\r\n classes={`${classes.selectField} ${classes[size]} ${full ? classes.selectFieldFull : ''} ${customClasses} ${error ? classes.fieldHasError : ''}`}\r\n >\r\n <div className={`${classes.dropdown} ${disabled ? classes.dropdownDisabled : ''}`}>\r\n <div className={classes.selected} onClick={() => setShowDropDown(!disabled ? !showDropDown : false)}>\r\n <span>\r\n {selectedItemImage} {selectedItemIcon && <Icon type={selectedItemIcon} size={13} />} {selectedItemLabel}\r\n </span>\r\n <button className={classes.dropBtn}>\r\n <Icon type={showDropDown ? 'caret-up' : 'caret-down'} size={12} />\r\n </button>\r\n </div>\r\n {showDropDown && (\r\n <div>\r\n {search && (\r\n <div className={classes.search}>\r\n <Icon type=\"search\" size={15} />\r\n <input placeholder=\"Search Providers...\" value={searchText} onChange={(e) => setSearchText(e.target.value)} />\r\n {searchText && (\r\n <button onClick={() => setSearchText('')}>\r\n <Icon type=\"close\" size={15} />\r\n </button>\r\n )}\r\n </div>\r\n )}\r\n <div className={`${classes.lists} styled__scrollbar`}>\r\n <ul>\r\n {optionsItems.length > 0 &&\r\n optionsItems.map((item, indx) => {\r\n return (\r\n <li\r\n key={indx}\r\n onClick={() => !item.pro && !item.disabled && updateOption(item.value)}\r\n className={`${item.value === selectedItemValue ? classes.selectedItem : ''} ${item.disabled ? classes.disabledItem : ''}`}\r\n >\r\n {item.icon && <Icon type={item.icon} size={13} />}\r\n {item.image && item.image}\r\n {item.label}\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n {searchText && !optionsItems && <div>No Providers Found</div>}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </FormField>\r\n );\r\n};\r\n\r\nexport default Select;\r\n"],"names":["Select","label","options","description","customClasses","fieldValue","size","full","inline","disabled","hint","error","search","onUpdate","showDropDown","setShowDropDown","useState","searchText","setSearchText","selectedItemIndex","x","selectedItem","selectedItemLabel","selectedItemValue","selectedItemImage","selectedItemIcon","updateOption","val","optionsItems","s","jsx","FormField","classes","jsxs","Icon","item","indx"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","sources":["../../../../../src/components/common/form/Select/Select.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport classes from './Select.module.scss';\r\nimport Icon from '../../Icon/Icon';\r\nimport FormField from '../FormField/FormField';\r\n\r\ntype SelectOptionType = {\r\n id?: string;\r\n icon?: string;\r\n pro?: boolean;\r\n image?: JSX.Element;\r\n label: string;\r\n value: string;\r\n disabled?: boolean;\r\n};\r\n\r\ntype SelectProps = {\r\n label?: string;\r\n size?: 'large' | 'medium' | 'small' | 'mini';\r\n full?: boolean;\r\n inline?: boolean;\r\n description?: string;\r\n customClasses?: string;\r\n disabled?: boolean;\r\n hint?: string;\r\n error?: string;\r\n search?: boolean;\r\n fieldValue: string;\r\n options: SelectOptionType[];\r\n onUpdate: (f: string) => void;\r\n};\r\n\r\nconst Select = ({\r\n label = '',\r\n options = [],\r\n description,\r\n customClasses = '',\r\n fieldValue = '',\r\n size = 'medium',\r\n full = false,\r\n inline = false,\r\n disabled = false,\r\n hint = '',\r\n error = '',\r\n search = false,\r\n onUpdate,\r\n}: SelectProps) => {\r\n const [showDropDown, setShowDropDown] = useState(false);\r\n const [searchText, setSearchText] = useState('');\r\n\r\n const selectedItemIndex = options.length > 0 && fieldValue ? options.findIndex((x) => x.value === fieldValue) : null;\r\n const selectedItem = selectedItemIndex === -1 ? options[0] : options[selectedItemIndex || 0];\r\n const selectedItemLabel = selectedItem && selectedItem.label ? selectedItem.label : (options[0] && options[0].label) || 'Select Item..';\r\n const selectedItemValue = selectedItem && selectedItem.value ? selectedItem.value : (options[0] && options[0].value) || '';\r\n const selectedItemImage = selectedItem && selectedItem.image ? selectedItem.image : '';\r\n const selectedItemIcon = selectedItem && selectedItem.icon ? selectedItem.icon : '';\r\n\r\n const updateOption = (val: string) => {\r\n onUpdate(val);\r\n setShowDropDown(false);\r\n };\r\n\r\n const optionsItems = searchText ? options.filter((s) => s.label.toLowerCase().includes(searchText.toLowerCase())) : options;\r\n\r\n return (\r\n <FormField\r\n type=\"select\"\r\n label={label}\r\n description={description}\r\n hint={hint}\r\n error={error}\r\n required={false}\r\n inline={inline}\r\n classes={`${classes.selectField} ${classes[size]} ${full ? classes.selectFieldFull : ''} ${customClasses} ${error ? classes.fieldHasError : ''}`}\r\n >\r\n <div className={`${classes.dropdown} ${disabled ? classes.dropdownDisabled : ''}`}>\r\n <div className={classes.selected} onClick={() => setShowDropDown(!disabled ? !showDropDown : false)}>\r\n <span>\r\n {selectedItemImage} {selectedItemIcon && <Icon type={selectedItemIcon} size={13} />} {selectedItemLabel}\r\n </span>\r\n <button className={classes.dropBtn}>\r\n <Icon type={showDropDown ? 'caret-up' : 'caret-down'} size={12} />\r\n </button>\r\n </div>\r\n {showDropDown && (\r\n <div>\r\n {search && (\r\n <div className={classes.search}>\r\n <Icon type=\"search\" size={15} />\r\n <input placeholder=\"Search...\" value={searchText} onChange={(e) => setSearchText(e.target.value)} />\r\n {searchText && (\r\n <button onClick={() => setSearchText('')}>\r\n <Icon type=\"close\" size={15} />\r\n </button>\r\n )}\r\n </div>\r\n )}\r\n <div className={`${classes.lists} styled__scrollbar`}>\r\n <ul>\r\n {optionsItems.length > 0 &&\r\n optionsItems.map((item, indx) => {\r\n return (\r\n <li\r\n key={indx}\r\n onClick={() => !item.pro && !item.disabled && updateOption(item.value)}\r\n className={`${item.value === selectedItemValue ? classes.selectedItem : ''} ${item.disabled ? classes.disabledItem : ''}`}\r\n >\r\n {item.icon && <Icon type={item.icon} size={13} />}\r\n {item.image && item.image}\r\n {item.label}\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n {searchText && !optionsItems && <div>No Providers Found</div>}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </FormField>\r\n );\r\n};\r\n\r\nexport default Select;\r\n"],"names":["Select","label","options","description","customClasses","fieldValue","size","full","inline","disabled","hint","error","search","onUpdate","showDropDown","setShowDropDown","useState","searchText","setSearchText","selectedItemIndex","x","selectedItem","selectedItemLabel","selectedItemValue","selectedItemImage","selectedItemIcon","updateOption","val","optionsItems","s","jsx","FormField","classes","jsxs","Icon","item","indx"],"mappings":"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"}
@@ -1,33 +1,33 @@
1
1
  import { jsx as o, jsxs as f } from "react/jsx-runtime";
2
- import { useState as p, useMemo as O, useEffect as v } from "react";
3
- import c from "./StoragePicker.module.scss.js";
2
+ import { useState as n, useMemo as O, useEffect as v } from "react";
3
+ import i from "./StoragePicker.module.scss.js";
4
4
  import U from "../Select/Select.js";
5
5
  import { useGetStorages as x } from "../../../../services/storage.js";
6
6
  import j from "../Input/Input.js";
7
7
  import q from "../../FolderPicker/FolderPicker.js";
8
8
  import V from "../../Icon/Icon.js";
9
9
  import _ from "../../../Storage/AddStorage/AddStorage.js";
10
- const b = ({ onUpdate: k, storagePath: P = "", storageId: u, disabled: r = !1, deviceId: w }) => {
11
- const [e, m] = p(), [N, g] = p(!1), [y, S] = p(!1), [l, h] = p(() => P), i = (e == null ? void 0 : e.type) === "local", { data: n } = x(), s = [...(n == null ? void 0 : n.result) || []], M = O(() => s.map(({ name: a, id: d, type: F }) => ({
12
- label: a,
13
- value: d.toString(),
10
+ const $ = ({ onUpdate: k, storagePath: P = "", storageId: u, disabled: r = !1, deviceId: w }) => {
11
+ const [e, m] = n(), [N, g] = n(!1), [y, S] = n(!1), [a, h] = n(() => P), d = (e == null ? void 0 : e.type) === "local", { data: c } = x(), s = [...(c == null ? void 0 : c.result) || []], M = O(() => s.map(({ name: l, id: p, type: F }) => ({
12
+ label: l,
13
+ value: p.toString(),
14
14
  image: /* @__PURE__ */ o("img", { src: `/providers/${F}.png` })
15
15
  })), [s]), A = (t) => {
16
16
  if (console.log("storageID :", t), t === "add_new")
17
17
  return S(!0);
18
- const a = s.find((d) => d.id == t);
19
- (a || t === "local") && m(a);
18
+ const l = s.find((p) => p.id == t);
19
+ (l || t === "local") && m(l);
20
20
  };
21
21
  return v(() => {
22
22
  if (s.length > 0 && u) {
23
- const t = s.find((a) => a.id === u);
23
+ const t = s.find((l) => l.id === u);
24
24
  m(t);
25
25
  }
26
- }, [n]), v(() => {
27
- e && k({ storage: e, path: l });
28
- }, [e, l]), console.log("Storage path :", l, !r && i && !l), /* @__PURE__ */ f("div", { className: c.storagePicker, children: [
29
- /* @__PURE__ */ o("div", { className: c.storagePickerInput, children: /* @__PURE__ */ f("div", { children: [
30
- /* @__PURE__ */ o("div", { className: c.storage, children: /* @__PURE__ */ o(
26
+ }, [c]), v(() => {
27
+ e && k({ storage: e, path: a });
28
+ }, [e, a]), /* @__PURE__ */ f("div", { className: i.storagePicker, children: [
29
+ /* @__PURE__ */ o("div", { className: i.storagePickerInput, children: /* @__PURE__ */ f("div", { children: [
30
+ /* @__PURE__ */ o("div", { className: i.storage, children: /* @__PURE__ */ o(
31
31
  U,
32
32
  {
33
33
  fieldValue: e != null && e.id ? e.id : "",
@@ -41,23 +41,23 @@ const b = ({ onUpdate: k, storagePath: P = "", storageId: u, disabled: r = !1, d
41
41
  disabled: r
42
42
  }
43
43
  ) }),
44
- /* @__PURE__ */ f("div", { className: c.path, children: [
44
+ /* @__PURE__ */ f("div", { className: i.path, children: [
45
45
  /* @__PURE__ */ o(
46
46
  j,
47
47
  {
48
48
  disabled: r,
49
- fieldValue: l,
49
+ fieldValue: a,
50
50
  onUpdate: (t) => h(t),
51
- placeholder: i ? "Select a folder" : "folder-or-bucket/subfolder",
51
+ placeholder: d ? "Select a folder" : "folder-or-bucket/subfolder",
52
52
  full: !0,
53
- required: !r && i,
54
- error: !r && i && !l ? "Required" : ""
53
+ required: !r && d,
54
+ error: !r && d && !a ? "Required" : ""
55
55
  }
56
56
  ),
57
57
  (e == null ? void 0 : e.type) && !r && e.type === "local" && /* @__PURE__ */ o(
58
58
  "button",
59
59
  {
60
- className: c.fileManagerBtn,
60
+ className: i.fileManagerBtn,
61
61
  "data-tooltip-id": "appTooltip",
62
62
  "data-tooltip-content": "Open FileManager to Select Directory",
63
63
  "data-tooltip-place": "top",
@@ -72,7 +72,7 @@ const b = ({ onUpdate: k, storagePath: P = "", storageId: u, disabled: r = !1, d
72
72
  {
73
73
  deviceId: w || "main",
74
74
  title: "Select Path",
75
- selected: l,
75
+ selected: a,
76
76
  close: () => g(!1),
77
77
  onSelect: (t) => h(t)
78
78
  }
@@ -81,6 +81,6 @@ const b = ({ onUpdate: k, storagePath: P = "", storageId: u, disabled: r = !1, d
81
81
  ] });
82
82
  };
83
83
  export {
84
- b as default
84
+ $ as default
85
85
  };
86
86
  //# sourceMappingURL=StoragePicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StoragePicker.js","sources":["../../../../../src/components/common/form/StoragePicker/StoragePicker.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react';\r\nimport classes from './StoragePicker.module.scss';\r\nimport Select from '../Select/Select';\r\nimport { useGetStorages } from '../../../../services/storage';\r\nimport Input from '../Input/Input';\r\nimport FolderPicker from '../../FolderPicker/FolderPicker';\r\nimport Icon from '../../Icon/Icon';\r\nimport AddStorage from '../../../Storage/AddStorage/AddStorage';\r\n\r\ntype storageItem = { name: string; id: string; type: string };\r\n\r\ninterface StoragePickerProps {\r\n storagePath?: string;\r\n storageId?: string;\r\n disabled?: boolean;\r\n deviceId?: string;\r\n onUpdate: (val: { storage: storageItem; path: string }) => void;\r\n}\r\n\r\nconst StoragePicker = ({ onUpdate, storagePath = '', storageId, disabled = false, deviceId }: StoragePickerProps) => {\r\n const [selectedStorage, setSelectedStorage] = useState<null | storageItem>();\r\n const [showFolderPicker, setShowFolderPicker] = useState(false);\r\n const [showAddStorageModal, setShowAddStorageModal] = useState(false);\r\n const [path, setPath] = useState(() => storagePath);\r\n const isLocalStorage = selectedStorage?.type === 'local';\r\n\r\n const { data: allStorageData } = useGetStorages();\r\n const allUserStorages = (allStorageData?.result as storageItem[]) || [];\r\n const allStorages = [...allUserStorages];\r\n\r\n const storageOptions = useMemo(() => {\r\n const storageOpts = allStorages.map(({ name, id, type }) => ({\r\n label: name,\r\n value: id.toString(),\r\n image: <img src={`/providers/${type}.png`} />,\r\n }));\r\n return storageOpts;\r\n }, [allStorages]);\r\n\r\n const selectStorage = (storageID: string) => {\r\n console.log('storageID :', storageID);\r\n if (storageID === 'add_new') {\r\n return setShowAddStorageModal(true);\r\n }\r\n const theStorage = allStorages.find((s) => s.id == storageID);\r\n if (theStorage || storageID === 'local') {\r\n setSelectedStorage(theStorage);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (allStorages.length > 0 && storageId) {\r\n const currentStorage = allStorages.find((s) => s.id === storageId);\r\n setSelectedStorage(currentStorage);\r\n }\r\n }, [allStorageData]);\r\n\r\n useEffect(() => {\r\n if (selectedStorage) {\r\n onUpdate({ storage: selectedStorage, path });\r\n }\r\n }, [selectedStorage, path]);\r\n\r\n console.log('Storage path :', path, !disabled && isLocalStorage && !path);\r\n\r\n return (\r\n <div className={classes.storagePicker}>\r\n <div className={classes.storagePickerInput}>\r\n <div>\r\n <div className={classes.storage}>\r\n <Select\r\n fieldValue={selectedStorage?.id ? selectedStorage.id : ''}\r\n options={[\r\n { label: 'Select Storage', value: '', icon: 'storages' },\r\n ...storageOptions,\r\n { label: '+ Add New Storage', value: 'add_new', icon: 'plus' },\r\n ]}\r\n onUpdate={selectStorage}\r\n full={true}\r\n disabled={disabled}\r\n />\r\n </div>\r\n <div className={classes.path}>\r\n <Input\r\n disabled={disabled}\r\n fieldValue={path}\r\n onUpdate={(val) => setPath(val)}\r\n placeholder={isLocalStorage ? 'Select a folder' : `folder-or-bucket/subfolder`}\r\n full={true}\r\n required={!disabled && isLocalStorage}\r\n error={(!disabled && isLocalStorage && !path ? 'Required' : '') as string}\r\n />\r\n {selectedStorage?.type && !disabled && selectedStorage.type === 'local' && (\r\n <button\r\n className={classes.fileManagerBtn}\r\n data-tooltip-id=\"appTooltip\"\r\n data-tooltip-content=\"Open FileManager to Select Directory\"\r\n data-tooltip-place=\"top\"\r\n onClick={() => setShowFolderPicker(true)}\r\n >\r\n <Icon type=\"folders\" size={16} />\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n {showFolderPicker && !disabled && (\r\n <FolderPicker\r\n deviceId={deviceId || 'main'}\r\n title=\"Select Path\"\r\n selected={path}\r\n close={() => setShowFolderPicker(false)}\r\n onSelect={(newVal) => setPath(newVal)}\r\n />\r\n )}\r\n {showAddStorageModal && <AddStorage close={() => setShowAddStorageModal(false)} />}\r\n </div>\r\n );\r\n};\r\n\r\nexport default StoragePicker;\r\n"],"names":["StoragePicker","onUpdate","storagePath","storageId","disabled","deviceId","selectedStorage","setSelectedStorage","useState","showFolderPicker","setShowFolderPicker","showAddStorageModal","setShowAddStorageModal","path","setPath","isLocalStorage","allStorageData","useGetStorages","allStorages","storageOptions","useMemo","name","id","type","jsx","selectStorage","storageID","theStorage","s","useEffect","currentStorage","jsxs","classes","Select","Input","val","Icon","FolderPicker","newVal","AddStorage"],"mappings":"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"}
1
+ {"version":3,"file":"StoragePicker.js","sources":["../../../../../src/components/common/form/StoragePicker/StoragePicker.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react';\r\nimport classes from './StoragePicker.module.scss';\r\nimport Select from '../Select/Select';\r\nimport { useGetStorages } from '../../../../services/storage';\r\nimport Input from '../Input/Input';\r\nimport FolderPicker from '../../FolderPicker/FolderPicker';\r\nimport Icon from '../../Icon/Icon';\r\nimport AddStorage from '../../../Storage/AddStorage/AddStorage';\r\n\r\ntype storageItem = { name: string; id: string; type: string };\r\n\r\ninterface StoragePickerProps {\r\n storagePath?: string;\r\n storageId?: string;\r\n disabled?: boolean;\r\n deviceId?: string;\r\n onUpdate: (val: { storage: storageItem; path: string }) => void;\r\n}\r\n\r\nconst StoragePicker = ({ onUpdate, storagePath = '', storageId, disabled = false, deviceId }: StoragePickerProps) => {\r\n const [selectedStorage, setSelectedStorage] = useState<null | storageItem>();\r\n const [showFolderPicker, setShowFolderPicker] = useState(false);\r\n const [showAddStorageModal, setShowAddStorageModal] = useState(false);\r\n const [path, setPath] = useState(() => storagePath);\r\n const isLocalStorage = selectedStorage?.type === 'local';\r\n\r\n const { data: allStorageData } = useGetStorages();\r\n const allUserStorages = (allStorageData?.result as storageItem[]) || [];\r\n const allStorages = [...allUserStorages];\r\n\r\n const storageOptions = useMemo(() => {\r\n const storageOpts = allStorages.map(({ name, id, type }) => ({\r\n label: name,\r\n value: id.toString(),\r\n image: <img src={`/providers/${type}.png`} />,\r\n }));\r\n return storageOpts;\r\n }, [allStorages]);\r\n\r\n const selectStorage = (storageID: string) => {\r\n console.log('storageID :', storageID);\r\n if (storageID === 'add_new') {\r\n return setShowAddStorageModal(true);\r\n }\r\n const theStorage = allStorages.find((s) => s.id == storageID);\r\n if (theStorage || storageID === 'local') {\r\n setSelectedStorage(theStorage);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (allStorages.length > 0 && storageId) {\r\n const currentStorage = allStorages.find((s) => s.id === storageId);\r\n setSelectedStorage(currentStorage);\r\n }\r\n }, [allStorageData]);\r\n\r\n useEffect(() => {\r\n if (selectedStorage) {\r\n onUpdate({ storage: selectedStorage, path });\r\n }\r\n }, [selectedStorage, path]);\r\n\r\n // console.log('Storage path :', path, !disabled && isLocalStorage && !path);\r\n\r\n return (\r\n <div className={classes.storagePicker}>\r\n <div className={classes.storagePickerInput}>\r\n <div>\r\n <div className={classes.storage}>\r\n <Select\r\n fieldValue={selectedStorage?.id ? selectedStorage.id : ''}\r\n options={[\r\n { label: 'Select Storage', value: '', icon: 'storages' },\r\n ...storageOptions,\r\n { label: '+ Add New Storage', value: 'add_new', icon: 'plus' },\r\n ]}\r\n onUpdate={selectStorage}\r\n full={true}\r\n disabled={disabled}\r\n />\r\n </div>\r\n <div className={classes.path}>\r\n <Input\r\n disabled={disabled}\r\n fieldValue={path}\r\n onUpdate={(val) => setPath(val)}\r\n placeholder={isLocalStorage ? 'Select a folder' : `folder-or-bucket/subfolder`}\r\n full={true}\r\n required={!disabled && isLocalStorage}\r\n error={(!disabled && isLocalStorage && !path ? 'Required' : '') as string}\r\n />\r\n {selectedStorage?.type && !disabled && selectedStorage.type === 'local' && (\r\n <button\r\n className={classes.fileManagerBtn}\r\n data-tooltip-id=\"appTooltip\"\r\n data-tooltip-content=\"Open FileManager to Select Directory\"\r\n data-tooltip-place=\"top\"\r\n onClick={() => setShowFolderPicker(true)}\r\n >\r\n <Icon type=\"folders\" size={16} />\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n {showFolderPicker && !disabled && (\r\n <FolderPicker\r\n deviceId={deviceId || 'main'}\r\n title=\"Select Path\"\r\n selected={path}\r\n close={() => setShowFolderPicker(false)}\r\n onSelect={(newVal) => setPath(newVal)}\r\n />\r\n )}\r\n {showAddStorageModal && <AddStorage close={() => setShowAddStorageModal(false)} />}\r\n </div>\r\n );\r\n};\r\n\r\nexport default StoragePicker;\r\n"],"names":["StoragePicker","onUpdate","storagePath","storageId","disabled","deviceId","selectedStorage","setSelectedStorage","useState","showFolderPicker","setShowFolderPicker","showAddStorageModal","setShowAddStorageModal","path","setPath","isLocalStorage","allStorageData","useGetStorages","allStorages","storageOptions","useMemo","name","id","type","jsx","selectStorage","storageID","theStorage","s","useEffect","currentStorage","jsxs","classes","Select","Input","val","Icon","FolderPicker","newVal","AddStorage"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ interface StorageProviderSelectProps {
2
+ label?: string;
3
+ description?: string;
4
+ full?: boolean;
5
+ error?: string;
6
+ customClasses?: string;
7
+ options: {
8
+ label: string;
9
+ value: string;
10
+ image?: JSX.Element;
11
+ disabled?: boolean;
12
+ doc?: string;
13
+ }[];
14
+ fieldValue: string;
15
+ onUpdate: (f: string) => void;
16
+ disabled?: boolean;
17
+ }
18
+ declare const StorageProviderSelect: ({ options, fieldValue, onUpdate, disabled, label, description, full, customClasses, error, }: StorageProviderSelectProps) => import("react/jsx-runtime").JSX.Element;
19
+ export default StorageProviderSelect;
20
+ //# sourceMappingURL=StorageProviderSelect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageProviderSelect.d.ts","sourceRoot":"","sources":["../../../../../src/components/common/form/StorageProviderSelect/StorageProviderSelect.tsx"],"names":[],"mappings":"AAIA,UAAU,0BAA0B;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnG,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,QAAA,MAAM,qBAAqB,GAAI,8FAU5B,0BAA0B,4CA6E5B,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,75 @@
1
+ import { jsx as s, jsxs as t } from "react/jsx-runtime";
2
+ import { useState as v } from "react";
3
+ import n from "../../Icon/Icon.js";
4
+ import C from "../FormField/FormField.js";
5
+ import r from "./StorageProviderSelect.module.scss.js";
6
+ const _ = ({
7
+ options: o,
8
+ fieldValue: m,
9
+ onUpdate: g,
10
+ disabled: u,
11
+ label: I,
12
+ description: b,
13
+ full: f,
14
+ customClasses: S,
15
+ error: w
16
+ }) => {
17
+ const [c, h] = v(!1), [a, p] = v(""), d = o.length > 0 && m ? o.findIndex((e) => e.value === m) : null;
18
+ console.log("selectedItemIndex :", d);
19
+ const l = d === -1 || d === null ? null : o[d || 0], $ = l && l.label ? l.label : "Select Storage Provider..", x = l && l.value ? l.value : "", N = l && l.image ? l.image : "", k = (e) => {
20
+ g(e), h(!1);
21
+ }, i = a ? o.filter((e) => e.label.toLowerCase().includes(a.toLowerCase())) : o;
22
+ return /* @__PURE__ */ s(
23
+ C,
24
+ {
25
+ type: "select",
26
+ label: I,
27
+ description: b,
28
+ required: !1,
29
+ error: w,
30
+ classes: `${r.storageProviderSelectField} ${f ? r.storageProviderSelectFieldFull : ""} ${S}`,
31
+ children: /* @__PURE__ */ t("div", { className: `${r.dropdown} ${c ? r.dropdownOpen : ""} ${u ? r.dropdownDisabled : ""}`, children: [
32
+ l && /* @__PURE__ */ s("div", { className: r.docLink, children: /* @__PURE__ */ t("a", { href: `https://docs.usepluton.com/docs/${l.doc}`, target: "_blank", rel: "noopener noreferrer", children: [
33
+ /* @__PURE__ */ s(n, { type: "link", size: 12 }),
34
+ " ",
35
+ l.label,
36
+ " Setup Guide"
37
+ ] }) }),
38
+ /* @__PURE__ */ t("div", { className: r.selected, onClick: () => h(u ? !1 : !c), children: [
39
+ /* @__PURE__ */ t("span", { children: [
40
+ N,
41
+ " ",
42
+ $
43
+ ] }),
44
+ /* @__PURE__ */ s("button", { className: r.dropBtn, children: /* @__PURE__ */ s(n, { type: c ? "caret-up" : "caret-down", size: 12 }) })
45
+ ] }),
46
+ c && /* @__PURE__ */ t("div", { children: [
47
+ /* @__PURE__ */ t("div", { className: r.search, children: [
48
+ /* @__PURE__ */ s(n, { type: "search", size: 15 }),
49
+ /* @__PURE__ */ s("input", { placeholder: "Search Storage Providers...", value: a, onChange: (e) => p(e.target.value) }),
50
+ a && /* @__PURE__ */ s("button", { onClick: () => p(""), children: /* @__PURE__ */ s(n, { type: "close", size: 15 }) })
51
+ ] }),
52
+ /* @__PURE__ */ t("div", { className: `${r.lists} styled__scrollbar`, children: [
53
+ /* @__PURE__ */ s("ul", { children: i.length > 0 && i.map((e, y) => /* @__PURE__ */ t(
54
+ "li",
55
+ {
56
+ onClick: () => !e.disabled && k(e.value),
57
+ className: `${e.value === x ? r.selectedItem : ""} ${e.disabled ? r.disabledItem : ""}`,
58
+ children: [
59
+ e.image && e.image,
60
+ e.label
61
+ ]
62
+ },
63
+ y
64
+ )) }),
65
+ a && !i && /* @__PURE__ */ s("div", { children: "No Providers Found" })
66
+ ] })
67
+ ] })
68
+ ] })
69
+ }
70
+ );
71
+ };
72
+ export {
73
+ _ as default
74
+ };
75
+ //# sourceMappingURL=StorageProviderSelect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageProviderSelect.js","sources":["../../../../../src/components/common/form/StorageProviderSelect/StorageProviderSelect.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport { FormField, Icon } from '../../..';\r\nimport classes from './StorageProviderSelect.module.scss';\r\n\r\ninterface StorageProviderSelectProps {\r\n label?: string;\r\n description?: string;\r\n full?: boolean;\r\n error?: string;\r\n customClasses?: string;\r\n options: { label: string; value: string; image?: JSX.Element; disabled?: boolean; doc?: string }[];\r\n fieldValue: string;\r\n onUpdate: (f: string) => void;\r\n disabled?: boolean;\r\n}\r\n\r\nconst StorageProviderSelect = ({\r\n options,\r\n fieldValue,\r\n onUpdate,\r\n disabled,\r\n label,\r\n description,\r\n full,\r\n customClasses,\r\n error,\r\n}: StorageProviderSelectProps) => {\r\n const [showDropDown, setShowDropDown] = useState(false);\r\n const [searchText, setSearchText] = useState('');\r\n const selectedItemIndex = options.length > 0 && fieldValue ? options.findIndex((x) => x.value === fieldValue) : null;\r\n console.log('selectedItemIndex :', selectedItemIndex);\r\n const selectedItem = selectedItemIndex === -1 || selectedItemIndex === null ? null : options[selectedItemIndex || 0];\r\n const selectedItemLabel = selectedItem && selectedItem.label ? selectedItem.label : 'Select Storage Provider..';\r\n const selectedItemValue = selectedItem && selectedItem.value ? selectedItem.value : '';\r\n const selectedItemImage = selectedItem && selectedItem.image ? selectedItem.image : '';\r\n\r\n const updateOption = (val: string) => {\r\n onUpdate(val);\r\n setShowDropDown(false);\r\n };\r\n\r\n const optionsItems = searchText ? options.filter((s) => s.label.toLowerCase().includes(searchText.toLowerCase())) : options;\r\n\r\n return (\r\n <FormField\r\n type=\"select\"\r\n label={label}\r\n description={description}\r\n required={false}\r\n error={error}\r\n classes={`${classes.storageProviderSelectField} ${full ? classes.storageProviderSelectFieldFull : ''} ${customClasses}`}\r\n >\r\n <div className={`${classes.dropdown} ${showDropDown ? classes.dropdownOpen : ''} ${disabled ? classes.dropdownDisabled : ''}`}>\r\n {selectedItem && (\r\n <div className={classes.docLink}>\r\n <a href={`https://docs.usepluton.com/docs/${selectedItem.doc}`} target=\"_blank\" rel=\"noopener noreferrer\">\r\n <Icon type=\"link\" size={12} /> {selectedItem.label} Setup Guide\r\n </a>\r\n </div>\r\n )}\r\n <div className={classes.selected} onClick={() => setShowDropDown(!disabled ? !showDropDown : false)}>\r\n <span>\r\n {selectedItemImage} {selectedItemLabel}\r\n </span>\r\n <button className={classes.dropBtn}>\r\n <Icon type={showDropDown ? 'caret-up' : 'caret-down'} size={12} />\r\n </button>\r\n </div>\r\n {showDropDown && (\r\n <div>\r\n <div className={classes.search}>\r\n <Icon type=\"search\" size={15} />\r\n <input placeholder=\"Search Storage Providers...\" value={searchText} onChange={(e) => setSearchText(e.target.value)} />\r\n {searchText && (\r\n <button onClick={() => setSearchText('')}>\r\n <Icon type=\"close\" size={15} />\r\n </button>\r\n )}\r\n </div>\r\n\r\n <div className={`${classes.lists} styled__scrollbar`}>\r\n <ul>\r\n {optionsItems.length > 0 &&\r\n optionsItems.map((item, indx) => {\r\n return (\r\n <li\r\n key={indx}\r\n onClick={() => !item.disabled && updateOption(item.value)}\r\n className={`${item.value === selectedItemValue ? classes.selectedItem : ''} ${item.disabled ? classes.disabledItem : ''}`}\r\n >\r\n {item.image && item.image}\r\n {item.label}\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n {searchText && !optionsItems && <div>No Providers Found</div>}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </FormField>\r\n );\r\n};\r\n\r\nexport default StorageProviderSelect;\r\n"],"names":["StorageProviderSelect","options","fieldValue","onUpdate","disabled","label","description","full","customClasses","error","showDropDown","setShowDropDown","useState","searchText","setSearchText","selectedItemIndex","x","selectedItem","selectedItemLabel","selectedItemValue","selectedItemImage","updateOption","val","optionsItems","s","jsx","FormField","classes","jsxs","Icon","item","indx"],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ const e = "_storageProviderSelectField_xzGlm", d = "_search_e8aeW", o = "_docLink_Uft52", t = "_dropdown_GF2fR", s = "_selected_M3Fsg", l = "_dropBtn_JHURZ", r = "_lists_K6e6a", c = "_disabledItem_PQWtF", n = "_selectedItem_c8Kdb", i = "_dropdownDisabled_JKtjx", _ = "_dropdownOpen_Hm4Ns", a = "_storageProviderSelectFieldFull_ZbZPD", p = {
2
+ storageProviderSelectField: e,
3
+ search: d,
4
+ docLink: o,
5
+ dropdown: t,
6
+ selected: s,
7
+ dropBtn: l,
8
+ lists: r,
9
+ disabledItem: c,
10
+ selectedItem: n,
11
+ dropdownDisabled: i,
12
+ dropdownOpen: _,
13
+ storageProviderSelectFieldFull: a
14
+ };
15
+ export {
16
+ p as default,
17
+ c as disabledItem,
18
+ o as docLink,
19
+ l as dropBtn,
20
+ t as dropdown,
21
+ i as dropdownDisabled,
22
+ _ as dropdownOpen,
23
+ r as lists,
24
+ d as search,
25
+ s as selected,
26
+ n as selectedItem,
27
+ e as storageProviderSelectField,
28
+ a as storageProviderSelectFieldFull
29
+ };
30
+ //# sourceMappingURL=StorageProviderSelect.module.scss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageProviderSelect.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePlanSingleActions.d.ts","sourceRoot":"","sources":["../../src/hooks/usePlanSingleActions.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,eAAO,MAAM,oBAAoB,QAAO;IACrC,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,GAAG,CAAC;IACf,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,IAAI,CAAC;CAuHxB,CAAC"}
1
+ {"version":3,"file":"usePlanSingleActions.d.ts","sourceRoot":"","sources":["../../src/hooks/usePlanSingleActions.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,eAAO,MAAM,oBAAoB,QAAO;IACrC,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,GAAG,CAAC;IACf,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,IAAI,CAAC;CAwHxB,CAAC"}
@@ -3,7 +3,7 @@ import { useParams as U, useNavigate as C } from "react-router";
3
3
  import { toast as n } from "react-toastify";
4
4
  import { usePerformBackup as I, usePausePlan as N, useResumePlan as D, useGetPlan as F } from "../services/plans.js";
5
5
  const J = () => {
6
- const [m, f] = o(!1), [k, h] = o(!1), [w, S] = o(!1), [B, M] = o(!1), [y, E] = o(!1), { id: $ } = U(), b = C(), l = I(), p = N(), d = D(), { data: a, isLoading: R, refetch: v, error: A } = F($), s = (a == null ? void 0 : a.result) || {}, r = s.method === "sync", c = [...s.backups || []].sort((e, t) => t.started - e.started), i = c.filter((e) => e.inProgress), g = (s.restores || []).filter((e) => e.status === "started"), L = c[0], P = i.length > 0 || g.length > 0, u = p.isPending || d.isPending || l.isPending;
6
+ const [m, f] = o(!1), [k, h] = o(!1), [w, S] = o(!1), [B, M] = o(!1), [y, E] = o(!1), { id: $ } = U(), b = C(), l = I(), p = N(), d = D(), { data: a, isLoading: R, refetch: v, error: A } = F($), s = (a == null ? void 0 : a.result) || {}, r = s.method === "sync", c = [...s.backups || []].sort((e, t) => t.started - e.started), u = c.filter((e) => e.inProgress), g = (s.restores || []).filter((e) => e.status === "started"), L = c[0], P = u.length > 0 || g.length > 0, i = p.isPending || d.isPending || l.isPending;
7
7
  return {
8
8
  // State
9
9
  showDeleteModal: m,
@@ -21,17 +21,17 @@ const J = () => {
21
21
  isLoading: R,
22
22
  refetchPlan: v,
23
23
  sortedHistory: c,
24
- activeBackups: i,
24
+ activeBackups: u,
25
25
  activeRestores: g,
26
26
  lastBackupItem: L,
27
27
  actionInProgress: P,
28
- taskPending: u,
28
+ taskPending: i,
29
29
  planError: A,
30
30
  // Actions
31
31
  changeStatus: () => {
32
- if (i.length > 0)
32
+ if (u.length > 0)
33
33
  return n.error("Can't pause a Plan while a Backup is in progress.");
34
- s.inProgress || u || (s.isActive ? n.promise(p.mutateAsync(s.id), {
34
+ s.inProgress || i || (s.isActive ? n.promise(p.mutateAsync(s.id), {
35
35
  pending: "Pausing backup Plan...",
36
36
  success: "Backup Plan Paused",
37
37
  error: {
@@ -52,7 +52,7 @@ const J = () => {
52
52
  backupNow: () => {
53
53
  if (P)
54
54
  return n.error("A Backup/Restore Process is in Progress.");
55
- if (u)
55
+ if (i)
56
56
  return;
57
57
  const e = n.loading(`Starting ${r ? "Sync" : "Backup"}...`);
58
58
  l.mutate(s.id, {
@@ -69,7 +69,8 @@ const J = () => {
69
69
  render: `${r ? "Sync" : "Backup"} failed to start. ${(t == null ? void 0 : t.message) || "Unknown Error."}`,
70
70
  type: "error",
71
71
  isLoading: !1,
72
- autoClose: !1
72
+ autoClose: !1,
73
+ closeButton: !0
73
74
  });
74
75
  }
75
76
  });
@@ -1 +1 @@
1
- {"version":3,"file":"usePlanSingleActions.js","sources":["../../src/hooks/usePlanSingleActions.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport { useNavigate, useParams } from 'react-router';\r\nimport { toast } from 'react-toastify';\r\nimport { useGetPlan, usePausePlan, usePerformBackup, useResumePlan } from '../services/plans';\r\nimport { Plan } from '../@types/plans';\r\nimport { Backup } from '../@types/backups';\r\nimport { RestoreSlim } from '../@types/restores';\r\n\r\nexport const usePlanSingleActions = (): {\r\n showDeleteModal: boolean;\r\n setShowDeleteModal: (show: boolean) => void;\r\n showEditModal: boolean;\r\n setShowEditModal: (show: boolean) => void;\r\n showPruneModal: boolean;\r\n setShowPruneModal: (show: boolean) => void;\r\n showLogsModal: boolean;\r\n setShowLogsModal: (show: boolean) => void;\r\n showUnlockModal: boolean;\r\n setShowUnlockModal: (show: boolean) => void;\r\n plan: Plan;\r\n isLoading: boolean;\r\n refetchPlan: () => void;\r\n sortedHistory: Backup[];\r\n activeBackups: Backup[];\r\n activeRestores: RestoreSlim[];\r\n lastBackupItem: Backup;\r\n actionInProgress: boolean;\r\n taskPending: boolean;\r\n planError: any;\r\n changeStatus: () => void;\r\n backupNow: () => void;\r\n} => {\r\n const [showDeleteModal, setShowDeleteModal] = useState(false);\r\n const [showEditModal, setShowEditModal] = useState(false);\r\n const [showUnlockModal, setShowUnlockModal] = useState(false);\r\n const [showPruneModal, setShowPruneModal] = useState(false);\r\n const [showLogsModal, setShowLogsModal] = useState(false);\r\n\r\n const { id } = useParams();\r\n const navigate = useNavigate();\r\n\r\n const performBackupMutation = usePerformBackup();\r\n const pauseMutation = usePausePlan();\r\n const resumeMutation = useResumePlan();\r\n\r\n const { data, isLoading, refetch: refetchPlan, error: planError } = useGetPlan(id as string);\r\n const plan: Plan = data?.result || {};\r\n\r\n const isSync = plan.method === 'sync';\r\n\r\n const sortedHistory = [...(plan.backups || [])].sort((a, b) => b.started - a.started);\r\n const activeBackups = sortedHistory.filter((s) => s.inProgress);\r\n const activeRestores = (plan.restores || []).filter((s) => s.status === 'started');\r\n const lastBackupItem = sortedHistory[0];\r\n const actionInProgress = activeBackups.length > 0 || activeRestores.length > 0;\r\n const taskPending = pauseMutation.isPending || resumeMutation.isPending || performBackupMutation.isPending;\r\n\r\n const changeStatus = () => {\r\n if (activeBackups.length > 0) {\r\n return toast.error(`Can't pause a Plan while a Backup is in progress.`);\r\n }\r\n if (plan.inProgress || taskPending) {\r\n return;\r\n }\r\n // isActive, set it to false, else true\r\n // When the action is being performed, the item should grey out and stay inaccessible.\r\n if (plan.isActive) {\r\n toast.promise(pauseMutation.mutateAsync(plan.id), {\r\n pending: 'Pausing backup Plan...',\r\n success: 'Backup Plan Paused',\r\n error: {\r\n render({ data }: any) {\r\n return `Failed to Pause Backup Plan. ${data?.message || 'Unknown Error.'}`;\r\n },\r\n },\r\n });\r\n } else {\r\n toast.promise(resumeMutation.mutateAsync(plan.id), {\r\n pending: 'Resuming backup Plan...',\r\n success: 'Backup Plan Resumed',\r\n error: {\r\n render({ data }: any) {\r\n return `Failed to Resume Backup Plan. ${data?.message || 'Unknown Error.'}`;\r\n },\r\n },\r\n });\r\n }\r\n };\r\n\r\n const backupNow = () => {\r\n if (actionInProgress) {\r\n return toast.error('A Backup/Restore Process is in Progress.');\r\n }\r\n if (taskPending) {\r\n return;\r\n }\r\n\r\n const toastId = toast.loading(`Starting ${isSync ? 'Sync' : 'Backup'}...`);\r\n\r\n performBackupMutation.mutate(plan.id, {\r\n onSuccess: () => {\r\n toast.update(toastId, {\r\n render: `${isSync ? 'Sync' : 'Backup'} initiated successfully! 🚀`,\r\n type: 'success',\r\n isLoading: false,\r\n autoClose: 3000,\r\n });\r\n navigate(`/plan/${plan.id}?pendingbackup=1`);\r\n },\r\n onError: (error: any) => {\r\n toast.update(toastId, {\r\n render: `${isSync ? 'Sync' : 'Backup'} failed to start. ${error?.message || 'Unknown Error.'}`,\r\n type: 'error',\r\n isLoading: false,\r\n autoClose: false,\r\n });\r\n },\r\n });\r\n };\r\n\r\n return {\r\n // State\r\n showDeleteModal,\r\n setShowDeleteModal,\r\n showEditModal,\r\n setShowEditModal,\r\n showPruneModal,\r\n setShowPruneModal,\r\n showLogsModal,\r\n setShowLogsModal,\r\n showUnlockModal,\r\n setShowUnlockModal,\r\n\r\n // Data\r\n plan,\r\n isLoading,\r\n refetchPlan,\r\n sortedHistory,\r\n activeBackups,\r\n activeRestores,\r\n lastBackupItem,\r\n actionInProgress,\r\n taskPending,\r\n planError,\r\n\r\n // Actions\r\n changeStatus,\r\n backupNow,\r\n };\r\n};\r\n"],"names":["usePlanSingleActions","showDeleteModal","setShowDeleteModal","useState","showEditModal","setShowEditModal","showUnlockModal","setShowUnlockModal","showPruneModal","setShowPruneModal","showLogsModal","setShowLogsModal","id","useParams","navigate","useNavigate","performBackupMutation","usePerformBackup","pauseMutation","usePausePlan","resumeMutation","useResumePlan","data","isLoading","refetchPlan","planError","useGetPlan","plan","isSync","sortedHistory","a","b","activeBackups","s","activeRestores","lastBackupItem","actionInProgress","taskPending","toast","toastId","error"],"mappings":"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"}
1
+ {"version":3,"file":"usePlanSingleActions.js","sources":["../../src/hooks/usePlanSingleActions.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport { useNavigate, useParams } from 'react-router';\r\nimport { toast } from 'react-toastify';\r\nimport { useGetPlan, usePausePlan, usePerformBackup, useResumePlan } from '../services/plans';\r\nimport { Plan } from '../@types/plans';\r\nimport { Backup } from '../@types/backups';\r\nimport { RestoreSlim } from '../@types/restores';\r\n\r\nexport const usePlanSingleActions = (): {\r\n showDeleteModal: boolean;\r\n setShowDeleteModal: (show: boolean) => void;\r\n showEditModal: boolean;\r\n setShowEditModal: (show: boolean) => void;\r\n showPruneModal: boolean;\r\n setShowPruneModal: (show: boolean) => void;\r\n showLogsModal: boolean;\r\n setShowLogsModal: (show: boolean) => void;\r\n showUnlockModal: boolean;\r\n setShowUnlockModal: (show: boolean) => void;\r\n plan: Plan;\r\n isLoading: boolean;\r\n refetchPlan: () => void;\r\n sortedHistory: Backup[];\r\n activeBackups: Backup[];\r\n activeRestores: RestoreSlim[];\r\n lastBackupItem: Backup;\r\n actionInProgress: boolean;\r\n taskPending: boolean;\r\n planError: any;\r\n changeStatus: () => void;\r\n backupNow: () => void;\r\n} => {\r\n const [showDeleteModal, setShowDeleteModal] = useState(false);\r\n const [showEditModal, setShowEditModal] = useState(false);\r\n const [showUnlockModal, setShowUnlockModal] = useState(false);\r\n const [showPruneModal, setShowPruneModal] = useState(false);\r\n const [showLogsModal, setShowLogsModal] = useState(false);\r\n\r\n const { id } = useParams();\r\n const navigate = useNavigate();\r\n\r\n const performBackupMutation = usePerformBackup();\r\n const pauseMutation = usePausePlan();\r\n const resumeMutation = useResumePlan();\r\n\r\n const { data, isLoading, refetch: refetchPlan, error: planError } = useGetPlan(id as string);\r\n const plan: Plan = data?.result || {};\r\n\r\n const isSync = plan.method === 'sync';\r\n\r\n const sortedHistory = [...(plan.backups || [])].sort((a, b) => b.started - a.started);\r\n const activeBackups = sortedHistory.filter((s) => s.inProgress);\r\n const activeRestores = (plan.restores || []).filter((s) => s.status === 'started');\r\n const lastBackupItem = sortedHistory[0];\r\n const actionInProgress = activeBackups.length > 0 || activeRestores.length > 0;\r\n const taskPending = pauseMutation.isPending || resumeMutation.isPending || performBackupMutation.isPending;\r\n\r\n const changeStatus = () => {\r\n if (activeBackups.length > 0) {\r\n return toast.error(`Can't pause a Plan while a Backup is in progress.`);\r\n }\r\n if (plan.inProgress || taskPending) {\r\n return;\r\n }\r\n // isActive, set it to false, else true\r\n // When the action is being performed, the item should grey out and stay inaccessible.\r\n if (plan.isActive) {\r\n toast.promise(pauseMutation.mutateAsync(plan.id), {\r\n pending: 'Pausing backup Plan...',\r\n success: 'Backup Plan Paused',\r\n error: {\r\n render({ data }: any) {\r\n return `Failed to Pause Backup Plan. ${data?.message || 'Unknown Error.'}`;\r\n },\r\n },\r\n });\r\n } else {\r\n toast.promise(resumeMutation.mutateAsync(plan.id), {\r\n pending: 'Resuming backup Plan...',\r\n success: 'Backup Plan Resumed',\r\n error: {\r\n render({ data }: any) {\r\n return `Failed to Resume Backup Plan. ${data?.message || 'Unknown Error.'}`;\r\n },\r\n },\r\n });\r\n }\r\n };\r\n\r\n const backupNow = () => {\r\n if (actionInProgress) {\r\n return toast.error('A Backup/Restore Process is in Progress.');\r\n }\r\n if (taskPending) {\r\n return;\r\n }\r\n\r\n const toastId = toast.loading(`Starting ${isSync ? 'Sync' : 'Backup'}...`);\r\n\r\n performBackupMutation.mutate(plan.id, {\r\n onSuccess: () => {\r\n toast.update(toastId, {\r\n render: `${isSync ? 'Sync' : 'Backup'} initiated successfully! 🚀`,\r\n type: 'success',\r\n isLoading: false,\r\n autoClose: 3000,\r\n });\r\n navigate(`/plan/${plan.id}?pendingbackup=1`);\r\n },\r\n onError: (error: any) => {\r\n toast.update(toastId, {\r\n render: `${isSync ? 'Sync' : 'Backup'} failed to start. ${error?.message || 'Unknown Error.'}`,\r\n type: 'error',\r\n isLoading: false,\r\n autoClose: false,\r\n closeButton: true,\r\n });\r\n },\r\n });\r\n };\r\n\r\n return {\r\n // State\r\n showDeleteModal,\r\n setShowDeleteModal,\r\n showEditModal,\r\n setShowEditModal,\r\n showPruneModal,\r\n setShowPruneModal,\r\n showLogsModal,\r\n setShowLogsModal,\r\n showUnlockModal,\r\n setShowUnlockModal,\r\n\r\n // Data\r\n plan,\r\n isLoading,\r\n refetchPlan,\r\n sortedHistory,\r\n activeBackups,\r\n activeRestores,\r\n lastBackupItem,\r\n actionInProgress,\r\n taskPending,\r\n planError,\r\n\r\n // Actions\r\n changeStatus,\r\n backupNow,\r\n };\r\n};\r\n"],"names":["usePlanSingleActions","showDeleteModal","setShowDeleteModal","useState","showEditModal","setShowEditModal","showUnlockModal","setShowUnlockModal","showPruneModal","setShowPruneModal","showLogsModal","setShowLogsModal","id","useParams","navigate","useNavigate","performBackupMutation","usePerformBackup","pauseMutation","usePausePlan","resumeMutation","useResumePlan","data","isLoading","refetchPlan","planError","useGetPlan","plan","isSync","sortedHistory","a","b","activeBackups","s","activeRestores","lastBackupItem","actionInProgress","taskPending","toast","toastId","error"],"mappings":";;;;AAQO,MAAMA,IAAuB,MAuB/B;AACF,QAAM,CAACC,GAAiBC,CAAkB,IAAIC,EAAS,EAAK,GACtD,CAACC,GAAeC,CAAgB,IAAIF,EAAS,EAAK,GAClD,CAACG,GAAiBC,CAAkB,IAAIJ,EAAS,EAAK,GACtD,CAACK,GAAgBC,CAAiB,IAAIN,EAAS,EAAK,GACpD,CAACO,GAAeC,CAAgB,IAAIR,EAAS,EAAK,GAElD,EAAE,IAAAS,EAAA,IAAOC,EAAA,GACTC,IAAWC,EAAA,GAEXC,IAAwBC,EAAA,GACxBC,IAAgBC,EAAA,GAChBC,IAAiBC,EAAA,GAEjB,EAAE,MAAAC,GAAM,WAAAC,GAAW,SAASC,GAAa,OAAOC,EAAA,IAAcC,EAAWd,CAAY,GACrFe,KAAaL,KAAA,gBAAAA,EAAM,WAAU,CAAA,GAE7BM,IAASD,EAAK,WAAW,QAEzBE,IAAgB,CAAC,GAAIF,EAAK,WAAW,CAAA,CAAG,EAAE,KAAK,CAACG,GAAGC,MAAMA,EAAE,UAAUD,EAAE,OAAO,GAC9EE,IAAgBH,EAAc,OAAO,CAACI,MAAMA,EAAE,UAAU,GACxDC,KAAkBP,EAAK,YAAY,CAAA,GAAI,OAAO,CAACM,MAAMA,EAAE,WAAW,SAAS,GAC3EE,IAAiBN,EAAc,CAAC,GAChCO,IAAmBJ,EAAc,SAAS,KAAKE,EAAe,SAAS,GACvEG,IAAcnB,EAAc,aAAaE,EAAe,aAAaJ,EAAsB;AAkEjG,SAAO;AAAA;AAAA,IAEJ,iBAAAf;AAAA,IACA,oBAAAC;AAAA,IACA,eAAAE;AAAA,IACA,kBAAAC;AAAA,IACA,gBAAAG;AAAA,IACA,mBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,iBAAAL;AAAA,IACA,oBAAAC;AAAA;AAAA,IAGA,MAAAoB;AAAA,IACA,WAAAJ;AAAA,IACA,aAAAC;AAAA,IACA,eAAAK;AAAA,IACA,eAAAG;AAAA,IACA,gBAAAE;AAAA,IACA,gBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,WAAAZ;AAAA;AAAA,IAGA,cA1FkB,MAAM;AACxB,UAAIO,EAAc,SAAS;AACxB,eAAOM,EAAM,MAAM,mDAAmD;AAEzE,MAAIX,EAAK,cAAcU,MAKnBV,EAAK,WACNW,EAAM,QAAQpB,EAAc,YAAYS,EAAK,EAAE,GAAG;AAAA,QAC/C,SAAS;AAAA,QACT,SAAS;AAAA,QACT,OAAO;AAAA,UACJ,OAAO,EAAE,MAAAL,KAAa;AACnB,mBAAO,iCAAgCA,KAAAA,gBAAAA,EAAM,YAAW,gBAAgB;AAAA,UAC3E;AAAA,QAAA;AAAA,MACH,CACF,IAEDgB,EAAM,QAAQlB,EAAe,YAAYO,EAAK,EAAE,GAAG;AAAA,QAChD,SAAS;AAAA,QACT,SAAS;AAAA,QACT,OAAO;AAAA,UACJ,OAAO,EAAE,MAAAL,KAAa;AACnB,mBAAO,kCAAiCA,KAAAA,gBAAAA,EAAM,YAAW,gBAAgB;AAAA,UAC5E;AAAA,QAAA;AAAA,MACH,CACF;AAAA,IAEP;AAAA,IA6DG,WA3De,MAAM;AACrB,UAAIc;AACD,eAAOE,EAAM,MAAM,0CAA0C;AAEhE,UAAID;AACD;AAGH,YAAME,IAAUD,EAAM,QAAQ,YAAYV,IAAS,SAAS,QAAQ,KAAK;AAEzE,MAAAZ,EAAsB,OAAOW,EAAK,IAAI;AAAA,QACnC,WAAW,MAAM;AACd,UAAAW,EAAM,OAAOC,GAAS;AAAA,YACnB,QAAQ,GAAGX,IAAS,SAAS,QAAQ;AAAA,YACrC,MAAM;AAAA,YACN,WAAW;AAAA,YACX,WAAW;AAAA,UAAA,CACb,GACDd,EAAS,SAASa,EAAK,EAAE,kBAAkB;AAAA,QAC9C;AAAA,QACA,SAAS,CAACa,MAAe;AACtB,UAAAF,EAAM,OAAOC,GAAS;AAAA,YACnB,QAAQ,GAAGX,IAAS,SAAS,QAAQ,sBAAqBY,KAAA,gBAAAA,EAAO,YAAW,gBAAgB;AAAA,YAC5F,MAAM;AAAA,YACN,WAAW;AAAA,YACX,WAAW;AAAA,YACX,aAAa;AAAA,UAAA,CACf;AAAA,QACJ;AAAA,MAAA,CACF;AAAA,IACJ;AAAA,EA6BG;AAEN;"}
Binary file
Binary file
Binary file
Binary file
Binary file