@j2inn/fin5-ui-utils 8.2.0 → 8.3.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 (214) 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 +188 -188
  17. package/dist/fin5Top/fin5Top.js +86 -86
  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 +161 -161
  34. package/dist/react/app/Fin5AppRootStore.d.ts +42 -42
  35. package/dist/react/app/Fin5AppRootStore.js +114 -114
  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/ReactRouterHeaderSiderLayout.js.map +1 -1
  73. package/dist/react/components/navigation/ReactRouterLayout.d.ts +45 -46
  74. package/dist/react/components/navigation/ReactRouterLayout.js +132 -132
  75. package/dist/react/components/navigation/ReactRouterLayout.js.map +1 -1
  76. package/dist/react/components/navigation/customRouting/Router.d.ts +12 -12
  77. package/dist/react/components/navigation/customRouting/Router.js +45 -45
  78. package/dist/react/components/navigation/customRouting/RouterLayout.d.ts +11 -11
  79. package/dist/react/components/navigation/customRouting/RouterLayout.js +61 -61
  80. package/dist/react/components/resolvable/configurationForm/ConfigurationForm.d.ts +27 -27
  81. package/dist/react/components/resolvable/configurationForm/ConfigurationForm.js +95 -95
  82. package/dist/react/components/resolvable/configurationForm/ConfigurationFormEntry.d.ts +16 -16
  83. package/dist/react/components/resolvable/configurationForm/ConfigurationFormEntry.js +88 -88
  84. package/dist/react/components/resolvable/configurationForm/getSectionDefault.d.ts +16 -16
  85. package/dist/react/components/resolvable/configurationForm/getSectionDefault.js +99 -99
  86. package/dist/react/hooks/useFin5BinUrl.d.ts +6 -6
  87. package/dist/react/hooks/useFin5BinUrl.js +15 -15
  88. package/dist/react/hooks/useFin5ColorScheme.d.ts +2 -2
  89. package/dist/react/hooks/useFin5ColorScheme.js +56 -56
  90. package/dist/react/hooks/useScreenSize.d.ts +7 -7
  91. package/dist/react/hooks/useScreenSize.js +31 -31
  92. package/dist_es/fantomProps/createFin5Props/index.d.ts +12 -12
  93. package/dist_es/fantomProps/createFin5Props/index.js +140 -140
  94. package/dist_es/fantomProps/createFin5Props/runCreateFin5Props.d.ts +2 -2
  95. package/dist_es/fantomProps/createFin5Props/runCreateFin5Props.js +15 -15
  96. package/dist_es/fantomProps/fantomPropsToObject.d.ts +8 -8
  97. package/dist_es/fantomProps/fantomPropsToObject.js +178 -178
  98. package/dist_es/fantomProps/generateJsonFromFantomPropsFile.d.ts +4 -4
  99. package/dist_es/fantomProps/generateJsonFromFantomPropsFile.js +12 -12
  100. package/dist_es/fantomProps/localePropsToJson.d.ts +1 -1
  101. package/dist_es/fantomProps/localePropsToJson.js +21 -21
  102. package/dist_es/fantomProps/readFantomPropsFile.d.ts +5 -5
  103. package/dist_es/fantomProps/readFantomPropsFile.js +39 -39
  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 +188 -188
  107. package/dist_es/fin5Top/fin5Top.js +81 -81
  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 +132 -132
  124. package/dist_es/react/app/Fin5AppRootStore.d.ts +42 -42
  125. package/dist_es/react/app/Fin5AppRootStore.js +110 -110
  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/ReactRouterHeaderSiderLayout.js.map +1 -1
  163. package/dist_es/react/components/navigation/ReactRouterLayout.d.ts +45 -46
  164. package/dist_es/react/components/navigation/ReactRouterLayout.js +99 -99
  165. package/dist_es/react/components/navigation/ReactRouterLayout.js.map +1 -1
  166. package/dist_es/react/components/navigation/customRouting/Router.d.ts +12 -12
  167. package/dist_es/react/components/navigation/customRouting/Router.js +18 -18
  168. package/dist_es/react/components/navigation/customRouting/RouterLayout.d.ts +11 -11
  169. package/dist_es/react/components/navigation/customRouting/RouterLayout.js +34 -34
  170. package/dist_es/react/components/resolvable/configurationForm/ConfigurationForm.d.ts +27 -27
  171. package/dist_es/react/components/resolvable/configurationForm/ConfigurationForm.js +64 -64
  172. package/dist_es/react/components/resolvable/configurationForm/ConfigurationFormEntry.d.ts +16 -16
  173. package/dist_es/react/components/resolvable/configurationForm/ConfigurationFormEntry.js +58 -58
  174. package/dist_es/react/components/resolvable/configurationForm/getSectionDefault.d.ts +16 -16
  175. package/dist_es/react/components/resolvable/configurationForm/getSectionDefault.js +94 -94
  176. package/dist_es/react/hooks/useFin5BinUrl.d.ts +6 -6
  177. package/dist_es/react/hooks/useFin5BinUrl.js +11 -11
  178. package/dist_es/react/hooks/useFin5ColorScheme.d.ts +2 -2
  179. package/dist_es/react/hooks/useFin5ColorScheme.js +52 -52
  180. package/dist_es/react/hooks/useScreenSize.d.ts +7 -7
  181. package/dist_es/react/hooks/useScreenSize.js +27 -27
  182. package/package.json +5 -3
  183. package/dist_es/react/app/Fin5AppContainer.jsx +0 -82
  184. package/dist_es/react/app/Fin5AppContainer.jsx.map +0 -1
  185. package/dist_es/react/components/ErrorBoundary.jsx +0 -150
  186. package/dist_es/react/components/ErrorBoundary.jsx.map +0 -1
  187. package/dist_es/react/components/ErrorDisplayer.jsx +0 -36
  188. package/dist_es/react/components/ErrorDisplayer.jsx.map +0 -1
  189. package/dist_es/react/components/Loader.jsx +0 -13
  190. package/dist_es/react/components/Loader.jsx.map +0 -1
  191. package/dist_es/react/components/LoadingSpinner.jsx +0 -22
  192. package/dist_es/react/components/LoadingSpinner.jsx.map +0 -1
  193. package/dist_es/react/components/charts/line-bar/ZincGridChart.d.ts +0 -12
  194. package/dist_es/react/components/charts/line-bar/ZincGridChart.js +0 -17
  195. package/dist_es/react/components/charts/line-bar/ZincGridChart.js.map +0 -1
  196. package/dist_es/react/components/graphics/GraphicViewer.jsx +0 -23
  197. package/dist_es/react/components/graphics/GraphicViewer.jsx.map +0 -1
  198. package/dist_es/react/components/graphics/GraphicsTabViewer.jsx +0 -63
  199. package/dist_es/react/components/graphics/GraphicsTabViewer.jsx.map +0 -1
  200. package/dist_es/react/components/navigation/BasicLayout.jsx +0 -133
  201. package/dist_es/react/components/navigation/BasicLayout.jsx.map +0 -1
  202. package/dist_es/react/components/navigation/MenuPage.jsx +0 -31
  203. package/dist_es/react/components/navigation/MenuPage.jsx.map +0 -1
  204. package/dist_es/react/components/navigation/Router.d.ts +0 -12
  205. package/dist_es/react/components/navigation/Router.js +0 -19
  206. package/dist_es/react/components/navigation/Router.js.map +0 -1
  207. package/dist_es/react/components/navigation/Router.jsx +0 -19
  208. package/dist_es/react/components/navigation/Router.jsx.map +0 -1
  209. package/dist_es/react/components/navigation/react-router/BasicLayout.d.ts +0 -23
  210. package/dist_es/react/components/navigation/react-router/BasicLayout.js +0 -82
  211. package/dist_es/react/components/navigation/react-router/BasicLayout.js.map +0 -1
  212. package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.d.ts +0 -24
  213. package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.js +0 -82
  214. package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.js.map +0 -1
