@apia/dashboard-controller 5.0.0 → 5.0.1

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 (178) hide show
  1. package/dist/actions/externalFirePanelAction.d.ts +6 -0
  2. package/dist/actions/externalFirePanelAction.d.ts.map +1 -0
  3. package/dist/actions/externalFirePanelAction.js +12 -0
  4. package/dist/actions/externalFirePanelAction.js.map +1 -0
  5. package/dist/actions/firePanelAction.d.ts +6 -0
  6. package/dist/actions/firePanelAction.d.ts.map +1 -0
  7. package/dist/actions/firePanelAction.js +75 -0
  8. package/dist/actions/firePanelAction.js.map +1 -0
  9. package/dist/actions/useActionEventHandlers.d.ts +10 -0
  10. package/dist/actions/useActionEventHandlers.d.ts.map +1 -0
  11. package/dist/actions/useActionEventHandlers.js +67 -0
  12. package/dist/actions/useActionEventHandlers.js.map +1 -0
  13. package/dist/actions/usePanelActions.d.ts +65 -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 +27 -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 +49 -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/ContainerNotFound.js +14 -0
  44. package/dist/dashboard/ContainerNotFound.js.map +1 -0
  45. package/dist/dashboard/DashboardContext.d.ts +6 -0
  46. package/dist/dashboard/DashboardContext.d.ts.map +1 -0
  47. package/dist/dashboard/DashboardContext.js +12 -0
  48. package/dist/dashboard/DashboardContext.js.map +1 -0
  49. package/dist/dashboard/DashboardPanel.d.ts +48 -0
  50. package/dist/dashboard/DashboardPanel.d.ts.map +1 -0
  51. package/dist/dashboard/DashboardPanel.js +264 -0
  52. package/dist/dashboard/DashboardPanel.js.map +1 -0
  53. package/dist/dashboard/DashboardPanelContext.d.ts +6 -0
  54. package/dist/dashboard/DashboardPanelContext.d.ts.map +1 -0
  55. package/dist/dashboard/DashboardPanelContext.js +12 -0
  56. package/dist/dashboard/DashboardPanelContext.js.map +1 -0
  57. package/dist/dashboard/DashboardPanelsBootstraper.d.ts +33 -0
  58. package/dist/dashboard/DashboardPanelsBootstraper.d.ts.map +1 -0
  59. package/dist/dashboard/DashboardPanelsBootstraper.js +135 -0
  60. package/dist/dashboard/DashboardPanelsBootstraper.js.map +1 -0
  61. package/dist/dashboard/DashboardRouter.d.ts +30 -0
  62. package/dist/dashboard/DashboardRouter.d.ts.map +1 -0
  63. package/dist/dashboard/DashboardRouter.js +74 -0
  64. package/dist/dashboard/DashboardRouter.js.map +1 -0
  65. package/dist/dashboard/PanelNotFound.js +17 -0
  66. package/dist/dashboard/PanelNotFound.js.map +1 -0
  67. package/dist/dashboard/dashboard.d.ts +28 -0
  68. package/dist/dashboard/dashboard.d.ts.map +1 -0
  69. package/dist/dashboard/dashboard.js +174 -0
  70. package/dist/dashboard/dashboard.js.map +1 -0
  71. package/dist/eventsController/eventsController.d.ts +11 -0
  72. package/dist/eventsController/eventsController.d.ts.map +1 -0
  73. package/dist/eventsController/eventsController.js +57 -0
  74. package/dist/eventsController/eventsController.js.map +1 -0
  75. package/dist/eventsController/types.d.ts +21 -0
  76. package/dist/eventsController/types.d.ts.map +1 -0
  77. package/dist/eventsController/usePanelFireEvent.d.ts +13 -0
  78. package/dist/eventsController/usePanelFireEvent.d.ts.map +1 -0
  79. package/dist/eventsController/usePanelFireEvent.js +21 -0
  80. package/dist/eventsController/usePanelFireEvent.js.map +1 -0
  81. package/dist/eventsController/usePanelOnEvent.d.ts +12 -0
  82. package/dist/eventsController/usePanelOnEvent.d.ts.map +1 -0
  83. package/dist/eventsController/usePanelOnEvent.js +14 -0
  84. package/dist/eventsController/usePanelOnEvent.js.map +1 -0
  85. package/dist/index.d.ts +31 -459
  86. package/dist/index.js +28 -2241
  87. package/dist/index.js.map +1 -1
  88. package/dist/panelsStore/createPanelStore.d.ts +16 -0
  89. package/dist/panelsStore/createPanelStore.d.ts.map +1 -0
  90. package/dist/panelsStore/createPanelStore.js +58 -0
  91. package/dist/panelsStore/createPanelStore.js.map +1 -0
  92. package/dist/panelsStore/panelsStore.js +59 -0
  93. package/dist/panelsStore/panelsStore.js.map +1 -0
  94. package/dist/panelsStore/usePanelSelector.js +32 -0
  95. package/dist/panelsStore/usePanelSelector.js.map +1 -0
  96. package/dist/panelsUtil/usePanelChangeTitle.d.ts +7 -0
  97. package/dist/panelsUtil/usePanelChangeTitle.d.ts.map +1 -0
  98. package/dist/panelsUtil/usePanelChangeTitle.js +19 -0
  99. package/dist/panelsUtil/usePanelChangeTitle.js.map +1 -0
  100. package/dist/panelsUtil/usePanelTitleAction.d.ts +5 -0
  101. package/dist/panelsUtil/usePanelTitleAction.d.ts.map +1 -0
  102. package/dist/panelsUtil/usePanelTitleAction.js +48 -0
  103. package/dist/panelsUtil/usePanelTitleAction.js.map +1 -0
  104. package/dist/position/usePanelPosition.d.ts +13 -0
  105. package/dist/position/usePanelPosition.d.ts.map +1 -0
  106. package/dist/position/usePanelPosition.js +40 -0
  107. package/dist/position/usePanelPosition.js.map +1 -0
  108. package/dist/splash/events/Dragleave.js +15 -0
  109. package/dist/splash/events/Dragleave.js.map +1 -0
  110. package/dist/splash/events/Dragover.js +120 -0
  111. package/dist/splash/events/Dragover.js.map +1 -0
  112. package/dist/splash/events/Dragstart.js +65 -0
  113. package/dist/splash/events/Dragstart.js.map +1 -0
  114. package/dist/splash/events/Drop.js +66 -0
  115. package/dist/splash/events/Drop.js.map +1 -0
  116. package/dist/splash/panels/DefaultPanelWrapper/CollapseButton.js +31 -0
  117. package/dist/splash/panels/DefaultPanelWrapper/CollapseButton.js.map +1 -0
  118. package/dist/splash/panels/DefaultPanelWrapper/NetworkState.d.ts +8 -0
  119. package/dist/splash/panels/DefaultPanelWrapper/NetworkState.d.ts.map +1 -0
  120. package/dist/splash/panels/DefaultPanelWrapper/NetworkState.js +28 -0
  121. package/dist/splash/panels/DefaultPanelWrapper/NetworkState.js.map +1 -0
  122. package/dist/splash/panels/DefaultPanelWrapper/PanelButtons.d.ts +10 -0
  123. package/dist/splash/panels/DefaultPanelWrapper/PanelButtons.d.ts.map +1 -0
  124. package/dist/splash/panels/DefaultPanelWrapper/PanelButtons.js +32 -0
  125. package/dist/splash/panels/DefaultPanelWrapper/PanelButtons.js.map +1 -0
  126. package/dist/splash/panels/DefaultPanelWrapper/RefreshButton.js +35 -0
  127. package/dist/splash/panels/DefaultPanelWrapper/RefreshButton.js.map +1 -0
  128. package/dist/splash/panels/DefaultPanelWrapper/SettingsButton.js +45 -0
  129. package/dist/splash/panels/DefaultPanelWrapper/SettingsButton.js.map +1 -0
  130. package/dist/splash/panels/DefaultPanelWrapper/index.js +82 -0
  131. package/dist/splash/panels/DefaultPanelWrapper/index.js.map +1 -0
  132. package/dist/splash/panels/EmptyPanelWrapper/index.d.ts +6 -0
  133. package/dist/splash/panels/EmptyPanelWrapper/index.d.ts.map +1 -0
  134. package/dist/splash/panels/EmptyPanelWrapper/index.js +10 -0
  135. package/dist/splash/panels/EmptyPanelWrapper/index.js.map +1 -0
  136. package/dist/splash/panels/LandingPagePanelWrapper.d.ts +6 -0
  137. package/dist/splash/panels/LandingPagePanelWrapper.d.ts.map +1 -0
  138. package/dist/splash/panels/LandingPagePanelWrapper.js +49 -0
  139. package/dist/splash/panels/LandingPagePanelWrapper.js.map +1 -0
  140. package/dist/splash/panels/PanelContext/PanelFooter.d.ts +9 -0
  141. package/dist/splash/panels/PanelContext/PanelFooter.d.ts.map +1 -0
  142. package/dist/splash/panels/PanelContext/PanelFooter.js +72 -0
  143. package/dist/splash/panels/PanelContext/PanelFooter.js.map +1 -0
  144. package/dist/splash/panels/PanelContext/index.d.ts +46 -0
  145. package/dist/splash/panels/PanelContext/index.d.ts.map +1 -0
  146. package/dist/splash/panels/PanelContext/index.js +66 -0
  147. package/dist/splash/panels/PanelContext/index.js.map +1 -0
  148. package/dist/splash/panels/PanelContext/usePanelContextLayout.d.ts +6 -0
  149. package/dist/splash/panels/PanelContext/usePanelContextLayout.d.ts.map +1 -0
  150. package/dist/splash/panels/PanelContext/usePanelContextLayout.js +38 -0
  151. package/dist/splash/panels/PanelContext/usePanelContextLayout.js.map +1 -0
  152. package/dist/splash/panels/PanelContext/usePanelFooter.d.ts +11 -0
  153. package/dist/splash/panels/PanelContext/usePanelFooter.d.ts.map +1 -0
  154. package/dist/splash/panels/PanelContext/usePanelFooter.js +27 -0
  155. package/dist/splash/panels/PanelContext/usePanelFooter.js.map +1 -0
  156. package/dist/splash/panels/PanelContext/useYieldPanelIsReady.d.ts +45 -0
  157. package/dist/splash/panels/PanelContext/useYieldPanelIsReady.d.ts.map +1 -0
  158. package/dist/splash/panels/PanelContext/useYieldPanelIsReady.js +12 -0
  159. package/dist/splash/panels/PanelContext/useYieldPanelIsReady.js.map +1 -0
  160. package/dist/splash/panels/PanelErrorBoundary.js +53 -0
  161. package/dist/splash/panels/PanelErrorBoundary.js.map +1 -0
  162. package/dist/splash/panels/PanelIdentifier.d.ts +16 -0
  163. package/dist/splash/panels/PanelIdentifier.d.ts.map +1 -0
  164. package/dist/splash/panels/PanelIdentifier.js +19 -0
  165. package/dist/splash/panels/PanelIdentifier.js.map +1 -0
  166. package/dist/splash/util/DragAndDrop.js +244 -0
  167. package/dist/splash/util/DragAndDrop.js.map +1 -0
  168. package/dist/splash/util/getColumnAreas.js +19 -0
  169. package/dist/splash/util/getColumnAreas.js.map +1 -0
  170. package/dist/splash/util/isCursorInArea.js +13 -0
  171. package/dist/splash/util/isCursorInArea.js.map +1 -0
  172. package/dist/types.d.ts +30 -0
  173. package/dist/types.d.ts.map +1 -0
  174. package/dist/util.d.ts +8 -0
  175. package/dist/util.d.ts.map +1 -0
  176. package/dist/util.js +55 -0
  177. package/dist/util.js.map +1 -0
  178. package/package.json +9 -8
