@plutonhq/core-frontend 0.1.15 → 0.1.18
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.
- package/dist-lib/components/App/Footer/Footer.d.ts +2 -1
- package/dist-lib/components/App/Footer/Footer.d.ts.map +1 -1
- package/dist-lib/components/App/Footer/Footer.js +29 -18
- package/dist-lib/components/App/Footer/Footer.js.map +1 -1
- package/dist-lib/components/Storage/AddStorage/AddStorage.d.ts.map +1 -1
- package/dist-lib/components/Storage/AddStorage/AddStorage.js +17 -17
- package/dist-lib/components/Storage/AddStorage/AddStorage.js.map +1 -1
- package/dist-lib/components/Storage/StorageAuthSettings/StorageAuthSettings.d.ts.map +1 -1
- package/dist-lib/components/Storage/StorageAuthSettings/StorageAuthSettings.js +37 -33
- package/dist-lib/components/Storage/StorageAuthSettings/StorageAuthSettings.js.map +1 -1
- package/dist-lib/node_modules/.pnpm/@tanstack_query-core@5.96.0/node_modules/@tanstack/query-core/build/modern/notifyManager.js +68 -0
- package/dist-lib/node_modules/.pnpm/@tanstack_query-core@5.96.0/node_modules/@tanstack/query-core/build/modern/notifyManager.js.map +1 -0
- package/dist-lib/node_modules/.pnpm/@tanstack_query-core@5.96.0/node_modules/@tanstack/query-core/build/modern/timeoutManager.js +7 -0
- package/dist-lib/node_modules/.pnpm/@tanstack_query-core@5.96.0/node_modules/@tanstack/query-core/build/modern/timeoutManager.js.map +1 -0
- package/dist-lib/node_modules/.pnpm/@tanstack_query-core@5.96.0/node_modules/@tanstack/query-core/build/modern/utils.js +55 -0
- package/dist-lib/node_modules/.pnpm/@tanstack_query-core@5.96.0/node_modules/@tanstack/query-core/build/modern/utils.js.map +1 -0
- package/dist-lib/node_modules/.pnpm/@tanstack_query-persist-client-core@5.96.0/node_modules/@tanstack/query-persist-client-core/build/modern/createPersister.js +190 -0
- package/dist-lib/node_modules/.pnpm/@tanstack_query-persist-client-core@5.96.0/node_modules/@tanstack/query-persist-client-core/build/modern/createPersister.js.map +1 -0
- package/dist-lib/router.d.ts.map +1 -1
- package/dist-lib/router.js +42 -39
- package/dist-lib/router.js.map +1 -1
- package/dist-lib/services/settings.d.ts +2 -0
- package/dist-lib/services/settings.d.ts.map +1 -1
- package/dist-lib/services/settings.js +100 -69
- package/dist-lib/services/settings.js.map +1 -1
- package/dist-lib/services/users.d.ts +1 -1
- package/dist-lib/services/users.d.ts.map +1 -1
- package/dist-lib/services/users.js.map +1 -1
- package/dist-lib/services.js +61 -59
- package/dist-lib/utils/helpers.d.ts +1 -0
- package/dist-lib/utils/helpers.d.ts.map +1 -1
- package/dist-lib/utils/helpers.js +74 -70
- package/dist-lib/utils/helpers.js.map +1 -1
- package/dist-lib/utils/index.d.ts +0 -1
- package/dist-lib/utils/index.d.ts.map +1 -1
- package/dist-lib/utils.js +30 -31
- package/dist-lib/utils.js.map +1 -1
- package/package.json +5 -4
- package/src/components/App/Footer/Footer.tsx +17 -2
- package/src/components/Storage/AddStorage/AddStorage.tsx +1 -0
- package/src/components/Storage/StorageAuthSettings/StorageAuthSettings.tsx +3 -0
- package/src/router.tsx +6 -1
- package/src/services/settings.ts +36 -0
- package/src/services/users.ts +1 -1
- package/src/utils/helpers.ts +26 -0
- package/src/utils/index.ts +0 -1
- package/dist-lib/utils/storageProviders.d.ts +0 -416
- package/dist-lib/utils/storageProviders.d.ts.map +0 -1
- package/dist-lib/utils/storageProviders.js +0 -412
- package/dist-lib/utils/storageProviders.js.map +0 -1
- package/src/utils/storageProviders.ts +0 -409
- /package/dist-lib/providers/{1fichier.png → fichier.png} +0 -0
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
interface FooterProps {
|
|
2
2
|
version: string;
|
|
3
|
+
latestVersion?: string;
|
|
3
4
|
hideUpgradeLink?: boolean;
|
|
4
5
|
changeLogUrl?: string;
|
|
5
6
|
}
|
|
6
|
-
declare const Footer: ({ version, hideUpgradeLink, changeLogUrl }: FooterProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare const Footer: ({ version, latestVersion, hideUpgradeLink, changeLogUrl }: FooterProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
8
|
export default Footer;
|
|
8
9
|
//# sourceMappingURL=Footer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../../src/components/App/Footer/Footer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../../src/components/App/Footer/Footer.tsx"],"names":[],"mappings":"AAIA,UAAU,WAAW;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,QAAA,MAAM,MAAM,GAAI,2DAA6E,WAAW,4CAmCvG,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -1,23 +1,34 @@
|
|
|
1
|
-
import { jsx as e, Fragment as
|
|
1
|
+
import { jsx as e, Fragment as n, jsxs as t } from "react/jsx-runtime";
|
|
2
|
+
import { getUpdateDocLink as c } from "../../../utils/helpers.js";
|
|
3
|
+
import p from "../../common/Icon/Icon.js";
|
|
2
4
|
import o from "./Footer.module.scss.js";
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
const f = ({ version: l = "1.0.0", latestVersion: a, hideUpgradeLink: r = !1, changeLogUrl: i }) => {
|
|
6
|
+
const s = c(r);
|
|
7
|
+
return /* @__PURE__ */ e(n, { children: /* @__PURE__ */ t("div", { className: o.footer, children: [
|
|
8
|
+
/* @__PURE__ */ t("span", { children: [
|
|
9
|
+
"Pluton v",
|
|
10
|
+
l,
|
|
11
|
+
" ",
|
|
12
|
+
a && /* @__PURE__ */ t("span", { className: o.newVersion, title: `Latest version: ${a}`, children: [
|
|
13
|
+
/* @__PURE__ */ e(p, { type: "arrow-up", size: 12 }),
|
|
14
|
+
" ",
|
|
15
|
+
/* @__PURE__ */ e("a", { href: s, target: "_blank", children: "(Update Available)" })
|
|
16
|
+
] })
|
|
17
|
+
] }),
|
|
12
18
|
" ",
|
|
13
|
-
/* @__PURE__ */ e("i", { className: "pipe", children: "|" })
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
/* @__PURE__ */ e("i", { className: "pipe", children: "|" }),
|
|
20
|
+
!r && /* @__PURE__ */ t(n, { children: [
|
|
21
|
+
/* @__PURE__ */ e("a", { href: "https://usepluton.com/pluton-pro/", target: "_blank", children: "Upgrade" }),
|
|
22
|
+
" ",
|
|
23
|
+
/* @__PURE__ */ e("i", { className: "pipe", children: "|" })
|
|
24
|
+
] }),
|
|
25
|
+
/* @__PURE__ */ e("a", { href: "https://docs.usepluton.com", target: "_blank", children: "Documentation" }),
|
|
26
|
+
" ",
|
|
27
|
+
/* @__PURE__ */ e("i", { className: "pipe", children: "|" }),
|
|
28
|
+
/* @__PURE__ */ e("a", { href: i || "https://github.com/plutonhq/pluton/blob/main/CHANGELOG.md", target: "_blank", children: "Changelog" })
|
|
29
|
+
] }) });
|
|
30
|
+
};
|
|
20
31
|
export {
|
|
21
|
-
|
|
32
|
+
f as default
|
|
22
33
|
};
|
|
23
34
|
//# sourceMappingURL=Footer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Footer.js","sources":["../../../../src/components/App/Footer/Footer.tsx"],"sourcesContent":["import classes from './Footer.module.scss';\r\n\r\ninterface FooterProps {\r\n version: string;\r\n hideUpgradeLink?: boolean;\r\n changeLogUrl?: string;\r\n}\r\n\r\nconst Footer = ({ version = '1.0.0', hideUpgradeLink = false, changeLogUrl }: FooterProps) => {\r\n return (\r\n <>\r\n <div className={classes.footer}>\r\n <span
|
|
1
|
+
{"version":3,"file":"Footer.js","sources":["../../../../src/components/App/Footer/Footer.tsx"],"sourcesContent":["import { getUpdateDocLink } from '../../../utils';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport classes from './Footer.module.scss';\r\n\r\ninterface FooterProps {\r\n version: string;\r\n latestVersion?: string;\r\n hideUpgradeLink?: boolean;\r\n changeLogUrl?: string;\r\n}\r\n\r\nconst Footer = ({ version = '1.0.0', latestVersion, hideUpgradeLink = false, changeLogUrl }: FooterProps) => {\r\n const updateDocLink = getUpdateDocLink(hideUpgradeLink);\r\n return (\r\n <>\r\n <div className={classes.footer}>\r\n <span>\r\n Pluton v{version}{' '}\r\n {latestVersion && (\r\n <span className={classes.newVersion} title={`Latest version: ${latestVersion}`}>\r\n <Icon type=\"arrow-up\" size={12} />{' '}\r\n <a href={updateDocLink} target=\"_blank\">\r\n (Update Available)\r\n </a>\r\n </span>\r\n )}\r\n </span>{' '}\r\n <i className=\"pipe\">|</i>\r\n {!hideUpgradeLink && (\r\n <>\r\n <a href=\"https://usepluton.com/pluton-pro/\" target=\"_blank\">\r\n Upgrade\r\n </a>{' '}\r\n <i className=\"pipe\">|</i>\r\n </>\r\n )}\r\n <a href=\"https://docs.usepluton.com\" target=\"_blank\">\r\n Documentation\r\n </a>{' '}\r\n <i className=\"pipe\">|</i>\r\n <a href={changeLogUrl || 'https://github.com/plutonhq/pluton/blob/main/CHANGELOG.md'} target=\"_blank\">\r\n Changelog\r\n </a>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default Footer;\r\n"],"names":["Footer","version","latestVersion","hideUpgradeLink","changeLogUrl","updateDocLink","getUpdateDocLink","jsx","Fragment","jsxs","classes","Icon"],"mappings":";;;;AAWA,MAAMA,IAAS,CAAC,EAAE,SAAAC,IAAU,SAAS,eAAAC,GAAe,iBAAAC,IAAkB,IAAO,cAAAC,QAAgC;AAC1G,QAAMC,IAAgBC,EAAiBH,CAAe;AACtD,SACG,gBAAAI,EAAAC,GAAA,EACG,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAQ,QACrB,UAAA;AAAA,IAAA,gBAAAD,EAAC,QAAA,EAAK,UAAA;AAAA,MAAA;AAAA,MACMR;AAAA,MAAS;AAAA,MACjBC,uBACG,QAAA,EAAK,WAAWQ,EAAQ,YAAY,OAAO,mBAAmBR,CAAa,IACzE,UAAA;AAAA,QAAA,gBAAAK,EAACI,GAAA,EAAK,MAAK,YAAW,MAAM,IAAI;AAAA,QAAG;AAAA,0BAClC,KAAA,EAAE,MAAMN,GAAe,QAAO,UAAS,UAAA,qBAAA,CAExC;AAAA,MAAA,EAAA,CACH;AAAA,IAAA,GAEN;AAAA,IAAQ;AAAA,IACR,gBAAAE,EAAC,KAAA,EAAE,WAAU,QAAO,UAAA,KAAC;AAAA,IACpB,CAACJ,KACC,gBAAAM,EAAAD,GAAA,EACG,UAAA;AAAA,MAAA,gBAAAD,EAAC,KAAA,EAAE,MAAK,qCAAoC,QAAO,UAAS,UAAA,WAE5D;AAAA,MAAK;AAAA,MACL,gBAAAA,EAAC,KAAA,EAAE,WAAU,QAAO,UAAA,IAAA,CAAC;AAAA,IAAA,GACxB;AAAA,sBAEF,KAAA,EAAE,MAAK,8BAA6B,QAAO,UAAS,UAAA,iBAErD;AAAA,IAAK;AAAA,IACL,gBAAAA,EAAC,KAAA,EAAE,WAAU,QAAO,UAAA,KAAC;AAAA,sBACpB,KAAA,EAAE,MAAMH,KAAgB,6DAA6D,QAAO,UAAS,UAAA,YAAA,CAEtG;AAAA,EAAA,EAAA,CACH,EAAA,CACH;AAEN;"}
|
|
@@ -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,
|
|
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,4CAsQ7C,CAAC;AACF,eAAe,UAAU,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as t, jsxs as d, Fragment as B } from "react/jsx-runtime";
|
|
2
|
-
import { useState as p, useMemo as
|
|
3
|
-
import { toast as
|
|
2
|
+
import { useState as p, useMemo as j, useEffect as R } from "react";
|
|
3
|
+
import { toast as P } from "react-toastify";
|
|
4
4
|
import a from "./AddStorage.module.scss.js";
|
|
5
5
|
import m from "../../common/Icon/Icon.js";
|
|
6
6
|
import { useAddStorage as I, useGetAvailableStorages as L } from "../../../services/storage.js";
|
|
@@ -11,14 +11,14 @@ import { shouldDisplayStorageField as H } from "../../../utils/helpers.js";
|
|
|
11
11
|
import J from "../StorageAuthSettings/StorageAuthSettings.js";
|
|
12
12
|
import K from "../../common/form/StorageProviderSelect/StorageProviderSelect.js";
|
|
13
13
|
const le = ({ close: A }) => {
|
|
14
|
-
const [g, f] = p({}), [y,
|
|
14
|
+
const [g, f] = p({}), [y, w] = p(""), [r, $] = p(""), [S, E] = p(""), [T, k] = p(!1), [h, N] = p({}), [F, C] = p({}), [q, x] = p([]), O = I(), { data: b } = L(), i = (b == null ? void 0 : b.result) || {};
|
|
15
15
|
console.log("storageProviders :", i);
|
|
16
|
-
const z =
|
|
16
|
+
const z = j(() => Object.keys(i).map((e) => ({
|
|
17
17
|
label: i[e].name,
|
|
18
18
|
value: e,
|
|
19
19
|
doc: i[e].doc,
|
|
20
20
|
image: /* @__PURE__ */ t("img", { src: `providers/${e}.png` })
|
|
21
|
-
})).sort((e, s) => e.label.localeCompare(s.label)), [i]), c =
|
|
21
|
+
})).sort((e, s) => e.label.localeCompare(s.label)), [i]), c = j(() => {
|
|
22
22
|
var l, v;
|
|
23
23
|
const e = ((l = i[r]) == null ? void 0 : l.settings) || [], s = { required: [], optional: [], authFields: { fields: [], types: [] } };
|
|
24
24
|
e.forEach((n) => {
|
|
@@ -27,14 +27,14 @@ const le = ({ close: A }) => {
|
|
|
27
27
|
const u = (v = i[r]) == null ? void 0 : v.authTypes, o = e.filter((n) => n.authFieldType);
|
|
28
28
|
return s.authFields = { fields: o, types: u }, s;
|
|
29
29
|
}, [i, r]);
|
|
30
|
-
|
|
30
|
+
R(() => {
|
|
31
31
|
if (r) {
|
|
32
32
|
const e = {};
|
|
33
33
|
c.required.forEach((s) => {
|
|
34
34
|
e[s.value] = "";
|
|
35
35
|
}), N(e);
|
|
36
36
|
}
|
|
37
|
-
}, [r, c]),
|
|
37
|
+
}, [r, c]), R(() => {
|
|
38
38
|
y && f((e) => {
|
|
39
39
|
const s = { ...e };
|
|
40
40
|
return delete s.title, s;
|
|
@@ -65,14 +65,14 @@ const le = ({ close: A }) => {
|
|
|
65
65
|
settings: F,
|
|
66
66
|
credentials: h,
|
|
67
67
|
authType: S,
|
|
68
|
-
tags:
|
|
68
|
+
tags: q
|
|
69
69
|
};
|
|
70
|
-
console.log("payload :", o),
|
|
70
|
+
console.log("payload :", o), O.mutate(o, {
|
|
71
71
|
onError: (l) => {
|
|
72
|
-
console.log("error :", l == null ? void 0 : l.message),
|
|
72
|
+
console.log("error :", l == null ? void 0 : l.message), P.error(l.message || "Error Adding Storage!");
|
|
73
73
|
},
|
|
74
74
|
onSuccess: (l) => {
|
|
75
|
-
console.log("Success :", l),
|
|
75
|
+
console.log("Success :", l), P.success("Successfully Added Storage!", { autoClose: 5e3 }), A();
|
|
76
76
|
}
|
|
77
77
|
});
|
|
78
78
|
} else
|
|
@@ -92,7 +92,7 @@ const le = ({ close: A }) => {
|
|
|
92
92
|
] }) })
|
|
93
93
|
] }),
|
|
94
94
|
children: /* @__PURE__ */ d("div", { className: a.addStorageContent, children: [
|
|
95
|
-
|
|
95
|
+
O.isPending && /* @__PURE__ */ t("div", { className: a.loader, children: /* @__PURE__ */ t(m, { size: 36, type: "loading" }) }),
|
|
96
96
|
/* @__PURE__ */ d("div", { className: a.field, children: [
|
|
97
97
|
/* @__PURE__ */ d("label", { className: a.label, children: [
|
|
98
98
|
"Storage Name*",
|
|
@@ -107,7 +107,7 @@ const le = ({ close: A }) => {
|
|
|
107
107
|
placeholder: "Give your Storage a Name",
|
|
108
108
|
value: y || "",
|
|
109
109
|
required: !0,
|
|
110
|
-
onChange: (e) =>
|
|
110
|
+
onChange: (e) => w(e.target.value)
|
|
111
111
|
}
|
|
112
112
|
)
|
|
113
113
|
] }),
|
|
@@ -122,7 +122,7 @@ const le = ({ close: A }) => {
|
|
|
122
122
|
full: !0,
|
|
123
123
|
onUpdate: (e) => {
|
|
124
124
|
var o;
|
|
125
|
-
N({}),
|
|
125
|
+
E(""), N({}), C({}), $(e);
|
|
126
126
|
const u = (((o = i[e]) == null ? void 0 : o.fields) || []).reduce(
|
|
127
127
|
(l, v) => ({
|
|
128
128
|
...l,
|
|
@@ -146,7 +146,7 @@ const le = ({ close: A }) => {
|
|
|
146
146
|
onUpdate: (e) => N(e),
|
|
147
147
|
errors: g,
|
|
148
148
|
currentAuthType: S,
|
|
149
|
-
onAuthTypeChange:
|
|
149
|
+
onAuthTypeChange: E
|
|
150
150
|
}
|
|
151
151
|
),
|
|
152
152
|
Object.keys(c.optional).length > 0 && /* @__PURE__ */ d(
|
|
@@ -167,12 +167,12 @@ const le = ({ close: A }) => {
|
|
|
167
167
|
{
|
|
168
168
|
fields: c.optional,
|
|
169
169
|
settings: F,
|
|
170
|
-
onUpdate: (e) =>
|
|
170
|
+
onUpdate: (e) => C(e)
|
|
171
171
|
}
|
|
172
172
|
),
|
|
173
173
|
/* @__PURE__ */ d("div", { className: a.field, children: [
|
|
174
174
|
/* @__PURE__ */ t("label", { className: a.label, children: "Tags" }),
|
|
175
|
-
/* @__PURE__ */ t(G, { fieldValue:
|
|
175
|
+
/* @__PURE__ */ t(G, { fieldValue: q, onUpdate: (e) => x(e) })
|
|
176
176
|
] })
|
|
177
177
|
] })
|
|
178
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 { 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
|
+
{"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 setCurrentAuthType('');\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":"StorageAuthSettings.d.ts","sourceRoot":"","sources":["../../../../src/components/Storage/StorageAuthSettings/StorageAuthSettings.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAM9D,UAAU,wBAAwB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACpD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,CAAC,WAAW,EAAE,wBAAwB,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IACtE,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C;AAED,QAAA,MAAM,mBAAmB,GAAI,oGAS1B,wBAAwB,
|
|
1
|
+
{"version":3,"file":"StorageAuthSettings.d.ts","sourceRoot":"","sources":["../../../../src/components/Storage/StorageAuthSettings/StorageAuthSettings.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAM9D,UAAU,wBAAwB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACpD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,CAAC,WAAW,EAAE,wBAAwB,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IACtE,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C;AAED,QAAA,MAAM,mBAAmB,GAAI,oGAS1B,wBAAwB,4CA8F1B,CAAC;AACF,eAAe,mBAAmB,CAAC"}
|
|
@@ -2,68 +2,68 @@ import { jsxs as o, jsx as e, Fragment as b } from "react/jsx-runtime";
|
|
|
2
2
|
import { useState as u, useEffect as v } from "react";
|
|
3
3
|
import A from "../../common/form/Tristate/Tristate.js";
|
|
4
4
|
import l from "../../common/Icon/Icon.js";
|
|
5
|
-
import
|
|
5
|
+
import t from "../AddStorage/AddStorage.module.scss.js";
|
|
6
6
|
import k from "../StorageSettings/StorageSettings.js";
|
|
7
|
-
const
|
|
8
|
-
storageType:
|
|
7
|
+
const P = ({
|
|
8
|
+
storageType: r,
|
|
9
9
|
fields: h,
|
|
10
10
|
settings: p,
|
|
11
|
-
authTypes:
|
|
12
|
-
currentAuthType:
|
|
11
|
+
authTypes: n,
|
|
12
|
+
currentAuthType: c,
|
|
13
13
|
errors: m,
|
|
14
|
-
onUpdate:
|
|
15
|
-
onAuthTypeChange:
|
|
14
|
+
onUpdate: f,
|
|
15
|
+
onAuthTypeChange: s
|
|
16
16
|
}) => {
|
|
17
|
-
const [
|
|
18
|
-
return console.log("availableAuthTypes :", h,
|
|
19
|
-
!
|
|
20
|
-
}, [
|
|
17
|
+
const [i, g] = u(!0), [d, w] = u(!1);
|
|
18
|
+
return console.log("availableAuthTypes :", h, n, c), v(() => {
|
|
19
|
+
!c && n.length > 0 && s(n[0]);
|
|
20
|
+
}, [n, c, s]), /* @__PURE__ */ o("div", { className: t.authSettings, children: [
|
|
21
21
|
/* @__PURE__ */ o(
|
|
22
22
|
"div",
|
|
23
23
|
{
|
|
24
|
-
className: `${
|
|
25
|
-
onClick: () => g(!
|
|
24
|
+
className: `${t.advancedButton} ${i ? t.advancedButtonActive : ""}`,
|
|
25
|
+
onClick: () => g(!i),
|
|
26
26
|
children: [
|
|
27
27
|
/* @__PURE__ */ e(l, { type: "authentication", size: 14 }),
|
|
28
|
-
/* @__PURE__ */ e("span", { children:
|
|
29
|
-
/* @__PURE__ */ e(l, { type:
|
|
28
|
+
/* @__PURE__ */ e("span", { children: r === "local" ? "Local Storage Setup" : "Account Authentication" }),
|
|
29
|
+
/* @__PURE__ */ e(l, { type: i ? "caret-up" : "caret-down" })
|
|
30
30
|
]
|
|
31
31
|
}
|
|
32
32
|
),
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
i && /* @__PURE__ */ o("div", { className: t.advancedOptions, children: [
|
|
34
|
+
i && n.length > 1 && /* @__PURE__ */ e("div", { className: t.field, children: /* @__PURE__ */ e(
|
|
35
35
|
A,
|
|
36
36
|
{
|
|
37
37
|
label: "Authentication Type",
|
|
38
38
|
inline: !0,
|
|
39
|
-
fieldValue:
|
|
39
|
+
fieldValue: c,
|
|
40
40
|
options: [
|
|
41
|
-
{ label: "User (oAuth)", value: "oauth", disabled:
|
|
42
|
-
{ label: "User/Pass", value: "password", disabled:
|
|
43
|
-
{ label: "App/Client", value: "client", disabled:
|
|
41
|
+
{ label: "User (oAuth)", value: "oauth", disabled: n.includes("oauth") === !1 },
|
|
42
|
+
{ label: "User/Pass", value: "password", disabled: n.includes("password") === !1 },
|
|
43
|
+
{ label: "App/Client", value: "client", disabled: n.includes("client") === !1 }
|
|
44
44
|
],
|
|
45
45
|
hint: `User (oAuth): Use the generated Link to login to your account and authorize the App.
|
|
46
46
|
Username/Password: Your own Username/Password will be used to backup.
|
|
47
47
|
App/Client: Provide App/Client keys that can be found in your cloud storage account dashboard`,
|
|
48
|
-
onUpdate: (
|
|
48
|
+
onUpdate: (a) => s(a)
|
|
49
49
|
}
|
|
50
50
|
) }),
|
|
51
51
|
/* @__PURE__ */ e(
|
|
52
52
|
k,
|
|
53
53
|
{
|
|
54
|
-
fields: h.filter((
|
|
54
|
+
fields: h.filter((a) => a.authFieldType === c),
|
|
55
55
|
settings: p,
|
|
56
|
-
onUpdate: (
|
|
56
|
+
onUpdate: (a) => f(a),
|
|
57
57
|
errors: m
|
|
58
58
|
}
|
|
59
59
|
),
|
|
60
|
-
|
|
61
|
-
/* @__PURE__ */ o("h4", { onClick: () =>
|
|
60
|
+
c === "oauth" && /* @__PURE__ */ o("div", { className: t.oauthDoc, children: [
|
|
61
|
+
/* @__PURE__ */ o("h4", { onClick: () => w(!d), children: [
|
|
62
62
|
/* @__PURE__ */ e(l, { type: "key", size: 14 }),
|
|
63
63
|
" Acquiring the OAuth Access Token",
|
|
64
|
-
/* @__PURE__ */ e("button", { children: /* @__PURE__ */ e(l, { type:
|
|
64
|
+
/* @__PURE__ */ e("button", { children: /* @__PURE__ */ e(l, { type: d ? "caret-up" : "caret-down" }) })
|
|
65
65
|
] }),
|
|
66
|
-
|
|
66
|
+
d && /* @__PURE__ */ o(b, { children: [
|
|
67
67
|
/* @__PURE__ */ o("p", { children: [
|
|
68
68
|
/* @__PURE__ */ e("strong", { children: "Step 1:" }),
|
|
69
69
|
" On a machine with a browser,",
|
|
@@ -71,22 +71,22 @@ const C = ({
|
|
|
71
71
|
/* @__PURE__ */ e("a", { href: "https://rclone.org/downloads/", target: "_blank", children: "install rclone" }),
|
|
72
72
|
" ",
|
|
73
73
|
"and execute this command in the CLI: ",
|
|
74
|
-
/* @__PURE__ */ o("code", { className:
|
|
74
|
+
/* @__PURE__ */ o("code", { className: t.codeBlock, children: [
|
|
75
75
|
"rclone authorize ",
|
|
76
|
-
|
|
76
|
+
r
|
|
77
77
|
] })
|
|
78
78
|
] }),
|
|
79
79
|
/* @__PURE__ */ o("p", { children: [
|
|
80
80
|
/* @__PURE__ */ e("strong", { children: "Step 2:" }),
|
|
81
81
|
" A browser window will open where you will need to authorize Rclone to connect to your",
|
|
82
82
|
" ",
|
|
83
|
-
|
|
83
|
+
r,
|
|
84
84
|
" account. Authorize the connection."
|
|
85
85
|
] }),
|
|
86
86
|
/* @__PURE__ */ o("p", { children: [
|
|
87
87
|
/* @__PURE__ */ e("strong", { children: "Step 3:" }),
|
|
88
88
|
" Once authorized, the cli where you ran the command, should display a message similar to this:",
|
|
89
|
-
/* @__PURE__ */ o("code", { className:
|
|
89
|
+
/* @__PURE__ */ o("code", { className: t.codeBlock, children: [
|
|
90
90
|
"Paste the following into your remote machine --->",
|
|
91
91
|
/* @__PURE__ */ e("strong", { children: '{"access_token":"....","token_type":"bearer...}' }),
|
|
92
92
|
"<---End paste"
|
|
@@ -104,6 +104,10 @@ const C = ({
|
|
|
104
104
|
" Paste the copied content in the ",
|
|
105
105
|
/* @__PURE__ */ e("strong", { children: "OAuth Access Token" }),
|
|
106
106
|
" field above."
|
|
107
|
+
] }),
|
|
108
|
+
/* @__PURE__ */ o("p", { children: [
|
|
109
|
+
/* @__PURE__ */ e("strong", { children: "Step 5:" }),
|
|
110
|
+
" If you no longer need Rclone, you can safely remove it from your system."
|
|
107
111
|
] })
|
|
108
112
|
] })
|
|
109
113
|
] })
|
|
@@ -111,6 +115,6 @@ const C = ({
|
|
|
111
115
|
] });
|
|
112
116
|
};
|
|
113
117
|
export {
|
|
114
|
-
|
|
118
|
+
P as default
|
|
115
119
|
};
|
|
116
120
|
//# sourceMappingURL=StorageAuthSettings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageAuthSettings.js","sources":["../../../../src/components/Storage/StorageAuthSettings/StorageAuthSettings.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\r\nimport { storageOptionField } from '../../../@types/storages';\r\nimport Tristate from '../../common/form/Tristate/Tristate';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport classes from '../AddStorage/AddStorage.module.scss';\r\nimport StorageSettings from '../StorageSettings/StorageSettings';\r\n\r\ninterface StorageAuthSettingsProps {\r\n storageType: string;\r\n fields: storageOptionField[];\r\n settings: Record<string, string | number | boolean>;\r\n authTypes: string[];\r\n errors: Record<string, string>;\r\n currentAuthType: string;\r\n onUpdate: (newSettings: StorageAuthSettingsProps['settings']) => void;\r\n onAuthTypeChange: (authType: string) => void;\r\n}\r\n\r\nconst StorageAuthSettings = ({\r\n storageType,\r\n fields,\r\n settings,\r\n authTypes,\r\n currentAuthType,\r\n errors,\r\n onUpdate,\r\n onAuthTypeChange,\r\n}: StorageAuthSettingsProps) => {\r\n const [showAdvanced, setShowAdvanced] = useState(true);\r\n const [showOAuthDoc, setShowOAuthDoc] = useState(false);\r\n\r\n console.log('availableAuthTypes :', fields, authTypes, currentAuthType);\r\n\r\n useEffect(() => {\r\n if (!currentAuthType && authTypes.length > 0) {\r\n onAuthTypeChange(authTypes[0]);\r\n }\r\n }, [authTypes, currentAuthType, onAuthTypeChange]);\r\n\r\n return (\r\n <div className={classes.authSettings}>\r\n <div\r\n className={`${classes.advancedButton} ${showAdvanced ? classes.advancedButtonActive : ''}`}\r\n onClick={() => setShowAdvanced(!showAdvanced)}\r\n >\r\n <Icon type={'authentication'} size={14} />\r\n <span>{storageType === 'local' ? 'Local Storage Setup' : 'Account Authentication'}</span>\r\n <Icon type={showAdvanced ? 'caret-up' : 'caret-down'} />\r\n </div>\r\n {showAdvanced && (\r\n <div className={classes.advancedOptions}>\r\n {showAdvanced && authTypes.length > 1 && (\r\n <div className={classes.field}>\r\n <Tristate\r\n label={'Authentication Type'}\r\n inline={true}\r\n fieldValue={currentAuthType}\r\n options={[\r\n { label: 'User (oAuth)', value: 'oauth', disabled: authTypes.includes('oauth') === false },\r\n { label: 'User/Pass', value: 'password', disabled: authTypes.includes('password') === false },\r\n { label: 'App/Client', value: 'client', disabled: authTypes.includes('client') === false },\r\n ]}\r\n hint={\r\n 'User (oAuth): Use the generated Link to login to your account and authorize the App.\\n Username/Password: Your own Username/Password will be used to backup. \\n App/Client: Provide App/Client keys that can be found in your cloud storage account dashboard'\r\n }\r\n onUpdate={(newVal: string) => onAuthTypeChange(newVal)}\r\n />\r\n </div>\r\n )}\r\n\r\n <StorageSettings\r\n fields={fields.filter((f) => f.authFieldType === currentAuthType)}\r\n settings={settings}\r\n onUpdate={(newSettings) => onUpdate(newSettings)}\r\n errors={errors}\r\n />\r\n {currentAuthType === 'oauth' && (\r\n <div className={classes.oauthDoc}>\r\n <h4 onClick={() => setShowOAuthDoc(!showOAuthDoc)}>\r\n <Icon type={'key'} size={14} /> Acquiring the OAuth Access Token\r\n <button>\r\n <Icon type={showOAuthDoc ? 'caret-up' : 'caret-down'} />\r\n </button>\r\n </h4>\r\n {showOAuthDoc && (\r\n <>\r\n <p>\r\n <strong>Step 1:</strong> On a machine with a browser,{' '}\r\n <a href=\"https://rclone.org/downloads/\" target=\"_blank\">\r\n install rclone\r\n </a>{' '}\r\n and execute this command in the CLI: <code className={classes.codeBlock}>rclone authorize {storageType}</code>\r\n </p>\r\n <p>\r\n <strong>Step 2:</strong> A browser window will open where you will need to authorize Rclone to connect to your{' '}\r\n {storageType} account. Authorize the connection.\r\n </p>\r\n <p>\r\n <strong>Step 3:</strong> Once authorized, the cli where you ran the command, should display a message similar to this:\r\n <code className={classes.codeBlock}>\r\n {`Paste the following into your remote machine --->`}\r\n <strong>{`{\"access_token\":\"....\",\"token_type\":\"bearer...}`}</strong>\r\n {`<---End paste`}\r\n </code>\r\n Copy everything between <code>{`--->`}</code> and <code>{`<---`}</code>. Eg:{' '}\r\n <code>{`{\"access_token\":\"....\",\"token_type\":\"bearer...}`}</code>\r\n </p>\r\n <p>\r\n <strong>Step 4:</strong> Paste the copied content in the <strong>OAuth Access Token</strong> field above.\r\n </p>\r\n </>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\nexport default StorageAuthSettings;\r\n"],"names":["StorageAuthSettings","storageType","fields","settings","authTypes","currentAuthType","errors","onUpdate","onAuthTypeChange","showAdvanced","setShowAdvanced","useState","showOAuthDoc","setShowOAuthDoc","useEffect","jsxs","classes","jsx","Icon","Tristate","newVal","StorageSettings","f","newSettings","Fragment"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"StorageAuthSettings.js","sources":["../../../../src/components/Storage/StorageAuthSettings/StorageAuthSettings.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\r\nimport { storageOptionField } from '../../../@types/storages';\r\nimport Tristate from '../../common/form/Tristate/Tristate';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport classes from '../AddStorage/AddStorage.module.scss';\r\nimport StorageSettings from '../StorageSettings/StorageSettings';\r\n\r\ninterface StorageAuthSettingsProps {\r\n storageType: string;\r\n fields: storageOptionField[];\r\n settings: Record<string, string | number | boolean>;\r\n authTypes: string[];\r\n errors: Record<string, string>;\r\n currentAuthType: string;\r\n onUpdate: (newSettings: StorageAuthSettingsProps['settings']) => void;\r\n onAuthTypeChange: (authType: string) => void;\r\n}\r\n\r\nconst StorageAuthSettings = ({\r\n storageType,\r\n fields,\r\n settings,\r\n authTypes,\r\n currentAuthType,\r\n errors,\r\n onUpdate,\r\n onAuthTypeChange,\r\n}: StorageAuthSettingsProps) => {\r\n const [showAdvanced, setShowAdvanced] = useState(true);\r\n const [showOAuthDoc, setShowOAuthDoc] = useState(false);\r\n\r\n console.log('availableAuthTypes :', fields, authTypes, currentAuthType);\r\n\r\n useEffect(() => {\r\n if (!currentAuthType && authTypes.length > 0) {\r\n onAuthTypeChange(authTypes[0]);\r\n }\r\n }, [authTypes, currentAuthType, onAuthTypeChange]);\r\n\r\n return (\r\n <div className={classes.authSettings}>\r\n <div\r\n className={`${classes.advancedButton} ${showAdvanced ? classes.advancedButtonActive : ''}`}\r\n onClick={() => setShowAdvanced(!showAdvanced)}\r\n >\r\n <Icon type={'authentication'} size={14} />\r\n <span>{storageType === 'local' ? 'Local Storage Setup' : 'Account Authentication'}</span>\r\n <Icon type={showAdvanced ? 'caret-up' : 'caret-down'} />\r\n </div>\r\n {showAdvanced && (\r\n <div className={classes.advancedOptions}>\r\n {showAdvanced && authTypes.length > 1 && (\r\n <div className={classes.field}>\r\n <Tristate\r\n label={'Authentication Type'}\r\n inline={true}\r\n fieldValue={currentAuthType}\r\n options={[\r\n { label: 'User (oAuth)', value: 'oauth', disabled: authTypes.includes('oauth') === false },\r\n { label: 'User/Pass', value: 'password', disabled: authTypes.includes('password') === false },\r\n { label: 'App/Client', value: 'client', disabled: authTypes.includes('client') === false },\r\n ]}\r\n hint={\r\n 'User (oAuth): Use the generated Link to login to your account and authorize the App.\\n Username/Password: Your own Username/Password will be used to backup. \\n App/Client: Provide App/Client keys that can be found in your cloud storage account dashboard'\r\n }\r\n onUpdate={(newVal: string) => onAuthTypeChange(newVal)}\r\n />\r\n </div>\r\n )}\r\n\r\n <StorageSettings\r\n fields={fields.filter((f) => f.authFieldType === currentAuthType)}\r\n settings={settings}\r\n onUpdate={(newSettings) => onUpdate(newSettings)}\r\n errors={errors}\r\n />\r\n {currentAuthType === 'oauth' && (\r\n <div className={classes.oauthDoc}>\r\n <h4 onClick={() => setShowOAuthDoc(!showOAuthDoc)}>\r\n <Icon type={'key'} size={14} /> Acquiring the OAuth Access Token\r\n <button>\r\n <Icon type={showOAuthDoc ? 'caret-up' : 'caret-down'} />\r\n </button>\r\n </h4>\r\n {showOAuthDoc && (\r\n <>\r\n <p>\r\n <strong>Step 1:</strong> On a machine with a browser,{' '}\r\n <a href=\"https://rclone.org/downloads/\" target=\"_blank\">\r\n install rclone\r\n </a>{' '}\r\n and execute this command in the CLI: <code className={classes.codeBlock}>rclone authorize {storageType}</code>\r\n </p>\r\n <p>\r\n <strong>Step 2:</strong> A browser window will open where you will need to authorize Rclone to connect to your{' '}\r\n {storageType} account. Authorize the connection.\r\n </p>\r\n <p>\r\n <strong>Step 3:</strong> Once authorized, the cli where you ran the command, should display a message similar to this:\r\n <code className={classes.codeBlock}>\r\n {`Paste the following into your remote machine --->`}\r\n <strong>{`{\"access_token\":\"....\",\"token_type\":\"bearer...}`}</strong>\r\n {`<---End paste`}\r\n </code>\r\n Copy everything between <code>{`--->`}</code> and <code>{`<---`}</code>. Eg:{' '}\r\n <code>{`{\"access_token\":\"....\",\"token_type\":\"bearer...}`}</code>\r\n </p>\r\n <p>\r\n <strong>Step 4:</strong> Paste the copied content in the <strong>OAuth Access Token</strong> field above.\r\n </p>\r\n <p>\r\n <strong>Step 5:</strong> If you no longer need Rclone, you can safely remove it from your system.\r\n </p>\r\n </>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\nexport default StorageAuthSettings;\r\n"],"names":["StorageAuthSettings","storageType","fields","settings","authTypes","currentAuthType","errors","onUpdate","onAuthTypeChange","showAdvanced","setShowAdvanced","useState","showOAuthDoc","setShowOAuthDoc","useEffect","jsxs","classes","jsx","Icon","Tristate","newVal","StorageSettings","f","newSettings","Fragment"],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { systemSetTimeoutZero as a } from "./timeoutManager.js";
|
|
2
|
+
var c = a;
|
|
3
|
+
function f() {
|
|
4
|
+
let r = [], n = 0, o = (t) => {
|
|
5
|
+
t();
|
|
6
|
+
}, i = (t) => {
|
|
7
|
+
t();
|
|
8
|
+
}, u = c;
|
|
9
|
+
const l = (t) => {
|
|
10
|
+
n ? r.push(t) : u(() => {
|
|
11
|
+
o(t);
|
|
12
|
+
});
|
|
13
|
+
}, s = () => {
|
|
14
|
+
const t = r;
|
|
15
|
+
r = [], t.length && u(() => {
|
|
16
|
+
i(() => {
|
|
17
|
+
t.forEach((e) => {
|
|
18
|
+
o(e);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
return {
|
|
24
|
+
batch: (t) => {
|
|
25
|
+
let e;
|
|
26
|
+
n++;
|
|
27
|
+
try {
|
|
28
|
+
e = t();
|
|
29
|
+
} finally {
|
|
30
|
+
n--, n || s();
|
|
31
|
+
}
|
|
32
|
+
return e;
|
|
33
|
+
},
|
|
34
|
+
/**
|
|
35
|
+
* All calls to the wrapped function will be batched.
|
|
36
|
+
*/
|
|
37
|
+
batchCalls: (t) => (...e) => {
|
|
38
|
+
l(() => {
|
|
39
|
+
t(...e);
|
|
40
|
+
});
|
|
41
|
+
},
|
|
42
|
+
schedule: l,
|
|
43
|
+
/**
|
|
44
|
+
* Use this method to set a custom notify function.
|
|
45
|
+
* This can be used to for example wrap notifications with `React.act` while running tests.
|
|
46
|
+
*/
|
|
47
|
+
setNotifyFunction: (t) => {
|
|
48
|
+
o = t;
|
|
49
|
+
},
|
|
50
|
+
/**
|
|
51
|
+
* Use this method to set a custom function to batch notifications together into a single tick.
|
|
52
|
+
* By default React Query will use the batch function provided by ReactDOM or React Native.
|
|
53
|
+
*/
|
|
54
|
+
setBatchNotifyFunction: (t) => {
|
|
55
|
+
i = t;
|
|
56
|
+
},
|
|
57
|
+
setScheduler: (t) => {
|
|
58
|
+
u = t;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
var y = f();
|
|
63
|
+
export {
|
|
64
|
+
f as createNotifyManager,
|
|
65
|
+
c as defaultScheduler,
|
|
66
|
+
y as notifyManager
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=notifyManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notifyManager.js","sources":["../../../../../../../../../../node_modules/.pnpm/@tanstack+query-core@5.96.0/node_modules/@tanstack/query-core/build/modern/notifyManager.js"],"sourcesContent":["// src/notifyManager.ts\nimport { systemSetTimeoutZero } from \"./timeoutManager.js\";\nvar defaultScheduler = systemSetTimeoutZero;\nfunction createNotifyManager() {\n let queue = [];\n let transactions = 0;\n let notifyFn = (callback) => {\n callback();\n };\n let batchNotifyFn = (callback) => {\n callback();\n };\n let scheduleFn = defaultScheduler;\n const schedule = (callback) => {\n if (transactions) {\n queue.push(callback);\n } else {\n scheduleFn(() => {\n notifyFn(callback);\n });\n }\n };\n const flush = () => {\n const originalQueue = queue;\n queue = [];\n if (originalQueue.length) {\n scheduleFn(() => {\n batchNotifyFn(() => {\n originalQueue.forEach((callback) => {\n notifyFn(callback);\n });\n });\n });\n }\n };\n return {\n batch: (callback) => {\n let result;\n transactions++;\n try {\n result = callback();\n } finally {\n transactions--;\n if (!transactions) {\n flush();\n }\n }\n return result;\n },\n /**\n * All calls to the wrapped function will be batched.\n */\n batchCalls: (callback) => {\n return (...args) => {\n schedule(() => {\n callback(...args);\n });\n };\n },\n schedule,\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n setNotifyFunction: (fn) => {\n notifyFn = fn;\n },\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n setBatchNotifyFunction: (fn) => {\n batchNotifyFn = fn;\n },\n setScheduler: (fn) => {\n scheduleFn = fn;\n }\n };\n}\nvar notifyManager = createNotifyManager();\nexport {\n createNotifyManager,\n defaultScheduler,\n notifyManager\n};\n//# sourceMappingURL=notifyManager.js.map"],"names":["defaultScheduler","systemSetTimeoutZero","createNotifyManager","queue","transactions","notifyFn","callback","batchNotifyFn","scheduleFn","schedule","flush","originalQueue","result","args","fn","notifyManager"],"mappings":";AAEG,IAACA,IAAmBC;AACvB,SAASC,IAAsB;AAC7B,MAAIC,IAAQ,CAAA,GACRC,IAAe,GACfC,IAAW,CAACC,MAAa;AAC3B,IAAAA,EAAQ;AAAA,EACV,GACIC,IAAgB,CAACD,MAAa;AAChC,IAAAA,EAAQ;AAAA,EACV,GACIE,IAAaR;AACjB,QAAMS,IAAW,CAACH,MAAa;AAC7B,IAAIF,IACFD,EAAM,KAAKG,CAAQ,IAEnBE,EAAW,MAAM;AACf,MAAAH,EAASC,CAAQ;AAAA,IACnB,CAAC;AAAA,EAEL,GACMI,IAAQ,MAAM;AAClB,UAAMC,IAAgBR;AACtB,IAAAA,IAAQ,CAAA,GACJQ,EAAc,UAChBH,EAAW,MAAM;AACf,MAAAD,EAAc,MAAM;AAClB,QAAAI,EAAc,QAAQ,CAACL,MAAa;AAClC,UAAAD,EAASC,CAAQ;AAAA,QACnB,CAAC;AAAA,MACH,CAAC;AAAA,IACH,CAAC;AAAA,EAEL;AACA,SAAO;AAAA,IACL,OAAO,CAACA,MAAa;AACnB,UAAIM;AACJ,MAAAR;AACA,UAAI;AACF,QAAAQ,IAASN,EAAQ;AAAA,MACnB,UAAC;AACC,QAAAF,KACKA,KACHM,EAAK;AAAA,MAET;AACA,aAAOE;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAIA,YAAY,CAACN,MACJ,IAAIO,MAAS;AAClB,MAAAJ,EAAS,MAAM;AACb,QAAAH,EAAS,GAAGO,CAAI;AAAA,MAClB,CAAC;AAAA,IACH;AAAA,IAEF,UAAAJ;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA,mBAAmB,CAACK,MAAO;AACzB,MAAAT,IAAWS;AAAA,IACb;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA,wBAAwB,CAACA,MAAO;AAC9B,MAAAP,IAAgBO;AAAA,IAClB;AAAA,IACA,cAAc,CAACA,MAAO;AACpB,MAAAN,IAAaM;AAAA,IACf;AAAA,EACJ;AACA;AACG,IAACC,IAAgBb,EAAmB;","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeoutManager.js","sources":["../../../../../../../../../../node_modules/.pnpm/@tanstack+query-core@5.96.0/node_modules/@tanstack/query-core/build/modern/timeoutManager.js"],"sourcesContent":["// src/timeoutManager.ts\nvar defaultTimeoutProvider = {\n // We need the wrapper function syntax below instead of direct references to\n // global setTimeout etc.\n //\n // BAD: `setTimeout: setTimeout`\n // GOOD: `setTimeout: (cb, delay) => setTimeout(cb, delay)`\n //\n // If we use direct references here, then anything that wants to spy on or\n // replace the global setTimeout (like tests) won't work since we'll already\n // have a hard reference to the original implementation at the time when this\n // file was imported.\n setTimeout: (callback, delay) => setTimeout(callback, delay),\n clearTimeout: (timeoutId) => clearTimeout(timeoutId),\n setInterval: (callback, delay) => setInterval(callback, delay),\n clearInterval: (intervalId) => clearInterval(intervalId)\n};\nvar TimeoutManager = class {\n // We cannot have TimeoutManager<T> as we must instantiate it with a concrete\n // type at app boot; and if we leave that type, then any new timer provider\n // would need to support the default provider's concrete timer ID, which is\n // infeasible across environments.\n //\n // We settle for type safety for the TimeoutProvider type, and accept that\n // this class is unsafe internally to allow for extension.\n #provider = defaultTimeoutProvider;\n #providerCalled = false;\n setTimeoutProvider(provider) {\n if (process.env.NODE_ENV !== \"production\") {\n if (this.#providerCalled && provider !== this.#provider) {\n console.error(\n `[timeoutManager]: Switching provider after calls to previous provider might result in unexpected behavior.`,\n { previous: this.#provider, provider }\n );\n }\n }\n this.#provider = provider;\n if (process.env.NODE_ENV !== \"production\") {\n this.#providerCalled = false;\n }\n }\n setTimeout(callback, delay) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#providerCalled = true;\n }\n return this.#provider.setTimeout(callback, delay);\n }\n clearTimeout(timeoutId) {\n this.#provider.clearTimeout(timeoutId);\n }\n setInterval(callback, delay) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#providerCalled = true;\n }\n return this.#provider.setInterval(callback, delay);\n }\n clearInterval(intervalId) {\n this.#provider.clearInterval(intervalId);\n }\n};\nvar timeoutManager = new TimeoutManager();\nfunction systemSetTimeoutZero(callback) {\n setTimeout(callback, 0);\n}\nexport {\n TimeoutManager,\n defaultTimeoutProvider,\n systemSetTimeoutZero,\n timeoutManager\n};\n//# sourceMappingURL=timeoutManager.js.map"],"names":["systemSetTimeoutZero","callback"],"mappings":"AA6DA,SAASA,EAAqBC,GAAU;AACtC,aAAWA,GAAU,CAAC;AACxB;","x_google_ignoreList":[0]}
|