@j2inn/fin5-ui-utils 6.0.5-beta.0 → 6.0.5

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 (212) hide show
  1. package/README.md +5 -5
  2. package/dist/fantomProps/createFin5Props/index.d.ts +12 -12
  3. package/dist/fantomProps/createFin5Props/index.js +146 -146
  4. package/dist/fantomProps/createFin5Props/runCreateFin5Props.d.ts +2 -2
  5. package/dist/fantomProps/createFin5Props/runCreateFin5Props.js +16 -16
  6. package/dist/fantomProps/fantomPropsToObject.d.ts +8 -8
  7. package/dist/fantomProps/fantomPropsToObject.js +183 -183
  8. package/dist/fantomProps/generateJsonFromFantomPropsFile.d.ts +4 -4
  9. package/dist/fantomProps/generateJsonFromFantomPropsFile.js +41 -41
  10. package/dist/fantomProps/localePropsToJson.d.ts +1 -1
  11. package/dist/fantomProps/localePropsToJson.js +50 -50
  12. package/dist/fantomProps/readFantomPropsFile.d.ts +5 -5
  13. package/dist/fantomProps/readFantomPropsFile.js +65 -66
  14. package/dist/fantomProps/readFantomPropsFile.js.map +1 -1
  15. package/dist/fin5Top/fin5FileUpload.d.ts +24 -24
  16. package/dist/fin5Top/fin5FileUpload.js +51 -51
  17. package/dist/fin5Top/fin5Top.d.ts +124 -124
  18. package/dist/fin5Top/fin5Top.js +53 -53
  19. package/dist/fin5Top/finEdge2Cloud.d.ts +6 -6
  20. package/dist/fin5Top/finEdge2Cloud.js +15 -15
  21. package/dist/fin5Top/getFin5BinUrl.d.ts +2 -2
  22. package/dist/fin5Top/getFin5BinUrl.js +9 -9
  23. package/dist/fin5Top/openFin5Alarm.d.ts +22 -22
  24. package/dist/fin5Top/openFin5Alarm.js +23 -23
  25. package/dist/fin5Top/openFin5Historian.d.ts +3 -3
  26. package/dist/fin5Top/openFin5Historian.js +19 -19
  27. package/dist/fin5Top/useFin5AppURLHashParameter.d.ts +18 -18
  28. package/dist/fin5Top/useFin5AppURLHashParameter.js +133 -133
  29. package/dist/index.d.ts +35 -35
  30. package/dist/index.js +69 -69
  31. package/dist/jobs/jobUtils.d.ts +14 -14
  32. package/dist/jobs/jobUtils.js +15 -15
  33. package/dist/react/app/Fin5AppContainer.d.ts +36 -36
  34. package/dist/react/app/Fin5AppContainer.js +102 -102
  35. package/dist/react/app/Fin5AppRootStore.d.ts +40 -40
  36. package/dist/react/app/Fin5AppRootStore.js +69 -69
  37. package/dist/react/components/ErrorBoundary.d.ts +57 -57
  38. package/dist/react/components/ErrorBoundary.js +150 -150
  39. package/dist/react/components/ErrorDisplayer.d.ts +19 -19
  40. package/dist/react/components/ErrorDisplayer.js +36 -36
  41. package/dist/react/components/Loader.d.ts +9 -9
  42. package/dist/react/components/Loader.js +17 -17
  43. package/dist/react/components/LoadingSpinner.d.ts +2 -2
  44. package/dist/react/components/LoadingSpinner.js +27 -27
  45. package/dist/react/components/RecordImage.d.ts +20 -20
  46. package/dist/react/components/RecordImage.js +51 -51
  47. package/dist/react/components/charts/QRCode.d.ts +25 -25
  48. package/dist/react/components/charts/QRCode.js +82 -82
  49. package/dist/react/components/charts/line-bar/Chart.d.ts +166 -166
  50. package/dist/react/components/charts/line-bar/Chart.js +442 -442
  51. package/dist/react/components/charts/line-bar/HGridChart.d.ts +58 -58
  52. package/dist/react/components/charts/line-bar/HGridChart.js +285 -285
  53. package/dist/react/components/charts/pie/PieChart.d.ts +94 -94
  54. package/dist/react/components/charts/pie/PieChart.js +204 -204
  55. package/dist/react/components/charts/pie/SimplePieChart.d.ts +21 -21
  56. package/dist/react/components/charts/pie/SimplePieChart.js +55 -55
  57. package/dist/react/components/graphics/GraphicViewer.d.ts +10 -10
  58. package/dist/react/components/graphics/GraphicViewer.js +29 -29
  59. package/dist/react/components/graphics/GraphicsTabViewer.d.ts +17 -17
  60. package/dist/react/components/graphics/GraphicsTabViewer.js +90 -90
  61. package/dist/react/components/makeCustomElement.d.ts +16 -16
  62. package/dist/react/components/makeCustomElement.js +150 -150
  63. package/dist/react/components/navigation/BasicLayout.d.ts +41 -41
  64. package/dist/react/components/navigation/BasicLayout.js +155 -155
  65. package/dist/react/components/navigation/HeaderSiderLayout.d.ts +13 -13
  66. package/dist/react/components/navigation/HeaderSiderLayout.js +110 -110
  67. package/dist/react/components/navigation/MenuPage.d.ts +37 -37
  68. package/dist/react/components/navigation/MenuPage.js +36 -36
  69. package/dist/react/components/navigation/MenuTrigger.d.ts +9 -9
  70. package/dist/react/components/navigation/MenuTrigger.js +33 -33
  71. package/dist/react/components/navigation/ReactRouterHeaderSiderLayout.d.ts +11 -11
  72. package/dist/react/components/navigation/ReactRouterHeaderSiderLayout.js +25 -25
  73. package/dist/react/components/navigation/ReactRouterLayout.d.ts +46 -46
  74. package/dist/react/components/navigation/ReactRouterLayout.js +132 -132
  75. package/dist/react/components/navigation/customRouting/Router.d.ts +12 -12
  76. package/dist/react/components/navigation/customRouting/Router.js +45 -45
  77. package/dist/react/components/navigation/customRouting/RouterLayout.d.ts +11 -11
  78. package/dist/react/components/navigation/customRouting/RouterLayout.js +61 -61
  79. package/dist/react/components/resolvable/configurationForm/ConfigurationForm.d.ts +27 -27
  80. package/dist/react/components/resolvable/configurationForm/ConfigurationForm.js +95 -95
  81. package/dist/react/components/resolvable/configurationForm/ConfigurationFormEntry.d.ts +16 -16
  82. package/dist/react/components/resolvable/configurationForm/ConfigurationFormEntry.js +88 -88
  83. package/dist/react/components/resolvable/configurationForm/getSectionDefault.d.ts +16 -16
  84. package/dist/react/components/resolvable/configurationForm/getSectionDefault.js +99 -99
  85. package/dist/react/hooks/useFin5BinUrl.d.ts +6 -6
  86. package/dist/react/hooks/useFin5BinUrl.js +15 -15
  87. package/dist/react/hooks/useFin5ColorScheme.d.ts +2 -2
  88. package/dist/react/hooks/useFin5ColorScheme.js +49 -49
  89. package/dist/react/hooks/useScreenSize.d.ts +7 -7
  90. package/dist/react/hooks/useScreenSize.js +31 -31
  91. package/dist_es/fantomProps/createFin5Props/index.d.ts +12 -12
  92. package/dist_es/fantomProps/createFin5Props/index.js +140 -140
  93. package/dist_es/fantomProps/createFin5Props/runCreateFin5Props.d.ts +2 -2
  94. package/dist_es/fantomProps/createFin5Props/runCreateFin5Props.js +11 -11
  95. package/dist_es/fantomProps/fantomPropsToObject.d.ts +8 -8
  96. package/dist_es/fantomProps/fantomPropsToObject.js +178 -178
  97. package/dist_es/fantomProps/generateJsonFromFantomPropsFile.d.ts +4 -4
  98. package/dist_es/fantomProps/generateJsonFromFantomPropsFile.js +12 -12
  99. package/dist_es/fantomProps/localePropsToJson.d.ts +1 -1
  100. package/dist_es/fantomProps/localePropsToJson.js +21 -21
  101. package/dist_es/fantomProps/readFantomPropsFile.d.ts +5 -5
  102. package/dist_es/fantomProps/readFantomPropsFile.js +39 -40
  103. package/dist_es/fantomProps/readFantomPropsFile.js.map +1 -1
  104. package/dist_es/fin5Top/fin5FileUpload.d.ts +24 -24
  105. package/dist_es/fin5Top/fin5FileUpload.js +47 -47
  106. package/dist_es/fin5Top/fin5Top.d.ts +124 -124
  107. package/dist_es/fin5Top/fin5Top.js +49 -49
  108. package/dist_es/fin5Top/finEdge2Cloud.d.ts +6 -6
  109. package/dist_es/fin5Top/finEdge2Cloud.js +11 -11
  110. package/dist_es/fin5Top/getFin5BinUrl.d.ts +2 -2
  111. package/dist_es/fin5Top/getFin5BinUrl.js +5 -5
  112. package/dist_es/fin5Top/openFin5Alarm.d.ts +22 -22
  113. package/dist_es/fin5Top/openFin5Alarm.js +19 -19
  114. package/dist_es/fin5Top/openFin5Historian.d.ts +3 -3
  115. package/dist_es/fin5Top/openFin5Historian.js +15 -15
  116. package/dist_es/fin5Top/useFin5AppURLHashParameter.d.ts +18 -18
  117. package/dist_es/fin5Top/useFin5AppURLHashParameter.js +124 -124
  118. package/dist_es/index.d.ts +35 -35
  119. package/dist_es/index.js +53 -53
  120. package/dist_es/jobs/jobUtils.d.ts +14 -14
  121. package/dist_es/jobs/jobUtils.js +9 -9
  122. package/dist_es/react/app/Fin5AppContainer.d.ts +36 -36
  123. package/dist_es/react/app/Fin5AppContainer.js +73 -73
  124. package/dist_es/react/app/Fin5AppRootStore.d.ts +40 -40
  125. package/dist_es/react/app/Fin5AppRootStore.js +65 -65
  126. package/dist_es/react/components/ErrorBoundary.d.ts +57 -57
  127. package/dist_es/react/components/ErrorBoundary.js +123 -123
  128. package/dist_es/react/components/ErrorDisplayer.d.ts +19 -19
  129. package/dist_es/react/components/ErrorDisplayer.js +28 -28
  130. package/dist_es/react/components/Loader.d.ts +9 -9
  131. package/dist_es/react/components/Loader.js +12 -12
  132. package/dist_es/react/components/LoadingSpinner.d.ts +2 -2
  133. package/dist_es/react/components/LoadingSpinner.js +20 -20
  134. package/dist_es/react/components/RecordImage.d.ts +20 -20
  135. package/dist_es/react/components/RecordImage.js +24 -24
  136. package/dist_es/react/components/charts/QRCode.d.ts +25 -25
  137. package/dist_es/react/components/charts/QRCode.js +52 -52
  138. package/dist_es/react/components/charts/line-bar/Chart.d.ts +166 -166
  139. package/dist_es/react/components/charts/line-bar/Chart.js +415 -415
  140. package/dist_es/react/components/charts/line-bar/HGridChart.d.ts +58 -58
  141. package/dist_es/react/components/charts/line-bar/HGridChart.js +250 -250
  142. package/dist_es/react/components/charts/pie/PieChart.d.ts +94 -94
  143. package/dist_es/react/components/charts/pie/PieChart.js +177 -177
  144. package/dist_es/react/components/charts/pie/SimplePieChart.d.ts +21 -21
  145. package/dist_es/react/components/charts/pie/SimplePieChart.js +25 -25
  146. package/dist_es/react/components/graphics/GraphicViewer.d.ts +10 -10
  147. package/dist_es/react/components/graphics/GraphicViewer.js +22 -22
  148. package/dist_es/react/components/graphics/GraphicsTabViewer.d.ts +17 -17
  149. package/dist_es/react/components/graphics/GraphicsTabViewer.js +60 -60
  150. package/dist_es/react/components/makeCustomElement.d.ts +16 -16
  151. package/dist_es/react/components/makeCustomElement.js +142 -142
  152. package/dist_es/react/components/navigation/BasicLayout.d.ts +41 -41
  153. package/dist_es/react/components/navigation/BasicLayout.js +124 -124
  154. package/dist_es/react/components/navigation/HeaderSiderLayout.d.ts +13 -13
  155. package/dist_es/react/components/navigation/HeaderSiderLayout.js +80 -80
  156. package/dist_es/react/components/navigation/MenuPage.d.ts +37 -37
  157. package/dist_es/react/components/navigation/MenuPage.js +30 -30
  158. package/dist_es/react/components/navigation/MenuTrigger.d.ts +9 -9
  159. package/dist_es/react/components/navigation/MenuTrigger.js +28 -28
  160. package/dist_es/react/components/navigation/ReactRouterHeaderSiderLayout.d.ts +11 -11
  161. package/dist_es/react/components/navigation/ReactRouterHeaderSiderLayout.js +18 -18
  162. package/dist_es/react/components/navigation/ReactRouterLayout.d.ts +46 -46
  163. package/dist_es/react/components/navigation/ReactRouterLayout.js +99 -99
  164. package/dist_es/react/components/navigation/customRouting/Router.d.ts +12 -12
  165. package/dist_es/react/components/navigation/customRouting/Router.js +18 -18
  166. package/dist_es/react/components/navigation/customRouting/RouterLayout.d.ts +11 -11
  167. package/dist_es/react/components/navigation/customRouting/RouterLayout.js +34 -34
  168. package/dist_es/react/components/resolvable/configurationForm/ConfigurationForm.d.ts +27 -27
  169. package/dist_es/react/components/resolvable/configurationForm/ConfigurationForm.js +64 -64
  170. package/dist_es/react/components/resolvable/configurationForm/ConfigurationFormEntry.d.ts +16 -16
  171. package/dist_es/react/components/resolvable/configurationForm/ConfigurationFormEntry.js +58 -58
  172. package/dist_es/react/components/resolvable/configurationForm/getSectionDefault.d.ts +16 -16
  173. package/dist_es/react/components/resolvable/configurationForm/getSectionDefault.js +94 -94
  174. package/dist_es/react/hooks/useFin5BinUrl.d.ts +6 -6
  175. package/dist_es/react/hooks/useFin5BinUrl.js +11 -11
  176. package/dist_es/react/hooks/useFin5ColorScheme.d.ts +2 -2
  177. package/dist_es/react/hooks/useFin5ColorScheme.js +45 -45
  178. package/dist_es/react/hooks/useScreenSize.d.ts +7 -7
  179. package/dist_es/react/hooks/useScreenSize.js +27 -27
  180. package/package.json +1 -1
  181. package/dist_es/react/app/Fin5AppContainer.jsx +0 -82
  182. package/dist_es/react/app/Fin5AppContainer.jsx.map +0 -1
  183. package/dist_es/react/components/ErrorBoundary.jsx +0 -150
  184. package/dist_es/react/components/ErrorBoundary.jsx.map +0 -1
  185. package/dist_es/react/components/ErrorDisplayer.jsx +0 -36
  186. package/dist_es/react/components/ErrorDisplayer.jsx.map +0 -1
  187. package/dist_es/react/components/Loader.jsx +0 -13
  188. package/dist_es/react/components/Loader.jsx.map +0 -1
  189. package/dist_es/react/components/LoadingSpinner.jsx +0 -22
  190. package/dist_es/react/components/LoadingSpinner.jsx.map +0 -1
  191. package/dist_es/react/components/charts/line-bar/ZincGridChart.d.ts +0 -12
  192. package/dist_es/react/components/charts/line-bar/ZincGridChart.js +0 -17
  193. package/dist_es/react/components/charts/line-bar/ZincGridChart.js.map +0 -1
  194. package/dist_es/react/components/graphics/GraphicViewer.jsx +0 -23
  195. package/dist_es/react/components/graphics/GraphicViewer.jsx.map +0 -1
  196. package/dist_es/react/components/graphics/GraphicsTabViewer.jsx +0 -63
  197. package/dist_es/react/components/graphics/GraphicsTabViewer.jsx.map +0 -1
  198. package/dist_es/react/components/navigation/BasicLayout.jsx +0 -133
  199. package/dist_es/react/components/navigation/BasicLayout.jsx.map +0 -1
  200. package/dist_es/react/components/navigation/MenuPage.jsx +0 -31
  201. package/dist_es/react/components/navigation/MenuPage.jsx.map +0 -1
  202. package/dist_es/react/components/navigation/Router.d.ts +0 -12
  203. package/dist_es/react/components/navigation/Router.js +0 -19
  204. package/dist_es/react/components/navigation/Router.js.map +0 -1
  205. package/dist_es/react/components/navigation/Router.jsx +0 -19
  206. package/dist_es/react/components/navigation/Router.jsx.map +0 -1
  207. package/dist_es/react/components/navigation/react-router/BasicLayout.d.ts +0 -23
  208. package/dist_es/react/components/navigation/react-router/BasicLayout.js +0 -82
  209. package/dist_es/react/components/navigation/react-router/BasicLayout.js.map +0 -1
  210. package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.d.ts +0 -24
  211. package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.js +0 -82
  212. package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.js.map +0 -1
