@j2inn/fin5-ui-utils 8.1.1-beta.6 → 8.1.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 (210) 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 +165 -165
  17. package/dist/fin5Top/fin5Top.js +61 -61
  18. package/dist/fin5Top/finEdge2Cloud.d.ts +6 -6
  19. package/dist/fin5Top/finEdge2Cloud.js +15 -15
  20. package/dist/fin5Top/getFin5BinUrl.d.ts +2 -2
  21. package/dist/fin5Top/getFin5BinUrl.js +9 -9
  22. package/dist/fin5Top/openFin5Alarm.d.ts +22 -22
  23. package/dist/fin5Top/openFin5Alarm.js +23 -23
  24. package/dist/fin5Top/openFin5Historian.d.ts +3 -3
  25. package/dist/fin5Top/openFin5Historian.js +19 -19
  26. package/dist/fin5Top/useFin5AppURLHashParameter.d.ts +18 -18
  27. package/dist/fin5Top/useFin5AppURLHashParameter.js +133 -133
  28. package/dist/index.d.ts +35 -35
  29. package/dist/index.js +69 -69
  30. package/dist/jobs/jobUtils.d.ts +14 -14
  31. package/dist/jobs/jobUtils.js +15 -15
  32. package/dist/react/app/Fin5AppContainer.d.ts +36 -36
  33. package/dist/react/app/Fin5AppContainer.js +145 -145
  34. package/dist/react/app/Fin5AppRootStore.d.ts +40 -40
  35. package/dist/react/app/Fin5AppRootStore.js +90 -90
  36. package/dist/react/components/ErrorBoundary.d.ts +57 -57
  37. package/dist/react/components/ErrorBoundary.js +150 -150
  38. package/dist/react/components/ErrorDisplayer.d.ts +19 -19
  39. package/dist/react/components/ErrorDisplayer.js +36 -36
  40. package/dist/react/components/Loader.d.ts +9 -9
  41. package/dist/react/components/Loader.js +17 -17
  42. package/dist/react/components/LoadingSpinner.d.ts +2 -2
  43. package/dist/react/components/LoadingSpinner.js +27 -27
  44. package/dist/react/components/RecordImage.d.ts +20 -20
  45. package/dist/react/components/RecordImage.js +51 -51
  46. package/dist/react/components/charts/QRCode.d.ts +25 -25
  47. package/dist/react/components/charts/QRCode.js +82 -82
  48. package/dist/react/components/charts/line-bar/Chart.d.ts +166 -166
  49. package/dist/react/components/charts/line-bar/Chart.js +442 -442
  50. package/dist/react/components/charts/line-bar/HGridChart.d.ts +58 -58
  51. package/dist/react/components/charts/line-bar/HGridChart.js +285 -285
  52. package/dist/react/components/charts/pie/PieChart.d.ts +94 -94
  53. package/dist/react/components/charts/pie/PieChart.js +204 -204
  54. package/dist/react/components/charts/pie/SimplePieChart.d.ts +21 -21
  55. package/dist/react/components/charts/pie/SimplePieChart.js +55 -55
  56. package/dist/react/components/graphics/GraphicViewer.d.ts +10 -10
  57. package/dist/react/components/graphics/GraphicViewer.js +29 -29
  58. package/dist/react/components/graphics/GraphicsTabViewer.d.ts +17 -17
  59. package/dist/react/components/graphics/GraphicsTabViewer.js +90 -90
  60. package/dist/react/components/makeCustomElement.d.ts +16 -16
  61. package/dist/react/components/makeCustomElement.js +150 -150
  62. package/dist/react/components/navigation/BasicLayout.d.ts +41 -41
  63. package/dist/react/components/navigation/BasicLayout.js +155 -155
  64. package/dist/react/components/navigation/HeaderSiderLayout.d.ts +13 -13
  65. package/dist/react/components/navigation/HeaderSiderLayout.js +110 -110
  66. package/dist/react/components/navigation/MenuPage.d.ts +37 -37
  67. package/dist/react/components/navigation/MenuPage.js +36 -36
  68. package/dist/react/components/navigation/MenuTrigger.d.ts +9 -9
  69. package/dist/react/components/navigation/MenuTrigger.js +33 -33
  70. package/dist/react/components/navigation/ReactRouterHeaderSiderLayout.d.ts +11 -11
  71. package/dist/react/components/navigation/ReactRouterHeaderSiderLayout.js +25 -25
  72. package/dist/react/components/navigation/ReactRouterLayout.d.ts +46 -46
  73. package/dist/react/components/navigation/ReactRouterLayout.js +132 -132
  74. package/dist/react/components/navigation/customRouting/Router.d.ts +12 -12
  75. package/dist/react/components/navigation/customRouting/Router.js +45 -45
  76. package/dist/react/components/navigation/customRouting/RouterLayout.d.ts +11 -11
  77. package/dist/react/components/navigation/customRouting/RouterLayout.js +61 -61
  78. package/dist/react/components/resolvable/configurationForm/ConfigurationForm.d.ts +27 -27
  79. package/dist/react/components/resolvable/configurationForm/ConfigurationForm.js +95 -95
  80. package/dist/react/components/resolvable/configurationForm/ConfigurationFormEntry.d.ts +16 -16
  81. package/dist/react/components/resolvable/configurationForm/ConfigurationFormEntry.js +88 -88
  82. package/dist/react/components/resolvable/configurationForm/getSectionDefault.d.ts +16 -16
  83. package/dist/react/components/resolvable/configurationForm/getSectionDefault.js +99 -99
  84. package/dist/react/hooks/useFin5BinUrl.d.ts +6 -6
  85. package/dist/react/hooks/useFin5BinUrl.js +15 -15
  86. package/dist/react/hooks/useFin5ColorScheme.d.ts +2 -2
  87. package/dist/react/hooks/useFin5ColorScheme.js +56 -56
  88. package/dist/react/hooks/useScreenSize.d.ts +7 -7
  89. package/dist/react/hooks/useScreenSize.js +31 -31
  90. package/dist_es/fantomProps/createFin5Props/index.d.ts +12 -12
  91. package/dist_es/fantomProps/createFin5Props/index.js +140 -140
  92. package/dist_es/fantomProps/createFin5Props/runCreateFin5Props.d.ts +2 -2
  93. package/dist_es/fantomProps/createFin5Props/runCreateFin5Props.js +15 -15
  94. package/dist_es/fantomProps/fantomPropsToObject.d.ts +8 -8
  95. package/dist_es/fantomProps/fantomPropsToObject.js +178 -178
  96. package/dist_es/fantomProps/generateJsonFromFantomPropsFile.d.ts +4 -4
  97. package/dist_es/fantomProps/generateJsonFromFantomPropsFile.js +12 -12
  98. package/dist_es/fantomProps/localePropsToJson.d.ts +1 -1
  99. package/dist_es/fantomProps/localePropsToJson.js +21 -21
  100. package/dist_es/fantomProps/readFantomPropsFile.d.ts +5 -5
  101. package/dist_es/fantomProps/readFantomPropsFile.js +39 -39
  102. package/dist_es/fin5Top/fin5FileUpload.d.ts +24 -24
  103. package/dist_es/fin5Top/fin5FileUpload.js +47 -47
  104. package/dist_es/fin5Top/fin5Top.d.ts +165 -165
  105. package/dist_es/fin5Top/fin5Top.js +57 -57
  106. package/dist_es/fin5Top/finEdge2Cloud.d.ts +6 -6
  107. package/dist_es/fin5Top/finEdge2Cloud.js +11 -11
  108. package/dist_es/fin5Top/getFin5BinUrl.d.ts +2 -2
  109. package/dist_es/fin5Top/getFin5BinUrl.js +5 -5
  110. package/dist_es/fin5Top/openFin5Alarm.d.ts +22 -22
  111. package/dist_es/fin5Top/openFin5Alarm.js +19 -19
  112. package/dist_es/fin5Top/openFin5Historian.d.ts +3 -3
  113. package/dist_es/fin5Top/openFin5Historian.js +15 -15
  114. package/dist_es/fin5Top/useFin5AppURLHashParameter.d.ts +18 -18
  115. package/dist_es/fin5Top/useFin5AppURLHashParameter.js +124 -124
  116. package/dist_es/index.d.ts +35 -35
  117. package/dist_es/index.js +53 -53
  118. package/dist_es/jobs/jobUtils.d.ts +14 -14
  119. package/dist_es/jobs/jobUtils.js +9 -9
  120. package/dist_es/react/app/Fin5AppContainer.d.ts +36 -36
  121. package/dist_es/react/app/Fin5AppContainer.js +116 -116
  122. package/dist_es/react/app/Fin5AppRootStore.d.ts +40 -40
  123. package/dist_es/react/app/Fin5AppRootStore.js +86 -86
  124. package/dist_es/react/components/ErrorBoundary.d.ts +57 -57
  125. package/dist_es/react/components/ErrorBoundary.js +123 -123
  126. package/dist_es/react/components/ErrorDisplayer.d.ts +19 -19
  127. package/dist_es/react/components/ErrorDisplayer.js +28 -28
  128. package/dist_es/react/components/Loader.d.ts +9 -9
  129. package/dist_es/react/components/Loader.js +12 -12
  130. package/dist_es/react/components/LoadingSpinner.d.ts +2 -2
  131. package/dist_es/react/components/LoadingSpinner.js +20 -20
  132. package/dist_es/react/components/RecordImage.d.ts +20 -20
  133. package/dist_es/react/components/RecordImage.js +24 -24
  134. package/dist_es/react/components/charts/QRCode.d.ts +25 -25
  135. package/dist_es/react/components/charts/QRCode.js +52 -52
  136. package/dist_es/react/components/charts/line-bar/Chart.d.ts +166 -166
  137. package/dist_es/react/components/charts/line-bar/Chart.js +415 -415
  138. package/dist_es/react/components/charts/line-bar/HGridChart.d.ts +58 -58
  139. package/dist_es/react/components/charts/line-bar/HGridChart.js +250 -250
  140. package/dist_es/react/components/charts/pie/PieChart.d.ts +94 -94
  141. package/dist_es/react/components/charts/pie/PieChart.js +177 -177
  142. package/dist_es/react/components/charts/pie/SimplePieChart.d.ts +21 -21
  143. package/dist_es/react/components/charts/pie/SimplePieChart.js +25 -25
  144. package/dist_es/react/components/graphics/GraphicViewer.d.ts +10 -10
  145. package/dist_es/react/components/graphics/GraphicViewer.js +22 -22
  146. package/dist_es/react/components/graphics/GraphicsTabViewer.d.ts +17 -17
  147. package/dist_es/react/components/graphics/GraphicsTabViewer.js +60 -60
  148. package/dist_es/react/components/makeCustomElement.d.ts +16 -16
  149. package/dist_es/react/components/makeCustomElement.js +142 -142
  150. package/dist_es/react/components/navigation/BasicLayout.d.ts +41 -41
  151. package/dist_es/react/components/navigation/BasicLayout.js +124 -124
  152. package/dist_es/react/components/navigation/HeaderSiderLayout.d.ts +13 -13
  153. package/dist_es/react/components/navigation/HeaderSiderLayout.js +80 -80
  154. package/dist_es/react/components/navigation/MenuPage.d.ts +37 -37
  155. package/dist_es/react/components/navigation/MenuPage.js +30 -30
  156. package/dist_es/react/components/navigation/MenuTrigger.d.ts +9 -9
  157. package/dist_es/react/components/navigation/MenuTrigger.js +28 -28
  158. package/dist_es/react/components/navigation/ReactRouterHeaderSiderLayout.d.ts +11 -11
  159. package/dist_es/react/components/navigation/ReactRouterHeaderSiderLayout.js +18 -18
  160. package/dist_es/react/components/navigation/ReactRouterLayout.d.ts +46 -46
  161. package/dist_es/react/components/navigation/ReactRouterLayout.js +99 -99
  162. package/dist_es/react/components/navigation/customRouting/Router.d.ts +12 -12
  163. package/dist_es/react/components/navigation/customRouting/Router.js +18 -18
  164. package/dist_es/react/components/navigation/customRouting/RouterLayout.d.ts +11 -11
  165. package/dist_es/react/components/navigation/customRouting/RouterLayout.js +34 -34
  166. package/dist_es/react/components/resolvable/configurationForm/ConfigurationForm.d.ts +27 -27
  167. package/dist_es/react/components/resolvable/configurationForm/ConfigurationForm.js +64 -64
  168. package/dist_es/react/components/resolvable/configurationForm/ConfigurationFormEntry.d.ts +16 -16
  169. package/dist_es/react/components/resolvable/configurationForm/ConfigurationFormEntry.js +58 -58
  170. package/dist_es/react/components/resolvable/configurationForm/getSectionDefault.d.ts +16 -16
  171. package/dist_es/react/components/resolvable/configurationForm/getSectionDefault.js +94 -94
  172. package/dist_es/react/hooks/useFin5BinUrl.d.ts +6 -6
  173. package/dist_es/react/hooks/useFin5BinUrl.js +11 -11
  174. package/dist_es/react/hooks/useFin5ColorScheme.d.ts +2 -2
  175. package/dist_es/react/hooks/useFin5ColorScheme.js +52 -52
  176. package/dist_es/react/hooks/useScreenSize.d.ts +7 -7
  177. package/dist_es/react/hooks/useScreenSize.js +27 -27
  178. package/package.json +1 -1
  179. package/dist_es/react/app/Fin5AppContainer.jsx +0 -82
  180. package/dist_es/react/app/Fin5AppContainer.jsx.map +0 -1
  181. package/dist_es/react/components/ErrorBoundary.jsx +0 -150
  182. package/dist_es/react/components/ErrorBoundary.jsx.map +0 -1
  183. package/dist_es/react/components/ErrorDisplayer.jsx +0 -36
  184. package/dist_es/react/components/ErrorDisplayer.jsx.map +0 -1
  185. package/dist_es/react/components/Loader.jsx +0 -13
  186. package/dist_es/react/components/Loader.jsx.map +0 -1
  187. package/dist_es/react/components/LoadingSpinner.jsx +0 -22
  188. package/dist_es/react/components/LoadingSpinner.jsx.map +0 -1
  189. package/dist_es/react/components/charts/line-bar/ZincGridChart.d.ts +0 -12
  190. package/dist_es/react/components/charts/line-bar/ZincGridChart.js +0 -17
  191. package/dist_es/react/components/charts/line-bar/ZincGridChart.js.map +0 -1
  192. package/dist_es/react/components/graphics/GraphicViewer.jsx +0 -23
  193. package/dist_es/react/components/graphics/GraphicViewer.jsx.map +0 -1
  194. package/dist_es/react/components/graphics/GraphicsTabViewer.jsx +0 -63
  195. package/dist_es/react/components/graphics/GraphicsTabViewer.jsx.map +0 -1
  196. package/dist_es/react/components/navigation/BasicLayout.jsx +0 -133
  197. package/dist_es/react/components/navigation/BasicLayout.jsx.map +0 -1
  198. package/dist_es/react/components/navigation/MenuPage.jsx +0 -31
  199. package/dist_es/react/components/navigation/MenuPage.jsx.map +0 -1
  200. package/dist_es/react/components/navigation/Router.d.ts +0 -12
  201. package/dist_es/react/components/navigation/Router.js +0 -19
  202. package/dist_es/react/components/navigation/Router.js.map +0 -1
  203. package/dist_es/react/components/navigation/Router.jsx +0 -19
  204. package/dist_es/react/components/navigation/Router.jsx.map +0 -1
  205. package/dist_es/react/components/navigation/react-router/BasicLayout.d.ts +0 -23
  206. package/dist_es/react/components/navigation/react-router/BasicLayout.js +0 -82
  207. package/dist_es/react/components/navigation/react-router/BasicLayout.js.map +0 -1
  208. package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.d.ts +0 -24
  209. package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.js +0 -82
  210. package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.js.map +0 -1
