@j2inn/fin5-ui-utils 8.1.1 → 8.1.2-beta.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 (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 +20 -20
  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 -65
  14. package/dist/fin5Top/fin5FileUpload.d.ts +24 -24
  15. package/dist/fin5Top/fin5FileUpload.js +51 -51
  16. package/dist/fin5Top/fin5Top.d.ts +167 -165
  17. package/dist/fin5Top/fin5Top.js +61 -61
  18. package/dist/fin5Top/fin5Top.js.map +1 -1
  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 +145 -145
  35. package/dist/react/app/Fin5AppRootStore.d.ts +40 -40
  36. package/dist/react/app/Fin5AppRootStore.js +90 -90
  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 +56 -56
  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 +15 -15
  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 -39
  103. package/dist_es/fin5Top/fin5FileUpload.d.ts +24 -24
  104. package/dist_es/fin5Top/fin5FileUpload.js +47 -47
  105. package/dist_es/fin5Top/fin5Top.d.ts +167 -165
  106. package/dist_es/fin5Top/fin5Top.js +57 -57
  107. package/dist_es/fin5Top/fin5Top.js.map +1 -1
  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 +116 -116
  124. package/dist_es/react/app/Fin5AppContainer.jsx +82 -0
  125. package/dist_es/react/app/Fin5AppContainer.jsx.map +1 -0
  126. package/dist_es/react/app/Fin5AppRootStore.d.ts +40 -40
  127. package/dist_es/react/app/Fin5AppRootStore.js +86 -86
  128. package/dist_es/react/components/ErrorBoundary.d.ts +57 -57
  129. package/dist_es/react/components/ErrorBoundary.js +123 -123
  130. package/dist_es/react/components/ErrorBoundary.jsx +150 -0
  131. package/dist_es/react/components/ErrorBoundary.jsx.map +1 -0
  132. package/dist_es/react/components/ErrorDisplayer.d.ts +19 -19
  133. package/dist_es/react/components/ErrorDisplayer.js +28 -28
  134. package/dist_es/react/components/ErrorDisplayer.jsx +36 -0
  135. package/dist_es/react/components/ErrorDisplayer.jsx.map +1 -0
  136. package/dist_es/react/components/Loader.d.ts +9 -9
  137. package/dist_es/react/components/Loader.js +12 -12
  138. package/dist_es/react/components/Loader.jsx +13 -0
  139. package/dist_es/react/components/Loader.jsx.map +1 -0
  140. package/dist_es/react/components/LoadingSpinner.d.ts +2 -2
  141. package/dist_es/react/components/LoadingSpinner.js +20 -20
  142. package/dist_es/react/components/LoadingSpinner.jsx +22 -0
  143. package/dist_es/react/components/LoadingSpinner.jsx.map +1 -0
  144. package/dist_es/react/components/RecordImage.d.ts +20 -20
  145. package/dist_es/react/components/RecordImage.js +24 -24
  146. package/dist_es/react/components/charts/QRCode.d.ts +25 -25
  147. package/dist_es/react/components/charts/QRCode.js +52 -52
  148. package/dist_es/react/components/charts/line-bar/Chart.d.ts +166 -166
  149. package/dist_es/react/components/charts/line-bar/Chart.js +415 -415
  150. package/dist_es/react/components/charts/line-bar/HGridChart.d.ts +58 -58
  151. package/dist_es/react/components/charts/line-bar/HGridChart.js +250 -250
  152. package/dist_es/react/components/charts/line-bar/ZincGridChart.d.ts +12 -0
  153. package/dist_es/react/components/charts/line-bar/ZincGridChart.js +17 -0
  154. package/dist_es/react/components/charts/line-bar/ZincGridChart.js.map +1 -0
  155. package/dist_es/react/components/charts/pie/PieChart.d.ts +94 -94
  156. package/dist_es/react/components/charts/pie/PieChart.js +177 -177
  157. package/dist_es/react/components/charts/pie/SimplePieChart.d.ts +21 -21
  158. package/dist_es/react/components/charts/pie/SimplePieChart.js +25 -25
  159. package/dist_es/react/components/graphics/GraphicViewer.d.ts +10 -10
  160. package/dist_es/react/components/graphics/GraphicViewer.js +22 -22
  161. package/dist_es/react/components/graphics/GraphicViewer.jsx +23 -0
  162. package/dist_es/react/components/graphics/GraphicViewer.jsx.map +1 -0
  163. package/dist_es/react/components/graphics/GraphicsTabViewer.d.ts +17 -17
  164. package/dist_es/react/components/graphics/GraphicsTabViewer.js +60 -60
  165. package/dist_es/react/components/graphics/GraphicsTabViewer.jsx +63 -0
  166. package/dist_es/react/components/graphics/GraphicsTabViewer.jsx.map +1 -0
  167. package/dist_es/react/components/makeCustomElement.d.ts +16 -16
  168. package/dist_es/react/components/makeCustomElement.js +142 -142
  169. package/dist_es/react/components/navigation/BasicLayout.d.ts +41 -41
  170. package/dist_es/react/components/navigation/BasicLayout.js +124 -124
  171. package/dist_es/react/components/navigation/BasicLayout.jsx +133 -0
  172. package/dist_es/react/components/navigation/BasicLayout.jsx.map +1 -0
  173. package/dist_es/react/components/navigation/HeaderSiderLayout.d.ts +13 -13
  174. package/dist_es/react/components/navigation/HeaderSiderLayout.js +80 -80
  175. package/dist_es/react/components/navigation/MenuPage.d.ts +37 -37
  176. package/dist_es/react/components/navigation/MenuPage.js +30 -30
  177. package/dist_es/react/components/navigation/MenuPage.jsx +31 -0
  178. package/dist_es/react/components/navigation/MenuPage.jsx.map +1 -0
  179. package/dist_es/react/components/navigation/MenuTrigger.d.ts +9 -9
  180. package/dist_es/react/components/navigation/MenuTrigger.js +28 -28
  181. package/dist_es/react/components/navigation/ReactRouterHeaderSiderLayout.d.ts +11 -11
  182. package/dist_es/react/components/navigation/ReactRouterHeaderSiderLayout.js +18 -18
  183. package/dist_es/react/components/navigation/ReactRouterLayout.d.ts +46 -46
  184. package/dist_es/react/components/navigation/ReactRouterLayout.js +99 -99
  185. package/dist_es/react/components/navigation/Router.d.ts +12 -0
  186. package/dist_es/react/components/navigation/Router.js +19 -0
  187. package/dist_es/react/components/navigation/Router.js.map +1 -0
  188. package/dist_es/react/components/navigation/Router.jsx +19 -0
  189. package/dist_es/react/components/navigation/Router.jsx.map +1 -0
  190. package/dist_es/react/components/navigation/customRouting/Router.d.ts +12 -12
  191. package/dist_es/react/components/navigation/customRouting/Router.js +18 -18
  192. package/dist_es/react/components/navigation/customRouting/RouterLayout.d.ts +11 -11
  193. package/dist_es/react/components/navigation/customRouting/RouterLayout.js +34 -34
  194. package/dist_es/react/components/navigation/react-router/BasicLayout.d.ts +23 -0
  195. package/dist_es/react/components/navigation/react-router/BasicLayout.js +82 -0
  196. package/dist_es/react/components/navigation/react-router/BasicLayout.js.map +1 -0
  197. package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.d.ts +24 -0
  198. package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.js +82 -0
  199. package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.js.map +1 -0
  200. package/dist_es/react/components/resolvable/configurationForm/ConfigurationForm.d.ts +27 -27
  201. package/dist_es/react/components/resolvable/configurationForm/ConfigurationForm.js +64 -64
  202. package/dist_es/react/components/resolvable/configurationForm/ConfigurationFormEntry.d.ts +16 -16
  203. package/dist_es/react/components/resolvable/configurationForm/ConfigurationFormEntry.js +58 -58
  204. package/dist_es/react/components/resolvable/configurationForm/getSectionDefault.d.ts +16 -16
  205. package/dist_es/react/components/resolvable/configurationForm/getSectionDefault.js +94 -94
  206. package/dist_es/react/hooks/useFin5BinUrl.d.ts +6 -6
  207. package/dist_es/react/hooks/useFin5BinUrl.js +11 -11
  208. package/dist_es/react/hooks/useFin5ColorScheme.d.ts +2 -2
  209. package/dist_es/react/hooks/useFin5ColorScheme.js +52 -52
  210. package/dist_es/react/hooks/useScreenSize.d.ts +7 -7
  211. package/dist_es/react/hooks/useScreenSize.js +27 -27
  212. package/package.json +1 -1
@@ -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
+ };
@@ -1,117 +1,117 @@
1
- /*
2
- * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
- */
4
- import React, { useEffect, useRef, useState } from 'react';
5
- import { AppRootStoreContext, AppStoreContext } from '@j2inn/app-react';
6
- import { observer } from 'mobx-react-lite';
7
- import { Fin5AppRootStore } from './Fin5AppRootStore';
8
- import { Client, } from 'haystack-nclient';
9
- import { ClientContext } from 'haystack-react';
10
- import { I18NProvider } from '@j2inn/utils';
11
- import { ThemeProvider } from 'react-jss';
12
- import { DEFAULT_THEME, GenerateTheme } from '@j2inn/ui';
13
- import { fin5Top } from '../../fin5Top/fin5Top';
14
- import { useFin5AppURLHashParameter } from '../../fin5Top/useFin5AppURLHashParameter';
15
- import { HRef } from 'haystack-core';
16
- import { ErrorBoundary } from '../components/ErrorBoundary';
17
- import Loader from '../components/Loader';
18
- const PATH_PREFIX = 'finApp';
19
- const getServiceUrl = ({ origin, path }) => `${origin}/${PATH_PREFIX}/api/${path}`;
20
- const getOpUrl = ({ origin, project, op }) => `${origin}/api/${project}/${op}`;
21
- const getHaystackServiceUrl = ({ origin, project, path, }) => `${origin}/${PATH_PREFIX}/api/haystack${project ? `/${project}` : ''}/${path}`;
22
- const getHostServiceUrl = ({ origin, path, }) => `${origin}/${PATH_PREFIX}/api/host/${path}`;
23
- /**
24
- * Runtime type guard that checks whether a store instance
25
- * exposes a boolean `initialized` flag.
26
- *
27
- * @param {AppStore | null | undefined} appStore - The store instance to test
28
- * @returns {appStore is AppStore & { initialized: boolean }} True if `appStore` has a boolean `initialized` property
29
- *
30
- * @remarks
31
- * To use the FINX onMessage feature, ensure the concrete store declares `initialized` ahead of time,
32
- * and set to true when children components have fully rendered.
33
- */
34
- function hasInitialized(appStore) {
35
- return (!!appStore &&
36
- 'initialized' in appStore &&
37
- typeof appStore.initialized === 'boolean');
38
- }
39
- /**
40
- * Creates a basic application container environment to run a view in FIN5.
41
- */
42
- export const Fin5AppContainer = observer(({ children, appStore, client, project, theme = GenerateTheme(DEFAULT_THEME).light, }) => {
43
- const [loading, setLoading] = useState(true);
44
- const [loadingi18n, setLoadingi18n] = useState(true);
45
- const rootStoreRef = useRef(null);
46
- rootStoreRef.current ??= new Fin5AppRootStore();
47
- const rootStore = rootStoreRef.current;
48
- const [hashProjName] = useFin5AppURLHashParameter('projectName');
49
- const containerProject = project || hashProjName || fin5Top?.finstack?.projectName || '';
50
- const locale = fin5Top?.languageManager?.currentLang ?? navigator?.language;
51
- rootStore.locale = locale;
52
- if (!rootStore.allLocales.includes(locale)) {
53
- rootStore.allLocales.push(locale);
54
- }
55
- const target = fin5Top?.app?.TargetRef?.() || '';
56
- rootStore.target = target ? HRef.make(target).value : '';
57
- const initialized = hasInitialized(appStore)
58
- ? appStore.initialized
59
- : false;
60
- const getClient = () => client ??
61
- new Client({
62
- base: new URL(window.location.href),
63
- project: containerProject,
64
- options: { headers: { accept: 'text/zinc' } },
65
- getServiceUrl,
66
- getOpUrl,
67
- getHaystackServiceUrl,
68
- getHostServiceUrl,
69
- });
70
- const [containerClient, setContainerClient] = useState(getClient);
71
- useEffect(() => {
72
- setLoading(true);
73
- const newClient = getClient();
74
- setContainerClient(newClient);
75
- // Load everything network wise before we load
76
- // the application.
77
- Promise.all([
78
- newClient.ext.eval('finGetCurrentUser()'),
79
- newClient.ext.loadDefs(),
80
- ]).then(([userGrid]) => {
81
- rootStore.currentUser = userGrid.first;
82
- setLoading(false);
83
- });
84
- }, [client, containerProject]);
85
- useEffect(() => {
86
- const onMessage = (event) => {
87
- if (fin5Top?.location.origin === event.origin &&
88
- appStore?.onMessage) {
89
- appStore.onMessage({
90
- message: event.data.message,
91
- params: event.data,
92
- client: getClient(),
93
- appRootStore: rootStore,
94
- });
95
- }
96
- };
97
- window.addEventListener('message', onMessage);
98
- return () => window.removeEventListener('message', onMessage);
99
- }, []);
100
- useEffect(() => {
101
- // tell the top level app its ready
102
- if (initialized) {
103
- fin5Top?.postMessage({
104
- kind: 'iframeApp',
105
- loading: false,
106
- });
107
- }
108
- }, [initialized]);
109
- return (React.createElement(AppRootStoreContext.Provider, { value: rootStore },
110
- React.createElement(AppStoreContext.Provider, { value: appStore },
111
- React.createElement(ClientContext.Provider, { value: containerClient },
112
- React.createElement(I18NProvider, { locale: locale, setLoading: setLoadingi18n },
113
- React.createElement(ThemeProvider, { theme: theme },
114
- React.createElement(Loader, { loading: loading || loadingi18n },
115
- React.createElement(ErrorBoundary, { mode: "global" /* ErrorBoundaryMode.global */ }, children))))))));
116
- });
1
+ /*
2
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
+ */
4
+ import React, { useEffect, useRef, useState } from 'react';
5
+ import { AppRootStoreContext, AppStoreContext } from '@j2inn/app-react';
6
+ import { observer } from 'mobx-react-lite';
7
+ import { Fin5AppRootStore } from './Fin5AppRootStore';
8
+ import { Client, } from 'haystack-nclient';
9
+ import { ClientContext } from 'haystack-react';
10
+ import { I18NProvider } from '@j2inn/utils';
11
+ import { ThemeProvider } from 'react-jss';
12
+ import { DEFAULT_THEME, GenerateTheme } from '@j2inn/ui';
13
+ import { fin5Top } from '../../fin5Top/fin5Top';
14
+ import { useFin5AppURLHashParameter } from '../../fin5Top/useFin5AppURLHashParameter';
15
+ import { HRef } from 'haystack-core';
16
+ import { ErrorBoundary } from '../components/ErrorBoundary';
17
+ import Loader from '../components/Loader';
18
+ const PATH_PREFIX = 'finApp';
19
+ const getServiceUrl = ({ origin, path }) => `${origin}/${PATH_PREFIX}/api/${path}`;
20
+ const getOpUrl = ({ origin, project, op }) => `${origin}/api/${project}/${op}`;
21
+ const getHaystackServiceUrl = ({ origin, project, path, }) => `${origin}/${PATH_PREFIX}/api/haystack${project ? `/${project}` : ''}/${path}`;
22
+ const getHostServiceUrl = ({ origin, path, }) => `${origin}/${PATH_PREFIX}/api/host/${path}`;
23
+ /**
24
+ * Runtime type guard that checks whether a store instance
25
+ * exposes a boolean `initialized` flag.
26
+ *
27
+ * @param {AppStore | null | undefined} appStore - The store instance to test
28
+ * @returns {appStore is AppStore & { initialized: boolean }} True if `appStore` has a boolean `initialized` property
29
+ *
30
+ * @remarks
31
+ * To use the FINX onMessage feature, ensure the concrete store declares `initialized` ahead of time,
32
+ * and set to true when children components have fully rendered.
33
+ */
34
+ function hasInitialized(appStore) {
35
+ return (!!appStore &&
36
+ 'initialized' in appStore &&
37
+ typeof appStore.initialized === 'boolean');
38
+ }
39
+ /**
40
+ * Creates a basic application container environment to run a view in FIN5.
41
+ */
42
+ export const Fin5AppContainer = observer(({ children, appStore, client, project, theme = GenerateTheme(DEFAULT_THEME).light, }) => {
43
+ const [loading, setLoading] = useState(true);
44
+ const [loadingi18n, setLoadingi18n] = useState(true);
45
+ const rootStoreRef = useRef(null);
46
+ rootStoreRef.current ??= new Fin5AppRootStore();
47
+ const rootStore = rootStoreRef.current;
48
+ const [hashProjName] = useFin5AppURLHashParameter('projectName');
49
+ const containerProject = project || hashProjName || fin5Top?.finstack?.projectName || '';
50
+ const locale = fin5Top?.languageManager?.currentLang ?? navigator?.language;
51
+ rootStore.locale = locale;
52
+ if (!rootStore.allLocales.includes(locale)) {
53
+ rootStore.allLocales.push(locale);
54
+ }
55
+ const target = fin5Top?.app?.TargetRef?.() || '';
56
+ rootStore.target = target ? HRef.make(target).value : '';
57
+ const initialized = hasInitialized(appStore)
58
+ ? appStore.initialized
59
+ : false;
60
+ const getClient = () => client ??
61
+ new Client({
62
+ base: new URL(window.location.href),
63
+ project: containerProject,
64
+ options: { headers: { accept: 'text/zinc' } },
65
+ getServiceUrl,
66
+ getOpUrl,
67
+ getHaystackServiceUrl,
68
+ getHostServiceUrl,
69
+ });
70
+ const [containerClient, setContainerClient] = useState(getClient);
71
+ useEffect(() => {
72
+ setLoading(true);
73
+ const newClient = getClient();
74
+ setContainerClient(newClient);
75
+ // Load everything network wise before we load
76
+ // the application.
77
+ Promise.all([
78
+ newClient.ext.eval('finGetCurrentUser()'),
79
+ newClient.ext.loadDefs(),
80
+ ]).then(([userGrid]) => {
81
+ rootStore.currentUser = userGrid.first;
82
+ setLoading(false);
83
+ });
84
+ }, [client, containerProject]);
85
+ useEffect(() => {
86
+ const onMessage = (event) => {
87
+ if (fin5Top?.location.origin === event.origin &&
88
+ appStore?.onMessage) {
89
+ appStore.onMessage({
90
+ message: event.data.message,
91
+ params: event.data,
92
+ client: getClient(),
93
+ appRootStore: rootStore,
94
+ });
95
+ }
96
+ };
97
+ window.addEventListener('message', onMessage);
98
+ return () => window.removeEventListener('message', onMessage);
99
+ }, []);
100
+ useEffect(() => {
101
+ // tell the top level app its ready
102
+ if (initialized) {
103
+ fin5Top?.postMessage({
104
+ kind: 'iframeApp',
105
+ loading: false,
106
+ });
107
+ }
108
+ }, [initialized]);
109
+ return (React.createElement(AppRootStoreContext.Provider, { value: rootStore },
110
+ React.createElement(AppStoreContext.Provider, { value: appStore },
111
+ React.createElement(ClientContext.Provider, { value: containerClient },
112
+ React.createElement(I18NProvider, { locale: locale, setLoading: setLoadingi18n },
113
+ React.createElement(ThemeProvider, { theme: theme },
114
+ React.createElement(Loader, { loading: loading || loadingi18n },
115
+ React.createElement(ErrorBoundary, { mode: "global" /* ErrorBoundaryMode.global */ }, children))))))));
116
+ });
117
117
  //# sourceMappingURL=Fin5AppContainer.js.map