@@ -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,iBAAA,GAAoB;AAClC,EAAA,MAAM,EAAE,OAAA,EAAS,SAAA,EAAW,SAAA,EAAW,UAAA,KAAe,gBAAA,EAAiB;AAEvE,EAAA,MAAM,SAAA,GAAY,WAAA;AAAA,IAChB,CAAC,WAAmB,OAAA,KAAiB;AACnC,MAAA,gBAAA,CAAiB,SAAA;AAAA,QACf,EAAE,OAAA,EAAS,SAAA,EAAW,SAAA,EAAW,UAAA,EAAW;AAAA,QAC5C,SAAA;AAAA,QACA;AAAA,OACF;AAAA,KACF;AAAA,IACA,CAAC,OAAA,EAAS,SAAA,EAAW,SAAA,EAAW,UAAU;AAAA,GAC5C;AAEA,EAAA,OAAO,SAAA;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":";;;AAUO,SAAS,eAAA,CACd,aACA,QAAA,EACA;AACA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,WAAA,GAAc,gBAAA,CAAiB,OAAA,CAAQ,WAAA,EAAa,QAAQ,CAAA;AAElE,IAAA,OAAO,MAAM;AACX,MAAA,WAAA,EAAY;AAAA,KACd;AAAA,GACD,CAAA;AACH;;;;"}
package/dist/index.d.ts CHANGED
@@ -1,460 +1,32 @@
1
- import * as _apia_util from '@apia/util';
2
- import { TId, EventEmitter } from '@apia/util';
3
- import * as react from 'react';
4
- import { ReactNode, FC, KeyboardEvent, MouseEvent as MouseEvent$1, ComponentType, ReactPortal } from 'react';
5
- import { TApiaApiResult, IApiaApiRequestConfig } from '@apia/api';
6
- import { TSpacingLayout } from '@apia/theme';
7
- import * as _reduxjs_toolkit_dist_configureStore from '@reduxjs/toolkit/dist/configureStore';
8
- import * as redux_thunk from 'redux-thunk';
9
- import * as redux from 'redux';
10
- import { SliceCaseReducers } from '@apia/store';
11
-
12
- /**
13
- * Permite conocer la posición del panel, se actualiza automáticamente cuando
14
- * ésta cambia provocando un renderizado en el padre
15
- */
16
- declare function usePanelPosition(): {
17
- containerId: TId;
18
- position: number;
19
- } | undefined;
20
-
21
- interface TPanelProps$1 {
22
- canMove: boolean;
23
- children: ReactNode;
24
- hasRss: boolean;
25
- id: string;
26
- image: string;
27
- initialData: {
28
- initialData: unknown;
29
- };
30
- isConfigurable: boolean;
31
- isRefreshable: boolean;
32
- name: string;
33
- refreshOnStart: boolean;
34
- refreshOnHome: boolean;
35
- showTitle: boolean;
36
- title: string;
37
- type: string;
38
- }
39
- type TLoadedPanelProps = Omit<TPanelProps$1, 'children'>;
40
- type TPanelId = TPanelProps$1['id'];
41
- type TPanelName = TPanelProps$1['name'];
42
- type TPanelType = TPanelProps$1['type'];
43
- type PanelContainer = FC<TPanelProps$1>;
44
-
45
- declare const LandingPagePanelWrapper: PanelContainer;
46
-
47
- interface TPanelIdentifier {
48
- panelId: TPanelId;
49
- panelName: TPanelName;
50
- panelTitle: string;
51
- panelType: TPanelType;
52
- }
53
- type TPanelEventIdentifier = TPanelIdentifier & {
54
- eventType: string;
55
- };
56
- type TPanelEvent<PayloadEvent = unknown> = TPanelEventIdentifier & {
57
- payload: PayloadEvent;
58
- };
59
- type TPanelEventCallback<PayloadEvent> = (event: TPanelEvent<PayloadEvent>) => unknown;
60
- type TPanelEventRegister<PayloadEvent> = {
61
- callback: TPanelEventCallback<PayloadEvent>;
62
- } & Partial<TPanelEventIdentifier>;
63
-
64
- declare const PanelIdentifierContext: react.Context<TPanelIdentifier | undefined>;
65
- interface TPanelIdentifierProps {
66
- children: ReactNode;
67
- id: string;
68
- name: string;
69
- title: string;
70
- type: string;
71
- }
72
- declare const PanelIdentifier: ({ children, name, id, title, type, }: TPanelIdentifierProps) => react.JSX.Element;
73
-
74
- declare const eventsController: {
75
- callbacks: TPanelEventRegister<any>[];
76
- broadcast(eventType: string, payload: any): void;
77
- fireEvent(origin: TPanelIdentifier, eventType: string, payload: any): void;
78
- onEvent<PayloadEvent>(distinction: Partial<TPanelEventIdentifier>, callback: TPanelEventCallback<PayloadEvent>): () => void;
79
- };
80
-
81
- /**
82
- * Este hook devuelve un método que puede ser llamado para emitir un evento en
83
- * el panel desde el cual es llamado. Los eventos de panel son emitidos con id
84
- * de panel, tipo de panel, nombre de panel y tipo de evento y las suscripciones
85
- * pueden ser realizadas a un conjunto arbitrario de estos identificadores.
86
- *
87
- * El segundo parámetro del método fireEvent devuelto es el payload, que puede
88
- * ser de cualquier tipo.
89
- */
90
- declare function usePanelFireEvent(): (eventType: string, payload: any) => void;
91
-
92
- /**
93
- * Este hook permite realizar suscripciones a eventos de paneles. Deberá ser
94
- * llamado una vez por cada suscripción que desee hacerse dentro de un panel y
95
- * no se deberán ejecutar acciones para romper las suscripciones hechas, ya que
96
- * este hook maneja esa lógica de forma automática.
97
- */
98
- declare function usePanelOnEvent<PayloadEvent>(distinction: Partial<TPanelEventIdentifier>, callback: TPanelEventCallback<PayloadEvent>): void;
99
-
100
- type TActionBehavior = 'DO_NOTHING' | 'NAVIGATE_URL' | 'CALL_AJAX_URL' | 'RUN_ACTION' | 'OPEN_TAB' | 'FIRE_EVENT' | 'DOWNLOAD';
101
- type TActionSource = 'CLICK' | 'DOUBLE_CLICK';
102
- type TBasicAction = {
103
- action: string;
104
- actionBehavior: TActionBehavior;
105
- actionSource: TActionSource;
106
- additionalData: string;
107
- text: string;
108
- };
109
- declare function handleAction(panelIdentifier: TPanelIdentifier, event: KeyboardEvent | MouseEvent$1, action: TBasicAction): void;
110
-
111
- type TOnSucceed = (hasSucceed: boolean, data: TActionResult) => unknown;
112
-
113
- type TFooter = TBasicAction & {
114
- force?: boolean;
115
- };
116
- type TCommonActionResult = {
117
- title: string;
118
- footer: TFooter;
119
- };
120
- type TActionResult<T = any> = null | NonNullable<Awaited<TApiaApiResult<T extends Record<string, unknown> ? T & TCommonActionResult : T>>>;
121
- type TActionDispatcherOptions = {
122
- onComplete?: TOnSucceed;
123
- requestConfig?: IApiaApiRequestConfig<object>;
124
- };
125
- type TExternalActionDispatcher = (panelId: string, { action, ...parameters }: {
126
- action: string;
127
- } & Record<string, unknown>, options?: TActionDispatcherOptions) => void;
128
- type TActionDispatcher = ({ action, ...parameters }: {
129
- action: string;
130
- } & Record<string, unknown>, options?: TActionDispatcherOptions) => Promise<TActionResult>;
131
- type TActionHandler = (result: TActionResult) => unknown;
132
- /**
133
- * El hook usePanelActions es el método principal de comunicación entre el
134
- * módulo cliente y el módulo server de un panel.
135
- *
136
- * Acepta un actionsHandler y devuelve un actionDispatcher.
137
- *
138
- * **Existe la acción refresh** que será llamada automáticamente cada vez que
139
- * se guarde la configuración del panel o se haga click en el botón refrescar
140
- * del mismo.
141
- *
142
- * @param actionsHandler Es un objeto de tipo clave-valor en donde cada clave debe corresponderse con una acción que puede ser ejecutada en el panel. El valor debe ser una función que recibe la respuesta del servidor a la ejecución de la acción.
143
- *
144
- * @returns Un método actionDispatcher que permite ejecutar acciones para ser procesadas por la contraparte del panel en el servidor. Al ser llamado acepta un objeto que debe tener como mínimo la propiedad action: string, que indica qué acción será ejecutada. Acepta opcionalmente cualquier cantidad adicional de propiedades en el objeto.
145
- *
146
- * @example
147
- *
148
- const dispatch = usePanelActions({
149
- refresh() {
150
- console.log('Refresh');
151
- },
152
- revert(response: TActionResult<TApiaLoadText>) {
153
- if (response?.data?.text.label !== undefined)
154
- setLabel(response?.data?.text.label);
155
- },
156
- });
157
-
158
- return <Button
159
- onClick={() => {
160
- dispatch({
161
- action: 'revert',
162
- text: (document.getElementById('Text') as
163
- HTMLInputElement).value,
164
- });
165
- }}
166
- >
167
- Revert
168
- </Button>
169
- */
170
- declare function usePanelActions(actionsHandler?: Record<string, TActionHandler>): TActionDispatcher;
171
-
172
- declare const externalFirePanelAction: TExternalActionDispatcher;
173
-
174
- declare function usePanelIsLoading(): boolean;
175
-
176
- /**
177
- * Permite saber en todo momento si el panel actual tuvo un error en su
178
- * conexión de red
179
- */
180
- declare const usePanelNetworkState: () => boolean;
181
-
182
- declare const useActionEventHandlers: () => {
183
- onClick: (ev: React.MouseEvent<HTMLElement, MouseEvent>) => (action: TBasicAction) => void;
184
- onDoubleClick: (ev: React.MouseEvent<HTMLElement, MouseEvent>) => (action: TBasicAction) => void;
185
- onKeyDown: (ev: React.KeyboardEvent<HTMLElement>) => (action: TBasicAction) => void;
186
- };
187
-
188
- type TPanelLayout = TSpacingLayout;
189
-
190
- /**
191
- * **Favor de leer con cuidado el siguiente contenido, es muy importante para
192
- * la performance**
193
- *
194
- * El hook useYieldPanelIsReady es una parte muy importante del flujo de
195
- * trabajo de los dashboards. **El no reportar la carga de un panel tiene
196
- * penalizaciones graves en el tiempo de renderizado inicial**, esto es porque
197
- * el dashboard espera que todos los paneles hayan terminado la carga
198
- * estructural básica antes de empezar con los refresh iniciales, y esto termina
199
- * impactando en el tiempo que demora en bajar la cortina.
200
- *
201
- * **Aclaración:** Actualmente se espera las cargas estructurales para lanzar
202
- * los refresh iniciales por motivos de arquitectura. Esa restricción será
203
- * eliminada probablemente en el corto plazo, pero eso no cambia la necesidad de
204
- * reportar las estructuras ya que esta información es igualmente utilizada para
205
- * el bajado de la cortina de Skeletons.
206
- *
207
- * Por ejemplo, si todos los paneles están optimizados para lograr cargas
208
- * iniciales rápidas pero el logo de la aplicación no reporta que su estructura
209
- * está pronta, el dashboard va a bajar su cortina solamente luego de que expire
210
- * el timeout **DASH_COURTAIN_TRESHOLD**, que por defecto viene establecido en 5
211
- * segundos.
212
- *
213
- * Esto significa que aún cuando la cortina se hubiera podido bajar quizás a
214
- * los pocos ms de cargado el html inicial, no lo hará porque supone que el
215
- * panel Logo aún no terminó su carga estructural.
216
- *
217
- * Siempre que un panel esté presente en un dashboard, deberá reportar cuando
218
- * la carga estructural esté pronta. Esto puede ser hecho de dos formas:
219
- *
220
- * - Usando { setRef } = usePanelContext(): En el elemento crucial de HTML del
221
- * elemento hacer ref={setRef}. Esta es la forma más óptima ya que nos garantiza
222
- * que el panel se reporte cuando su estructura HTML ya esté disponible,
223
- * evitando ninguna demora.
224
- *
225
- * - Usando useYieldPanelIsReady(): Este hook es una alternativa disponible
226
- * para las situaciones en las que no tenemos ningún elemento HTML de
227
- * importancia o cuando ese elemento no está disponible hasta después de la
228
- * carga inicial. Al usar este hook el panel se reportará automáticamente una
229
- * vez que haya hecho el renderizado inicial.
230
- */
231
- declare function useYieldPanelIsReady(): void;
232
-
233
- type TPanelContext = {
234
- /**
235
- * Permite establecer contenido arbitrario en el footer del panel.
236
- */
237
- setFooterContent(content: ReactNode): void;
238
- /**
239
- * setLayout es una función que permite decidir en qué formato se muestran
240
- * los contenidos del panel.
241
- *
242
- * dense: No hay paddings
243
- * clever: Hay paddings grandes
244
- */
245
- setLayout: (newLayout: TPanelLayout) => void;
246
- setTitle: (newTitle: string) => void;
247
- panelProps: Omit<TPanelProps$1, 'children'>;
248
- /**
249
- * Cuando un panel renderiza sus hijos en pantalla, debe setear el ref de
250
- * modo que se pueda continuar con el flujo normal del panel. Este ref puede
251
- * estar en cualquier nivel, cuando sea instanciado, se llamará al refresh
252
- * inicial.
253
- */
254
- setRef: (el: HTMLElement | null) => void;
255
- };
256
- declare function usePanelContext(): TPanelContext;
257
- declare const PanelContextProvider: ({ children, value, }: {
258
- children: ReactNode;
259
- value: TPanelContext;
260
- }) => react.JSX.Element;
261
- declare function useMakePanelContext(panelProps: Omit<TPanelProps$1, 'children'>): {
262
- footerContent: ReactNode;
263
- title: string;
264
- footer: TFooter | null;
265
- handleFooterClick: (ev: react.MouseEvent | react.KeyboardEvent) => void;
266
- contextValue: TPanelContext;
267
- ref: (el: HTMLDivElement) => void;
268
- };
269
-
270
- declare const EmptyPanelWrapper: PanelContainer;
271
-
272
- type TUsePanelFooter = {
273
- footerContent?: ReactNode;
274
- footer: TFooter | null;
275
- handleFooterClick: (ev: MouseEvent$1 | KeyboardEvent) => void;
276
- };
277
-
278
- /**
279
- * Permite acceder a la identidad del panel actual.
280
- */
281
- declare function usePanelIdentity(): TPanelIdentifier;
282
-
283
- type TPanelParameter = string | number | boolean;
284
- type TParamsStore = Record<string, TPanelParameter>;
285
- type TParamsSlice = Record<string, TParamsStore>;
286
- declare const store: _reduxjs_toolkit_dist_configureStore.ToolkitStore<{
287
- panelParameters: TParamsSlice;
288
- }, redux.AnyAction, [redux_thunk.ThunkMiddleware<{
289
- panelParameters: TParamsSlice;
290
- }>]>;
291
-
292
- /**
293
- * Actualiza los parámetros de un panel a nivel de cliente. Este método se
294
- * expone con el único fin de ser llamado por la acción saveParams del api.
295
- */
296
- declare function saveParameters(panelId: TPanelId, parameters: TParamsStore, refresh?: boolean): void;
297
-
298
- type TParametersSelector<Selected> = (parameters: Record<string, TPanelParameter>) => Selected;
299
- /**
300
- // eslint-disable-next-line comment-length/limit-multi-line-comments
301
- * Este hook permite seleccionar parámetros de un panel. Cada vez que los
302
- * parámetros del panel sean actualizados, se llamará a la función selector y en
303
- * caso de que la selección actual de parámetros difiera de la anterior, se
304
- * provocará un renderizado en el componente que lo utiliza.
305
- *
306
- * Si se quiere obtener los parámetros del panel en el que se está trabajando,
307
- * el segundo parámetro es innecesario. En caso de querer obtener los
308
- * parámetros de otro panel, se puede pasar su nombre como segundo parámetro y
309
- * la selección se hará de acuerdo a los parámetros de éste.
310
- *
311
- * Es importante ver que es imposible prever qué parámetros tendrá cada panel,
312
- * por ello el tipo entregado al selector es Record, que puede entenderse como
313
- * un mapa de entradas con clave string y valor TPanelParameter = string |
314
- * boolean | number.
315
- */
316
- declare function usePanelParametersSelector<Selected>(selector: TParametersSelector<Selected>, panelName?: TPanelName): Selected;
317
-
318
- declare global {
319
- interface Window {
320
- DASH_COURTAIN_TRESHOLD?: number;
321
- }
322
- }
323
- declare class DashboardPanelsBootstraper {
324
- #private;
325
- dashboard: Dashboard;
326
- constructor(dashboard: Dashboard);
327
- /**
328
- * El bootstraper se basa en dos elementos: setHasLoadedInitialData y
329
- * SuspendPanelUntilDashboardReady.
330
- *
331
- * El funcionamiento es muy elemental: Cada panel utiliza el Suspend como
332
- * wrapper y éste registra el id del panel en un array de paneles pendientes
333
- * por cargar.
334
- *
335
- * Una vez que todos los paneles cargaron, el suspense retoma su tarea y
336
- * renderiza el panel normalmente.
337
- */
338
- setPanelHasLoaded: (panelId: string) => void;
339
- SuspendPanelUntilDashbordReady: ({ children, panelId, }: {
340
- children: ReactNode;
341
- panelId: string;
342
- }) => react.JSX.Element;
343
- }
344
-
345
- declare function importPanel(path: string): ComponentType<{
346
- initialData: unknown;
347
- }>;
348
-
349
- type TPanelProps = Omit<TLoadedPanelProps, 'initialData'>;
350
- declare class DashboardPanel extends EventEmitter<{
351
- hasLoaded: boolean;
352
- isVisible: boolean;
353
- }> {
354
- #private;
355
- dashboard: Dashboard;
356
- hasInited: boolean;
357
- hasLoaded: boolean;
358
- id: string;
359
- initialData: Promise<unknown> | null;
360
- isVisible: boolean;
361
- portal: ReactPortal;
362
- props: TPanelProps;
363
- constructor({ id, dashboard, PanelContainer, }: {
364
- id: string;
365
- dashboard: Dashboard;
366
- PanelContainer: PanelContainer;
367
- });
368
- fireAction: ({ action, ...parameters }: {
369
- action: string;
370
- } & Record<string, unknown>, options?: TActionDispatcherOptions) => Promise<TActionResult>;
371
- getContainer(): HTMLElement;
372
- getParameters(): TParamsStore;
373
- hide(): void;
374
- refresh(): Promise<TActionResult>;
375
- setHasLoaded(): void;
376
- show(): void;
377
- PanelElement: ({ ActualPanelContainer, Element, }: {
378
- ActualPanelContainer: PanelContainer;
379
- Element: ReturnType<typeof importPanel>;
380
- }) => react.JSX.Element | null;
381
- }
382
-
383
- type TSwitchRoute = {
384
- /**
385
- * El callback será llamado si la ruta coincide.
386
- */
387
- callback: (result: RegExpMatchArray) => unknown;
388
- route: RegExp;
389
- };
390
- type TUseSwitch = TSwitchRoute[];
391
- declare class Router extends EventEmitter<{
392
- newRoute: string;
393
- }> {
394
- #private;
395
- constructor();
396
- /**
397
- * Se evaluarán las rutas en orden y la primera en coincidir será tomada como
398
- * resultado del cambio de ruta.
399
- *
400
- * Las rutas provistas deberán matchear contra el path actual. El path actual
401
- * es la porción de la ruta luego del dominio y el contexto. Ejemplo:
402
- *
403
- * http://localhost/apia => path='/'
404
- * http://localhost/apia/spa/categories/comidas/1 => path='/spa/categories/comidas/1'
405
- */
406
- useSwitch: (routes: TUseSwitch) => void;
407
- }
408
-
409
- declare class Dashboard extends EventEmitter<{
410
- changeScene: string;
411
- }> {
412
- #private;
413
- urlContext: string;
414
- bootstrapper: DashboardPanelsBootstraper;
415
- panels: Record<string, DashboardPanel> | null;
416
- router: Router;
417
- scenes: Record<string, string[]>;
418
- getPanel: (id: string) => DashboardPanel;
419
- getPanelByName: (name: string) => DashboardPanel | undefined;
420
- constructor(panelsContainer: PanelContainer | undefined, urlContext: string);
421
- loadScene: (scene?: string) => ReactPortal[];
422
- Component: () => react.JSX.Element;
423
- }
424
-
425
- declare function useDashboardContext(): Dashboard;
426
-
427
- declare function useDashboardPanel(): DashboardPanel;
428
-
429
- declare function changePanelTitle(identifier: TPanelIdentifier, newTitle: string): void;
430
- declare function usePanelChangeTitle(): (newTitle: string) => void;
431
-
432
- declare type ActionCreatorForCaseReducer<CR> = CR extends (state: any, action: infer Action) => any ? Action extends {
433
- payload: infer P;
434
- } ? (payload: P, panelName?: string) => unknown : () => unknown : () => unknown;
435
- type CaseReducerActions<CaseReducers extends SliceCaseReducers<any>> = {
436
- [Type in keyof CaseReducers]: ActionCreatorForCaseReducer<CaseReducers[Type]>;
437
- };
438
- declare function createPanelStore<PanelState = any, Reducers extends SliceCaseReducers<PanelState> = SliceCaseReducers<PanelState>>(panelType: TPanelType, initialState: PanelState, reducers: Reducers): [
439
- () => CaseReducerActions<Reducers>,
440
- <Selected>(panelName: TPanelName, selector: (state: PanelState) => Selected, comparator?: (a: Selected, b: Selected) => boolean) => Selected
441
- ];
442
-
443
- declare function usePanelImage(): string;
444
- declare function usePanelTitleDescription(): string;
445
-
446
- declare const PanelButtons: react.FC<Omit<TPanelProps$1, "children" | "initialData"> & {
447
- id: _apia_util.TId;
448
- }>;
449
-
450
- declare const PanelFooter: ({ footerContent, isRefreshable, footer, handleFooterClick, force, }: TUsePanelFooter & {
451
- isRefreshable: boolean;
452
- force?: boolean;
453
- }) => react.JSX.Element;
454
-
455
- declare const NetworkState: ({ title }: {
456
- title: string;
457
- }) => react.JSX.Element;
458
-
459
- export { Dashboard, EmptyPanelWrapper, LandingPagePanelWrapper, NetworkState, PanelButtons, type PanelContainer, PanelContextProvider, PanelFooter, PanelIdentifier, PanelIdentifierContext, type TActionBehavior, type TActionDispatcher, type TActionResult, type TActionSource, type TBasicAction, type TFooter, type TPanelContext, type TPanelEvent, type TPanelEventCallback, type TPanelEventIdentifier, type TPanelEventRegister, type TPanelIdentifier, type TParamsStore, type TUsePanelFooter, changePanelTitle, createPanelStore, eventsController, externalFirePanelAction, handleAction, store as parametersStore, saveParameters, useActionEventHandlers, useDashboardContext, useDashboardPanel, useMakePanelContext, usePanelActions, usePanelChangeTitle, usePanelContext, usePanelFireEvent, usePanelIdentity, usePanelImage, usePanelIsLoading, usePanelNetworkState, usePanelOnEvent, usePanelParametersSelector, usePanelPosition, usePanelTitleDescription, useYieldPanelIsReady };
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 { PanelContextProvider, TPanelContext, useMakePanelContext, usePanelContext } from './splash/panels/PanelContext/index.js';
5
+ export { PanelContainer } from './types.js';
6
+ export { EmptyPanelWrapper } from './splash/panels/EmptyPanelWrapper/index.js';
7
+ export { TActionBehavior, TActionSource, TBasicAction, handleAction } from '@apia/util';
8
+ export { externalFirePanelAction } from './actions/externalFirePanelAction.js';
9
+ export { TActionDispatcher, TActionResult, TFooter, usePanelActions } from './actions/usePanelActions.js';
10
+ export { usePanelIsLoading } from './actions/usePanelIsLoading.js';
11
+ export { usePanelNetworkState } from './actions/usePanelNetworkState.js';
12
+ export { useActionEventHandlers } from './actions/useActionEventHandlers.js';
13
+ export { usePanelIdentity } from './common/usePanelIdentity.js';
14
+ export { saveParameters } from './config/saveParameters.js';
15
+ export { usePanelParametersSelector } from './config/usePanelParametersSelector.js';
16
+ export { TParamsStore, parametersStore } from './config/parametersStore.js';
17
+ export { useDashboardContext } from './dashboard/DashboardContext.js';
18
+ export { useDashboardPanel } from './dashboard/DashboardPanelContext.js';
19
+ export { Dashboard } from './dashboard/dashboard.js';
20
+ export { eventsController } from './eventsController/eventsController.js';
21
+ export { usePanelFireEvent } from './eventsController/usePanelFireEvent.js';
22
+ export { usePanelOnEvent } from './eventsController/usePanelOnEvent.js';
23
+ export { TPanelEvent, TPanelEventCallback, TPanelEventIdentifier, TPanelEventRegister, TPanelIdentifier } from './eventsController/types.js';
24
+ export { changePanelTitle, usePanelChangeTitle } from './panelsUtil/usePanelChangeTitle.js';
25
+ export { createPanelStore } from './panelsStore/createPanelStore.js';
26
+ export { usePanelImage, usePanelTitleDescription } from './panelsUtil/usePanelTitleAction.js';
27
+ export { PanelButtons } from './splash/panels/DefaultPanelWrapper/PanelButtons.js';
28
+ export { PanelFooter } from './splash/panels/PanelContext/PanelFooter.js';
29
+ export { NetworkState } from './splash/panels/DefaultPanelWrapper/NetworkState.js';
30
+ export { TUsePanelFooter } from './splash/panels/PanelContext/usePanelFooter.js';
31
+ export { useYieldPanelIsReady } from './splash/panels/PanelContext/useYieldPanelIsReady.js';
460
32
  //# sourceMappingURL=index.d.ts.map