@@ -1,57 +1,57 @@
1
- import React, { ErrorInfo, ReactNode } from 'react';
2
- /**
3
- * An error boundary can work at the global level (where something really screws up)
4
- * or an an app level (where the error is captured just for the running application).
5
- */
6
- export declare const enum ErrorBoundaryMode {
7
- global = "global",
8
- app = "app"
9
- }
10
- /**
11
- * The properties for an error boundary.
12
- */
13
- interface ErrorBoundaryProps {
14
- /**
15
- * The associated application id.
16
- */
17
- appId?: string;
18
- /**
19
- * The error mode.
20
- */
21
- mode: ErrorBoundaryMode;
22
- /**
23
- * Optional callback to display a report dialog.
24
- */
25
- showReportDialog?: () => void;
26
- /**
27
- * Optional callback used to capture the error.
28
- */
29
- onError?: (error: Error) => void;
30
- /**
31
- * Child components.
32
- */
33
- children?: React.ReactNode;
34
- }
35
- /**
36
- * The state for an error boundary.
37
- */
38
- interface ErrorBoundryState {
39
- /**
40
- * The last captured error.
41
- */
42
- error?: Error;
43
- }
44
- /**
45
- * A common error boundary used to capture errors.
46
- */
47
- export declare class ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundryState> {
48
- state: {
49
- error?: Error;
50
- };
51
- componentDidCatch(error: Error, info: ErrorInfo): void;
52
- static getDerivedStateFromError(error: Error): {
53
- error: Error;
54
- };
55
- render(): ReactNode | JSX.Element;
56
- }
57
- export {};
1
+ import React, { ErrorInfo, ReactNode } from 'react';
2
+ /**
3
+ * An error boundary can work at the global level (where something really screws up)
4
+ * or an an app level (where the error is captured just for the running application).
5
+ */
6
+ export declare const enum ErrorBoundaryMode {
7
+ global = "global",
8
+ app = "app"
9
+ }
10
+ /**
11
+ * The properties for an error boundary.
12
+ */
13
+ interface ErrorBoundaryProps {
14
+ /**
15
+ * The associated application id.
16
+ */
17
+ appId?: string;
18
+ /**
19
+ * The error mode.
20
+ */
21
+ mode: ErrorBoundaryMode;
22
+ /**
23
+ * Optional callback to display a report dialog.
24
+ */
25
+ showReportDialog?: () => void;
26
+ /**
27
+ * Optional callback used to capture the error.
28
+ */
29
+ onError?: (error: Error) => void;
30
+ /**
31
+ * Child components.
32
+ */
33
+ children?: React.ReactNode;
34
+ }
35
+ /**
36
+ * The state for an error boundary.
37
+ */
38
+ interface ErrorBoundryState {
39
+ /**
40
+ * The last captured error.
41
+ */
42
+ error?: Error;
43
+ }
44
+ /**
45
+ * A common error boundary used to capture errors.
46
+ */
47
+ export declare class ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundryState> {
48
+ state: {
49
+ error?: Error;
50
+ };
51
+ componentDidCatch(error: Error, info: ErrorInfo): void;
52
+ static getDerivedStateFromError(error: Error): {
53
+ error: Error;
54
+ };
55
+ render(): ReactNode | JSX.Element;
56
+ }
57
+ export {};
@@ -1,124 +1,124 @@
1
- /*
2
- * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
- */
4
- import React, { useState } from 'react';
5
- import { Button, Checkbox, Divider, Message, Container, ColorVals, } from '@j2inn/ui';
6
- import { usei18n } from '@j2inn/utils';
7
- import { createUseStyles, useTheme } from 'react-jss';
8
- const boundryStyles = createUseStyles((theme) => ({
9
- errorBoundry: {
10
- backgroundColor: theme.bodyBg,
11
- flex: `1 1 auto`,
12
- },
13
- boundryContainer: {
14
- margin: '0 auto',
15
- flex: `1 1 auto`,
16
- padding: `2rem`,
17
- maxWidth: 1024,
18
- backgroundColor: theme.bgColor,
19
- [`& h1, & h3`]: {
20
- paddingBottom: `1rem`,
21
- },
22
- },
23
- errorDetails: {
24
- [`& pre`]: {
25
- overflow: 'auto',
26
- marginTop: '1rem',
27
- backgroundColor: ColorVals.Black,
28
- color: ColorVals.White,
29
- padding: '0.3rem',
30
- },
31
- },
32
- }));
33
- function get(i18n, key, fallback) {
34
- return i18n.has(key) ? i18n.get(key) : fallback;
35
- }
36
- /**
37
- * Format an error message into something more useful for the clipboard.
38
- */
39
- function formatErrorMessage(error, appId) {
40
- return JSON.stringify({
41
- timestamp: new Date().toISOString(),
42
- appId: appId ?? '',
43
- location: location.href,
44
- navigator: {
45
- cookieEnabled: navigator.cookieEnabled,
46
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
47
- deviceMemory: navigator.deviceMemory,
48
- language: navigator.language,
49
- languages: navigator.languages,
50
- onLine: navigator.onLine,
51
- userAgent: navigator.userAgent,
52
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
53
- userAgentData: navigator.userAgentData,
54
- vendor: navigator.vendor,
55
- },
56
- error: String(error.stack),
57
- }, null, 2);
58
- }
59
- /**
60
- * Shows the internal error details to a user.
61
- */
62
- const ErrorDetails = ({ showDetails, setShowDetails, error, appId, }) => {
63
- const i18n = usei18n();
64
- const classes = boundryStyles();
65
- const theme = useTheme();
66
- const copyToClipboard = () => {
67
- navigator.clipboard.writeText(formatErrorMessage(error, appId));
68
- Message.success(theme, get(i18n, 'finUi.errorBoundary.copiedErrorToClipboard', 'Copied error to clipboard'));
69
- };
70
- return (React.createElement("div", { className: classes.errorDetails },
71
- React.createElement(Checkbox, { onChange: (e) => {
72
- setShowDetails(e.target.checked);
73
- }, defaultChecked: showDetails, value: showDetails }, get(i18n, 'finUi.errorBoundary.showDetails', 'Show details')),
74
- showDetails && (React.createElement(React.Fragment, null,
75
- React.createElement("pre", null, error.stack),
76
- React.createElement(Container, { horizontal: true, middle: true, right: true },
77
- React.createElement(Button, { onClick: copyToClipboard }, get(i18n, 'finUi.errorBoundary.copyToClipboard', 'Copy to clipboard')))))));
78
- };
79
- /**
80
- * The inner error boundary component. This is required so
81
- * we can use hooks that can't be used in a normal class component.
82
- */
83
- const ErrorBoundaryInner = ({ error, mode, appId, showReportDialog, }) => {
84
- const i18n = usei18n();
85
- const [showDetails, setShowDetails] = useState(true);
86
- const classes = boundryStyles();
87
- const title = `finUi.errorBoundary.${mode}.title`;
88
- const appName = `${appId}.name`;
89
- const header = get(i18n, title, mode === 'global' ? 'Error' : 'Application error') +
90
- (appId ? `: ${get(i18n, appName, appName)}` : '');
91
- const continueMsg = get(i18n, `finUi.errorBoundary.${mode}.continue`, mode === 'global'
92
- ? 'To continue, please reload or navigate to the home page.'
93
- : 'To continue, please reload, navigate to the home page or another application.');
94
- return (React.createElement(Container, { vertical: true, top: true, center: true, className: classes.errorBoundry },
95
- React.createElement("div", { className: classes.boundryContainer, style: { gap: `1rem` } },
96
- React.createElement("h1", null, header),
97
- React.createElement("h3", null, get(i18n, 'finUi.errorBoundary.description', 'The application has encountered an error when trying to display some content.')),
98
- React.createElement("p", null, continueMsg),
99
- React.createElement("div", null,
100
- React.createElement(ErrorDetails, { showDetails: showDetails, setShowDetails: setShowDetails, error: error, appId: appId })),
101
- React.createElement(Divider, null),
102
- React.createElement(Container, { horizontal: true, middle: true, left: true, style: { gap: `1rem` } },
103
- React.createElement(Button, { onClick: () => window.location.reload(), type: 'primary' }, get(i18n, 'finUi.common.reload', 'Reload')),
104
- React.createElement(Button, { onClick: () => window.location.assign('/') }, get(i18n, 'finUi.common.home', 'Home'))),
105
- showReportDialog && (React.createElement("div", { style: { marginTop: `0.5rem` } },
106
- React.createElement("small", { onClick: showReportDialog }, get(i18n, 'finUi.errorBoundary.additionalDetails', 'If you’d like, click here to include an additional error report to our team. Any details you provide will be helpful.')))))));
107
- };
108
- /**
109
- * A common error boundary used to capture errors.
110
- */
111
- export class ErrorBoundary extends React.Component {
112
- state = {};
113
- componentDidCatch(error, info) {
114
- this.props.onError?.(error);
115
- console.error(error, info);
116
- }
117
- static getDerivedStateFromError(error) {
118
- return { error };
119
- }
120
- render() {
121
- return this.state.error ? (React.createElement(ErrorBoundaryInner, { error: this.state.error, mode: this.props.mode, appId: this.props.appId, showReportDialog: this.props.showReportDialog })) : (this.props.children);
122
- }
123
- }
1
+ /*
2
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
+ */
4
+ import React, { useState } from 'react';
5
+ import { Button, Checkbox, Divider, Message, Container, ColorVals, } from '@j2inn/ui';
6
+ import { usei18n } from '@j2inn/utils';
7
+ import { createUseStyles, useTheme } from 'react-jss';
8
+ const boundryStyles = createUseStyles((theme) => ({
9
+ errorBoundry: {
10
+ backgroundColor: theme.bodyBg,
11
+ flex: `1 1 auto`,
12
+ },
13
+ boundryContainer: {
14
+ margin: '0 auto',
15
+ flex: `1 1 auto`,
16
+ padding: `2rem`,
17
+ maxWidth: 1024,
18
+ backgroundColor: theme.bgColor,
19
+ [`& h1, & h3`]: {
20
+ paddingBottom: `1rem`,
21
+ },
22
+ },
23
+ errorDetails: {
24
+ [`& pre`]: {
25
+ overflow: 'auto',
26
+ marginTop: '1rem',
27
+ backgroundColor: ColorVals.Black,
28
+ color: ColorVals.White,
29
+ padding: '0.3rem',
30
+ },
31
+ },
32
+ }));
33
+ function get(i18n, key, fallback) {
34
+ return i18n.has(key) ? i18n.get(key) : fallback;
35
+ }
36
+ /**
37
+ * Format an error message into something more useful for the clipboard.
38
+ */
39
+ function formatErrorMessage(error, appId) {
40
+ return JSON.stringify({
41
+ timestamp: new Date().toISOString(),
42
+ appId: appId ?? '',
43
+ location: location.href,
44
+ navigator: {
45
+ cookieEnabled: navigator.cookieEnabled,
46
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
47
+ deviceMemory: navigator.deviceMemory,
48
+ language: navigator.language,
49
+ languages: navigator.languages,
50
+ onLine: navigator.onLine,
51
+ userAgent: navigator.userAgent,
52
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
53
+ userAgentData: navigator.userAgentData,
54
+ vendor: navigator.vendor,
55
+ },
56
+ error: String(error.stack),
57
+ }, null, 2);
58
+ }
59
+ /**
60
+ * Shows the internal error details to a user.
61
+ */
62
+ const ErrorDetails = ({ showDetails, setShowDetails, error, appId, }) => {
63
+ const i18n = usei18n();
64
+ const classes = boundryStyles();
65
+ const theme = useTheme();
66
+ const copyToClipboard = () => {
67
+ navigator.clipboard.writeText(formatErrorMessage(error, appId));
68
+ Message.success(theme, get(i18n, 'finUi.errorBoundary.copiedErrorToClipboard', 'Copied error to clipboard'));
69
+ };
70
+ return (React.createElement("div", { className: classes.errorDetails },
71
+ React.createElement(Checkbox, { onChange: (e) => {
72
+ setShowDetails(e.target.checked);
73
+ }, defaultChecked: showDetails, value: showDetails }, get(i18n, 'finUi.errorBoundary.showDetails', 'Show details')),
74
+ showDetails && (React.createElement(React.Fragment, null,
75
+ React.createElement("pre", null, error.stack),
76
+ React.createElement(Container, { horizontal: true, middle: true, right: true },
77
+ React.createElement(Button, { onClick: copyToClipboard }, get(i18n, 'finUi.errorBoundary.copyToClipboard', 'Copy to clipboard')))))));
78
+ };
79
+ /**
80
+ * The inner error boundary component. This is required so
81
+ * we can use hooks that can't be used in a normal class component.
82
+ */
83
+ const ErrorBoundaryInner = ({ error, mode, appId, showReportDialog, }) => {
84
+ const i18n = usei18n();
85
+ const [showDetails, setShowDetails] = useState(true);
86
+ const classes = boundryStyles();
87
+ const title = `finUi.errorBoundary.${mode}.title`;
88
+ const appName = `${appId}.name`;
89
+ const header = get(i18n, title, mode === 'global' ? 'Error' : 'Application error') +
90
+ (appId ? `: ${get(i18n, appName, appName)}` : '');
91
+ const continueMsg = get(i18n, `finUi.errorBoundary.${mode}.continue`, mode === 'global'
92
+ ? 'To continue, please reload or navigate to the home page.'
93
+ : 'To continue, please reload, navigate to the home page or another application.');
94
+ return (React.createElement(Container, { vertical: true, top: true, center: true, className: classes.errorBoundry },
95
+ React.createElement("div", { className: classes.boundryContainer, style: { gap: `1rem` } },
96
+ React.createElement("h1", null, header),
97
+ React.createElement("h3", null, get(i18n, 'finUi.errorBoundary.description', 'The application has encountered an error when trying to display some content.')),
98
+ React.createElement("p", null, continueMsg),
99
+ React.createElement("div", null,
100
+ React.createElement(ErrorDetails, { showDetails: showDetails, setShowDetails: setShowDetails, error: error, appId: appId })),
101
+ React.createElement(Divider, null),
102
+ React.createElement(Container, { horizontal: true, middle: true, left: true, style: { gap: `1rem` } },
103
+ React.createElement(Button, { onClick: () => window.location.reload(), type: 'primary' }, get(i18n, 'finUi.common.reload', 'Reload')),
104
+ React.createElement(Button, { onClick: () => window.location.assign('/') }, get(i18n, 'finUi.common.home', 'Home'))),
105
+ showReportDialog && (React.createElement("div", { style: { marginTop: `0.5rem` } },
106
+ React.createElement("small", { onClick: showReportDialog }, get(i18n, 'finUi.errorBoundary.additionalDetails', 'If you’d like, click here to include an additional error report to our team. Any details you provide will be helpful.')))))));
107
+ };
108
+ /**
109
+ * A common error boundary used to capture errors.
110
+ */
111
+ export class ErrorBoundary extends React.Component {
112
+ state = {};
113
+ componentDidCatch(error, info) {
114
+ this.props.onError?.(error);
115
+ console.error(error, info);
116
+ }
117
+ static getDerivedStateFromError(error) {
118
+ return { error };
119
+ }
120
+ render() {
121
+ return this.state.error ? (React.createElement(ErrorBoundaryInner, { error: this.state.error, mode: this.props.mode, appId: this.props.appId, showReportDialog: this.props.showReportDialog })) : (this.props.children);
122
+ }
123
+ }
124
124
  //# sourceMappingURL=ErrorBoundary.js.map
