@apia/dashboard-controller 2.0.9 → 2.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +23 -409
- package/dist/index.js +22 -2201
- package/dist/index.js.map +1 -1
- 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 +4 -4
|
@@ -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, 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 */\r\nimport { EventEmitter, useMount } from '@apia/util';\r\nimport { useRef } from 'react';\r\nimport { shallowEqual } from 'react-redux';\r\n\r\nexport type TSwitchRoute = {\r\n /**\r\n * El callback será llamado si la ruta coincide.\r\n */\r\n callback: (result: RegExpMatchArray) => unknown;\r\n route: RegExp;\r\n};\r\n\r\nexport type TUseSwitch = TSwitchRoute[];\r\n\r\nexport class Router extends EventEmitter<{ newRoute: string }> {\r\n #matchLocation = (regexp: RegExp) => {\r\n const path =\r\n '/' +\r\n (window.location.href\r\n .replaceAll('%20', ' ')\r\n .match(new RegExp(`${window.CONTEXT}/?([^?]+)?(?:\\\\?.*)?`))?.[1] ?? '');\r\n\r\n return path.match(regexp);\r\n };\r\n\r\n constructor() {\r\n super();\r\n\r\n window.addEventListener('popstate', () => {\r\n this.emit('newRoute', window.location.href);\r\n });\r\n }\r\n\r\n #evalRoutes = (routes: TUseSwitch) => {\r\n for (let i = 0; i < routes.length; i++) {\r\n const match = this.#matchLocation(routes[i].route);\r\n if (match) {\r\n return { route: routes[i], match };\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Se evaluarán las rutas en orden y la primera en coincidir será tomada como\r\n * resultado del cambio de ruta.\r\n *\r\n * Las rutas provistas deberán matchear contra el path actual. El path actual\r\n * es la porción de la ruta luego del dominio y el contexto. Ejemplo:\r\n *\r\n * http://localhost/apia => path='/'\r\n * http://localhost/apia/spa/categories/comidas/1 => path='/spa/categories/comidas/1'\r\n */\r\n useSwitch = (routes: TUseSwitch) => {\r\n const lastMatch = useRef<TSwitchRoute | null>(null);\r\n\r\n useMount(() => {\r\n const result = this.#evalRoutes(routes);\r\n if (result) {\r\n result.route.callback(result.match);\r\n }\r\n\r\n return this.on('newRoute', () => {\r\n const result = this.#evalRoutes(routes);\r\n if (result && !shallowEqual(result.match, lastMatch.current)) {\r\n result.route.callback(result.match);\r\n }\r\n });\r\n });\r\n };\r\n}\r\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';\r\nimport { usePanelIdentity } from '../common';\r\n\r\nexport const PanelNotFound = () => {\r\n const props = usePanelIdentity();\r\n\r\n return (\r\n <>\r\n <Heading>Panel not found: {props.panelType}</Heading>\r\n </>\r\n );\r\n};\r\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 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
|
+
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';\r\nimport { ReactNode, ReactPortal, useDeferredValue, useState } from 'react';\r\nimport { PanelContainer } from '../types';\r\nimport { DefaultPanelWrapper } from '../splash/panels/DefaultPanelWrapper';\r\nimport { DashboardPanelsBootstraper } from './DashboardPanelsBootstraper';\r\nimport { DashboardContext } from './DashboardContext';\r\nimport { DashboardPanel } from './DashboardPanel';\r\nimport { DragAndDrop } from '../splash/util/DragAndDrop';\r\nimport { eventsController } from '../eventsController';\r\nimport { Router } from './DashboardRouter';\r\n\r\nexport class Dashboard extends EventEmitter<{\r\n changeScene: string;\r\n}> {\r\n bootstrapper = new DashboardPanelsBootstraper(this);\r\n panels: Record<string, DashboardPanel> | null = null;\r\n router = new Router();\r\n scenes: Record<string, string[]> = {};\r\n\r\n #currentScene = '/';\r\n #dragAndDrop = new DragAndDrop();\r\n #PanelContainer: PanelContainer = DefaultPanelWrapper;\r\n #panelsRenderedPortals: ReactPortal[] = [];\r\n\r\n getPanel = (id: string) => this.panels?.[id] as DashboardPanel;\r\n getPanelByName = (name: string) =>\r\n Object.values(this.panels ?? {}).find(\r\n (current) => current.props.name === name,\r\n );\r\n\r\n #loadPanels = () => {\r\n this.panels = {};\r\n\r\n const panelsElements = document.querySelectorAll(\r\n '[data-panel]',\r\n ) as NodeListOf<HTMLElement>;\r\n\r\n Array.from(panelsElements).forEach((current) => {\r\n const panel = new DashboardPanel({\r\n dashboard: this,\r\n PanelContainer: this.#PanelContainer,\r\n id: current.dataset.id as string,\r\n });\r\n\r\n let panelPath = (panel.getParameters().PAR_SPA_PATH as string) || '*';\r\n if (panelPath === '/') panelPath = `/${this.urlContext}`;\r\n if (panelPath !== '*') panel.hide();\r\n else panel.show();\r\n\r\n const paths = panelPath.split(',');\r\n paths.forEach((currentPath) => {\r\n if (!this.scenes[currentPath]) this.scenes[currentPath] = [];\r\n this.scenes[currentPath].push(panel.props.id);\r\n });\r\n\r\n (this.panels as Record<string, DashboardPanel>)[panel.props.id] = panel;\r\n\r\n this.#panelsRenderedPortals.push(panel.portal);\r\n });\r\n\r\n this.#dragAndDrop.bootstrap();\r\n };\r\n\r\n #Context = ({ children }: { children: ReactNode }) => {\r\n return (\r\n <DashboardContext.Provider value={this}>\r\n {children}\r\n </DashboardContext.Provider>\r\n );\r\n };\r\n\r\n #suscribeToEvents = () => {\r\n eventsController.onEvent({ eventType: 'dashboard__focus' }, () => {\r\n Object.values(this.panels ?? {}).forEach((current) => {\r\n if (current.props.refreshOnHome) {\r\n void current.refresh();\r\n }\r\n });\r\n });\r\n };\r\n #usePanelsList = () => {\r\n const [panels, setPanels] = useState<ReactNode>(null);\r\n const deferredPanels = useDeferredValue(panels);\r\n\r\n useMount(() => {\r\n this.loadScene();\r\n setPanels(this.#panelsRenderedPortals);\r\n });\r\n\r\n this.router.useSwitch([\r\n {\r\n route: new RegExp(`(?:/spa)?/(\\\\w+)`),\r\n callback: (result) => {\r\n console.log('Dashboard', { scene: result[1] });\r\n this.loadScene(result[1]);\r\n },\r\n },\r\n {\r\n route: new RegExp(`/`),\r\n callback: () => {\r\n console.log('Dashboard', { noScene: '/' });\r\n this.loadScene('/');\r\n },\r\n },\r\n ]);\r\n\r\n return deferredPanels;\r\n };\r\n\r\n constructor(\r\n panelsContainer: PanelContainer = DefaultPanelWrapper,\r\n public urlContext: string,\r\n ) {\r\n super();\r\n\r\n this.#currentScene = `/`;\r\n this.#PanelContainer = panelsContainer ?? this.#PanelContainer;\r\n this.#suscribeToEvents();\r\n }\r\n\r\n #SceneRenderer = () => {\r\n const Context = this.#Context;\r\n const panels = this.#usePanelsList();\r\n\r\n return <Context>{panels}</Context>;\r\n };\r\n\r\n loadScene = (scene: string = this.#currentScene): ReactPortal[] => {\r\n let actualScene = scene;\r\n if (!actualScene.startsWith('/')) actualScene = `/${actualScene}`;\r\n\r\n if (!this.panels) this.#loadPanels();\r\n if (!this.scenes[actualScene]) this.scenes[actualScene] = [];\r\n\r\n this.scenes[this.#currentScene].forEach((scenePanelId) => {\r\n if (!this.scenes[actualScene].includes(scenePanelId))\r\n this.panels?.[scenePanelId]?.hide();\r\n });\r\n this.scenes[actualScene].forEach((scenePanelIds) => {\r\n const panel = this.panels?.[scenePanelIds];\r\n if (panel) {\r\n panel.show();\r\n if (panel.hasInited && panel.props.refreshOnStart) void panel.refresh();\r\n }\r\n });\r\n\r\n this.#currentScene = actualScene;\r\n\r\n return this.#panelsRenderedPortals;\r\n };\r\n\r\n Component = () => {\r\n const R = this.#SceneRenderer;\r\n return <R />;\r\n };\r\n}\r\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, 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 */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport {\r\n TPanelEventCallback,\r\n TPanelEventIdentifier,\r\n TPanelEventRegister,\r\n TPanelIdentifier,\r\n} from './types';\r\n\r\nfunction identifierAfitsOnB(\r\n a: Partial<TPanelEventIdentifier>,\r\n b: TPanelEventIdentifier,\r\n) {\r\n // eslint-disable-next-line no-restricted-syntax, @typescript-eslint/no-for-in-array\r\n for (const key of Object.keys(a)) {\r\n if (\r\n a[key as keyof Partial<TPanelIdentifier>] !==\r\n b[key as keyof TPanelIdentifier]\r\n )\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nexport const eventsController = new (class EventsController {\r\n callbacks: TPanelEventRegister<any>[] = [];\r\n\r\n broadcast(eventType: string, payload: any) {\r\n const origin: TPanelIdentifier = {\r\n panelId: 'broadcast',\r\n panelName: 'broadcast',\r\n panelType: 'broadcast',\r\n panelTitle: 'broadcast',\r\n };\r\n\r\n this.callbacks.forEach(({ callback, ...current }) => {\r\n if (eventType === current.eventType) {\r\n callback({ ...origin, eventType, payload });\r\n }\r\n });\r\n }\r\n\r\n fireEvent(origin: TPanelIdentifier, eventType: string, payload: any) {\r\n if ([origin.panelId, origin.panelName, origin.panelType].includes('*'))\r\n throw new Error(\r\n 'Broadcast is not allowed through fireEvent, use broadcast instead',\r\n );\r\n\r\n this.callbacks.forEach(({ callback, ...current }) => {\r\n if (identifierAfitsOnB(current, { ...origin, eventType })) {\r\n callback({ ...origin, eventType, payload });\r\n }\r\n });\r\n }\r\n\r\n onEvent<PayloadEvent>(\r\n distinction: Partial<TPanelEventIdentifier>,\r\n callback: TPanelEventCallback<PayloadEvent>,\r\n ) {\r\n const register: TPanelEventRegister<PayloadEvent> = {\r\n ...distinction,\r\n callback,\r\n };\r\n\r\n this.callbacks.push(register);\r\n\r\n return () => {\r\n this.callbacks = this.callbacks.filter((current) => {\r\n return current !== register;\r\n });\r\n };\r\n }\r\n})();\r\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 */\r\n\r\nimport { useCallback } from 'react';\r\nimport { eventsController } from './eventsController';\r\nimport { usePanelIdentity } from '../common/usePanelIdentity';\r\n\r\n/**\r\n * Este hook devuelve un método que puede ser llamado para emitir un evento en\r\n * el panel desde el cual es llamado. Los eventos de panel son emitidos con id\r\n * de panel, tipo de panel, nombre de panel y tipo de evento y las suscripciones\r\n * pueden ser realizadas a un conjunto arbitrario de estos identificadores.\r\n *\r\n * El segundo parámetro del método fireEvent devuelto es el payload, que puede\r\n * ser de cualquier tipo.\r\n */\r\nexport function usePanelFireEvent() {\r\n const { panelId, panelName, panelType, panelTitle } = usePanelIdentity();\r\n\r\n const fireEvent = useCallback(\r\n (eventType: string, payload: any) => {\r\n eventsController.fireEvent(\r\n { panelId, panelName, panelType, panelTitle },\r\n eventType,\r\n payload,\r\n );\r\n },\r\n [panelId, panelName, panelType, panelTitle],\r\n );\r\n\r\n return fireEvent;\r\n}\r\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';\r\nimport { eventsController } from './eventsController';\r\nimport { TPanelEventIdentifier, TPanelEventCallback } from './types';\r\n\r\n/**\r\n * Este hook permite realizar suscripciones a eventos de paneles. Deberá ser\r\n * llamado una vez por cada suscripción que desee hacerse dentro de un panel y\r\n * no se deberán ejecutar acciones para romper las suscripciones hechas, ya que\r\n * este hook maneja esa lógica de forma automática.\r\n */\r\nexport function usePanelOnEvent<PayloadEvent>(\r\n distinction: Partial<TPanelEventIdentifier>,\r\n callback: TPanelEventCallback<PayloadEvent>,\r\n) {\r\n useEffect(() => {\r\n const unsuscriber = eventsController.onEvent(distinction, callback);\r\n\r\n return () => {\r\n unsuscriber();\r\n };\r\n });\r\n}\r\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;;;;"}
|