@@ -1,18 +1,18 @@
1
- export declare const IN_IFRAME: boolean;
2
- export declare const getTopLocation: () => Location;
3
- export declare const getFin5HashFrameParameters: () => URLSearchParams;
4
- export declare const fin5SkipHashUpdate: () => Promise<undefined> | undefined;
5
- export declare const getHashParameters: () => URLSearchParams;
6
- /**
7
- * Use a parameter in the hash of a custom app running in FIN 5 as state.
8
- * @param name parameter name.
9
- * @param initialState initial state used if the parameter is not defined.
10
- * @returns the parameter value and a function to update it.
11
- */
12
- export declare const useFin5AppURLHashParameter: (name: string, initialState?: string) => [string | undefined, (newValue: string) => Promise<void>];
13
- /**
14
- * Use all the parameters in the hash of a custom app running in FIN 5 as state.
15
- * @param parameters the initial (optional) values for the parameters
16
- * @returns the URL parameters and a function to patch the parameters.
17
- */
18
- export declare const useFin5AppURLHashParameters: (parameters?: URLSearchParams) => [URLSearchParams, (newValues: URLSearchParams) => Promise<void>];
1
+ export declare const IN_IFRAME: boolean;
2
+ export declare const getTopLocation: () => Location;
3
+ export declare const getFin5HashFrameParameters: () => URLSearchParams;
4
+ export declare const fin5SkipHashUpdate: () => Promise<undefined> | undefined;
5
+ export declare const getHashParameters: () => URLSearchParams;
6
+ /**
7
+ * Use a parameter in the hash of a custom app running in FIN 5 as state.
8
+ * @param name parameter name.
9
+ * @param initialState initial state used if the parameter is not defined.
10
+ * @returns the parameter value and a function to update it.
11
+ */
12
+ export declare const useFin5AppURLHashParameter: (name: string, initialState?: string) => [string | undefined, (newValue: string) => Promise<void>];
13
+ /**
14
+ * Use all the parameters in the hash of a custom app running in FIN 5 as state.
15
+ * @param parameters the initial (optional) values for the parameters
16
+ * @returns the URL parameters and a function to patch the parameters.
17
+ */
18
+ export declare const useFin5AppURLHashParameters: (parameters?: URLSearchParams) => [URLSearchParams, (newValues: URLSearchParams) => Promise<void>];
@@ -1,125 +1,125 @@
1
- /*
2
- * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
- */
4
- import { useEffect, useState } from 'react';
5
- import { isWindowTopFin5 } from './fin5Top';
6
- export const IN_IFRAME = window !== top && isWindowTopFin5();
7
- const getTop = () => window.top ?? window;
8
- const getApp = () => getTop()?.app;
9
- export const getTopLocation = () => getTop().location;
10
- export const getFin5HashFrameParameters = () => new URLSearchParams(getTopLocation().hash.slice(1).split('?')[1]);
11
- const getFin5FrameURL = () => getFin5HashFrameParameters().get('url');
12
- const getPartialURLHashFragment = (url) => `#${url?.split('#')[1] ?? ''}`;
13
- const getHash = () => {
14
- return IN_IFRAME
15
- ? getPartialURLHashFragment(getFin5FrameURL())
16
- : window.location.hash;
17
- };
18
- export const fin5SkipHashUpdate = () => getApp()?.set('skipHashUpdate', true);
19
- const setHash = (hash) => {
20
- if (IN_IFRAME) {
21
- return fin5SkipHashUpdate()?.then(() => {
22
- const frameParameters = getFin5HashFrameParameters();
23
- frameParameters.set('url', frameParameters.get('url')?.split('#')[0] + '#' + hash);
24
- getTopLocation().hash = `#${getTopLocation().hash.slice(1).split('?')[0]}?${frameParameters.toString()}`;
25
- });
26
- }
27
- else {
28
- window.location.hash = hash;
29
- return Promise.resolve();
30
- }
31
- };
32
- export const getHashParameters = () => new URLSearchParams(getHash().slice(1));
33
- /**
34
- * Use a parameter in the hash of a custom app running in FIN 5 as state.
35
- * @param name parameter name.
36
- * @param initialState initial state used if the parameter is not defined.
37
- * @returns the parameter value and a function to update it.
38
- */
39
- export const useFin5AppURLHashParameter = (name, initialState) => {
40
- const [paramValue, setParamValue] = useState(getHashParameters()?.get(name) ?? undefined);
41
- const setHashParameter = async (value) => {
42
- const params = getHashParameters();
43
- if (params.get(name) !== value) {
44
- if (value === '' || value == null) {
45
- params.delete(name);
46
- }
47
- else {
48
- params?.set(name, value);
49
- }
50
- await setHash(params?.toString());
51
- setParamValue(value);
52
- }
53
- };
54
- useEffect(() => {
55
- if (!getHashParameters()?.has(name) && initialState) {
56
- setHashParameter(initialState);
57
- }
58
- }, []);
59
- useEffect(() => {
60
- const onHashChange = () => {
61
- setParamValue(getHashParameters()?.get(name) ?? undefined);
62
- };
63
- if (IN_IFRAME) {
64
- getTop().addEventListener('hashchange', onHashChange);
65
- return () => {
66
- getTop().removeEventListener('hashchange', onHashChange);
67
- };
68
- }
69
- return () => {
70
- return;
71
- };
72
- }, []);
73
- return [paramValue, setHashParameter];
74
- };
75
- /**
76
- * Use all the parameters in the hash of a custom app running in FIN 5 as state.
77
- * @param parameters the initial (optional) values for the parameters
78
- * @returns the URL parameters and a function to patch the parameters.
79
- */
80
- export const useFin5AppURLHashParameters = (parameters) => {
81
- const [paramValues, setParamValues] = useState(getHashParameters());
82
- // Patch the parameters: this updates just the URL parameters passed.
83
- // If there is a parameter in the hash and not in the function arg, that is left untouched.
84
- // To remove a parameter in the hash, set it to null or empty string.
85
- const setHashParameters = async (paramsToUpdate) => {
86
- const params = getHashParameters();
87
- Array.from(paramsToUpdate.entries()).forEach(([paramKey, newParamValue]) => {
88
- if (newParamValue !== params.get(paramKey)) {
89
- if (newParamValue == null || newParamValue === '') {
90
- params.delete(paramKey);
91
- }
92
- else {
93
- params.set(paramKey, newParamValue);
94
- }
95
- }
96
- });
97
- await setHash(params.toString());
98
- setParamValues(params);
99
- };
100
- // Initial setup.
101
- useEffect(() => {
102
- const hashParameters = getHashParameters();
103
- if (parameters) {
104
- Array.from(parameters.entries()).forEach(([paramKey, paramValue]) => {
105
- if (!hashParameters.has(paramKey) &&
106
- paramValue != null &&
107
- paramValue !== '') {
108
- hashParameters.set(paramKey, paramValue);
109
- }
110
- });
111
- setHashParameters(hashParameters);
112
- }
113
- }, []);
114
- useEffect(() => {
115
- const onHashChange = () => {
116
- setParamValues(getHashParameters());
117
- };
118
- getTop().addEventListener('hashchange', onHashChange);
119
- return () => {
120
- getTop().removeEventListener('hashchange', onHashChange);
121
- };
122
- }, []);
123
- return [paramValues, setHashParameters];
124
- };
1
+ /*
2
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
+ */
4
+ import { useEffect, useState } from 'react';
5
+ import { isWindowTopFin5 } from './fin5Top';
6
+ export const IN_IFRAME = window !== top && isWindowTopFin5();
7
+ const getTop = () => window.top ?? window;
8
+ const getApp = () => getTop()?.app;
9
+ export const getTopLocation = () => getTop().location;
10
+ export const getFin5HashFrameParameters = () => new URLSearchParams(getTopLocation().hash.slice(1).split('?')[1]);
11
+ const getFin5FrameURL = () => getFin5HashFrameParameters().get('url');
12
+ const getPartialURLHashFragment = (url) => `#${url?.split('#')[1] ?? ''}`;
13
+ const getHash = () => {
14
+ return IN_IFRAME
15
+ ? getPartialURLHashFragment(getFin5FrameURL())
16
+ : window.location.hash;
17
+ };
18
+ export const fin5SkipHashUpdate = () => getApp()?.set('skipHashUpdate', true);
19
+ const setHash = (hash) => {
20
+ if (IN_IFRAME) {
21
+ return fin5SkipHashUpdate()?.then(() => {
22
+ const frameParameters = getFin5HashFrameParameters();
23
+ frameParameters.set('url', frameParameters.get('url')?.split('#')[0] + '#' + hash);
24
+ getTopLocation().hash = `#${getTopLocation().hash.slice(1).split('?')[0]}?${frameParameters.toString()}`;
25
+ });
26
+ }
27
+ else {
28
+ window.location.hash = hash;
29
+ return Promise.resolve();
30
+ }
31
+ };
32
+ export const getHashParameters = () => new URLSearchParams(getHash().slice(1));
33
+ /**
34
+ * Use a parameter in the hash of a custom app running in FIN 5 as state.
35
+ * @param name parameter name.
36
+ * @param initialState initial state used if the parameter is not defined.
37
+ * @returns the parameter value and a function to update it.
38
+ */
39
+ export const useFin5AppURLHashParameter = (name, initialState) => {
40
+ const [paramValue, setParamValue] = useState(getHashParameters()?.get(name) ?? undefined);
41
+ const setHashParameter = async (value) => {
42
+ const params = getHashParameters();
43
+ if (params.get(name) !== value) {
44
+ if (value === '' || value == null) {
45
+ params.delete(name);
46
+ }
47
+ else {
48
+ params?.set(name, value);
49
+ }
50
+ await setHash(params?.toString());
51
+ setParamValue(value);
52
+ }
53
+ };
54
+ useEffect(() => {
55
+ if (!getHashParameters()?.has(name) && initialState) {
56
+ setHashParameter(initialState);
57
+ }
58
+ }, []);
59
+ useEffect(() => {
60
+ const onHashChange = () => {
61
+ setParamValue(getHashParameters()?.get(name) ?? undefined);
62
+ };
63
+ if (IN_IFRAME) {
64
+ getTop().addEventListener('hashchange', onHashChange);
65
+ return () => {
66
+ getTop().removeEventListener('hashchange', onHashChange);
67
+ };
68
+ }
69
+ return () => {
70
+ return;
71
+ };
72
+ }, []);
73
+ return [paramValue, setHashParameter];
74
+ };
75
+ /**
76
+ * Use all the parameters in the hash of a custom app running in FIN 5 as state.
77
+ * @param parameters the initial (optional) values for the parameters
78
+ * @returns the URL parameters and a function to patch the parameters.
79
+ */
80
+ export const useFin5AppURLHashParameters = (parameters) => {
81
+ const [paramValues, setParamValues] = useState(getHashParameters());
82
+ // Patch the parameters: this updates just the URL parameters passed.
83
+ // If there is a parameter in the hash and not in the function arg, that is left untouched.
84
+ // To remove a parameter in the hash, set it to null or empty string.
85
+ const setHashParameters = async (paramsToUpdate) => {
86
+ const params = getHashParameters();
87
+ Array.from(paramsToUpdate.entries()).forEach(([paramKey, newParamValue]) => {
88
+ if (newParamValue !== params.get(paramKey)) {
89
+ if (newParamValue == null || newParamValue === '') {
90
+ params.delete(paramKey);
91
+ }
92
+ else {
93
+ params.set(paramKey, newParamValue);
94
+ }
95
+ }
96
+ });
97
+ await setHash(params.toString());
98
+ setParamValues(params);
99
+ };
100
+ // Initial setup.
101
+ useEffect(() => {
102
+ const hashParameters = getHashParameters();
103
+ if (parameters) {
104
+ Array.from(parameters.entries()).forEach(([paramKey, paramValue]) => {
105
+ if (!hashParameters.has(paramKey) &&
106
+ paramValue != null &&
107
+ paramValue !== '') {
108
+ hashParameters.set(paramKey, paramValue);
109
+ }
110
+ });
111
+ setHashParameters(hashParameters);
112
+ }
113
+ }, []);
114
+ useEffect(() => {
115
+ const onHashChange = () => {
116
+ setParamValues(getHashParameters());
117
+ };
118
+ getTop().addEventListener('hashchange', onHashChange);
119
+ return () => {
120
+ getTop().removeEventListener('hashchange', onHashChange);
121
+ };
122
+ }, []);
123
+ return [paramValues, setHashParameters];
124
+ };
125
125
  //# sourceMappingURL=useFin5AppURLHashParameter.js.map