@@ -1,19 +1,19 @@
1
- import React, { ErrorInfo, ReactNode } from 'react';
2
- interface ErrorBoundaryState {
3
- error?: Error;
4
- }
5
- interface ErrorBoundaryProps {
6
- children: ReactNode;
7
- }
8
- export declare class DefaultErrorBoundary extends React.Component<ErrorBoundaryProps> {
9
- state: ErrorBoundaryState;
10
- static getDerivedStateFromError(error: Error): ErrorBoundaryState;
11
- componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
12
- render(): ReactNode;
13
- }
14
- export interface ErrorDisplayerProps {
15
- error: Error;
16
- extra: React.ReactNode;
17
- }
18
- export declare const ErrorDisplayer: React.FC<ErrorDisplayerProps>;
19
- export {};
1
+ import React, { ErrorInfo, ReactNode } from 'react';
2
+ interface ErrorBoundaryState {
3
+ error?: Error;
4
+ }
5
+ interface ErrorBoundaryProps {
6
+ children: ReactNode;
7
+ }
8
+ export declare class DefaultErrorBoundary extends React.Component<ErrorBoundaryProps> {
9
+ state: ErrorBoundaryState;
10
+ static getDerivedStateFromError(error: Error): ErrorBoundaryState;
11
+ componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
12
+ render(): ReactNode;
13
+ }
14
+ export interface ErrorDisplayerProps {
15
+ error: Error;
16
+ extra: React.ReactNode;
17
+ }
18
+ export declare const ErrorDisplayer: React.FC<ErrorDisplayerProps>;
19
+ export {};
@@ -1,29 +1,29 @@
1
- import { Button, Collapse, Container, Result, Typography } from '@j2inn/ui';
2
- import React from 'react';
3
- export class DefaultErrorBoundary extends React.Component {
4
- state = {};
5
- static getDerivedStateFromError(error) {
6
- // Update state so the next render will show the fallback UI.
7
- return { error: error };
8
- }
9
- componentDidCatch(error, errorInfo) {
10
- // You can also log the error to an error reporting service
11
- console.error(error, errorInfo);
12
- }
13
- render() {
14
- if (this.state.error) {
15
- // You can render any custom fallback UI
16
- return (React.createElement(ErrorDisplayer, { error: this.state.error, extra: [
17
- React.createElement(Button, { type: 'primary', key: 'refresh', onClick: () => window.location.reload() }, "Refresh The Page"),
18
- ] }));
19
- }
20
- return this.props.children;
21
- }
22
- }
23
- export const ErrorDisplayer = ({ error, extra, }) => {
24
- return (React.createElement(Result, { status: 'error', title: 'Ouch... Something Went Wrong', subTitle: React.createElement(Container, { center: true },
25
- React.createElement(Collapse, { style: { width: 600, textAlign: 'left' } },
26
- React.createElement(Collapse.Panel, { header: `${error.toString()}`, key: '1' },
27
- React.createElement(Typography.Text, { style: { width: 400 } }, error.stack)))), extra: extra }));
28
- };
1
+ import { Button, Collapse, Container, Result, Typography } from '@j2inn/ui';
2
+ import React from 'react';
3
+ export class DefaultErrorBoundary extends React.Component {
4
+ state = {};
5
+ static getDerivedStateFromError(error) {
6
+ // Update state so the next render will show the fallback UI.
7
+ return { error: error };
8
+ }
9
+ componentDidCatch(error, errorInfo) {
10
+ // You can also log the error to an error reporting service
11
+ console.error(error, errorInfo);
12
+ }
13
+ render() {
14
+ if (this.state.error) {
15
+ // You can render any custom fallback UI
16
+ return (React.createElement(ErrorDisplayer, { error: this.state.error, extra: [
17
+ React.createElement(Button, { type: 'primary', key: 'refresh', onClick: () => window.location.reload() }, "Refresh The Page"),
18
+ ] }));
19
+ }
20
+ return this.props.children;
21
+ }
22
+ }
23
+ export const ErrorDisplayer = ({ error, extra, }) => {
24
+ return (React.createElement(Result, { status: 'error', title: 'Ouch... Something Went Wrong', subTitle: React.createElement(Container, { center: true },
25
+ React.createElement(Collapse, { style: { width: 600, textAlign: 'left' } },
26
+ React.createElement(Collapse.Panel, { header: `${error.toString()}`, key: '1' },
27
+ React.createElement(Typography.Text, { style: { width: 400 } }, error.stack)))), extra: extra }));
28
+ };
29
29
  //# sourceMappingURL=ErrorDisplayer.js.map
