@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.
Files changed (163) hide show
  1. package/dist/actions/basicAction.d.ts +15 -0
  2. package/dist/actions/basicAction.d.ts.map +1 -0
  3. package/dist/actions/basicAction.js +40 -0
  4. package/dist/actions/basicAction.js.map +1 -0
  5. package/dist/actions/externalFirePanelAction.d.ts +6 -0
  6. package/dist/actions/externalFirePanelAction.d.ts.map +1 -0
  7. package/dist/actions/externalFirePanelAction.js +12 -0
  8. package/dist/actions/externalFirePanelAction.js.map +1 -0
  9. package/dist/actions/firePanelAction.d.ts +6 -0
  10. package/dist/actions/firePanelAction.d.ts.map +1 -0
  11. package/dist/actions/firePanelAction.js +75 -0
  12. package/dist/actions/firePanelAction.js.map +1 -0
  13. package/dist/actions/usePanelActions.d.ts +63 -0
  14. package/dist/actions/usePanelActions.d.ts.map +1 -0
  15. package/dist/actions/usePanelActions.js +55 -0
  16. package/dist/actions/usePanelActions.js.map +1 -0
  17. package/dist/actions/usePanelIsLoading.d.ts +4 -0
  18. package/dist/actions/usePanelIsLoading.d.ts.map +1 -0
  19. package/dist/actions/usePanelIsLoading.js +14 -0
  20. package/dist/actions/usePanelIsLoading.js.map +1 -0
  21. package/dist/actions/usePanelNetworkState.d.ts +8 -0
  22. package/dist/actions/usePanelNetworkState.d.ts.map +1 -0
  23. package/dist/actions/usePanelNetworkState.js +21 -0
  24. package/dist/actions/usePanelNetworkState.js.map +1 -0
  25. package/dist/common/usePanelIdentity.d.ts +10 -0
  26. package/dist/common/usePanelIdentity.d.ts.map +1 -0
  27. package/dist/common/usePanelIdentity.js +12 -0
  28. package/dist/common/usePanelIdentity.js.map +1 -0
  29. package/dist/config/parametersStore.d.ts +15 -0
  30. package/dist/config/parametersStore.d.ts.map +1 -0
  31. package/dist/config/parametersStore.js +25 -0
  32. package/dist/config/parametersStore.js.map +1 -0
  33. package/dist/config/saveParameters.d.ts +11 -0
  34. package/dist/config/saveParameters.d.ts.map +1 -0
  35. package/dist/config/saveParameters.js +16 -0
  36. package/dist/config/saveParameters.js.map +1 -0
  37. package/dist/config/usePanelConfig.js +22 -0
  38. package/dist/config/usePanelConfig.js.map +1 -0
  39. package/dist/config/usePanelParametersSelector.d.ts +25 -0
  40. package/dist/config/usePanelParametersSelector.d.ts.map +1 -0
  41. package/dist/config/usePanelParametersSelector.js +17 -0
  42. package/dist/config/usePanelParametersSelector.js.map +1 -0
  43. package/dist/dashboard/DashboardContext.d.ts +6 -0
  44. package/dist/dashboard/DashboardContext.d.ts.map +1 -0
  45. package/dist/dashboard/DashboardContext.js +12 -0
  46. package/dist/dashboard/DashboardContext.js.map +1 -0
  47. package/dist/dashboard/DashboardPanel.d.ts +45 -0
  48. package/dist/dashboard/DashboardPanel.d.ts.map +1 -0
  49. package/dist/dashboard/DashboardPanel.js +236 -0
  50. package/dist/dashboard/DashboardPanel.js.map +1 -0
  51. package/dist/dashboard/DashboardPanelContext.d.ts +6 -0
  52. package/dist/dashboard/DashboardPanelContext.d.ts.map +1 -0
  53. package/dist/dashboard/DashboardPanelContext.js +12 -0
  54. package/dist/dashboard/DashboardPanelContext.js.map +1 -0
  55. package/dist/dashboard/DashboardPanelsBootstraper.d.ts +33 -0
  56. package/dist/dashboard/DashboardPanelsBootstraper.d.ts.map +1 -0
  57. package/dist/dashboard/DashboardPanelsBootstraper.js +135 -0
  58. package/dist/dashboard/DashboardPanelsBootstraper.js.map +1 -0
  59. package/dist/dashboard/DashboardRouter.d.ts +30 -0
  60. package/dist/dashboard/DashboardRouter.d.ts.map +1 -0
  61. package/dist/dashboard/DashboardRouter.js +74 -0
  62. package/dist/dashboard/DashboardRouter.js.map +1 -0
  63. package/dist/dashboard/PanelNotFound.js +14 -0
  64. package/dist/dashboard/PanelNotFound.js.map +1 -0
  65. package/dist/dashboard/dashboard.d.ts +26 -0
  66. package/dist/dashboard/dashboard.d.ts.map +1 -0
  67. package/dist/dashboard/dashboard.js +167 -0
  68. package/dist/dashboard/dashboard.js.map +1 -0
  69. package/dist/eventsController/eventsController.d.ts +11 -0
  70. package/dist/eventsController/eventsController.d.ts.map +1 -0
  71. package/dist/eventsController/eventsController.js +57 -0
  72. package/dist/eventsController/eventsController.js.map +1 -0
  73. package/dist/eventsController/types.d.ts +21 -0
  74. package/dist/eventsController/types.d.ts.map +1 -0
  75. package/dist/eventsController/usePanelFireEvent.d.ts +13 -0
  76. package/dist/eventsController/usePanelFireEvent.d.ts.map +1 -0
  77. package/dist/eventsController/usePanelFireEvent.js +21 -0
  78. package/dist/eventsController/usePanelFireEvent.js.map +1 -0
  79. package/dist/eventsController/usePanelOnEvent.d.ts +12 -0
  80. package/dist/eventsController/usePanelOnEvent.d.ts.map +1 -0
  81. package/dist/eventsController/usePanelOnEvent.js +14 -0
  82. package/dist/eventsController/usePanelOnEvent.js.map +1 -0
  83. package/dist/index.d.ts +24 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +23 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/panelsStore/createPanelStore.d.ts +16 -0
  88. package/dist/panelsStore/createPanelStore.d.ts.map +1 -0
  89. package/dist/panelsStore/createPanelStore.js +58 -0
  90. package/dist/panelsStore/createPanelStore.js.map +1 -0
  91. package/dist/panelsStore/panelsStore.js +59 -0
  92. package/dist/panelsStore/panelsStore.js.map +1 -0
  93. package/dist/panelsStore/usePanelSelector.js +32 -0
  94. package/dist/panelsStore/usePanelSelector.js.map +1 -0
  95. package/dist/panelsUtil/usePanelChangeTitle.d.ts +5 -0
  96. package/dist/panelsUtil/usePanelChangeTitle.d.ts.map +1 -0
  97. package/dist/panelsUtil/usePanelChangeTitle.js +23 -0
  98. package/dist/panelsUtil/usePanelChangeTitle.js.map +1 -0
  99. package/dist/panelsUtil/usePanelTitleAction.js +34 -0
  100. package/dist/panelsUtil/usePanelTitleAction.js.map +1 -0
  101. package/dist/position/usePanelPosition.d.ts +13 -0
  102. package/dist/position/usePanelPosition.d.ts.map +1 -0
  103. package/dist/position/usePanelPosition.js +40 -0
  104. package/dist/position/usePanelPosition.js.map +1 -0
  105. package/dist/splash/events/Dragleave.js +15 -0
  106. package/dist/splash/events/Dragleave.js.map +1 -0
  107. package/dist/splash/events/Dragover.js +120 -0
  108. package/dist/splash/events/Dragover.js.map +1 -0
  109. package/dist/splash/events/Dragstart.js +65 -0
  110. package/dist/splash/events/Dragstart.js.map +1 -0
  111. package/dist/splash/events/Drop.js +60 -0
  112. package/dist/splash/events/Drop.js.map +1 -0
  113. package/dist/splash/panels/DefaultPanelWrapper/NetworkState.js +28 -0
  114. package/dist/splash/panels/DefaultPanelWrapper/NetworkState.js.map +1 -0
  115. package/dist/splash/panels/DefaultPanelWrapper/PanelButtons.js +16 -0
  116. package/dist/splash/panels/DefaultPanelWrapper/PanelButtons.js.map +1 -0
  117. package/dist/splash/panels/DefaultPanelWrapper/RefreshButton.js +35 -0
  118. package/dist/splash/panels/DefaultPanelWrapper/RefreshButton.js.map +1 -0
  119. package/dist/splash/panels/DefaultPanelWrapper/SettingsButton.js +45 -0
  120. package/dist/splash/panels/DefaultPanelWrapper/SettingsButton.js.map +1 -0
  121. package/dist/splash/panels/DefaultPanelWrapper/defaultPanelWrapperStyles.js +103 -0
  122. package/dist/splash/panels/DefaultPanelWrapper/defaultPanelWrapperStyles.js.map +1 -0
  123. package/dist/splash/panels/DefaultPanelWrapper/index.js +57 -0
  124. package/dist/splash/panels/DefaultPanelWrapper/index.js.map +1 -0
  125. package/dist/splash/panels/LandingPagePanelWrapper.d.ts +6 -0
  126. package/dist/splash/panels/LandingPagePanelWrapper.d.ts.map +1 -0
  127. package/dist/splash/panels/LandingPagePanelWrapper.js +52 -0
  128. package/dist/splash/panels/LandingPagePanelWrapper.js.map +1 -0
  129. package/dist/splash/panels/PanelContext/PanelFooter.js +70 -0
  130. package/dist/splash/panels/PanelContext/PanelFooter.js.map +1 -0
  131. package/dist/splash/panels/PanelContext/index.d.ts +26 -0
  132. package/dist/splash/panels/PanelContext/index.d.ts.map +1 -0
  133. package/dist/splash/panels/PanelContext/index.js +73 -0
  134. package/dist/splash/panels/PanelContext/index.js.map +1 -0
  135. package/dist/splash/panels/PanelContext/usePanelContextLayout.d.ts +6 -0
  136. package/dist/splash/panels/PanelContext/usePanelContextLayout.d.ts.map +1 -0
  137. package/dist/splash/panels/PanelContext/usePanelContextLayout.js +38 -0
  138. package/dist/splash/panels/PanelContext/usePanelContextLayout.js.map +1 -0
  139. package/dist/splash/panels/PanelContext/usePanelFooter.js +38 -0
  140. package/dist/splash/panels/PanelContext/usePanelFooter.js.map +1 -0
  141. package/dist/splash/panels/PanelContext/useYieldPanelIsReady.d.ts +45 -0
  142. package/dist/splash/panels/PanelContext/useYieldPanelIsReady.d.ts.map +1 -0
  143. package/dist/splash/panels/PanelContext/useYieldPanelIsReady.js +12 -0
  144. package/dist/splash/panels/PanelContext/useYieldPanelIsReady.js.map +1 -0
  145. package/dist/splash/panels/PanelErrorBoundary.js +53 -0
  146. package/dist/splash/panels/PanelErrorBoundary.js.map +1 -0
  147. package/dist/splash/panels/PanelIdentifier.d.ts +16 -0
  148. package/dist/splash/panels/PanelIdentifier.d.ts.map +1 -0
  149. package/dist/splash/panels/PanelIdentifier.js +19 -0
  150. package/dist/splash/panels/PanelIdentifier.js.map +1 -0
  151. package/dist/splash/util/DragAndDrop.js +243 -0
  152. package/dist/splash/util/DragAndDrop.js.map +1 -0
  153. package/dist/splash/util/getColumnAreas.js +19 -0
  154. package/dist/splash/util/getColumnAreas.js.map +1 -0
  155. package/dist/splash/util/isCursorInArea.js +13 -0
  156. package/dist/splash/util/isCursorInArea.js.map +1 -0
  157. package/dist/types.d.ts +27 -0
  158. package/dist/types.d.ts.map +1 -0
  159. package/dist/util.d.ts +8 -0
  160. package/dist/util.d.ts.map +1 -0
  161. package/dist/util.js +30 -0
  162. package/dist/util.js.map +1 -0
  163. 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;;;;"}
@@ -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":""}