@@ -0,0 +1,82 @@
1
+ /*
2
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
+ */
4
+ import React, { useEffect, useRef, useState } from 'react';
5
+ import { AppRootStoreContext, AppStoreContext } from '@j2inn/app';
6
+ import { observer } from 'mobx-react-lite';
7
+ import { Fin5AppRootStore } from './Fin5AppRootStore';
8
+ import { Client, } from 'haystack-nclient';
9
+ import { ClientContext } from 'haystack-react';
10
+ import { I18NProvider } from '@j2inn/utils';
11
+ import { ThemeProvider } from 'react-jss';
12
+ import { DEFAULT_THEME, GenerateTheme } from '@j2inn/ui';
13
+ import { fin5Top } from '../../fin5Top/fin5Top';
14
+ import { useFin5AppURLHashParameter } from '../../fin5Top/useFin5AppURLHashParameter';
15
+ import { HRef } from 'haystack-core';
16
+ import { ErrorBoundary } from '../components/ErrorBoundary';
17
+ import Loader from '../components/Loader';
18
+ const PATH_PREFIX = 'finApp';
19
+ const getServiceUrl = ({ origin, path }) => `${origin}/${PATH_PREFIX}/api/${path}`;
20
+ const getOpUrl = ({ origin, project, op }) => `${origin}/api/${project}/${op}`;
21
+ const getHaystackServiceUrl = ({ origin, project, path, }) => `${origin}/${PATH_PREFIX}/api/haystack${project ? `/${project}` : ''}/${path}`;
22
+ const getHostServiceUrl = ({ origin, path, }) => `${origin}/${PATH_PREFIX}/api/host/${path}`;
23
+ /**
24
+ * Creates a basic application container environment to run a view in FIN5.
25
+ */
26
+ export const Fin5AppContainer = observer(({ children, appStore, client, project, theme = GenerateTheme(DEFAULT_THEME).light, }) => {
27
+ const [loading, setLoading] = useState(true);
28
+ const [loadingi18n, setLoadingi18n] = useState(true);
29
+ const rootStoreRef = useRef(null);
30
+ const rootStore = rootStoreRef.current ??
31
+ (rootStoreRef.current = new Fin5AppRootStore());
32
+ const [hashProjName] = useFin5AppURLHashParameter('projectName');
33
+ const containerProject = project || hashProjName || fin5Top?.finstack?.projectName || '';
34
+ const locale = fin5Top?.languageManager?.currentLang ?? navigator?.language;
35
+ rootStore.locale = locale;
36
+ if (!rootStore.allLocales.includes(locale)) {
37
+ rootStore.allLocales.push(locale);
38
+ }
39
+ const target = fin5Top?.app?.TargetRef?.() || '';
40
+ rootStore.target = target ? HRef.make(target).value : '';
41
+ const getClient = () => client ??
42
+ new Client({
43
+ base: new URL(window.location.href),
44
+ project: containerProject,
45
+ options: { headers: { accept: 'text/zinc' } },
46
+ getServiceUrl,
47
+ getOpUrl,
48
+ getHaystackServiceUrl,
49
+ getHostServiceUrl,
50
+ });
51
+ const [containerClient, setContainerClient] = useState(getClient);
52
+ useEffect(() => {
53
+ setLoading(true);
54
+ const newClient = getClient();
55
+ setContainerClient(newClient);
56
+ // Load everything network wise before we load
57
+ // the application.
58
+ Promise.all([
59
+ newClient.ext.eval('finGetCurrentUser()'),
60
+ newClient.ext.loadDefs(),
61
+ ]).then(([userGrid]) => {
62
+ rootStore.currentUser = userGrid.first;
63
+ setLoading(false);
64
+ });
65
+ }, [client, containerProject]);
66
+ return (<AppRootStoreContext.Provider value={rootStore}>
67
+ <AppStoreContext.Provider value={appStore}>
68
+ <ClientContext.Provider value={containerClient}>
69
+ <I18NProvider locale={locale} setLoading={setLoadingi18n}>
70
+ <ThemeProvider theme={theme}>
71
+ <Loader loading={loading || loadingi18n}>
72
+ <ErrorBoundary mode={"global" /* ErrorBoundaryMode.global */}>
73
+ {children}
74
+ </ErrorBoundary>
75
+ </Loader>
76
+ </ThemeProvider>
77
+ </I18NProvider>
78
+ </ClientContext.Provider>
79
+ </AppStoreContext.Provider>
80
+ </AppRootStoreContext.Provider>);
81
+ });
82
+ //# sourceMappingURL=Fin5AppContainer.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Fin5AppContainer.jsx","sourceRoot":"","sources":["../../../src/react/app/Fin5AppContainer.tsx"],"names":[],"mappings":"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"}
@@ -1,40 +1,40 @@
1
- import { App, AppRootStore, AppView, CustomHistory } from '@j2inn/app';
2
- import { HDict } from 'haystack-core';
3
- /**
4
- * An application root store for use with FIN5.
5
- */
6
- export declare class Fin5AppRootStore implements AppRootStore {
7
- project: string;
8
- sidebarOpen: boolean;
9
- locale: string;
10
- allLocales: string[];
11
- target: string;
12
- targetSidebar: string;
13
- currentUser: HDict | undefined;
14
- get app(): {
15
- id: string;
16
- name: string;
17
- app: App;
18
- view: AppView;
19
- } | undefined;
20
- get sidebar(): {
21
- id: string;
22
- name: string;
23
- app: App;
24
- view: AppView;
25
- } | undefined;
26
- readonly apps: App[];
27
- readonly history: CustomHistory;
28
- readonly historySidebar: CustomHistory;
29
- constructor();
30
- openAppInNewWindow(): void;
31
- open(appId: string, state?: Record<string, unknown>): void;
32
- openSidebar(): void;
33
- postAppMessage(): void;
34
- registerSidebars(): void;
35
- unregisterSidebars(): void;
36
- registerQuicklinks(): void;
37
- unregisterQuicklinks(): void;
38
- hasAppAccess: (appId: string) => boolean;
39
- hasSidebar(): boolean;
40
- }
1
+ import { App, AppRootStore, AppView, CustomHistory } from '@j2inn/app';
2
+ import { HDict } from 'haystack-core';
3
+ /**
4
+ * An application root store for use with FIN5.
5
+ */
6
+ export declare class Fin5AppRootStore implements AppRootStore {
7
+ project: string;
8
+ sidebarOpen: boolean;
9
+ locale: string;
10
+ allLocales: string[];
11
+ target: string;
12
+ targetSidebar: string;
13
+ currentUser: HDict | undefined;
14
+ get app(): {
15
+ id: string;
16
+ name: string;
17
+ app: App;
18
+ view: AppView;
19
+ } | undefined;
20
+ get sidebar(): {
21
+ id: string;
22
+ name: string;
23
+ app: App;
24
+ view: AppView;
25
+ } | undefined;
26
+ readonly apps: App[];
27
+ readonly history: CustomHistory;
28
+ readonly historySidebar: CustomHistory;
29
+ constructor();
30
+ openAppInNewWindow(): void;
31
+ open(appId: string, state?: Record<string, unknown>): void;
32
+ openSidebar(): void;
33
+ postAppMessage(): void;
34
+ registerSidebars(): void;
35
+ unregisterSidebars(): void;
36
+ registerQuicklinks(): void;
37
+ unregisterQuicklinks(): void;
38
+ hasAppAccess: (appId: string) => boolean;
39
+ hasSidebar(): boolean;
40
+ }