@apia/dashboard-controller 2.0.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/dist/actions/basicAction.d.ts +15 -0
- package/dist/actions/basicAction.d.ts.map +1 -0
- package/dist/actions/basicAction.js +40 -0
- package/dist/actions/basicAction.js.map +1 -0
- package/dist/actions/externalFirePanelAction.d.ts +6 -0
- package/dist/actions/externalFirePanelAction.d.ts.map +1 -0
- package/dist/actions/externalFirePanelAction.js +12 -0
- package/dist/actions/externalFirePanelAction.js.map +1 -0
- package/dist/actions/firePanelAction.d.ts +6 -0
- package/dist/actions/firePanelAction.d.ts.map +1 -0
- package/dist/actions/firePanelAction.js +75 -0
- package/dist/actions/firePanelAction.js.map +1 -0
- package/dist/actions/usePanelActions.d.ts +63 -0
- package/dist/actions/usePanelActions.d.ts.map +1 -0
- package/dist/actions/usePanelActions.js +55 -0
- package/dist/actions/usePanelActions.js.map +1 -0
- package/dist/actions/usePanelIsLoading.d.ts +4 -0
- package/dist/actions/usePanelIsLoading.d.ts.map +1 -0
- package/dist/actions/usePanelIsLoading.js +14 -0
- package/dist/actions/usePanelIsLoading.js.map +1 -0
- package/dist/actions/usePanelNetworkState.d.ts +8 -0
- package/dist/actions/usePanelNetworkState.d.ts.map +1 -0
- package/dist/actions/usePanelNetworkState.js +21 -0
- package/dist/actions/usePanelNetworkState.js.map +1 -0
- package/dist/common/usePanelIdentity.d.ts +10 -0
- package/dist/common/usePanelIdentity.d.ts.map +1 -0
- package/dist/common/usePanelIdentity.js +12 -0
- package/dist/common/usePanelIdentity.js.map +1 -0
- package/dist/config/parametersStore.d.ts +15 -0
- package/dist/config/parametersStore.d.ts.map +1 -0
- package/dist/config/parametersStore.js +25 -0
- package/dist/config/parametersStore.js.map +1 -0
- package/dist/config/saveParameters.d.ts +11 -0
- package/dist/config/saveParameters.d.ts.map +1 -0
- package/dist/config/saveParameters.js +16 -0
- package/dist/config/saveParameters.js.map +1 -0
- package/dist/config/usePanelConfig.js +22 -0
- package/dist/config/usePanelConfig.js.map +1 -0
- package/dist/config/usePanelParametersSelector.d.ts +25 -0
- package/dist/config/usePanelParametersSelector.d.ts.map +1 -0
- package/dist/config/usePanelParametersSelector.js +17 -0
- package/dist/config/usePanelParametersSelector.js.map +1 -0
- package/dist/dashboard/DashboardContext.d.ts +6 -0
- package/dist/dashboard/DashboardContext.d.ts.map +1 -0
- package/dist/dashboard/DashboardContext.js +12 -0
- package/dist/dashboard/DashboardContext.js.map +1 -0
- package/dist/dashboard/DashboardPanel.d.ts +45 -0
- package/dist/dashboard/DashboardPanel.d.ts.map +1 -0
- package/dist/dashboard/DashboardPanel.js +236 -0
- package/dist/dashboard/DashboardPanel.js.map +1 -0
- package/dist/dashboard/DashboardPanelContext.d.ts +6 -0
- package/dist/dashboard/DashboardPanelContext.d.ts.map +1 -0
- package/dist/dashboard/DashboardPanelContext.js +12 -0
- package/dist/dashboard/DashboardPanelContext.js.map +1 -0
- package/dist/dashboard/DashboardPanelsBootstraper.d.ts +33 -0
- package/dist/dashboard/DashboardPanelsBootstraper.d.ts.map +1 -0
- package/dist/dashboard/DashboardPanelsBootstraper.js +135 -0
- package/dist/dashboard/DashboardPanelsBootstraper.js.map +1 -0
- package/dist/dashboard/DashboardRouter.d.ts +30 -0
- package/dist/dashboard/DashboardRouter.d.ts.map +1 -0
- package/dist/dashboard/DashboardRouter.js +74 -0
- package/dist/dashboard/DashboardRouter.js.map +1 -0
- package/dist/dashboard/PanelNotFound.js +14 -0
- package/dist/dashboard/PanelNotFound.js.map +1 -0
- package/dist/dashboard/dashboard.d.ts +26 -0
- package/dist/dashboard/dashboard.d.ts.map +1 -0
- package/dist/dashboard/dashboard.js +167 -0
- package/dist/dashboard/dashboard.js.map +1 -0
- package/dist/eventsController/eventsController.d.ts +11 -0
- package/dist/eventsController/eventsController.d.ts.map +1 -0
- package/dist/eventsController/eventsController.js +57 -0
- package/dist/eventsController/eventsController.js.map +1 -0
- package/dist/eventsController/types.d.ts +21 -0
- package/dist/eventsController/types.d.ts.map +1 -0
- package/dist/eventsController/usePanelFireEvent.d.ts +13 -0
- package/dist/eventsController/usePanelFireEvent.d.ts.map +1 -0
- package/dist/eventsController/usePanelFireEvent.js +21 -0
- package/dist/eventsController/usePanelFireEvent.js.map +1 -0
- package/dist/eventsController/usePanelOnEvent.d.ts +12 -0
- package/dist/eventsController/usePanelOnEvent.d.ts.map +1 -0
- package/dist/eventsController/usePanelOnEvent.js +14 -0
- package/dist/eventsController/usePanelOnEvent.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/panelsStore/createPanelStore.d.ts +16 -0
- package/dist/panelsStore/createPanelStore.d.ts.map +1 -0
- package/dist/panelsStore/createPanelStore.js +58 -0
- package/dist/panelsStore/createPanelStore.js.map +1 -0
- package/dist/panelsStore/panelsStore.js +59 -0
- package/dist/panelsStore/panelsStore.js.map +1 -0
- package/dist/panelsStore/usePanelSelector.js +32 -0
- package/dist/panelsStore/usePanelSelector.js.map +1 -0
- package/dist/panelsUtil/usePanelChangeTitle.d.ts +5 -0
- package/dist/panelsUtil/usePanelChangeTitle.d.ts.map +1 -0
- package/dist/panelsUtil/usePanelChangeTitle.js +23 -0
- package/dist/panelsUtil/usePanelChangeTitle.js.map +1 -0
- package/dist/panelsUtil/usePanelTitleAction.js +34 -0
- package/dist/panelsUtil/usePanelTitleAction.js.map +1 -0
- package/dist/position/usePanelPosition.d.ts +13 -0
- package/dist/position/usePanelPosition.d.ts.map +1 -0
- package/dist/position/usePanelPosition.js +40 -0
- package/dist/position/usePanelPosition.js.map +1 -0
- package/dist/splash/events/Dragleave.js +15 -0
- package/dist/splash/events/Dragleave.js.map +1 -0
- package/dist/splash/events/Dragover.js +120 -0
- package/dist/splash/events/Dragover.js.map +1 -0
- package/dist/splash/events/Dragstart.js +65 -0
- package/dist/splash/events/Dragstart.js.map +1 -0
- package/dist/splash/events/Drop.js +60 -0
- package/dist/splash/events/Drop.js.map +1 -0
- package/dist/splash/panels/DefaultPanelWrapper/NetworkState.js +28 -0
- package/dist/splash/panels/DefaultPanelWrapper/NetworkState.js.map +1 -0
- package/dist/splash/panels/DefaultPanelWrapper/PanelButtons.js +16 -0
- package/dist/splash/panels/DefaultPanelWrapper/PanelButtons.js.map +1 -0
- package/dist/splash/panels/DefaultPanelWrapper/RefreshButton.js +35 -0
- package/dist/splash/panels/DefaultPanelWrapper/RefreshButton.js.map +1 -0
- package/dist/splash/panels/DefaultPanelWrapper/SettingsButton.js +45 -0
- package/dist/splash/panels/DefaultPanelWrapper/SettingsButton.js.map +1 -0
- package/dist/splash/panels/DefaultPanelWrapper/defaultPanelWrapperStyles.js +103 -0
- package/dist/splash/panels/DefaultPanelWrapper/defaultPanelWrapperStyles.js.map +1 -0
- package/dist/splash/panels/DefaultPanelWrapper/index.js +57 -0
- package/dist/splash/panels/DefaultPanelWrapper/index.js.map +1 -0
- package/dist/splash/panels/LandingPagePanelWrapper.d.ts +6 -0
- package/dist/splash/panels/LandingPagePanelWrapper.d.ts.map +1 -0
- package/dist/splash/panels/LandingPagePanelWrapper.js +52 -0
- package/dist/splash/panels/LandingPagePanelWrapper.js.map +1 -0
- package/dist/splash/panels/PanelContext/PanelFooter.js +70 -0
- package/dist/splash/panels/PanelContext/PanelFooter.js.map +1 -0
- package/dist/splash/panels/PanelContext/index.d.ts +26 -0
- package/dist/splash/panels/PanelContext/index.d.ts.map +1 -0
- package/dist/splash/panels/PanelContext/index.js +73 -0
- package/dist/splash/panels/PanelContext/index.js.map +1 -0
- package/dist/splash/panels/PanelContext/usePanelContextLayout.d.ts +6 -0
- package/dist/splash/panels/PanelContext/usePanelContextLayout.d.ts.map +1 -0
- package/dist/splash/panels/PanelContext/usePanelContextLayout.js +38 -0
- package/dist/splash/panels/PanelContext/usePanelContextLayout.js.map +1 -0
- package/dist/splash/panels/PanelContext/usePanelFooter.js +38 -0
- package/dist/splash/panels/PanelContext/usePanelFooter.js.map +1 -0
- package/dist/splash/panels/PanelContext/useYieldPanelIsReady.d.ts +45 -0
- package/dist/splash/panels/PanelContext/useYieldPanelIsReady.d.ts.map +1 -0
- package/dist/splash/panels/PanelContext/useYieldPanelIsReady.js +12 -0
- package/dist/splash/panels/PanelContext/useYieldPanelIsReady.js.map +1 -0
- package/dist/splash/panels/PanelErrorBoundary.js +53 -0
- package/dist/splash/panels/PanelErrorBoundary.js.map +1 -0
- package/dist/splash/panels/PanelIdentifier.d.ts +16 -0
- package/dist/splash/panels/PanelIdentifier.d.ts.map +1 -0
- package/dist/splash/panels/PanelIdentifier.js +19 -0
- package/dist/splash/panels/PanelIdentifier.js.map +1 -0
- package/dist/splash/util/DragAndDrop.js +243 -0
- package/dist/splash/util/DragAndDrop.js.map +1 -0
- package/dist/splash/util/getColumnAreas.js +19 -0
- package/dist/splash/util/getColumnAreas.js.map +1 -0
- package/dist/splash/util/isCursorInArea.js +13 -0
- package/dist/splash/util/isCursorInArea.js.map +1 -0
- package/dist/types.d.ts +27 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/util.d.ts +8 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +30 -0
- package/dist/util.js.map +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { EventEmitter, useMount } from '@apia/util';
|
|
2
|
+
import { useRef } from 'react';
|
|
3
|
+
import { shallowEqual } from 'react-redux';
|
|
4
|
+
|
|
5
|
+
var __defProp = Object.defineProperty;
|
|
6
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
7
|
+
var __publicField = (obj, key, value) => {
|
|
8
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
9
|
+
return value;
|
|
10
|
+
};
|
|
11
|
+
var __accessCheck = (obj, member, msg) => {
|
|
12
|
+
if (!member.has(obj))
|
|
13
|
+
throw TypeError("Cannot " + msg);
|
|
14
|
+
};
|
|
15
|
+
var __privateGet = (obj, member, getter) => {
|
|
16
|
+
__accessCheck(obj, member, "read from private field");
|
|
17
|
+
return getter ? getter.call(obj) : member.get(obj);
|
|
18
|
+
};
|
|
19
|
+
var __privateAdd = (obj, member, value) => {
|
|
20
|
+
if (member.has(obj))
|
|
21
|
+
throw TypeError("Cannot add the same private member more than once");
|
|
22
|
+
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
23
|
+
};
|
|
24
|
+
var _matchLocation, _evalRoutes;
|
|
25
|
+
class Router extends EventEmitter {
|
|
26
|
+
constructor() {
|
|
27
|
+
super();
|
|
28
|
+
__privateAdd(this, _matchLocation, (regexp) => {
|
|
29
|
+
const path = "/" + (window.location.href.replaceAll("%20", " ").match(new RegExp(`${window.CONTEXT}/?([^?]+)?(?:\\?.*)?`))?.[1] ?? "");
|
|
30
|
+
return path.match(regexp);
|
|
31
|
+
});
|
|
32
|
+
__privateAdd(this, _evalRoutes, (routes) => {
|
|
33
|
+
for (let i = 0; i < routes.length; i++) {
|
|
34
|
+
const match = __privateGet(this, _matchLocation).call(this, routes[i].route);
|
|
35
|
+
if (match) {
|
|
36
|
+
return { route: routes[i], match };
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
/**
|
|
41
|
+
* Se evaluarán las rutas en orden y la primera en coincidir será tomada como
|
|
42
|
+
* resultado del cambio de ruta.
|
|
43
|
+
*
|
|
44
|
+
* Las rutas provistas deberán matchear contra el path actual. El path actual
|
|
45
|
+
* es la porción de la ruta luego del dominio y el contexto. Ejemplo:
|
|
46
|
+
*
|
|
47
|
+
* http://localhost/apia => path='/'
|
|
48
|
+
* http://localhost/apia/spa/categories/comidas/1 => path='/spa/categories/comidas/1'
|
|
49
|
+
*/
|
|
50
|
+
__publicField(this, "useSwitch", (routes) => {
|
|
51
|
+
const lastMatch = useRef(null);
|
|
52
|
+
useMount(() => {
|
|
53
|
+
const result = __privateGet(this, _evalRoutes).call(this, routes);
|
|
54
|
+
if (result) {
|
|
55
|
+
result.route.callback(result.match);
|
|
56
|
+
}
|
|
57
|
+
return this.on("newRoute", () => {
|
|
58
|
+
const result2 = __privateGet(this, _evalRoutes).call(this, routes);
|
|
59
|
+
if (result2 && !shallowEqual(result2.match, lastMatch.current)) {
|
|
60
|
+
result2.route.callback(result2.match);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
window.addEventListener("popstate", () => {
|
|
66
|
+
this.emit("newRoute", window.location.href);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
_matchLocation = new WeakMap();
|
|
71
|
+
_evalRoutes = new WeakMap();
|
|
72
|
+
|
|
73
|
+
export { Router };
|
|
74
|
+
//# sourceMappingURL=DashboardRouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashboardRouter.js","sources":["../../src/dashboard/DashboardRouter.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/prefer-for-of */\nimport { EventEmitter, useMount } from '@apia/util';\nimport { useRef } from 'react';\nimport { shallowEqual } from 'react-redux';\n\nexport type TSwitchRoute = {\n /**\n * El callback será llamado si la ruta coincide.\n */\n callback: (result: RegExpMatchArray) => unknown;\n route: RegExp;\n};\n\nexport type TUseSwitch = TSwitchRoute[];\n\nexport class Router extends EventEmitter<{ newRoute: string }> {\n #matchLocation = (regexp: RegExp) => {\n const path =\n '/' +\n (window.location.href\n .replaceAll('%20', ' ')\n .match(new RegExp(`${window.CONTEXT}/?([^?]+)?(?:\\\\?.*)?`))?.[1] ?? '');\n\n return path.match(regexp);\n };\n\n constructor() {\n super();\n\n window.addEventListener('popstate', () => {\n this.emit('newRoute', window.location.href);\n });\n }\n\n #evalRoutes = (routes: TUseSwitch) => {\n for (let i = 0; i < routes.length; i++) {\n const match = this.#matchLocation(routes[i].route);\n if (match) {\n return { route: routes[i], match };\n }\n }\n };\n\n /**\n * Se evaluarán las rutas en orden y la primera en coincidir será tomada como\n * resultado del cambio de ruta.\n *\n * Las rutas provistas deberán matchear contra el path actual. El path actual\n * es la porción de la ruta luego del dominio y el contexto. Ejemplo:\n *\n * http://localhost/apia => path='/'\n * http://localhost/apia/spa/categories/comidas/1 => path='/spa/categories/comidas/1'\n */\n useSwitch = (routes: TUseSwitch) => {\n const lastMatch = useRef<TSwitchRoute | null>(null);\n\n useMount(() => {\n const result = this.#evalRoutes(routes);\n if (result) {\n result.route.callback(result.match);\n }\n\n return this.on('newRoute', () => {\n const result = this.#evalRoutes(routes);\n if (result && !shallowEqual(result.match, lastMatch.current)) {\n result.route.callback(result.match);\n }\n });\n });\n };\n}\n"],"names":["result"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,cAAA,EAAA,WAAA,CAAA;AAeO,MAAM,eAAe,YAAmC,CAAA;AAAA,EAW7D,WAAc,GAAA;AACZ,IAAM,KAAA,EAAA,CAAA;AAXR,IAAA,YAAA,CAAA,IAAA,EAAA,cAAA,EAAiB,CAAC,MAAmB,KAAA;AACnC,MAAA,MAAM,OACJ,GACC,IAAA,MAAA,CAAO,SAAS,IACd,CAAA,UAAA,CAAW,OAAO,GAAG,CAAA,CACrB,MAAM,IAAI,MAAA,CAAO,GAAG,MAAO,CAAA,OAAO,sBAAsB,CAAC,CAAA,GAAI,CAAC,CAAK,IAAA,EAAA,CAAA,CAAA;AAExE,MAAO,OAAA,IAAA,CAAK,MAAM,MAAM,CAAA,CAAA;AAAA,KAC1B,CAAA,CAAA;AAUA,IAAA,YAAA,CAAA,IAAA,EAAA,WAAA,EAAc,CAAC,MAAuB,KAAA;AACpC,MAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,MAAA,CAAO,QAAQ,CAAK,EAAA,EAAA;AACtC,QAAA,MAAM,QAAQ,YAAK,CAAA,IAAA,EAAA,cAAA,CAAA,CAAL,IAAoB,CAAA,IAAA,EAAA,MAAA,CAAO,CAAC,CAAE,CAAA,KAAA,CAAA,CAAA;AAC5C,QAAA,IAAI,KAAO,EAAA;AACT,UAAA,OAAO,EAAE,KAAA,EAAO,MAAO,CAAA,CAAC,GAAG,KAAM,EAAA,CAAA;AAAA,SACnC;AAAA,OACF;AAAA,KACF,CAAA,CAAA;AAYA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,WAAA,EAAY,CAAC,MAAuB,KAAA;AAClC,MAAM,MAAA,SAAA,GAAY,OAA4B,IAAI,CAAA,CAAA;AAElD,MAAA,QAAA,CAAS,MAAM;AACb,QAAM,MAAA,MAAA,GAAS,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,CAAL,IAAiB,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA;AAChC,QAAA,IAAI,MAAQ,EAAA;AACV,UAAO,MAAA,CAAA,KAAA,CAAM,QAAS,CAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AAAA,SACpC;AAEA,QAAO,OAAA,IAAA,CAAK,EAAG,CAAA,UAAA,EAAY,MAAM;AAC/B,UAAMA,MAAAA,OAAAA,GAAS,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,CAAL,IAAiB,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA;AAChC,UAAA,IAAIA,WAAU,CAAC,YAAA,CAAaA,QAAO,KAAO,EAAA,SAAA,CAAU,OAAO,CAAG,EAAA;AAC5D,YAAAA,OAAO,CAAA,KAAA,CAAM,QAASA,CAAAA,OAAAA,CAAO,KAAK,CAAA,CAAA;AAAA,WACpC;AAAA,SACD,CAAA,CAAA;AAAA,OACF,CAAA,CAAA;AAAA,KACH,CAAA,CAAA;AAxCE,IAAO,MAAA,CAAA,gBAAA,CAAiB,YAAY,MAAM;AACxC,MAAA,IAAA,CAAK,IAAK,CAAA,UAAA,EAAY,MAAO,CAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAAA,KAC3C,CAAA,CAAA;AAAA,GACH;AAsCF,CAAA;AAtDE,cAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAkBA,WAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx, Fragment, jsxs } from '@apia/theme/jsx-runtime';
|
|
2
|
+
import { Heading } from '@apia/theme';
|
|
3
|
+
import { usePanelIdentity } from '../common/usePanelIdentity.js';
|
|
4
|
+
|
|
5
|
+
const PanelNotFound = () => {
|
|
6
|
+
const props = usePanelIdentity();
|
|
7
|
+
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(Heading, { children: [
|
|
8
|
+
"Panel not found: ",
|
|
9
|
+
props.panelType
|
|
10
|
+
] }) });
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export { PanelNotFound };
|
|
14
|
+
//# sourceMappingURL=PanelNotFound.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PanelNotFound.js","sources":["../../src/dashboard/PanelNotFound.tsx"],"sourcesContent":["import { Heading } from '@apia/theme';\nimport { usePanelIdentity } from '../common';\n\nexport const PanelNotFound = () => {\n const props = usePanelIdentity();\n\n return (\n <>\n <Heading>Panel not found: {props.panelType}</Heading>\n </>\n );\n};\n"],"names":[],"mappings":";;;;AAGO,MAAM,gBAAgB,MAAM;AACjC,EAAA,MAAM,QAAQ,gBAAiB,EAAA,CAAA;AAE/B,EACE,uBAAA,GAAA,CAAA,QAAA,EAAA,EACE,+BAAC,OAAQ,EAAA,EAAA,QAAA,EAAA;AAAA,IAAA,mBAAA;AAAA,IAAkB,KAAM,CAAA,SAAA;AAAA,GAAA,EAAU,CAC7C,EAAA,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ReactPortal } from 'react';
|
|
3
|
+
import { EventEmitter } from '@apia/util';
|
|
4
|
+
import { PanelContainer } from '../types.js';
|
|
5
|
+
import { DashboardPanelsBootstraper } from './DashboardPanelsBootstraper.js';
|
|
6
|
+
import { DashboardPanel } from './DashboardPanel.js';
|
|
7
|
+
import { Router } from './DashboardRouter.js';
|
|
8
|
+
|
|
9
|
+
declare class Dashboard extends EventEmitter<{
|
|
10
|
+
changeScene: string;
|
|
11
|
+
}> {
|
|
12
|
+
#private;
|
|
13
|
+
urlContext: string;
|
|
14
|
+
bootstrapper: DashboardPanelsBootstraper;
|
|
15
|
+
panels: Record<string, DashboardPanel> | null;
|
|
16
|
+
router: Router;
|
|
17
|
+
scenes: Record<string, string[]>;
|
|
18
|
+
getPanel: (id: string) => DashboardPanel;
|
|
19
|
+
getPanelByName: (name: string) => DashboardPanel | undefined;
|
|
20
|
+
constructor(panelsContainer: PanelContainer | undefined, urlContext: string);
|
|
21
|
+
loadScene: (scene?: string) => ReactPortal[];
|
|
22
|
+
Component: () => react.JSX.Element;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export { Dashboard };
|
|
26
|
+
//# sourceMappingURL=dashboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { jsx } from '@apia/theme/jsx-runtime';
|
|
2
|
+
import { EventEmitter, useMount } from '@apia/util';
|
|
3
|
+
import { useState, useDeferredValue } from 'react';
|
|
4
|
+
import { DefaultPanelWrapper } from '../splash/panels/DefaultPanelWrapper/index.js';
|
|
5
|
+
import { DashboardPanelsBootstraper } from './DashboardPanelsBootstraper.js';
|
|
6
|
+
import { DashboardContext } from './DashboardContext.js';
|
|
7
|
+
import { DashboardPanel } from './DashboardPanel.js';
|
|
8
|
+
import { DragAndDrop } from '../splash/util/DragAndDrop.js';
|
|
9
|
+
import { eventsController } from '../eventsController/eventsController.js';
|
|
10
|
+
import { Router } from './DashboardRouter.js';
|
|
11
|
+
|
|
12
|
+
var __defProp = Object.defineProperty;
|
|
13
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
14
|
+
var __publicField = (obj, key, value) => {
|
|
15
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
16
|
+
return value;
|
|
17
|
+
};
|
|
18
|
+
var __accessCheck = (obj, member, msg) => {
|
|
19
|
+
if (!member.has(obj))
|
|
20
|
+
throw TypeError("Cannot " + msg);
|
|
21
|
+
};
|
|
22
|
+
var __privateGet = (obj, member, getter) => {
|
|
23
|
+
__accessCheck(obj, member, "read from private field");
|
|
24
|
+
return getter ? getter.call(obj) : member.get(obj);
|
|
25
|
+
};
|
|
26
|
+
var __privateAdd = (obj, member, value) => {
|
|
27
|
+
if (member.has(obj))
|
|
28
|
+
throw TypeError("Cannot add the same private member more than once");
|
|
29
|
+
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
30
|
+
};
|
|
31
|
+
var __privateSet = (obj, member, value, setter) => {
|
|
32
|
+
__accessCheck(obj, member, "write to private field");
|
|
33
|
+
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
34
|
+
return value;
|
|
35
|
+
};
|
|
36
|
+
var _currentScene, _dragAndDrop, _PanelContainer, _panelsRenderedPortals, _loadPanels, _Context, _suscribeToEvents, _usePanelsList, _SceneRenderer;
|
|
37
|
+
class Dashboard extends EventEmitter {
|
|
38
|
+
constructor(panelsContainer = DefaultPanelWrapper, urlContext) {
|
|
39
|
+
super();
|
|
40
|
+
this.urlContext = urlContext;
|
|
41
|
+
__publicField(this, "bootstrapper", new DashboardPanelsBootstraper(this));
|
|
42
|
+
__publicField(this, "panels", null);
|
|
43
|
+
__publicField(this, "router", new Router());
|
|
44
|
+
__publicField(this, "scenes", {});
|
|
45
|
+
__privateAdd(this, _currentScene, "/");
|
|
46
|
+
__privateAdd(this, _dragAndDrop, new DragAndDrop());
|
|
47
|
+
__privateAdd(this, _PanelContainer, DefaultPanelWrapper);
|
|
48
|
+
__privateAdd(this, _panelsRenderedPortals, []);
|
|
49
|
+
__publicField(this, "getPanel", (id) => this.panels?.[id]);
|
|
50
|
+
__publicField(this, "getPanelByName", (name) => Object.values(this.panels ?? {}).find(
|
|
51
|
+
(current) => current.props.name === name
|
|
52
|
+
));
|
|
53
|
+
__privateAdd(this, _loadPanels, () => {
|
|
54
|
+
this.panels = {};
|
|
55
|
+
const panelsElements = document.querySelectorAll(
|
|
56
|
+
"[data-panel]"
|
|
57
|
+
);
|
|
58
|
+
Array.from(panelsElements).forEach((current) => {
|
|
59
|
+
const panel = new DashboardPanel({
|
|
60
|
+
dashboard: this,
|
|
61
|
+
PanelContainer: __privateGet(this, _PanelContainer),
|
|
62
|
+
id: current.dataset.id
|
|
63
|
+
});
|
|
64
|
+
let panelPath = panel.getParameters().PAR_SPA_PATH || "*";
|
|
65
|
+
if (panelPath === "/")
|
|
66
|
+
panelPath = `/${this.urlContext}`;
|
|
67
|
+
if (panelPath !== "*")
|
|
68
|
+
panel.hide();
|
|
69
|
+
else
|
|
70
|
+
panel.show();
|
|
71
|
+
const paths = panelPath.split(",");
|
|
72
|
+
paths.forEach((currentPath) => {
|
|
73
|
+
if (!this.scenes[currentPath])
|
|
74
|
+
this.scenes[currentPath] = [];
|
|
75
|
+
this.scenes[currentPath].push(panel.props.id);
|
|
76
|
+
});
|
|
77
|
+
this.panels[panel.props.id] = panel;
|
|
78
|
+
__privateGet(this, _panelsRenderedPortals).push(panel.portal);
|
|
79
|
+
});
|
|
80
|
+
__privateGet(this, _dragAndDrop).bootstrap();
|
|
81
|
+
});
|
|
82
|
+
__privateAdd(this, _Context, ({ children }) => {
|
|
83
|
+
return /* @__PURE__ */ jsx(DashboardContext.Provider, { value: this, children });
|
|
84
|
+
});
|
|
85
|
+
__privateAdd(this, _suscribeToEvents, () => {
|
|
86
|
+
eventsController.onEvent({ eventType: "dashboard__focus" }, () => {
|
|
87
|
+
Object.values(this.panels ?? {}).forEach((current) => {
|
|
88
|
+
if (current.props.refreshOnHome) {
|
|
89
|
+
void current.refresh();
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
__privateAdd(this, _usePanelsList, () => {
|
|
95
|
+
const [panels, setPanels] = useState(null);
|
|
96
|
+
const deferredPanels = useDeferredValue(panels);
|
|
97
|
+
useMount(() => {
|
|
98
|
+
this.loadScene();
|
|
99
|
+
setPanels(__privateGet(this, _panelsRenderedPortals));
|
|
100
|
+
});
|
|
101
|
+
this.router.useSwitch([
|
|
102
|
+
{
|
|
103
|
+
route: new RegExp(`(?:/spa)?/(\\w+)`),
|
|
104
|
+
callback: (result) => {
|
|
105
|
+
console.log("Dashboard", { scene: result[1] });
|
|
106
|
+
this.loadScene(result[1]);
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
route: new RegExp(`/`),
|
|
111
|
+
callback: () => {
|
|
112
|
+
console.log("Dashboard", { noScene: "/" });
|
|
113
|
+
this.loadScene("/");
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
]);
|
|
117
|
+
return deferredPanels;
|
|
118
|
+
});
|
|
119
|
+
__privateAdd(this, _SceneRenderer, () => {
|
|
120
|
+
const Context = __privateGet(this, _Context);
|
|
121
|
+
const panels = __privateGet(this, _usePanelsList).call(this);
|
|
122
|
+
return /* @__PURE__ */ jsx(Context, { children: panels });
|
|
123
|
+
});
|
|
124
|
+
__publicField(this, "loadScene", (scene = __privateGet(this, _currentScene)) => {
|
|
125
|
+
let actualScene = scene;
|
|
126
|
+
if (!actualScene.startsWith("/"))
|
|
127
|
+
actualScene = `/${actualScene}`;
|
|
128
|
+
if (!this.panels)
|
|
129
|
+
__privateGet(this, _loadPanels).call(this);
|
|
130
|
+
if (!this.scenes[actualScene])
|
|
131
|
+
this.scenes[actualScene] = [];
|
|
132
|
+
this.scenes[__privateGet(this, _currentScene)].forEach((scenePanelId) => {
|
|
133
|
+
if (!this.scenes[actualScene].includes(scenePanelId))
|
|
134
|
+
this.panels?.[scenePanelId]?.hide();
|
|
135
|
+
});
|
|
136
|
+
this.scenes[actualScene].forEach((scenePanelIds) => {
|
|
137
|
+
const panel = this.panels?.[scenePanelIds];
|
|
138
|
+
if (panel) {
|
|
139
|
+
panel.show();
|
|
140
|
+
if (panel.hasInited && panel.props.refreshOnStart)
|
|
141
|
+
void panel.refresh();
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
__privateSet(this, _currentScene, actualScene);
|
|
145
|
+
return __privateGet(this, _panelsRenderedPortals);
|
|
146
|
+
});
|
|
147
|
+
__publicField(this, "Component", () => {
|
|
148
|
+
const R = __privateGet(this, _SceneRenderer);
|
|
149
|
+
return /* @__PURE__ */ jsx(R, {});
|
|
150
|
+
});
|
|
151
|
+
__privateSet(this, _currentScene, `/`);
|
|
152
|
+
__privateSet(this, _PanelContainer, panelsContainer ?? __privateGet(this, _PanelContainer));
|
|
153
|
+
__privateGet(this, _suscribeToEvents).call(this);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
_currentScene = new WeakMap();
|
|
157
|
+
_dragAndDrop = new WeakMap();
|
|
158
|
+
_PanelContainer = new WeakMap();
|
|
159
|
+
_panelsRenderedPortals = new WeakMap();
|
|
160
|
+
_loadPanels = new WeakMap();
|
|
161
|
+
_Context = new WeakMap();
|
|
162
|
+
_suscribeToEvents = new WeakMap();
|
|
163
|
+
_usePanelsList = new WeakMap();
|
|
164
|
+
_SceneRenderer = new WeakMap();
|
|
165
|
+
|
|
166
|
+
export { Dashboard };
|
|
167
|
+
//# sourceMappingURL=dashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.js","sources":["../../src/dashboard/dashboard.tsx"],"sourcesContent":["import { EventEmitter, useMount } from '@apia/util';\nimport { ReactNode, ReactPortal, useDeferredValue, useState } from 'react';\nimport { PanelContainer } from '../types';\nimport { DefaultPanelWrapper } from '../splash/panels/DefaultPanelWrapper';\nimport { DashboardPanelsBootstraper } from './DashboardPanelsBootstraper';\nimport { DashboardContext } from './DashboardContext';\nimport { DashboardPanel } from './DashboardPanel';\nimport { DragAndDrop } from '../splash/util/DragAndDrop';\nimport { eventsController } from '../eventsController';\nimport { Router } from './DashboardRouter';\n\nexport class Dashboard extends EventEmitter<{\n changeScene: string;\n}> {\n bootstrapper = new DashboardPanelsBootstraper(this);\n panels: Record<string, DashboardPanel> | null = null;\n router = new Router();\n scenes: Record<string, string[]> = {};\n\n #currentScene = '/';\n #dragAndDrop = new DragAndDrop();\n #PanelContainer: PanelContainer = DefaultPanelWrapper;\n #panelsRenderedPortals: ReactPortal[] = [];\n\n getPanel = (id: string) => this.panels?.[id] as DashboardPanel;\n getPanelByName = (name: string) =>\n Object.values(this.panels ?? {}).find(\n (current) => current.props.name === name,\n );\n\n #loadPanels = () => {\n this.panels = {};\n\n const panelsElements = document.querySelectorAll(\n '[data-panel]',\n ) as NodeListOf<HTMLElement>;\n\n Array.from(panelsElements).forEach((current) => {\n const panel = new DashboardPanel({\n dashboard: this,\n PanelContainer: this.#PanelContainer,\n id: current.dataset.id as string,\n });\n\n let panelPath = (panel.getParameters().PAR_SPA_PATH as string) || '*';\n if (panelPath === '/') panelPath = `/${this.urlContext}`;\n if (panelPath !== '*') panel.hide();\n else panel.show();\n\n const paths = panelPath.split(',');\n paths.forEach((currentPath) => {\n if (!this.scenes[currentPath]) this.scenes[currentPath] = [];\n this.scenes[currentPath].push(panel.props.id);\n });\n\n (this.panels as Record<string, DashboardPanel>)[panel.props.id] = panel;\n\n this.#panelsRenderedPortals.push(panel.portal);\n });\n\n this.#dragAndDrop.bootstrap();\n };\n\n #Context = ({ children }: { children: ReactNode }) => {\n return (\n <DashboardContext.Provider value={this}>\n {children}\n </DashboardContext.Provider>\n );\n };\n\n #suscribeToEvents = () => {\n eventsController.onEvent({ eventType: 'dashboard__focus' }, () => {\n Object.values(this.panels ?? {}).forEach((current) => {\n if (current.props.refreshOnHome) {\n void current.refresh();\n }\n });\n });\n };\n #usePanelsList = () => {\n const [panels, setPanels] = useState<ReactNode>(null);\n const deferredPanels = useDeferredValue(panels);\n\n useMount(() => {\n this.loadScene();\n setPanels(this.#panelsRenderedPortals);\n });\n\n this.router.useSwitch([\n {\n route: new RegExp(`(?:/spa)?/(\\\\w+)`),\n callback: (result) => {\n console.log('Dashboard', { scene: result[1] });\n this.loadScene(result[1]);\n },\n },\n {\n route: new RegExp(`/`),\n callback: () => {\n console.log('Dashboard', { noScene: '/' });\n this.loadScene('/');\n },\n },\n ]);\n\n return deferredPanels;\n };\n\n constructor(\n panelsContainer: PanelContainer = DefaultPanelWrapper,\n public urlContext: string,\n ) {\n super();\n\n this.#currentScene = `/`;\n this.#PanelContainer = panelsContainer ?? this.#PanelContainer;\n this.#suscribeToEvents();\n }\n\n #SceneRenderer = () => {\n const Context = this.#Context;\n const panels = this.#usePanelsList();\n\n return <Context>{panels}</Context>;\n };\n\n loadScene = (scene: string = this.#currentScene): ReactPortal[] => {\n let actualScene = scene;\n if (!actualScene.startsWith('/')) actualScene = `/${actualScene}`;\n\n if (!this.panels) this.#loadPanels();\n if (!this.scenes[actualScene]) this.scenes[actualScene] = [];\n\n this.scenes[this.#currentScene].forEach((scenePanelId) => {\n if (!this.scenes[actualScene].includes(scenePanelId))\n this.panels?.[scenePanelId]?.hide();\n });\n this.scenes[actualScene].forEach((scenePanelIds) => {\n const panel = this.panels?.[scenePanelIds];\n if (panel) {\n panel.show();\n if (panel.hasInited && panel.props.refreshOnStart) void panel.refresh();\n }\n });\n\n this.#currentScene = actualScene;\n\n return this.#panelsRenderedPortals;\n };\n\n Component = () => {\n const R = this.#SceneRenderer;\n return <R />;\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TPanelEventRegister, TPanelIdentifier, TPanelEventIdentifier, TPanelEventCallback } from './types.js';
|
|
2
|
+
|
|
3
|
+
declare const eventsController: {
|
|
4
|
+
callbacks: TPanelEventRegister<any>[];
|
|
5
|
+
broadcast(eventType: string, payload: any): void;
|
|
6
|
+
fireEvent(origin: TPanelIdentifier, eventType: string, payload: any): void;
|
|
7
|
+
onEvent<PayloadEvent>(distinction: Partial<TPanelEventIdentifier>, callback: TPanelEventCallback<PayloadEvent>): () => void;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export { eventsController };
|
|
11
|
+
//# sourceMappingURL=eventsController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventsController.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
+
var __publicField = (obj, key, value) => {
|
|
4
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
|
+
return value;
|
|
6
|
+
};
|
|
7
|
+
function identifierAfitsOnB(a, b) {
|
|
8
|
+
for (const key of Object.keys(a)) {
|
|
9
|
+
if (a[key] !== b[key])
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
const eventsController = new class EventsController {
|
|
15
|
+
constructor() {
|
|
16
|
+
__publicField(this, "callbacks", []);
|
|
17
|
+
}
|
|
18
|
+
broadcast(eventType, payload) {
|
|
19
|
+
const origin = {
|
|
20
|
+
panelId: "broadcast",
|
|
21
|
+
panelName: "broadcast",
|
|
22
|
+
panelType: "broadcast",
|
|
23
|
+
panelTitle: "broadcast"
|
|
24
|
+
};
|
|
25
|
+
this.callbacks.forEach(({ callback, ...current }) => {
|
|
26
|
+
if (eventType === current.eventType) {
|
|
27
|
+
callback({ ...origin, eventType, payload });
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
fireEvent(origin, eventType, payload) {
|
|
32
|
+
if ([origin.panelId, origin.panelName, origin.panelType].includes("*"))
|
|
33
|
+
throw new Error(
|
|
34
|
+
"Broadcast is not allowed through fireEvent, use broadcast instead"
|
|
35
|
+
);
|
|
36
|
+
this.callbacks.forEach(({ callback, ...current }) => {
|
|
37
|
+
if (identifierAfitsOnB(current, { ...origin, eventType })) {
|
|
38
|
+
callback({ ...origin, eventType, payload });
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
onEvent(distinction, callback) {
|
|
43
|
+
const register = {
|
|
44
|
+
...distinction,
|
|
45
|
+
callback
|
|
46
|
+
};
|
|
47
|
+
this.callbacks.push(register);
|
|
48
|
+
return () => {
|
|
49
|
+
this.callbacks = this.callbacks.filter((current) => {
|
|
50
|
+
return current !== register;
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}();
|
|
55
|
+
|
|
56
|
+
export { eventsController };
|
|
57
|
+
//# sourceMappingURL=eventsController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventsController.js","sources":["../../src/eventsController/eventsController.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n TPanelEventCallback,\n TPanelEventIdentifier,\n TPanelEventRegister,\n TPanelIdentifier,\n} from './types';\n\nfunction identifierAfitsOnB(\n a: Partial<TPanelEventIdentifier>,\n b: TPanelEventIdentifier,\n) {\n // eslint-disable-next-line no-restricted-syntax, @typescript-eslint/no-for-in-array\n for (const key of Object.keys(a)) {\n if (\n a[key as keyof Partial<TPanelIdentifier>] !==\n b[key as keyof TPanelIdentifier]\n )\n return false;\n }\n\n return true;\n}\n\nexport const eventsController = new (class EventsController {\n callbacks: TPanelEventRegister<any>[] = [];\n\n broadcast(eventType: string, payload: any) {\n const origin: TPanelIdentifier = {\n panelId: 'broadcast',\n panelName: 'broadcast',\n panelType: 'broadcast',\n panelTitle: 'broadcast',\n };\n\n this.callbacks.forEach(({ callback, ...current }) => {\n if (eventType === current.eventType) {\n callback({ ...origin, eventType, payload });\n }\n });\n }\n\n fireEvent(origin: TPanelIdentifier, eventType: string, payload: any) {\n if ([origin.panelId, origin.panelName, origin.panelType].includes('*'))\n throw new Error(\n 'Broadcast is not allowed through fireEvent, use broadcast instead',\n );\n\n this.callbacks.forEach(({ callback, ...current }) => {\n if (identifierAfitsOnB(current, { ...origin, eventType })) {\n callback({ ...origin, eventType, payload });\n }\n });\n }\n\n onEvent<PayloadEvent>(\n distinction: Partial<TPanelEventIdentifier>,\n callback: TPanelEventCallback<PayloadEvent>,\n ) {\n const register: TPanelEventRegister<PayloadEvent> = {\n ...distinction,\n callback,\n };\n\n this.callbacks.push(register);\n\n return () => {\n this.callbacks = this.callbacks.filter((current) => {\n return current !== register;\n });\n };\n }\n})();\n"],"names":[],"mappings":";;;;;;AASA,SAAS,kBAAA,CACP,GACA,CACA,EAAA;AAEA,EAAA,KAAA,MAAW,GAAO,IAAA,MAAA,CAAO,IAAK,CAAA,CAAC,CAAG,EAAA;AAChC,IAAA,IACE,CAAE,CAAA,GAAsC,CACxC,KAAA,CAAA,CAAE,GAA6B,CAAA;AAE/B,MAAO,OAAA,KAAA,CAAA;AAAA,GACX;AAEA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAEa,MAAA,gBAAA,GAAmB,IAAK,MAAM,gBAAiB,CAAA;AAAA,EAAvB,WAAA,GAAA;AACnC,IAAA,aAAA,CAAA,IAAA,EAAA,WAAA,EAAwC,EAAC,CAAA,CAAA;AAAA,GAAA;AAAA,EAEzC,SAAA,CAAU,WAAmB,OAAc,EAAA;AACzC,IAAA,MAAM,MAA2B,GAAA;AAAA,MAC/B,OAAS,EAAA,WAAA;AAAA,MACT,SAAW,EAAA,WAAA;AAAA,MACX,SAAW,EAAA,WAAA;AAAA,MACX,UAAY,EAAA,WAAA;AAAA,KACd,CAAA;AAEA,IAAA,IAAA,CAAK,UAAU,OAAQ,CAAA,CAAC,EAAE,QAAU,EAAA,GAAG,SAAc,KAAA;AACnD,MAAI,IAAA,SAAA,KAAc,QAAQ,SAAW,EAAA;AACnC,QAAA,QAAA,CAAS,EAAE,GAAG,MAAQ,EAAA,SAAA,EAAW,SAAS,CAAA,CAAA;AAAA,OAC5C;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,SAAA,CAAU,MAA0B,EAAA,SAAA,EAAmB,OAAc,EAAA;AACnE,IAAI,IAAA,CAAC,OAAO,OAAS,EAAA,MAAA,CAAO,WAAW,MAAO,CAAA,SAAS,CAAE,CAAA,QAAA,CAAS,GAAG,CAAA;AACnE,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,mEAAA;AAAA,OACF,CAAA;AAEF,IAAA,IAAA,CAAK,UAAU,OAAQ,CAAA,CAAC,EAAE,QAAU,EAAA,GAAG,SAAc,KAAA;AACnD,MAAA,IAAI,mBAAmB,OAAS,EAAA,EAAE,GAAG,MAAQ,EAAA,SAAA,EAAW,CAAG,EAAA;AACzD,QAAA,QAAA,CAAS,EAAE,GAAG,MAAQ,EAAA,SAAA,EAAW,SAAS,CAAA,CAAA;AAAA,OAC5C;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,OAAA,CACE,aACA,QACA,EAAA;AACA,IAAA,MAAM,QAA8C,GAAA;AAAA,MAClD,GAAG,WAAA;AAAA,MACH,QAAA;AAAA,KACF,CAAA;AAEA,IAAK,IAAA,CAAA,SAAA,CAAU,KAAK,QAAQ,CAAA,CAAA;AAE5B,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,SAAY,GAAA,IAAA,CAAK,SAAU,CAAA,MAAA,CAAO,CAAC,OAAY,KAAA;AAClD,QAAA,OAAO,OAAY,KAAA,QAAA,CAAA;AAAA,OACpB,CAAA,CAAA;AAAA,KACH,CAAA;AAAA,GACF;AACF,CAAG;;;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { TPanelId, TPanelName, TPanelType } from '../types.js';
|
|
2
|
+
|
|
3
|
+
interface TPanelIdentifier {
|
|
4
|
+
panelId: TPanelId;
|
|
5
|
+
panelName: TPanelName;
|
|
6
|
+
panelTitle: string;
|
|
7
|
+
panelType: TPanelType;
|
|
8
|
+
}
|
|
9
|
+
type TPanelEventIdentifier = TPanelIdentifier & {
|
|
10
|
+
eventType: string;
|
|
11
|
+
};
|
|
12
|
+
type TPanelEvent<PayloadEvent = unknown> = TPanelEventIdentifier & {
|
|
13
|
+
payload: PayloadEvent;
|
|
14
|
+
};
|
|
15
|
+
type TPanelEventCallback<PayloadEvent> = (event: TPanelEvent<PayloadEvent>) => unknown;
|
|
16
|
+
type TPanelEventRegister<PayloadEvent> = {
|
|
17
|
+
callback: TPanelEventCallback<PayloadEvent>;
|
|
18
|
+
} & Partial<TPanelEventIdentifier>;
|
|
19
|
+
|
|
20
|
+
export type { TPanelEvent, TPanelEventCallback, TPanelEventIdentifier, TPanelEventRegister, TPanelIdentifier };
|
|
21
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Este hook devuelve un método que puede ser llamado para emitir un evento en
|
|
3
|
+
* el panel desde el cual es llamado. Los eventos de panel son emitidos con id
|
|
4
|
+
* de panel, tipo de panel, nombre de panel y tipo de evento y las suscripciones
|
|
5
|
+
* pueden ser realizadas a un conjunto arbitrario de estos identificadores.
|
|
6
|
+
*
|
|
7
|
+
* El segundo parámetro del método fireEvent devuelto es el payload, que puede
|
|
8
|
+
* ser de cualquier tipo.
|
|
9
|
+
*/
|
|
10
|
+
declare function usePanelFireEvent(): (eventType: string, payload: any) => void;
|
|
11
|
+
|
|
12
|
+
export { usePanelFireEvent };
|
|
13
|
+
//# sourceMappingURL=usePanelFireEvent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePanelFireEvent.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
import { eventsController } from './eventsController.js';
|
|
3
|
+
import { usePanelIdentity } from '../common/usePanelIdentity.js';
|
|
4
|
+
|
|
5
|
+
function usePanelFireEvent() {
|
|
6
|
+
const { panelId, panelName, panelType, panelTitle } = usePanelIdentity();
|
|
7
|
+
const fireEvent = useCallback(
|
|
8
|
+
(eventType, payload) => {
|
|
9
|
+
eventsController.fireEvent(
|
|
10
|
+
{ panelId, panelName, panelType, panelTitle },
|
|
11
|
+
eventType,
|
|
12
|
+
payload
|
|
13
|
+
);
|
|
14
|
+
},
|
|
15
|
+
[panelId, panelName, panelType, panelTitle]
|
|
16
|
+
);
|
|
17
|
+
return fireEvent;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { usePanelFireEvent };
|
|
21
|
+
//# sourceMappingURL=usePanelFireEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePanelFireEvent.js","sources":["../../src/eventsController/usePanelFireEvent.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { useCallback } from 'react';\nimport { eventsController } from './eventsController';\nimport { usePanelIdentity } from '../common/usePanelIdentity';\n\n/**\n * Este hook devuelve un método que puede ser llamado para emitir un evento en\n * el panel desde el cual es llamado. Los eventos de panel son emitidos con id\n * de panel, tipo de panel, nombre de panel y tipo de evento y las suscripciones\n * pueden ser realizadas a un conjunto arbitrario de estos identificadores.\n *\n * El segundo parámetro del método fireEvent devuelto es el payload, que puede\n * ser de cualquier tipo.\n */\nexport function usePanelFireEvent() {\n const { panelId, panelName, panelType, panelTitle } = usePanelIdentity();\n\n const fireEvent = useCallback(\n (eventType: string, payload: any) => {\n eventsController.fireEvent(\n { panelId, panelName, panelType, panelTitle },\n eventType,\n payload,\n );\n },\n [panelId, panelName, panelType, panelTitle],\n );\n\n return fireEvent;\n}\n"],"names":[],"mappings":";;;;AAeO,SAAS,iBAAoB,GAAA;AAClC,EAAA,MAAM,EAAE,OAAS,EAAA,SAAA,EAAW,SAAW,EAAA,UAAA,KAAe,gBAAiB,EAAA,CAAA;AAEvE,EAAA,MAAM,SAAY,GAAA,WAAA;AAAA,IAChB,CAAC,WAAmB,OAAiB,KAAA;AACnC,MAAiB,gBAAA,CAAA,SAAA;AAAA,QACf,EAAE,OAAA,EAAS,SAAW,EAAA,SAAA,EAAW,UAAW,EAAA;AAAA,QAC5C,SAAA;AAAA,QACA,OAAA;AAAA,OACF,CAAA;AAAA,KACF;AAAA,IACA,CAAC,OAAA,EAAS,SAAW,EAAA,SAAA,EAAW,UAAU,CAAA;AAAA,GAC5C,CAAA;AAEA,EAAO,OAAA,SAAA,CAAA;AACT;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { TPanelEventIdentifier, TPanelEventCallback } from './types.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Este hook permite realizar suscripciones a eventos de paneles. Deberá ser
|
|
5
|
+
* llamado una vez por cada suscripción que desee hacerse dentro de un panel y
|
|
6
|
+
* no se deberán ejecutar acciones para romper las suscripciones hechas, ya que
|
|
7
|
+
* este hook maneja esa lógica de forma automática.
|
|
8
|
+
*/
|
|
9
|
+
declare function usePanelOnEvent<PayloadEvent>(distinction: Partial<TPanelEventIdentifier>, callback: TPanelEventCallback<PayloadEvent>): void;
|
|
10
|
+
|
|
11
|
+
export { usePanelOnEvent };
|
|
12
|
+
//# sourceMappingURL=usePanelOnEvent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePanelOnEvent.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import { eventsController } from './eventsController.js';
|
|
3
|
+
|
|
4
|
+
function usePanelOnEvent(distinction, callback) {
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
const unsuscriber = eventsController.onEvent(distinction, callback);
|
|
7
|
+
return () => {
|
|
8
|
+
unsuscriber();
|
|
9
|
+
};
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export { usePanelOnEvent };
|
|
14
|
+
//# sourceMappingURL=usePanelOnEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePanelOnEvent.js","sources":["../../src/eventsController/usePanelOnEvent.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { eventsController } from './eventsController';\nimport { TPanelEventIdentifier, TPanelEventCallback } from './types';\n\n/**\n * Este hook permite realizar suscripciones a eventos de paneles. Deberá ser\n * llamado una vez por cada suscripción que desee hacerse dentro de un panel y\n * no se deberán ejecutar acciones para romper las suscripciones hechas, ya que\n * este hook maneja esa lógica de forma automática.\n */\nexport function usePanelOnEvent<PayloadEvent>(\n distinction: Partial<TPanelEventIdentifier>,\n callback: TPanelEventCallback<PayloadEvent>,\n) {\n useEffect(() => {\n const unsuscriber = eventsController.onEvent(distinction, callback);\n\n return () => {\n unsuscriber();\n };\n });\n}\n"],"names":[],"mappings":";;;AAUgB,SAAA,eAAA,CACd,aACA,QACA,EAAA;AACA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,WAAc,GAAA,gBAAA,CAAiB,OAAQ,CAAA,WAAA,EAAa,QAAQ,CAAA,CAAA;AAElE,IAAA,OAAO,MAAM;AACX,MAAY,WAAA,EAAA,CAAA;AAAA,KACd,CAAA;AAAA,GACD,CAAA,CAAA;AACH;;;;"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export { usePanelPosition } from './position/usePanelPosition.js';
|
|
2
|
+
export { LandingPagePanelWrapper } from './splash/panels/LandingPagePanelWrapper.js';
|
|
3
|
+
export { PanelIdentifier, PanelIdentifierContext } from './splash/panels/PanelIdentifier.js';
|
|
4
|
+
export { TPanelContext, usePanelContext } from './splash/panels/PanelContext/index.js';
|
|
5
|
+
export { TActionBehavior, TActionSource, TBasicAction, handleAction } from './actions/basicAction.js';
|
|
6
|
+
export { externalFirePanelAction } from './actions/externalFirePanelAction.js';
|
|
7
|
+
export { TActionDispatcher, TActionResult, TFooter, usePanelActions } from './actions/usePanelActions.js';
|
|
8
|
+
export { usePanelIsLoading } from './actions/usePanelIsLoading.js';
|
|
9
|
+
export { usePanelNetworkState } from './actions/usePanelNetworkState.js';
|
|
10
|
+
export { usePanelIdentity } from './common/usePanelIdentity.js';
|
|
11
|
+
export { saveParameters } from './config/saveParameters.js';
|
|
12
|
+
export { usePanelParametersSelector } from './config/usePanelParametersSelector.js';
|
|
13
|
+
export { TParamsStore, parametersStore } from './config/parametersStore.js';
|
|
14
|
+
export { useDashboardContext } from './dashboard/DashboardContext.js';
|
|
15
|
+
export { useDashboardPanel } from './dashboard/DashboardPanelContext.js';
|
|
16
|
+
export { Dashboard } from './dashboard/dashboard.js';
|
|
17
|
+
export { eventsController } from './eventsController/eventsController.js';
|
|
18
|
+
export { usePanelFireEvent } from './eventsController/usePanelFireEvent.js';
|
|
19
|
+
export { usePanelOnEvent } from './eventsController/usePanelOnEvent.js';
|
|
20
|
+
export { TPanelEvent, TPanelEventCallback, TPanelEventIdentifier, TPanelEventRegister, TPanelIdentifier } from './eventsController/types.js';
|
|
21
|
+
export { changePanelTitle, usePanelChangeTitle } from './panelsUtil/usePanelChangeTitle.js';
|
|
22
|
+
export { createPanelStore } from './panelsStore/createPanelStore.js';
|
|
23
|
+
export { useYieldPanelIsReady } from './splash/panels/PanelContext/useYieldPanelIsReady.js';
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export { usePanelPosition } from './position/usePanelPosition.js';
|
|
2
|
+
export { LandingPagePanelWrapper } from './splash/panels/LandingPagePanelWrapper.js';
|
|
3
|
+
export { PanelIdentifier, PanelIdentifierContext } from './splash/panels/PanelIdentifier.js';
|
|
4
|
+
export { usePanelContext } from './splash/panels/PanelContext/index.js';
|
|
5
|
+
export { useYieldPanelIsReady } from './splash/panels/PanelContext/useYieldPanelIsReady.js';
|
|
6
|
+
export { externalFirePanelAction } from './actions/externalFirePanelAction.js';
|
|
7
|
+
export { usePanelActions } from './actions/usePanelActions.js';
|
|
8
|
+
export { usePanelIsLoading } from './actions/usePanelIsLoading.js';
|
|
9
|
+
export { usePanelNetworkState } from './actions/usePanelNetworkState.js';
|
|
10
|
+
export { handleAction } from './actions/basicAction.js';
|
|
11
|
+
export { usePanelIdentity } from './common/usePanelIdentity.js';
|
|
12
|
+
export { usePanelParametersSelector } from './config/usePanelParametersSelector.js';
|
|
13
|
+
export { saveParameters } from './config/saveParameters.js';
|
|
14
|
+
export { parametersStore } from './config/parametersStore.js';
|
|
15
|
+
export { Dashboard } from './dashboard/dashboard.js';
|
|
16
|
+
export { useDashboardContext } from './dashboard/DashboardContext.js';
|
|
17
|
+
export { useDashboardPanel } from './dashboard/DashboardPanelContext.js';
|
|
18
|
+
export { usePanelFireEvent } from './eventsController/usePanelFireEvent.js';
|
|
19
|
+
export { usePanelOnEvent } from './eventsController/usePanelOnEvent.js';
|
|
20
|
+
export { eventsController } from './eventsController/eventsController.js';
|
|
21
|
+
export { changePanelTitle, usePanelChangeTitle } from './panelsUtil/usePanelChangeTitle.js';
|
|
22
|
+
export { createPanelStore } from './panelsStore/createPanelStore.js';
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SliceCaseReducers } from '@apia/store';
|
|
2
|
+
import { TPanelType, TPanelName } from '../types.js';
|
|
3
|
+
|
|
4
|
+
declare type ActionCreatorForCaseReducer<CR> = CR extends (state: any, action: infer Action) => any ? Action extends {
|
|
5
|
+
payload: infer P;
|
|
6
|
+
} ? (payload: P, panelName?: string) => unknown : () => unknown : () => unknown;
|
|
7
|
+
type CaseReducerActions<CaseReducers extends SliceCaseReducers<any>> = {
|
|
8
|
+
[Type in keyof CaseReducers]: ActionCreatorForCaseReducer<CaseReducers[Type]>;
|
|
9
|
+
};
|
|
10
|
+
declare function createPanelStore<PanelState = any, Reducers extends SliceCaseReducers<PanelState> = SliceCaseReducers<PanelState>>(panelType: TPanelType, initialState: PanelState, reducers: Reducers): [
|
|
11
|
+
() => CaseReducerActions<Reducers>,
|
|
12
|
+
<Selected>(panelName: TPanelName, selector: (state: PanelState) => Selected, comparator?: (a: Selected, b: Selected) => boolean) => Selected
|
|
13
|
+
];
|
|
14
|
+
|
|
15
|
+
export { createPanelStore };
|
|
16
|
+
//# sourceMappingURL=createPanelStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createPanelStore.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|