@@ -1,151 +1,151 @@
1
- "use strict";
2
- /*
3
- * Copyright (c) 2022, J2 Innovations. All Rights Reserved
4
- */
5
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- var desc = Object.getOwnPropertyDescriptor(m, k);
8
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
- desc = { enumerable: true, get: function() { return m[k]; } };
10
- }
11
- Object.defineProperty(o, k2, desc);
12
- }) : (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- o[k2] = m[k];
15
- }));
16
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
- Object.defineProperty(o, "default", { enumerable: true, value: v });
18
- }) : function(o, v) {
19
- o["default"] = v;
20
- });
21
- var __importStar = (this && this.__importStar) || function (mod) {
22
- if (mod && mod.__esModule) return mod;
23
- var result = {};
24
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
- __setModuleDefault(result, mod);
26
- return result;
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.ErrorBoundary = void 0;
30
- const react_1 = __importStar(require("react"));
31
- const ui_1 = require("@j2inn/ui");
32
- const utils_1 = require("@j2inn/utils");
33
- const react_jss_1 = require("react-jss");
34
- const boundryStyles = (0, react_jss_1.createUseStyles)((theme) => ({
35
- errorBoundry: {
36
- backgroundColor: theme.bodyBg,
37
- flex: `1 1 auto`,
38
- },
39
- boundryContainer: {
40
- margin: '0 auto',
41
- flex: `1 1 auto`,
42
- padding: `2rem`,
43
- maxWidth: 1024,
44
- backgroundColor: theme.bgColor,
45
- [`& h1, & h3`]: {
46
- paddingBottom: `1rem`,
47
- },
48
- },
49
- errorDetails: {
50
- [`& pre`]: {
51
- overflow: 'auto',
52
- marginTop: '1rem',
53
- backgroundColor: ui_1.ColorVals.Black,
54
- color: ui_1.ColorVals.White,
55
- padding: '0.3rem',
56
- },
57
- },
58
- }));
59
- function get(i18n, key, fallback) {
60
- return i18n.has(key) ? i18n.get(key) : fallback;
61
- }
62
- /**
63
- * Format an error message into something more useful for the clipboard.
64
- */
65
- function formatErrorMessage(error, appId) {
66
- return JSON.stringify({
67
- timestamp: new Date().toISOString(),
68
- appId: appId ?? '',
69
- location: location.href,
70
- navigator: {
71
- cookieEnabled: navigator.cookieEnabled,
72
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
73
- deviceMemory: navigator.deviceMemory,
74
- language: navigator.language,
75
- languages: navigator.languages,
76
- onLine: navigator.onLine,
77
- userAgent: navigator.userAgent,
78
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
79
- userAgentData: navigator.userAgentData,
80
- vendor: navigator.vendor,
81
- },
82
- error: String(error.stack),
83
- }, null, 2);
84
- }
85
- /**
86
- * Shows the internal error details to a user.
87
- */
88
- const ErrorDetails = ({ showDetails, setShowDetails, error, appId, }) => {
89
- const i18n = (0, utils_1.usei18n)();
90
- const classes = boundryStyles();
91
- const theme = (0, react_jss_1.useTheme)();
92
- const copyToClipboard = () => {
93
- navigator.clipboard.writeText(formatErrorMessage(error, appId));
94
- ui_1.Message.success(theme, get(i18n, 'finUi.errorBoundary.copiedErrorToClipboard', 'Copied error to clipboard'));
95
- };
96
- return (react_1.default.createElement("div", { className: classes.errorDetails },
97
- react_1.default.createElement(ui_1.Checkbox, { onChange: (e) => {
98
- setShowDetails(e.target.checked);
99
- }, defaultChecked: showDetails, value: showDetails }, get(i18n, 'finUi.errorBoundary.showDetails', 'Show details')),
100
- showDetails && (react_1.default.createElement(react_1.default.Fragment, null,
101
- react_1.default.createElement("pre", null, error.stack),
102
- react_1.default.createElement(ui_1.Container, { horizontal: true, middle: true, right: true },
103
- react_1.default.createElement(ui_1.Button, { onClick: copyToClipboard }, get(i18n, 'finUi.errorBoundary.copyToClipboard', 'Copy to clipboard')))))));
104
- };
105
- /**
106
- * The inner error boundary component. This is required so
107
- * we can use hooks that can't be used in a normal class component.
108
- */
109
- const ErrorBoundaryInner = ({ error, mode, appId, showReportDialog, }) => {
110
- const i18n = (0, utils_1.usei18n)();
111
- const [showDetails, setShowDetails] = (0, react_1.useState)(true);
112
- const classes = boundryStyles();
113
- const title = `finUi.errorBoundary.${mode}.title`;
114
- const appName = `${appId}.name`;
115
- const header = get(i18n, title, mode === 'global' ? 'Error' : 'Application error') +
116
- (appId ? `: ${get(i18n, appName, appName)}` : '');
117
- const continueMsg = get(i18n, `finUi.errorBoundary.${mode}.continue`, mode === 'global'
118
- ? 'To continue, please reload or navigate to the home page.'
119
- : 'To continue, please reload, navigate to the home page or another application.');
120
- return (react_1.default.createElement(ui_1.Container, { vertical: true, top: true, center: true, className: classes.errorBoundry },
121
- react_1.default.createElement("div", { className: classes.boundryContainer, style: { gap: `1rem` } },
122
- react_1.default.createElement("h1", null, header),
123
- react_1.default.createElement("h3", null, get(i18n, 'finUi.errorBoundary.description', 'The application has encountered an error when trying to display some content.')),
124
- react_1.default.createElement("p", null, continueMsg),
125
- react_1.default.createElement("div", null,
126
- react_1.default.createElement(ErrorDetails, { showDetails: showDetails, setShowDetails: setShowDetails, error: error, appId: appId })),
127
- react_1.default.createElement(ui_1.Divider, null),
128
- react_1.default.createElement(ui_1.Container, { horizontal: true, middle: true, left: true, style: { gap: `1rem` } },
129
- react_1.default.createElement(ui_1.Button, { onClick: () => window.location.reload(), type: 'primary' }, get(i18n, 'finUi.common.reload', 'Reload')),
130
- react_1.default.createElement(ui_1.Button, { onClick: () => window.location.assign('/') }, get(i18n, 'finUi.common.home', 'Home'))),
131
- showReportDialog && (react_1.default.createElement("div", { style: { marginTop: `0.5rem` } },
132
- react_1.default.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.')))))));
133
- };
134
- /**
135
- * A common error boundary used to capture errors.
136
- */
137
- class ErrorBoundary extends react_1.default.Component {
138
- state = {};
139
- componentDidCatch(error, info) {
140
- this.props.onError?.(error);
141
- console.error(error, info);
142
- }
143
- static getDerivedStateFromError(error) {
144
- return { error };
145
- }
146
- render() {
147
- return this.state.error ? (react_1.default.createElement(ErrorBoundaryInner, { error: this.state.error, mode: this.props.mode, appId: this.props.appId, showReportDialog: this.props.showReportDialog })) : (this.props.children);
148
- }
149
- }
150
- exports.ErrorBoundary = ErrorBoundary;
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || function (mod) {
22
+ if (mod && mod.__esModule) return mod;
23
+ var result = {};
24
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
+ __setModuleDefault(result, mod);
26
+ return result;
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.ErrorBoundary = void 0;
30
+ const react_1 = __importStar(require("react"));
31
+ const ui_1 = require("@j2inn/ui");
32
+ const utils_1 = require("@j2inn/utils");
33
+ const react_jss_1 = require("react-jss");
34
+ const boundryStyles = (0, react_jss_1.createUseStyles)((theme) => ({
35
+ errorBoundry: {
36
+ backgroundColor: theme.bodyBg,
37
+ flex: `1 1 auto`,
38
+ },
39
+ boundryContainer: {
40
+ margin: '0 auto',
41
+ flex: `1 1 auto`,
42
+ padding: `2rem`,
43
+ maxWidth: 1024,
44
+ backgroundColor: theme.bgColor,
45
+ [`& h1, & h3`]: {
46
+ paddingBottom: `1rem`,
47
+ },
48
+ },
49
+ errorDetails: {
50
+ [`& pre`]: {
51
+ overflow: 'auto',
52
+ marginTop: '1rem',
53
+ backgroundColor: ui_1.ColorVals.Black,
54
+ color: ui_1.ColorVals.White,
55
+ padding: '0.3rem',
56
+ },
57
+ },
58
+ }));
59
+ function get(i18n, key, fallback) {
60
+ return i18n.has(key) ? i18n.get(key) : fallback;
61
+ }
62
+ /**
63
+ * Format an error message into something more useful for the clipboard.
64
+ */
65
+ function formatErrorMessage(error, appId) {
66
+ return JSON.stringify({
67
+ timestamp: new Date().toISOString(),
68
+ appId: appId ?? '',
69
+ location: location.href,
70
+ navigator: {
71
+ cookieEnabled: navigator.cookieEnabled,
72
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
73
+ deviceMemory: navigator.deviceMemory,
74
+ language: navigator.language,
75
+ languages: navigator.languages,
76
+ onLine: navigator.onLine,
77
+ userAgent: navigator.userAgent,
78
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
79
+ userAgentData: navigator.userAgentData,
80
+ vendor: navigator.vendor,
81
+ },
82
+ error: String(error.stack),
83
+ }, null, 2);
84
+ }
85
+ /**
86
+ * Shows the internal error details to a user.
87
+ */
88
+ const ErrorDetails = ({ showDetails, setShowDetails, error, appId, }) => {
89
+ const i18n = (0, utils_1.usei18n)();
90
+ const classes = boundryStyles();
91
+ const theme = (0, react_jss_1.useTheme)();
92
+ const copyToClipboard = () => {
93
+ navigator.clipboard.writeText(formatErrorMessage(error, appId));
94
+ ui_1.Message.success(theme, get(i18n, 'finUi.errorBoundary.copiedErrorToClipboard', 'Copied error to clipboard'));
95
+ };
96
+ return (react_1.default.createElement("div", { className: classes.errorDetails },
97
+ react_1.default.createElement(ui_1.Checkbox, { onChange: (e) => {
98
+ setShowDetails(e.target.checked);
99
+ }, defaultChecked: showDetails, value: showDetails }, get(i18n, 'finUi.errorBoundary.showDetails', 'Show details')),
100
+ showDetails && (react_1.default.createElement(react_1.default.Fragment, null,
101
+ react_1.default.createElement("pre", null, error.stack),
102
+ react_1.default.createElement(ui_1.Container, { horizontal: true, middle: true, right: true },
103
+ react_1.default.createElement(ui_1.Button, { onClick: copyToClipboard }, get(i18n, 'finUi.errorBoundary.copyToClipboard', 'Copy to clipboard')))))));
104
+ };
105
+ /**
106
+ * The inner error boundary component. This is required so
107
+ * we can use hooks that can't be used in a normal class component.
108
+ */
109
+ const ErrorBoundaryInner = ({ error, mode, appId, showReportDialog, }) => {
110
+ const i18n = (0, utils_1.usei18n)();
111
+ const [showDetails, setShowDetails] = (0, react_1.useState)(true);
112
+ const classes = boundryStyles();
113
+ const title = `finUi.errorBoundary.${mode}.title`;
114
+ const appName = `${appId}.name`;
115
+ const header = get(i18n, title, mode === 'global' ? 'Error' : 'Application error') +
116
+ (appId ? `: ${get(i18n, appName, appName)}` : '');
117
+ const continueMsg = get(i18n, `finUi.errorBoundary.${mode}.continue`, mode === 'global'
118
+ ? 'To continue, please reload or navigate to the home page.'
119
+ : 'To continue, please reload, navigate to the home page or another application.');
120
+ return (react_1.default.createElement(ui_1.Container, { vertical: true, top: true, center: true, className: classes.errorBoundry },
121
+ react_1.default.createElement("div", { className: classes.boundryContainer, style: { gap: `1rem` } },
122
+ react_1.default.createElement("h1", null, header),
123
+ react_1.default.createElement("h3", null, get(i18n, 'finUi.errorBoundary.description', 'The application has encountered an error when trying to display some content.')),
124
+ react_1.default.createElement("p", null, continueMsg),
125
+ react_1.default.createElement("div", null,
126
+ react_1.default.createElement(ErrorDetails, { showDetails: showDetails, setShowDetails: setShowDetails, error: error, appId: appId })),
127
+ react_1.default.createElement(ui_1.Divider, null),
128
+ react_1.default.createElement(ui_1.Container, { horizontal: true, middle: true, left: true, style: { gap: `1rem` } },
129
+ react_1.default.createElement(ui_1.Button, { onClick: () => window.location.reload(), type: 'primary' }, get(i18n, 'finUi.common.reload', 'Reload')),
130
+ react_1.default.createElement(ui_1.Button, { onClick: () => window.location.assign('/') }, get(i18n, 'finUi.common.home', 'Home'))),
131
+ showReportDialog && (react_1.default.createElement("div", { style: { marginTop: `0.5rem` } },
132
+ react_1.default.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.')))))));
133
+ };
134
+ /**
135
+ * A common error boundary used to capture errors.
136
+ */
137
+ class ErrorBoundary extends react_1.default.Component {
138
+ state = {};
139
+ componentDidCatch(error, info) {
140
+ this.props.onError?.(error);
141
+ console.error(error, info);
142
+ }
143
+ static getDerivedStateFromError(error) {
144
+ return { error };
145
+ }
146
+ render() {
147
+ return this.state.error ? (react_1.default.createElement(ErrorBoundaryInner, { error: this.state.error, mode: this.props.mode, appId: this.props.appId, showReportDialog: this.props.showReportDialog })) : (this.props.children);
148
+ }
149
+ }
150
+ exports.ErrorBoundary = ErrorBoundary;
151
151
  //# 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,37 +1,37 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ErrorDisplayer = exports.DefaultErrorBoundary = void 0;
7
- const ui_1 = require("@j2inn/ui");
8
- const react_1 = __importDefault(require("react"));
9
- class DefaultErrorBoundary extends react_1.default.Component {
10
- state = {};
11
- static getDerivedStateFromError(error) {
12
- // Update state so the next render will show the fallback UI.
13
- return { error: error };
14
- }
15
- componentDidCatch(error, errorInfo) {
16
- // You can also log the error to an error reporting service
17
- console.error(error, errorInfo);
18
- }
19
- render() {
20
- if (this.state.error) {
21
- // You can render any custom fallback UI
22
- return (react_1.default.createElement(exports.ErrorDisplayer, { error: this.state.error, extra: [
23
- react_1.default.createElement(ui_1.Button, { type: 'primary', key: 'refresh', onClick: () => window.location.reload() }, "Refresh The Page"),
24
- ] }));
25
- }
26
- return this.props.children;
27
- }
28
- }
29
- exports.DefaultErrorBoundary = DefaultErrorBoundary;
30
- const ErrorDisplayer = ({ error, extra, }) => {
31
- return (react_1.default.createElement(ui_1.Result, { status: 'error', title: 'Ouch... Something Went Wrong', subTitle: react_1.default.createElement(ui_1.Container, { center: true },
32
- react_1.default.createElement(ui_1.Collapse, { style: { width: 600, textAlign: 'left' } },
33
- react_1.default.createElement(ui_1.Collapse.Panel, { header: `${error.toString()}`, key: '1' },
34
- react_1.default.createElement(ui_1.Typography.Text, { style: { width: 400 } }, error.stack)))), extra: extra }));
35
- };
36
- exports.ErrorDisplayer = ErrorDisplayer;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ErrorDisplayer = exports.DefaultErrorBoundary = void 0;
7
+ const ui_1 = require("@j2inn/ui");
8
+ const react_1 = __importDefault(require("react"));
9
+ class DefaultErrorBoundary extends react_1.default.Component {
10
+ state = {};
11
+ static getDerivedStateFromError(error) {
12
+ // Update state so the next render will show the fallback UI.
13
+ return { error: error };
14
+ }
15
+ componentDidCatch(error, errorInfo) {
16
+ // You can also log the error to an error reporting service
17
+ console.error(error, errorInfo);
18
+ }
19
+ render() {
20
+ if (this.state.error) {
21
+ // You can render any custom fallback UI
22
+ return (react_1.default.createElement(exports.ErrorDisplayer, { error: this.state.error, extra: [
23
+ react_1.default.createElement(ui_1.Button, { type: 'primary', key: 'refresh', onClick: () => window.location.reload() }, "Refresh The Page"),
24
+ ] }));
25
+ }
26
+ return this.props.children;
27
+ }
28
+ }
29
+ exports.DefaultErrorBoundary = DefaultErrorBoundary;
30
+ const ErrorDisplayer = ({ error, extra, }) => {
31
+ return (react_1.default.createElement(ui_1.Result, { status: 'error', title: 'Ouch... Something Went Wrong', subTitle: react_1.default.createElement(ui_1.Container, { center: true },
32
+ react_1.default.createElement(ui_1.Collapse, { style: { width: 600, textAlign: 'left' } },
33
+ react_1.default.createElement(ui_1.Collapse.Panel, { header: `${error.toString()}`, key: '1' },
34
+ react_1.default.createElement(ui_1.Typography.Text, { style: { width: 400 } }, error.stack)))), extra: extra }));
35
+ };
36
+ exports.ErrorDisplayer = ErrorDisplayer;
37
37
  //# 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,18 +1,18 @@
1
- "use strict";
2
- /*
3
- * Copyright (c) 2022, J2 Innovations. All Rights Reserved
4
- */
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- const react_1 = __importDefault(require("react"));
10
- const LoadingSpinner_1 = require("./LoadingSpinner");
11
- /**
12
- * A simple UI loader.
13
- */
14
- const Loader = ({ loading, children, }) => {
15
- return loading ? react_1.default.createElement(LoadingSpinner_1.LoadingSpinner, null) : react_1.default.createElement(react_1.default.Fragment, null, children);
16
- };
17
- exports.default = Loader;
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ const react_1 = __importDefault(require("react"));
10
+ const LoadingSpinner_1 = require("./LoadingSpinner");
11
+ /**
12
+ * A simple UI loader.
13
+ */
14
+ const Loader = ({ loading, children, }) => {
15
+ return loading ? react_1.default.createElement(LoadingSpinner_1.LoadingSpinner, null) : react_1.default.createElement(react_1.default.Fragment, null, children);
16
+ };
17
+ exports.default = Loader;
18
18
  //# 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,28 +1,28 @@
1
- "use strict";
2
- /*
3
- * Copyright (c) 2022, J2 Innovations. All Rights Reserved
4
- */
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.LoadingSpinner = void 0;
10
- const ui_1 = require("@j2inn/ui");
11
- const react_1 = __importDefault(require("react"));
12
- const react_jss_1 = require("react-jss");
13
- const useStyles = (0, react_jss_1.createUseStyles)({
14
- container: {
15
- display: 'flex',
16
- alignItems: 'center',
17
- justifyContent: 'center',
18
- height: '100%',
19
- width: '100%',
20
- },
21
- });
22
- const LoadingSpinner = () => {
23
- const classes = useStyles();
24
- return (react_1.default.createElement("div", { className: classes.container },
25
- react_1.default.createElement(ui_1.Spin, { size: 'large' })));
26
- };
27
- exports.LoadingSpinner = LoadingSpinner;
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.LoadingSpinner = void 0;
10
+ const ui_1 = require("@j2inn/ui");
11
+ const react_1 = __importDefault(require("react"));
12
+ const react_jss_1 = require("react-jss");
13
+ const useStyles = (0, react_jss_1.createUseStyles)({
14
+ container: {
15
+ display: 'flex',
16
+ alignItems: 'center',
17
+ justifyContent: 'center',
18
+ height: '100%',
19
+ width: '100%',
20
+ },
21
+ });
22
+ const LoadingSpinner = () => {
23
+ const classes = useStyles();
24
+ return (react_1.default.createElement("div", { className: classes.container },
25
+ react_1.default.createElement(ui_1.Spin, { size: 'large' })));
26
+ };
27
+ exports.LoadingSpinner = LoadingSpinner;
28
28
  //# 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;