@@ -1,9 +1,9 @@
1
- import React from 'react';
2
- /**
3
- * A simple UI loader.
4
- */
5
- declare const Loader: ({ loading, children, }: {
6
- loading: boolean;
7
- children?: React.ReactNode;
8
- }) => JSX.Element;
9
- export default Loader;
1
+ import React from 'react';
2
+ /**
3
+ * A simple UI loader.
4
+ */
5
+ declare const Loader: ({ loading, children, }: {
6
+ loading: boolean;
7
+ children?: React.ReactNode;
8
+ }) => JSX.Element;
9
+ export default Loader;
@@ -1,13 +1,13 @@
1
- /*
2
- * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
- */
4
- import React from 'react';
5
- import { LoadingSpinner } from './LoadingSpinner';
6
- /**
7
- * A simple UI loader.
8
- */
9
- const Loader = ({ loading, children, }) => {
10
- return loading ? React.createElement(LoadingSpinner, null) : React.createElement(React.Fragment, null, children);
11
- };
12
- export default Loader;
1
+ /*
2
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
+ */
4
+ import React from 'react';
5
+ import { LoadingSpinner } from './LoadingSpinner';
6
+ /**
7
+ * A simple UI loader.
8
+ */
9
+ const Loader = ({ loading, children, }) => {
10
+ return loading ? React.createElement(LoadingSpinner, null) : React.createElement(React.Fragment, null, children);
11
+ };
12
+ export default Loader;
13
13
  //# sourceMappingURL=Loader.js.map