@@ -1,35 +1,35 @@
1
- export * from './fin5Top/fin5FileUpload';
2
- export * from './fin5Top/fin5Top';
3
- export * from './fin5Top/finEdge2Cloud';
4
- export * from './fin5Top/getFin5BinUrl';
5
- export * from './fin5Top/openFin5Alarm';
6
- export * from './fin5Top/openFin5Historian';
7
- export * from './fin5Top/useFin5AppURLHashParameter';
8
- export * from './jobs/jobUtils';
9
- export * from './react/components/ErrorBoundary';
10
- export * from './react/components/ErrorDisplayer';
11
- export * from './react/components/Loader';
12
- export * from './react/components/LoadingSpinner';
13
- export * from './react/components/graphics/GraphicViewer';
14
- export * from './react/components/graphics/GraphicsTabViewer';
15
- export * from './react/components/navigation/BasicLayout';
16
- export * from './react/components/navigation/MenuPage';
17
- export * from './react/components/navigation/ReactRouterLayout';
18
- export * from './react/components/navigation/ReactRouterHeaderSiderLayout';
19
- export * from './react/components/navigation/customRouting/RouterLayout';
20
- export * from './react/components/navigation/customRouting/Router';
21
- export * from './react/components/resolvable/configurationForm/ConfigurationForm';
22
- export * from './react/components/resolvable/configurationForm/ConfigurationFormEntry';
23
- export * from './react/components/resolvable/configurationForm/getSectionDefault';
24
- export * from './react/components/RecordImage';
25
- export * from './react/components/charts/QRCode';
26
- export * from './react/components/charts/line-bar/Chart';
27
- export * from './react/components/charts/line-bar/HGridChart';
28
- export * from './react/components/charts/pie/PieChart';
29
- export * from './react/components/charts/pie/SimplePieChart';
30
- export * from './react/components/makeCustomElement';
31
- export * from './react/hooks/useFin5BinUrl';
32
- export * from './react/hooks/useFin5ColorScheme';
33
- export * from './react/hooks/useScreenSize';
34
- export * from './react/app/Fin5AppContainer';
35
- export * from './react/app/Fin5AppRootStore';
1
+ export * from './fin5Top/fin5FileUpload';
2
+ export * from './fin5Top/fin5Top';
3
+ export * from './fin5Top/finEdge2Cloud';
4
+ export * from './fin5Top/getFin5BinUrl';
5
+ export * from './fin5Top/openFin5Alarm';
6
+ export * from './fin5Top/openFin5Historian';
7
+ export * from './fin5Top/useFin5AppURLHashParameter';
8
+ export * from './jobs/jobUtils';
9
+ export * from './react/components/ErrorBoundary';
10
+ export * from './react/components/ErrorDisplayer';
11
+ export * from './react/components/Loader';
12
+ export * from './react/components/LoadingSpinner';
13
+ export * from './react/components/graphics/GraphicViewer';
14
+ export * from './react/components/graphics/GraphicsTabViewer';
15
+ export * from './react/components/navigation/BasicLayout';
16
+ export * from './react/components/navigation/MenuPage';
17
+ export * from './react/components/navigation/ReactRouterLayout';
18
+ export * from './react/components/navigation/ReactRouterHeaderSiderLayout';
19
+ export * from './react/components/navigation/customRouting/RouterLayout';
20
+ export * from './react/components/navigation/customRouting/Router';
21
+ export * from './react/components/resolvable/configurationForm/ConfigurationForm';
22
+ export * from './react/components/resolvable/configurationForm/ConfigurationFormEntry';
23
+ export * from './react/components/resolvable/configurationForm/getSectionDefault';
24
+ export * from './react/components/RecordImage';
25
+ export * from './react/components/charts/QRCode';
26
+ export * from './react/components/charts/line-bar/Chart';
27
+ export * from './react/components/charts/line-bar/HGridChart';
28
+ export * from './react/components/charts/pie/PieChart';
29
+ export * from './react/components/charts/pie/SimplePieChart';
30
+ export * from './react/components/makeCustomElement';
31
+ export * from './react/hooks/useFin5BinUrl';
32
+ export * from './react/hooks/useFin5ColorScheme';
33
+ export * from './react/hooks/useScreenSize';
34
+ export * from './react/app/Fin5AppContainer';
35
+ export * from './react/app/Fin5AppRootStore';
package/dist_es/index.js CHANGED
@@ -1,54 +1,54 @@
1
- /*
2
- * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
- */
4
- //////////////////////////////////////////////////////////////////////////
5
- // Fin5 APIs related modules
6
- //////////////////////////////////////////////////////////////////////////
7
- export * from './fin5Top/fin5FileUpload';
8
- export * from './fin5Top/fin5Top';
9
- export * from './fin5Top/finEdge2Cloud';
10
- export * from './fin5Top/getFin5BinUrl';
11
- export * from './fin5Top/openFin5Alarm';
12
- export * from './fin5Top/openFin5Historian';
13
- export * from './fin5Top/useFin5AppURLHashParameter';
14
- //////////////////////////////////////////////////////////////////////////
15
- // Fin5 features related modules
16
- //////////////////////////////////////////////////////////////////////////
17
- export * from './jobs/jobUtils';
18
- //////////////////////////////////////////////////////////////////////////
19
- // React components
20
- //////////////////////////////////////////////////////////////////////////
21
- export * from './react/components/ErrorBoundary';
22
- export * from './react/components/ErrorDisplayer';
23
- export * from './react/components/Loader';
24
- export * from './react/components/LoadingSpinner';
25
- export * from './react/components/graphics/GraphicViewer';
26
- export * from './react/components/graphics/GraphicsTabViewer';
27
- export * from './react/components/navigation/BasicLayout';
28
- export * from './react/components/navigation/MenuPage';
29
- export * from './react/components/navigation/ReactRouterLayout';
30
- export * from './react/components/navigation/ReactRouterHeaderSiderLayout';
31
- export * from './react/components/navigation/customRouting/RouterLayout';
32
- export * from './react/components/navigation/customRouting/Router';
33
- export * from './react/components/resolvable/configurationForm/ConfigurationForm';
34
- export * from './react/components/resolvable/configurationForm/ConfigurationFormEntry';
35
- export * from './react/components/resolvable/configurationForm/getSectionDefault';
36
- export * from './react/components/RecordImage';
37
- export * from './react/components/charts/QRCode';
38
- export * from './react/components/charts/line-bar/Chart';
39
- export * from './react/components/charts/line-bar/HGridChart';
40
- export * from './react/components/charts/pie/PieChart';
41
- export * from './react/components/charts/pie/SimplePieChart';
42
- export * from './react/components/makeCustomElement';
43
- //////////////////////////////////////////////////////////////////////////
44
- // React hooks
45
- //////////////////////////////////////////////////////////////////////////
46
- export * from './react/hooks/useFin5BinUrl';
47
- export * from './react/hooks/useFin5ColorScheme';
48
- export * from './react/hooks/useScreenSize';
49
- //////////////////////////////////////////////////////////////////////////
50
- // j2inn/app support for FIN5
51
- //////////////////////////////////////////////////////////////////////////
52
- export * from './react/app/Fin5AppContainer';
53
- export * from './react/app/Fin5AppRootStore';
1
+ /*
2
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
+ */
4
+ //////////////////////////////////////////////////////////////////////////
5
+ // Fin5 APIs related modules
6
+ //////////////////////////////////////////////////////////////////////////
7
+ export * from './fin5Top/fin5FileUpload';
8
+ export * from './fin5Top/fin5Top';
9
+ export * from './fin5Top/finEdge2Cloud';
10
+ export * from './fin5Top/getFin5BinUrl';
11
+ export * from './fin5Top/openFin5Alarm';
12
+ export * from './fin5Top/openFin5Historian';
13
+ export * from './fin5Top/useFin5AppURLHashParameter';
14
+ //////////////////////////////////////////////////////////////////////////
15
+ // Fin5 features related modules
16
+ //////////////////////////////////////////////////////////////////////////
17
+ export * from './jobs/jobUtils';
18
+ //////////////////////////////////////////////////////////////////////////
19
+ // React components
20
+ //////////////////////////////////////////////////////////////////////////
21
+ export * from './react/components/ErrorBoundary';
22
+ export * from './react/components/ErrorDisplayer';
23
+ export * from './react/components/Loader';
24
+ export * from './react/components/LoadingSpinner';
25
+ export * from './react/components/graphics/GraphicViewer';
26
+ export * from './react/components/graphics/GraphicsTabViewer';
27
+ export * from './react/components/navigation/BasicLayout';
28
+ export * from './react/components/navigation/MenuPage';
29
+ export * from './react/components/navigation/ReactRouterLayout';
30
+ export * from './react/components/navigation/ReactRouterHeaderSiderLayout';
31
+ export * from './react/components/navigation/customRouting/RouterLayout';
32
+ export * from './react/components/navigation/customRouting/Router';
33
+ export * from './react/components/resolvable/configurationForm/ConfigurationForm';
34
+ export * from './react/components/resolvable/configurationForm/ConfigurationFormEntry';
35
+ export * from './react/components/resolvable/configurationForm/getSectionDefault';
36
+ export * from './react/components/RecordImage';
37
+ export * from './react/components/charts/QRCode';
38
+ export * from './react/components/charts/line-bar/Chart';
39
+ export * from './react/components/charts/line-bar/HGridChart';
40
+ export * from './react/components/charts/pie/PieChart';
41
+ export * from './react/components/charts/pie/SimplePieChart';
42
+ export * from './react/components/makeCustomElement';
43
+ //////////////////////////////////////////////////////////////////////////
44
+ // React hooks
45
+ //////////////////////////////////////////////////////////////////////////
46
+ export * from './react/hooks/useFin5BinUrl';
47
+ export * from './react/hooks/useFin5ColorScheme';
48
+ export * from './react/hooks/useScreenSize';
49
+ //////////////////////////////////////////////////////////////////////////
50
+ // j2inn/app support for FIN5
51
+ //////////////////////////////////////////////////////////////////////////
52
+ export * from './react/app/Fin5AppContainer';
53
+ export * from './react/app/Fin5AppRootStore';
54
54
  //# sourceMappingURL=index.js.map
