@webiny/app-tenancy 5.27.0-beta.0 → 5.28.0
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/Tenancy.js +29 -10
- package/Tenancy.js.map +1 -1
- package/contexts/Tenancy.js +46 -21
- package/contexts/Tenancy.js.map +1 -1
- package/hooks/useTenancy.js +13 -4
- package/hooks/useTenancy.js.map +1 -1
- package/index.js +75 -8
- package/index.js.map +1 -1
- package/package.json +9 -9
- package/plugins/installation.js +47 -25
- package/plugins/installation.js.map +1 -1
- package/withTenant.js +31 -13
- package/withTenant.js.map +1 -1
package/Tenancy.js
CHANGED
|
@@ -1,26 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.TenancyExtension = exports.Tenancy = void 0;
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
+
|
|
14
|
+
var _plugins = require("@webiny/plugins");
|
|
15
|
+
|
|
16
|
+
var _appAdmin = require("@webiny/app-admin");
|
|
17
|
+
|
|
18
|
+
var _installation = _interopRequireDefault(require("./plugins/installation"));
|
|
19
|
+
|
|
20
|
+
var _Tenancy = require("./contexts/Tenancy");
|
|
6
21
|
|
|
7
22
|
var TenancyProviderHOC = function TenancyProviderHOC(Component) {
|
|
8
23
|
return function TenancyProvider(_ref) {
|
|
9
24
|
var children = _ref.children;
|
|
10
|
-
return /*#__PURE__*/
|
|
25
|
+
return /*#__PURE__*/_react.default.createElement(_Tenancy.TenancyProvider, null, /*#__PURE__*/_react.default.createElement(Component, null, children));
|
|
11
26
|
};
|
|
12
27
|
};
|
|
13
28
|
|
|
14
|
-
|
|
15
|
-
plugins.register(
|
|
29
|
+
var TenancyExtension = function TenancyExtension() {
|
|
30
|
+
_plugins.plugins.register(_installation.default);
|
|
16
31
|
/**
|
|
17
32
|
* TODO @ts-refactor
|
|
18
33
|
* Expects ComponentType
|
|
19
34
|
*/
|
|
20
35
|
// @ts-ignore
|
|
21
36
|
|
|
22
|
-
|
|
37
|
+
|
|
38
|
+
return /*#__PURE__*/_react.default.createElement(_appAdmin.Provider, {
|
|
23
39
|
hoc: TenancyProviderHOC
|
|
24
40
|
});
|
|
25
41
|
};
|
|
26
|
-
|
|
42
|
+
|
|
43
|
+
exports.TenancyExtension = TenancyExtension;
|
|
44
|
+
var Tenancy = /*#__PURE__*/(0, _react.memo)(TenancyExtension);
|
|
45
|
+
exports.Tenancy = Tenancy;
|
package/Tenancy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["TenancyProviderHOC","Component","TenancyProvider","children","TenancyExtension","plugins","register","installation","Tenancy","memo"],"sources":["Tenancy.tsx"],"sourcesContent":["import React, { memo } from \"react\";\nimport { plugins } from \"@webiny/plugins\";\nimport { Provider } from \"@webiny/app-admin\";\nimport installation from \"./plugins/installation\";\nimport { TenancyProvider as ContextProvider } from \"./contexts/Tenancy\";\n\nconst TenancyProviderHOC = (Component: React.FC): React.FC => {\n return function TenancyProvider({ children }) {\n return (\n <ContextProvider>\n <Component>{children}</Component>\n </ContextProvider>\n );\n };\n};\n\nexport const TenancyExtension: React.FC = () => {\n plugins.register(installation);\n\n /**\n * TODO @ts-refactor\n * Expects ComponentType\n */\n // @ts-ignore\n return <Provider hoc={TenancyProviderHOC} />;\n};\n\nexport const Tenancy = memo(TenancyExtension);\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA,IAAMA,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,SAAD,EAAmC;EAC1D,OAAO,SAASC,eAAT,OAAuC;IAAA,IAAZC,QAAY,QAAZA,QAAY;IAC1C,oBACI,6BAAC,wBAAD,qBACI,6BAAC,SAAD,QAAYA,QAAZ,CADJ,CADJ;EAKH,CAND;AAOH,CARD;;AAUO,IAAMC,gBAA0B,GAAG,SAA7BA,gBAA6B,GAAM;EAC5CC,gBAAA,CAAQC,QAAR,CAAiBC,qBAAjB;EAEA;AACJ;AACA;AACA;EACI;;;EACA,oBAAO,6BAAC,kBAAD;IAAU,GAAG,EAAEP;EAAf,EAAP;AACH,CATM;;;AAWA,IAAMQ,OAAO,gBAAG,IAAAC,WAAA,EAAKL,gBAAL,CAAhB"}
|
package/contexts/Tenancy.js
CHANGED
|
@@ -1,46 +1,69 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.TenancyProvider = exports.TenancyContext = void 0;
|
|
11
|
+
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
|
|
16
|
+
var _store = _interopRequireDefault(require("store"));
|
|
17
|
+
|
|
18
|
+
var _plugins = require("@webiny/plugins");
|
|
19
|
+
|
|
20
|
+
var _TenantHeaderLinkPlugin = require("@webiny/app/plugins/TenantHeaderLinkPlugin");
|
|
21
|
+
|
|
22
|
+
var _config = require("@webiny/app/config");
|
|
23
|
+
|
|
24
|
+
var TenancyContext = /*#__PURE__*/_react.default.createContext({
|
|
8
25
|
tenant: null,
|
|
9
26
|
setTenant: function setTenant() {
|
|
10
27
|
return void 0;
|
|
11
28
|
},
|
|
12
29
|
isMultiTenant: false
|
|
13
30
|
});
|
|
31
|
+
|
|
32
|
+
exports.TenancyContext = TenancyContext;
|
|
14
33
|
var LOCAL_STORAGE_KEY = "webiny_tenant";
|
|
15
34
|
|
|
16
35
|
function loadState() {
|
|
17
|
-
return
|
|
36
|
+
return _store.default.get(LOCAL_STORAGE_KEY) || null;
|
|
18
37
|
}
|
|
19
38
|
|
|
20
39
|
function storeState(state) {
|
|
21
|
-
|
|
40
|
+
_store.default.set(LOCAL_STORAGE_KEY, state);
|
|
22
41
|
}
|
|
23
42
|
|
|
24
43
|
var getInitialTenant = function getInitialTenant() {
|
|
25
44
|
var currentTenant = loadState();
|
|
26
|
-
|
|
45
|
+
|
|
46
|
+
_plugins.plugins.register(new _TenantHeaderLinkPlugin.TenantHeaderLinkPlugin(currentTenant || "root"));
|
|
47
|
+
|
|
27
48
|
return currentTenant;
|
|
28
49
|
};
|
|
29
50
|
|
|
30
|
-
|
|
31
|
-
var _useState = useState(getInitialTenant),
|
|
32
|
-
_useState2 =
|
|
51
|
+
var TenancyProvider = function TenancyProvider(props) {
|
|
52
|
+
var _useState = (0, _react.useState)(getInitialTenant),
|
|
53
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
33
54
|
currentTenant = _useState2[0],
|
|
34
55
|
setTenant = _useState2[1];
|
|
35
56
|
|
|
36
|
-
var changeTenant = useCallback(function (tenant) {
|
|
57
|
+
var changeTenant = (0, _react.useCallback)(function (tenant) {
|
|
37
58
|
if (!tenant) {
|
|
38
|
-
|
|
59
|
+
_store.default.remove(LOCAL_STORAGE_KEY);
|
|
60
|
+
|
|
39
61
|
window.location.pathname = "/";
|
|
40
62
|
}
|
|
41
63
|
|
|
42
64
|
if (!currentTenant) {
|
|
43
|
-
plugins.register(new TenantHeaderLinkPlugin(tenant));
|
|
65
|
+
_plugins.plugins.register(new _TenantHeaderLinkPlugin.TenantHeaderLinkPlugin(tenant));
|
|
66
|
+
|
|
44
67
|
setTenant(tenant);
|
|
45
68
|
storeState(tenant);
|
|
46
69
|
return;
|
|
@@ -49,14 +72,16 @@ export var TenancyProvider = function TenancyProvider(props) {
|
|
|
49
72
|
storeState(tenant);
|
|
50
73
|
window.location.pathname = "/";
|
|
51
74
|
}, [currentTenant]);
|
|
52
|
-
var value = useMemo(function () {
|
|
75
|
+
var value = (0, _react.useMemo)(function () {
|
|
53
76
|
return {
|
|
54
77
|
tenant: currentTenant,
|
|
55
78
|
setTenant: changeTenant,
|
|
56
|
-
isMultiTenant:
|
|
79
|
+
isMultiTenant: _config.config.getKey("WEBINY_MULTI_TENANCY", process.env.REACT_APP_WEBINY_MULTI_TENANCY === "true")
|
|
57
80
|
};
|
|
58
81
|
}, [currentTenant]);
|
|
59
|
-
return /*#__PURE__*/
|
|
82
|
+
return /*#__PURE__*/_react.default.createElement(TenancyContext.Provider, {
|
|
60
83
|
value: value
|
|
61
|
-
}, /*#__PURE__*/
|
|
62
|
-
};
|
|
84
|
+
}, /*#__PURE__*/_react.default.createElement(_react.Fragment, null, props.children));
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
exports.TenancyProvider = TenancyProvider;
|
package/contexts/Tenancy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["TenancyContext","React","createContext","tenant","setTenant","isMultiTenant","LOCAL_STORAGE_KEY","loadState","localStorage","get","storeState","state","set","getInitialTenant","currentTenant","plugins","register","TenantHeaderLinkPlugin","TenancyProvider","props","useState","changeTenant","useCallback","remove","window","location","pathname","value","useMemo","appConfig","getKey","process","env","REACT_APP_WEBINY_MULTI_TENANCY","children"],"sources":["Tenancy.tsx"],"sourcesContent":["import React, { useMemo, useCallback, Fragment, useState } from \"react\";\nimport { default as localStorage } from \"store\";\nimport { plugins } from \"@webiny/plugins\";\nimport { TenantHeaderLinkPlugin } from \"@webiny/app/plugins/TenantHeaderLinkPlugin\";\nimport { config as appConfig } from \"@webiny/app/config\";\n\nexport interface Tenant {\n id: string;\n name: string;\n}\n\nexport interface TenancyContextValue {\n tenant: string | null;\n setTenant(tenant: string | null): void;\n isMultiTenant: boolean;\n}\n\nexport const TenancyContext = React.createContext<TenancyContextValue>({\n tenant: null,\n setTenant: () => {\n return void 0;\n },\n isMultiTenant: false\n});\n\nconst LOCAL_STORAGE_KEY = \"webiny_tenant\";\n\nfunction loadState(): string | null {\n return localStorage.get(LOCAL_STORAGE_KEY) || null;\n}\n\nfunction storeState(state: string) {\n localStorage.set(LOCAL_STORAGE_KEY, state);\n}\n\nconst getInitialTenant = (): string | null => {\n const currentTenant = loadState();\n plugins.register(new TenantHeaderLinkPlugin(currentTenant || \"root\"));\n return currentTenant;\n};\n\nexport const TenancyProvider: React.FC = props => {\n const [currentTenant, setTenant] = useState(getInitialTenant);\n\n const changeTenant = useCallback(\n (tenant: string): void => {\n if (!tenant) {\n localStorage.remove(LOCAL_STORAGE_KEY);\n\n window.location.pathname = \"/\";\n }\n\n if (!currentTenant) {\n plugins.register(new TenantHeaderLinkPlugin(tenant));\n setTenant(tenant);\n storeState(tenant);\n return;\n }\n\n storeState(tenant);\n window.location.pathname = \"/\";\n },\n [currentTenant]\n );\n\n const value = useMemo<TenancyContextValue>(\n () => ({\n tenant: currentTenant,\n setTenant: changeTenant,\n isMultiTenant: appConfig.getKey(\n \"WEBINY_MULTI_TENANCY\",\n process.env.REACT_APP_WEBINY_MULTI_TENANCY === \"true\"\n )\n }),\n [currentTenant]\n );\n\n return (\n <TenancyContext.Provider value={value}>\n <Fragment>{props.children}</Fragment>\n </TenancyContext.Provider>\n );\n};\n"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAaO,IAAMA,cAAc,gBAAGC,cAAA,CAAMC,aAAN,CAAyC;EACnEC,MAAM,EAAE,IAD2D;EAEnEC,SAAS,EAAE,qBAAM;IACb,OAAO,KAAK,CAAZ;EACH,CAJkE;EAKnEC,aAAa,EAAE;AALoD,CAAzC,CAAvB;;;AAQP,IAAMC,iBAAiB,GAAG,eAA1B;;AAEA,SAASC,SAAT,GAAoC;EAChC,OAAOC,cAAA,CAAaC,GAAb,CAAiBH,iBAAjB,KAAuC,IAA9C;AACH;;AAED,SAASI,UAAT,CAAoBC,KAApB,EAAmC;EAC/BH,cAAA,CAAaI,GAAb,CAAiBN,iBAAjB,EAAoCK,KAApC;AACH;;AAED,IAAME,gBAAgB,GAAG,SAAnBA,gBAAmB,GAAqB;EAC1C,IAAMC,aAAa,GAAGP,SAAS,EAA/B;;EACAQ,gBAAA,CAAQC,QAAR,CAAiB,IAAIC,8CAAJ,CAA2BH,aAAa,IAAI,MAA5C,CAAjB;;EACA,OAAOA,aAAP;AACH,CAJD;;AAMO,IAAMI,eAAyB,GAAG,SAA5BA,eAA4B,CAAAC,KAAK,EAAI;EAC9C,gBAAmC,IAAAC,eAAA,EAASP,gBAAT,CAAnC;EAAA;EAAA,IAAOC,aAAP;EAAA,IAAsBV,SAAtB;;EAEA,IAAMiB,YAAY,GAAG,IAAAC,kBAAA,EACjB,UAACnB,MAAD,EAA0B;IACtB,IAAI,CAACA,MAAL,EAAa;MACTK,cAAA,CAAae,MAAb,CAAoBjB,iBAApB;;MAEAkB,MAAM,CAACC,QAAP,CAAgBC,QAAhB,GAA2B,GAA3B;IACH;;IAED,IAAI,CAACZ,aAAL,EAAoB;MAChBC,gBAAA,CAAQC,QAAR,CAAiB,IAAIC,8CAAJ,CAA2Bd,MAA3B,CAAjB;;MACAC,SAAS,CAACD,MAAD,CAAT;MACAO,UAAU,CAACP,MAAD,CAAV;MACA;IACH;;IAEDO,UAAU,CAACP,MAAD,CAAV;IACAqB,MAAM,CAACC,QAAP,CAAgBC,QAAhB,GAA2B,GAA3B;EACH,CAjBgB,EAkBjB,CAACZ,aAAD,CAlBiB,CAArB;EAqBA,IAAMa,KAAK,GAAG,IAAAC,cAAA,EACV;IAAA,OAAO;MACHzB,MAAM,EAAEW,aADL;MAEHV,SAAS,EAAEiB,YAFR;MAGHhB,aAAa,EAAEwB,cAAA,CAAUC,MAAV,CACX,sBADW,EAEXC,OAAO,CAACC,GAAR,CAAYC,8BAAZ,KAA+C,MAFpC;IAHZ,CAAP;EAAA,CADU,EASV,CAACnB,aAAD,CATU,CAAd;EAYA,oBACI,6BAAC,cAAD,CAAgB,QAAhB;IAAyB,KAAK,EAAEa;EAAhC,gBACI,6BAAC,eAAD,QAAWR,KAAK,CAACe,QAAjB,CADJ,CADJ;AAKH,CAzCM"}
|
package/hooks/useTenancy.js
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useTenancy = useTenancy;
|
|
7
|
+
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
|
|
10
|
+
var _Tenancy = require("../contexts/Tenancy");
|
|
11
|
+
|
|
12
|
+
function useTenancy() {
|
|
13
|
+
return (0, _react.useContext)(_Tenancy.TenancyContext);
|
|
5
14
|
}
|
package/hooks/useTenancy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["useTenancy","useContext","TenancyContext"],"sources":["useTenancy.ts"],"sourcesContent":["import { useContext } from \"react\";\nimport { TenancyContext, TenancyContextValue } from \"~/contexts/Tenancy\";\n\nexport function useTenancy() {\n return useContext<TenancyContextValue>(TenancyContext);\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEO,SAASA,UAAT,GAAsB;EACzB,OAAO,IAAAC,iBAAA,EAAgCC,uBAAhC,CAAP;AACH"}
|
package/index.js
CHANGED
|
@@ -1,8 +1,75 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
var _exportNames = {
|
|
9
|
+
plugins: true
|
|
10
|
+
};
|
|
11
|
+
exports.plugins = void 0;
|
|
12
|
+
|
|
13
|
+
var _installation = _interopRequireDefault(require("./plugins/installation"));
|
|
14
|
+
|
|
15
|
+
var _Tenancy = require("./contexts/Tenancy");
|
|
16
|
+
|
|
17
|
+
Object.keys(_Tenancy).forEach(function (key) {
|
|
18
|
+
if (key === "default" || key === "__esModule") return;
|
|
19
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
20
|
+
if (key in exports && exports[key] === _Tenancy[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function get() {
|
|
24
|
+
return _Tenancy[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
var _useTenancy = require("./hooks/useTenancy");
|
|
30
|
+
|
|
31
|
+
Object.keys(_useTenancy).forEach(function (key) {
|
|
32
|
+
if (key === "default" || key === "__esModule") return;
|
|
33
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
34
|
+
if (key in exports && exports[key] === _useTenancy[key]) return;
|
|
35
|
+
Object.defineProperty(exports, key, {
|
|
36
|
+
enumerable: true,
|
|
37
|
+
get: function get() {
|
|
38
|
+
return _useTenancy[key];
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
var _withTenant = require("./withTenant");
|
|
44
|
+
|
|
45
|
+
Object.keys(_withTenant).forEach(function (key) {
|
|
46
|
+
if (key === "default" || key === "__esModule") return;
|
|
47
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
48
|
+
if (key in exports && exports[key] === _withTenant[key]) return;
|
|
49
|
+
Object.defineProperty(exports, key, {
|
|
50
|
+
enumerable: true,
|
|
51
|
+
get: function get() {
|
|
52
|
+
return _withTenant[key];
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
var _Tenancy2 = require("./Tenancy");
|
|
58
|
+
|
|
59
|
+
Object.keys(_Tenancy2).forEach(function (key) {
|
|
60
|
+
if (key === "default" || key === "__esModule") return;
|
|
61
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
62
|
+
if (key in exports && exports[key] === _Tenancy2[key]) return;
|
|
63
|
+
Object.defineProperty(exports, key, {
|
|
64
|
+
enumerable: true,
|
|
65
|
+
get: function get() {
|
|
66
|
+
return _Tenancy2[key];
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
var plugins = function plugins() {
|
|
72
|
+
return [_installation.default];
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
exports.plugins = plugins;
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["plugins","installation"],"sources":["index.ts"],"sourcesContent":["import installation from \"~/plugins/installation\";\nexport * from \"./contexts/Tenancy\";\nexport * from \"./hooks/useTenancy\";\nexport * from \"./withTenant\";\nexport * from \"./Tenancy\";\n\nexport const plugins = () => [installation];\n"],"mappings":";;;;;;;;;;;;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEO,IAAMA,OAAO,GAAG,SAAVA,OAAU;EAAA,OAAM,CAACC,qBAAD,CAAN;AAAA,CAAhB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/app-tenancy",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.28.0",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -14,13 +14,13 @@
|
|
|
14
14
|
"license": "MIT",
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@apollo/react-hooks": "3.1.5",
|
|
17
|
-
"@babel/runtime": "7.
|
|
17
|
+
"@babel/runtime": "7.18.3",
|
|
18
18
|
"@emotion/styled": "10.3.0",
|
|
19
19
|
"@types/react": "16.14.2",
|
|
20
|
-
"@webiny/app": "5.
|
|
21
|
-
"@webiny/app-admin": "5.
|
|
22
|
-
"@webiny/plugins": "5.
|
|
23
|
-
"@webiny/ui": "5.
|
|
20
|
+
"@webiny/app": "5.28.0",
|
|
21
|
+
"@webiny/app-admin": "5.28.0",
|
|
22
|
+
"@webiny/plugins": "5.28.0",
|
|
23
|
+
"@webiny/ui": "5.28.0",
|
|
24
24
|
"apollo-client": "2.6.10",
|
|
25
25
|
"graphql-tag": "2.12.6",
|
|
26
26
|
"react": "16.14.0",
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"@babel/preset-env": "^7.16.4",
|
|
35
35
|
"@babel/preset-react": "^7.16.0",
|
|
36
36
|
"@babel/preset-typescript": "^7.16.0",
|
|
37
|
-
"@webiny/cli": "^5.
|
|
38
|
-
"@webiny/project-utils": "^5.
|
|
37
|
+
"@webiny/cli": "^5.28.0",
|
|
38
|
+
"@webiny/project-utils": "^5.28.0",
|
|
39
39
|
"babel-plugin-emotion": "^9.2.8",
|
|
40
40
|
"babel-plugin-lodash": "^3.3.4",
|
|
41
41
|
"rimraf": "^3.0.2",
|
|
@@ -50,5 +50,5 @@
|
|
|
50
50
|
"build": "yarn webiny run build",
|
|
51
51
|
"watch": "yarn webiny run watch"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "9fd082a2e4a0e0116ee5a07e2a9ca385e8ac0173"
|
|
54
54
|
}
|
package/plugins/installation.js
CHANGED
|
@@ -1,37 +1,58 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.default = void 0;
|
|
11
|
+
|
|
12
|
+
var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
|
|
13
|
+
|
|
14
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
|
+
|
|
16
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
17
|
+
|
|
18
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
19
|
+
|
|
20
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
21
|
+
|
|
22
|
+
var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
|
|
23
|
+
|
|
24
|
+
var _reactHooks = require("@apollo/react-hooks");
|
|
25
|
+
|
|
26
|
+
var _Alert = require("@webiny/ui/Alert");
|
|
27
|
+
|
|
28
|
+
var _Progress = require("@webiny/ui/Progress");
|
|
29
|
+
|
|
30
|
+
var _SimpleForm = require("@webiny/app-admin/components/SimpleForm");
|
|
31
|
+
|
|
32
|
+
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
4
33
|
|
|
5
34
|
var _templateObject, _templateObject2;
|
|
6
35
|
|
|
7
|
-
|
|
8
|
-
import React, { useState, useEffect } from "react";
|
|
9
|
-
import gql from "graphql-tag";
|
|
10
|
-
import { useApolloClient } from "@apollo/react-hooks";
|
|
11
|
-
import { Alert } from "@webiny/ui/Alert";
|
|
12
|
-
import { CircularProgress } from "@webiny/ui/Progress";
|
|
13
|
-
import { SimpleForm, SimpleFormContent } from "@webiny/app-admin/components/SimpleForm";
|
|
14
|
-
import styled from "@emotion/styled";
|
|
15
|
-
var SimpleFormPlaceholder = /*#__PURE__*/styled("div", {
|
|
36
|
+
var SimpleFormPlaceholder = /*#__PURE__*/(0, _styled.default)("div", {
|
|
16
37
|
target: "ewob5260",
|
|
17
38
|
label: "SimpleFormPlaceholder"
|
|
18
39
|
})({
|
|
19
40
|
minHeight: 300,
|
|
20
41
|
minWidth: 400
|
|
21
42
|
});
|
|
22
|
-
var IS_INSTALLED =
|
|
23
|
-
var INSTALL =
|
|
43
|
+
var IS_INSTALLED = (0, _graphqlTag.default)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n query IsTenancyInstalled {\n tenancy {\n version\n }\n }\n"])));
|
|
44
|
+
var INSTALL = (0, _graphqlTag.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n mutation InstallTenancy {\n tenancy {\n install {\n data\n error {\n code\n message\n }\n }\n }\n }\n"])));
|
|
24
45
|
|
|
25
46
|
var TenancyInstaller = function TenancyInstaller(_ref) {
|
|
26
47
|
var onInstalled = _ref.onInstalled;
|
|
27
|
-
var client = useApolloClient();
|
|
48
|
+
var client = (0, _reactHooks.useApolloClient)();
|
|
28
49
|
|
|
29
|
-
var _useState = useState(null),
|
|
30
|
-
_useState2 =
|
|
50
|
+
var _useState = (0, _react.useState)(null),
|
|
51
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
31
52
|
error = _useState2[0],
|
|
32
53
|
setError = _useState2[1];
|
|
33
54
|
|
|
34
|
-
useEffect(function () {
|
|
55
|
+
(0, _react.useEffect)(function () {
|
|
35
56
|
client.mutate({
|
|
36
57
|
mutation: INSTALL
|
|
37
58
|
}).then(function (_ref2) {
|
|
@@ -47,13 +68,13 @@ var TenancyInstaller = function TenancyInstaller(_ref) {
|
|
|
47
68
|
setTimeout(onInstalled, 3000);
|
|
48
69
|
});
|
|
49
70
|
}, []);
|
|
50
|
-
var label = error ? /*#__PURE__*/
|
|
71
|
+
var label = error ? /*#__PURE__*/_react.default.createElement(_Alert.Alert, {
|
|
51
72
|
title: "Something went wrong",
|
|
52
73
|
type: "danger"
|
|
53
74
|
}, error) : "Installing Tenancy...";
|
|
54
|
-
return /*#__PURE__*/
|
|
75
|
+
return /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleForm, null, /*#__PURE__*/_react.default.createElement(_Progress.CircularProgress, {
|
|
55
76
|
label: label
|
|
56
|
-
}), /*#__PURE__*/
|
|
77
|
+
}), /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleFormContent, null, /*#__PURE__*/_react.default.createElement(SimpleFormPlaceholder, null)));
|
|
57
78
|
};
|
|
58
79
|
|
|
59
80
|
var plugin = {
|
|
@@ -63,10 +84,10 @@ var plugin = {
|
|
|
63
84
|
dependencies: [],
|
|
64
85
|
secure: false,
|
|
65
86
|
getInstalledVersion: function getInstalledVersion(_ref3) {
|
|
66
|
-
return
|
|
87
|
+
return (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
|
|
67
88
|
var client, _yield$client$query, data;
|
|
68
89
|
|
|
69
|
-
return
|
|
90
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
70
91
|
while (1) {
|
|
71
92
|
switch (_context.prev = _context.next) {
|
|
72
93
|
case 0:
|
|
@@ -91,9 +112,10 @@ var plugin = {
|
|
|
91
112
|
},
|
|
92
113
|
render: function render(_ref4) {
|
|
93
114
|
var onInstalled = _ref4.onInstalled;
|
|
94
|
-
return /*#__PURE__*/
|
|
115
|
+
return /*#__PURE__*/_react.default.createElement(TenancyInstaller, {
|
|
95
116
|
onInstalled: onInstalled
|
|
96
117
|
});
|
|
97
118
|
}
|
|
98
119
|
};
|
|
99
|
-
|
|
120
|
+
var _default = plugin;
|
|
121
|
+
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["SimpleFormPlaceholder","styled","minHeight","minWidth","IS_INSTALLED","gql","INSTALL","TenancyInstaller","onInstalled","client","useApolloClient","useState","error","setError","useEffect","mutate","mutation","then","data","tenancy","install","message","setTimeout","label","plugin","name","type","title","dependencies","secure","getInstalledVersion","query","version","render"],"sources":["installation.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport gql from \"graphql-tag\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { Alert } from \"@webiny/ui/Alert\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { SimpleForm, SimpleFormContent } from \"@webiny/app-admin/components/SimpleForm\";\nimport styled from \"@emotion/styled\";\nimport { AdminInstallationPlugin } from \"@webiny/app-admin/types\";\n\nconst SimpleFormPlaceholder = styled.div({\n minHeight: 300,\n minWidth: 400\n});\n\nconst IS_INSTALLED = gql`\n query IsTenancyInstalled {\n tenancy {\n version\n }\n }\n`;\n\nconst INSTALL = gql`\n mutation InstallTenancy {\n tenancy {\n install {\n data\n error {\n code\n message\n }\n }\n }\n }\n`;\n\ninterface TenancyInstallerProps {\n onInstalled: () => Promise<void>;\n}\nconst TenancyInstaller: React.FC<TenancyInstallerProps> = ({ onInstalled }) => {\n const client = useApolloClient();\n const [error, setError] = useState(null);\n\n useEffect(() => {\n client.mutate({ mutation: INSTALL }).then(({ data }) => {\n const { error } = data.tenancy.install;\n if (error) {\n setError(error.message);\n return;\n }\n\n // Just so the user sees the actual message.\n setTimeout(onInstalled, 3000);\n });\n }, []);\n\n const label = error ? (\n <Alert title={`Something went wrong`} type={\"danger\"}>\n {error}\n </Alert>\n ) : (\n `Installing Tenancy...`\n );\n\n return (\n <SimpleForm>\n <CircularProgress label={label} />\n <SimpleFormContent>\n <SimpleFormPlaceholder />\n </SimpleFormContent>\n </SimpleForm>\n );\n};\n\nconst plugin: AdminInstallationPlugin = {\n name: \"admin-installation-tenancy\",\n type: \"admin-installation\",\n title: `Tenancy`,\n dependencies: [],\n secure: false,\n async getInstalledVersion({ client }) {\n const { data } = await client.query({ query: IS_INSTALLED });\n return data.tenancy.version;\n },\n render({ onInstalled }) {\n return <TenancyInstaller onInstalled={onInstalled} />;\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAGA,IAAMA,qBAAqB,oBAAGC,eAAH;EAAA;EAAA;AAAA,GAAc;EACrCC,SAAS,EAAE,GAD0B;EAErCC,QAAQ,EAAE;AAF2B,CAAd,CAA3B;AAKA,IAAMC,YAAY,OAAGC,mBAAH,gLAAlB;AAQA,IAAMC,OAAO,OAAGD,mBAAH,2TAAb;;AAiBA,IAAME,gBAAiD,GAAG,SAApDA,gBAAoD,OAAqB;EAAA,IAAlBC,WAAkB,QAAlBA,WAAkB;EAC3E,IAAMC,MAAM,GAAG,IAAAC,2BAAA,GAAf;;EACA,gBAA0B,IAAAC,eAAA,EAAS,IAAT,CAA1B;EAAA;EAAA,IAAOC,KAAP;EAAA,IAAcC,QAAd;;EAEA,IAAAC,gBAAA,EAAU,YAAM;IACZL,MAAM,CAACM,MAAP,CAAc;MAAEC,QAAQ,EAAEV;IAAZ,CAAd,EAAqCW,IAArC,CAA0C,iBAAc;MAAA,IAAXC,IAAW,SAAXA,IAAW;MACpD,IAAQN,KAAR,GAAkBM,IAAI,CAACC,OAAL,CAAaC,OAA/B,CAAQR,KAAR;;MACA,IAAIA,KAAJ,EAAW;QACPC,QAAQ,CAACD,KAAK,CAACS,OAAP,CAAR;QACA;MACH,CALmD,CAOpD;;;MACAC,UAAU,CAACd,WAAD,EAAc,IAAd,CAAV;IACH,CATD;EAUH,CAXD,EAWG,EAXH;EAaA,IAAMe,KAAK,GAAGX,KAAK,gBACf,6BAAC,YAAD;IAAO,KAAK,wBAAZ;IAAsC,IAAI,EAAE;EAA5C,GACKA,KADL,CADe,0BAAnB;EAQA,oBACI,6BAAC,sBAAD,qBACI,6BAAC,0BAAD;IAAkB,KAAK,EAAEW;EAAzB,EADJ,eAEI,6BAAC,6BAAD,qBACI,6BAAC,qBAAD,OADJ,CAFJ,CADJ;AAQH,CAjCD;;AAmCA,IAAMC,MAA+B,GAAG;EACpCC,IAAI,EAAE,4BAD8B;EAEpCC,IAAI,EAAE,oBAF8B;EAGpCC,KAAK,WAH+B;EAIpCC,YAAY,EAAE,EAJsB;EAKpCC,MAAM,EAAE,KAL4B;EAM9BC,mBAN8B,sCAME;IAAA;MAAA;;MAAA;QAAA;UAAA;YAAA;cAAVrB,MAAU,SAAVA,MAAU;cAAA;cAAA,OACXA,MAAM,CAACsB,KAAP,CAAa;gBAAEA,KAAK,EAAE3B;cAAT,CAAb,CADW;;YAAA;cAAA;cAC1Bc,IAD0B,uBAC1BA,IAD0B;cAAA,iCAE3BA,IAAI,CAACC,OAAL,CAAaa,OAFc;;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA;EAGrC,CATmC;EAUpCC,MAVoC,yBAUZ;IAAA,IAAfzB,WAAe,SAAfA,WAAe;IACpB,oBAAO,6BAAC,gBAAD;MAAkB,WAAW,EAAEA;IAA/B,EAAP;EACH;AAZmC,CAAxC;eAeegB,M"}
|
package/withTenant.js
CHANGED
|
@@ -1,27 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.withTenant = exports.GET_DEFAULT_TENANT = void 0;
|
|
9
|
+
|
|
10
|
+
var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
14
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
15
|
+
|
|
16
|
+
var _react = _interopRequireDefault(require("react"));
|
|
17
|
+
|
|
18
|
+
var _graphqlTag = require("graphql-tag");
|
|
19
|
+
|
|
20
|
+
var _useTenancy2 = require("./hooks/useTenancy");
|
|
3
21
|
|
|
4
22
|
var _templateObject;
|
|
5
23
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
export var GET_DEFAULT_TENANT = gql(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n query GetDefaultTenant {\n tenancy {\n getDefaultTenant {\n data {\n id\n name\n description\n }\n error {\n code\n message\n }\n }\n }\n }\n"])));
|
|
11
|
-
export var withTenant = function withTenant(Component) {
|
|
24
|
+
var GET_DEFAULT_TENANT = (0, _graphqlTag.gql)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n query GetDefaultTenant {\n tenancy {\n getDefaultTenant {\n data {\n id\n name\n description\n }\n error {\n code\n message\n }\n }\n }\n }\n"])));
|
|
25
|
+
exports.GET_DEFAULT_TENANT = GET_DEFAULT_TENANT;
|
|
26
|
+
|
|
27
|
+
var withTenant = function withTenant(Component) {
|
|
12
28
|
return function WithTenant(_ref) {
|
|
13
29
|
var getIdentityData = _ref.getIdentityData,
|
|
14
30
|
children = _ref.children;
|
|
15
31
|
|
|
16
|
-
var _useTenancy = useTenancy(),
|
|
32
|
+
var _useTenancy = (0, _useTenancy2.useTenancy)(),
|
|
17
33
|
tenant = _useTenancy.tenant,
|
|
18
34
|
setTenant = _useTenancy.setTenant,
|
|
19
35
|
isMultiTenant = _useTenancy.isMultiTenant;
|
|
20
36
|
|
|
21
37
|
var getIdentityWithTenant = /*#__PURE__*/function () {
|
|
22
|
-
var _ref2 =
|
|
38
|
+
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(params) {
|
|
23
39
|
var response, defaultTenantId;
|
|
24
|
-
return
|
|
40
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
25
41
|
while (1) {
|
|
26
42
|
switch (_context.prev = _context.next) {
|
|
27
43
|
case 0:
|
|
@@ -62,8 +78,10 @@ export var withTenant = function withTenant(Component) {
|
|
|
62
78
|
};
|
|
63
79
|
}();
|
|
64
80
|
|
|
65
|
-
return /*#__PURE__*/
|
|
81
|
+
return /*#__PURE__*/_react.default.createElement(Component, {
|
|
66
82
|
getIdentityData: getIdentityWithTenant
|
|
67
83
|
}, children);
|
|
68
84
|
};
|
|
69
|
-
};
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
exports.withTenant = withTenant;
|
package/withTenant.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["GET_DEFAULT_TENANT","gql","withTenant","Component","WithTenant","getIdentityData","children","useTenancy","tenant","setTenant","isMultiTenant","getIdentityWithTenant","params","client","query","context","headers","response","defaultTenantId","data","tenancy","getDefaultTenant","id"],"sources":["withTenant.tsx"],"sourcesContent":["import React from \"react\";\nimport { gql } from \"graphql-tag\";\nimport { useTenancy } from \"~/hooks/useTenancy\";\nimport ApolloClient from \"apollo-client\";\n\nexport const GET_DEFAULT_TENANT = gql`\n query GetDefaultTenant {\n tenancy {\n getDefaultTenant {\n data {\n id\n name\n description\n }\n error {\n code\n message\n }\n }\n }\n }\n`;\n\ninterface GetIdentityWithTenantParams {\n client: ApolloClient<any>;\n}\ninterface WithTenantProps {\n getIdentityData: (params: GetIdentityWithTenantParams) => Promise<Record<string, string>>;\n children: React.ReactNode;\n}\nexport const withTenant = (Component: React.FC<WithTenantProps>): React.FC<WithTenantProps> => {\n return function WithTenant({ getIdentityData, children }) {\n const { tenant, setTenant, isMultiTenant } = useTenancy();\n\n const getIdentityWithTenant = async (params: GetIdentityWithTenantParams) => {\n if (tenant || !isMultiTenant) {\n return getIdentityData(params);\n }\n\n // Get default tenant\n const response = await params.client.query({\n query: GET_DEFAULT_TENANT,\n context: { headers: { \"x-tenant\": tenant || \"root\" } }\n });\n\n const defaultTenantId = response.data.tenancy.getDefaultTenant.data.id;\n\n setTenant(defaultTenantId);\n\n return getIdentityData(params);\n };\n\n return <Component getIdentityData={getIdentityWithTenant}>{children}</Component>;\n };\n};\n"],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;AAGO,IAAMA,kBAAkB,OAAGC,eAAH,yaAAxB;;;AAyBA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACC,SAAD,EAAqE;EAC3F,OAAO,SAASC,UAAT,OAAmD;IAAA,IAA7BC,eAA6B,QAA7BA,eAA6B;IAAA,IAAZC,QAAY,QAAZA,QAAY;;IACtD,kBAA6C,IAAAC,uBAAA,GAA7C;IAAA,IAAQC,MAAR,eAAQA,MAAR;IAAA,IAAgBC,SAAhB,eAAgBA,SAAhB;IAAA,IAA2BC,aAA3B,eAA2BA,aAA3B;;IAEA,IAAMC,qBAAqB;MAAA,mGAAG,iBAAOC,MAAP;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA,MACtBJ,MAAM,IAAI,CAACE,aADW;kBAAA;kBAAA;gBAAA;;gBAAA,iCAEfL,eAAe,CAACO,MAAD,CAFA;;cAAA;gBAAA;gBAAA,OAMHA,MAAM,CAACC,MAAP,CAAcC,KAAd,CAAoB;kBACvCA,KAAK,EAAEd,kBADgC;kBAEvCe,OAAO,EAAE;oBAAEC,OAAO,EAAE;sBAAE,YAAYR,MAAM,IAAI;oBAAxB;kBAAX;gBAF8B,CAApB,CANG;;cAAA;gBAMpBS,QANoB;gBAWpBC,eAXoB,GAWFD,QAAQ,CAACE,IAAT,CAAcC,OAAd,CAAsBC,gBAAtB,CAAuCF,IAAvC,CAA4CG,EAX1C;gBAa1Bb,SAAS,CAACS,eAAD,CAAT;gBAb0B,iCAenBb,eAAe,CAACO,MAAD,CAfI;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAAH;;MAAA,gBAArBD,qBAAqB;QAAA;MAAA;IAAA,GAA3B;;IAkBA,oBAAO,6BAAC,SAAD;MAAW,eAAe,EAAEA;IAA5B,GAAoDL,QAApD,CAAP;EACH,CAtBD;AAuBH,CAxBM"}
|