@@ -1,2 +1,2 @@
1
- import React from 'react';
2
- export declare const LoadingSpinner: React.FC;
1
+ import React from 'react';
2
+ export declare const LoadingSpinner: React.FC;
@@ -1,21 +1,21 @@
1
- /*
2
- * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
- */
4
- import { Spin } from '@j2inn/ui';
5
- import React from 'react';
6
- import { createUseStyles } from 'react-jss';
7
- const useStyles = createUseStyles({
8
- container: {
9
- display: 'flex',
10
- alignItems: 'center',
11
- justifyContent: 'center',
12
- height: '100%',
13
- width: '100%',
14
- },
15
- });
16
- export const LoadingSpinner = () => {
17
- const classes = useStyles();
18
- return (React.createElement("div", { className: classes.container },
19
- React.createElement(Spin, { size: 'large' })));
20
- };
1
+ /*
2
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
+ */
4
+ import { Spin } from '@j2inn/ui';
5
+ import React from 'react';
6
+ import { createUseStyles } from 'react-jss';
7
+ const useStyles = createUseStyles({
8
+ container: {
9
+ display: 'flex',
10
+ alignItems: 'center',
11
+ justifyContent: 'center',
12
+ height: '100%',
13
+ width: '100%',
14
+ },
15
+ });
16
+ export const LoadingSpinner = () => {
17
+ const classes = useStyles();
18
+ return (React.createElement("div", { className: classes.container },
19
+ React.createElement(Spin, { size: 'large' })));
20
+ };
21
21
  //# sourceMappingURL=LoadingSpinner.js.map