@@ -1,14 +1,14 @@
1
- import { HDict, HNum, HStr } from 'haystack-core';
2
- export declare enum JobStatus {
3
- doneOk = "doneOk",
4
- doneErr = "doneErr",
5
- running = "running"
6
- }
7
- export interface JobStatusDict extends HDict {
8
- jobStatus: HStr;
9
- progress: HNum;
10
- progressMsg: HStr;
11
- }
12
- export declare const isJobSuccessful: (jobStatus: JobStatusDict) => boolean;
13
- export declare const isJobError: (jobStatus: JobStatusDict) => boolean;
14
- export declare const isJobRunning: (jobStatus: JobStatusDict) => boolean;
1
+ import { HDict, HNum, HStr } from 'haystack-core';
2
+ export declare enum JobStatus {
3
+ doneOk = "doneOk",
4
+ doneErr = "doneErr",
5
+ running = "running"
6
+ }
7
+ export interface JobStatusDict extends HDict {
8
+ jobStatus: HStr;
9
+ progress: HNum;
10
+ progressMsg: HStr;
11
+ }
12
+ export declare const isJobSuccessful: (jobStatus: JobStatusDict) => boolean;
13
+ export declare const isJobError: (jobStatus: JobStatusDict) => boolean;
14
+ export declare const isJobRunning: (jobStatus: JobStatusDict) => boolean;
@@ -1,10 +1,10 @@
1
- export var JobStatus;
2
- (function (JobStatus) {
3
- JobStatus["doneOk"] = "doneOk";
4
- JobStatus["doneErr"] = "doneErr";
5
- JobStatus["running"] = "running";
6
- })(JobStatus || (JobStatus = {}));
7
- export const isJobSuccessful = (jobStatus) => jobStatus.jobStatus.value === JobStatus.doneOk;
8
- export const isJobError = (jobStatus) => jobStatus.jobStatus.value === JobStatus.doneErr;
9
- export const isJobRunning = (jobStatus) => jobStatus.jobStatus.value === JobStatus.running;
1
+ export var JobStatus;
2
+ (function (JobStatus) {
3
+ JobStatus["doneOk"] = "doneOk";
4
+ JobStatus["doneErr"] = "doneErr";
5
+ JobStatus["running"] = "running";
6
+ })(JobStatus || (JobStatus = {}));
7
+ export const isJobSuccessful = (jobStatus) => jobStatus.jobStatus.value === JobStatus.doneOk;
8
+ export const isJobError = (jobStatus) => jobStatus.jobStatus.value === JobStatus.doneErr;
9
+ export const isJobRunning = (jobStatus) => jobStatus.jobStatus.value === JobStatus.running;
10
10
  //# sourceMappingURL=jobUtils.js.map