@@ -1,20 +1,20 @@
1
- import { HRef } from 'haystack-core';
2
- import React from 'react';
3
- export interface RecordImageProps {
4
- /**
5
- * Ref of the image bin record.
6
- */
7
- imageRef?: HRef;
8
- /**
9
- * Fallback component to be displayed if the imageRef is not valid or the image is not found.
10
- */
11
- fallbackComponent?: React.ReactElement;
12
- /**
13
- * Props for img customization
14
- */
15
- imgProps?: Omit<React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, 'src'>;
16
- }
17
- /**
18
- * Displays an image from a bin record or a fallback if the given imageRef is not valid or if the image can't be found.
19
- */
20
- export declare const RecordImage: ({ imageRef, fallbackComponent, imgProps, }: RecordImageProps) => JSX.Element;
1
+ import { HRef } from 'haystack-core';
2
+ import React from 'react';
3
+ export interface RecordImageProps {
4
+ /**
5
+ * Ref of the image bin record.
6
+ */
7
+ imageRef?: HRef;
8
+ /**
9
+ * Fallback component to be displayed if the imageRef is not valid or the image is not found.
10
+ */
11
+ fallbackComponent?: React.ReactElement;
12
+ /**
13
+ * Props for img customization
14
+ */
15
+ imgProps?: Omit<React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, 'src'>;
16
+ }
17
+ /**
18
+ * Displays an image from a bin record or a fallback if the given imageRef is not valid or if the image can't be found.
19
+ */
20
+ export declare const RecordImage: ({ imageRef, fallbackComponent, imgProps, }: RecordImageProps) => JSX.Element;
@@ -1,25 +1,25 @@
1
- /*
2
- * Copyright (c) 2023, J2 Innovations. All Rights Reserved
3
- */
4
- import React, { useState } from 'react';
5
- import { useFin5BinUrl } from '../hooks/useFin5BinUrl';
6
- /**
7
- * Displays an image from a bin record or a fallback if the given imageRef is not valid or if the image can't be found.
8
- */
9
- export const RecordImage = ({ imageRef, fallbackComponent, imgProps, }) => {
10
- const imgUrl = useFin5BinUrl(imageRef);
11
- // State used to identify whether there is an error in loading the image, to display the fallback component if necessary
12
- const [hasImage, setHasImage] = useState(true);
13
- const shouldDisplayFallback = !!fallbackComponent && (!hasImage || !imgUrl);
14
- if (shouldDisplayFallback) {
15
- return fallbackComponent;
16
- }
17
- else {
18
- return (React.createElement("img", { ...imgProps, onError: (event) => {
19
- // This will happen if the resource is not found for some reason
20
- setHasImage(false);
21
- imgProps?.onError?.(event);
22
- }, src: imgUrl }));
23
- }
24
- };
1
+ /*
2
+ * Copyright (c) 2023, J2 Innovations. All Rights Reserved
3
+ */
4
+ import React, { useState } from 'react';
5
+ import { useFin5BinUrl } from '../hooks/useFin5BinUrl';
6
+ /**
7
+ * Displays an image from a bin record or a fallback if the given imageRef is not valid or if the image can't be found.
8
+ */
9
+ export const RecordImage = ({ imageRef, fallbackComponent, imgProps, }) => {
10
+ const imgUrl = useFin5BinUrl(imageRef);
11
+ // State used to identify whether there is an error in loading the image, to display the fallback component if necessary
12
+ const [hasImage, setHasImage] = useState(true);
13
+ const shouldDisplayFallback = !!fallbackComponent && (!hasImage || !imgUrl);
14
+ if (shouldDisplayFallback) {
15
+ return fallbackComponent;
16
+ }
17
+ else {
18
+ return (React.createElement("img", { ...imgProps, onError: (event) => {
19
+ // This will happen if the resource is not found for some reason
20
+ setHasImage(false);
21
+ imgProps?.onError?.(event);
22
+ }, src: imgUrl }));
23
+ }
24
+ };
25
25
  //# sourceMappingURL=RecordImage.js.map