@@ -1,36 +1,36 @@
1
- import React from 'react';
2
- import { AppStore } from '@j2inn/app';
3
- import { Client } from 'haystack-nclient';
4
- import { ThemeDef } from '@j2inn/ui';
5
- /**
6
- * Properties for the dev application container component.
7
- */
8
- export interface Fin5AppContainerProps {
9
- /**
10
- * The children to render.
11
- */
12
- children?: React.ReactNode;
13
- /**
14
- * The app store.
15
- */
16
- appStore?: AppStore;
17
- /**
18
- * The network client object.
19
- */
20
- client?: Client;
21
- /**
22
- * Optional project name. Typically this is only specified
23
- * in development mode. It's typically picked up from the URL.
24
- */
25
- project?: string;
26
- /**
27
- * The optional theme to use.
28
- */
29
- theme?: ThemeDef;
30
- }
31
- /**
32
- * Creates a basic application container environment to run a view in FIN5.
33
- */
34
- export declare const Fin5AppContainer: (({ children, appStore, client, project, theme, }: Fin5AppContainerProps) => JSX.Element) & {
35
- displayName: string;
36
- };
1
+ import React from 'react';
2
+ import { AppStore } from '@j2inn/app';
3
+ import { Client } from 'haystack-nclient';
4
+ import { ThemeDef } from '@j2inn/ui';
5
+ /**
6
+ * Properties for the dev application container component.
7
+ */
8
+ export interface Fin5AppContainerProps {
9
+ /**
10
+ * The children to render.
11
+ */
12
+ children?: React.ReactNode;
13
+ /**
14
+ * The app store.
15
+ */
16
+ appStore?: AppStore;
17
+ /**
18
+ * The network client object.
19
+ */
20
+ client?: Client;
21
+ /**
22
+ * Optional project name. Typically this is only specified
23
+ * in development mode. It's typically picked up from the URL.
24
+ */
25
+ project?: string;
26
+ /**
27
+ * The optional theme to use.
28
+ */
29
+ theme?: ThemeDef;
30
+ }
31
+ /**
32
+ * Creates a basic application container environment to run a view in FIN5.
33
+ */
34
+ export declare const Fin5AppContainer: (({ children, appStore, client, project, theme, }: Fin5AppContainerProps) => JSX.Element) & {
35
+ displayName: string;
36
+ };