@j2inn/fin5-ui-utils 1.0.6-beta.0 → 1.0.7-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 (75) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/index.js +3 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/react/app/{Fin5AppContainer.jsx → Fin5AppContainer.js} +8 -16
  5. package/dist/react/app/Fin5AppContainer.js.map +1 -0
  6. package/dist/react/components/{ErrorBoundary.jsx → ErrorBoundary.js} +23 -49
  7. package/dist/react/components/ErrorBoundary.js.map +1 -0
  8. package/dist/react/components/{ErrorDisplayer.jsx → ErrorDisplayer.js} +8 -15
  9. package/dist/react/components/ErrorDisplayer.js.map +1 -0
  10. package/dist/react/components/{Loader.jsx → Loader.js} +2 -2
  11. package/dist/react/components/Loader.js.map +1 -0
  12. package/dist/react/components/{LoadingSpinner.jsx → LoadingSpinner.js} +3 -4
  13. package/dist/react/components/LoadingSpinner.js.map +1 -0
  14. package/dist/react/components/graphics/{GraphicViewer.jsx → GraphicViewer.js} +2 -2
  15. package/dist/react/components/graphics/GraphicViewer.js.map +1 -0
  16. package/dist/react/components/graphics/{GraphicsTabViewer.jsx → GraphicsTabViewer.js} +3 -5
  17. package/dist/react/components/graphics/GraphicsTabViewer.js.map +1 -0
  18. package/dist/react/components/navigation/{BasicLayout.jsx → BasicLayout.js} +27 -34
  19. package/dist/react/components/navigation/BasicLayout.js.map +1 -0
  20. package/dist/react/components/navigation/{MenuPage.jsx → MenuPage.js} +1 -1
  21. package/dist/react/components/navigation/MenuPage.js.map +1 -0
  22. package/dist/react/components/navigation/{Router.jsx → Router.js} +4 -4
  23. package/dist/react/components/navigation/Router.js.map +1 -0
  24. package/dist/react/components/resolvable/configurationForm/ConfigurationForm.d.ts +27 -0
  25. package/dist/react/components/resolvable/configurationForm/ConfigurationForm.js +93 -0
  26. package/dist/react/components/resolvable/configurationForm/ConfigurationForm.js.map +1 -0
  27. package/dist/react/components/resolvable/configurationForm/ConfigurationFormEntry.d.ts +16 -0
  28. package/dist/react/components/resolvable/configurationForm/ConfigurationFormEntry.js +86 -0
  29. package/dist/react/components/resolvable/configurationForm/ConfigurationFormEntry.js.map +1 -0
  30. package/dist/react/components/resolvable/configurationForm/getSectionDefault.d.ts +16 -0
  31. package/dist/react/components/resolvable/configurationForm/getSectionDefault.js +97 -0
  32. package/dist/react/components/resolvable/configurationForm/getSectionDefault.js.map +1 -0
  33. package/dist_es/index.d.ts +3 -0
  34. package/dist_es/index.js +3 -0
  35. package/dist_es/index.js.map +1 -1
  36. package/dist_es/react/app/Fin5AppContainer.js +74 -0
  37. package/dist_es/react/app/Fin5AppContainer.js.map +1 -0
  38. package/dist_es/react/components/ErrorBoundary.js +124 -0
  39. package/dist_es/react/components/ErrorBoundary.js.map +1 -0
  40. package/dist_es/react/components/ErrorDisplayer.js +29 -0
  41. package/dist_es/react/components/ErrorDisplayer.js.map +1 -0
  42. package/dist_es/react/components/Loader.js +13 -0
  43. package/dist_es/react/components/Loader.js.map +1 -0
  44. package/dist_es/react/components/LoadingSpinner.js +21 -0
  45. package/dist_es/react/components/LoadingSpinner.js.map +1 -0
  46. package/dist_es/react/components/graphics/GraphicViewer.js +23 -0
  47. package/dist_es/react/components/graphics/GraphicViewer.js.map +1 -0
  48. package/dist_es/react/components/graphics/GraphicsTabViewer.js +61 -0
  49. package/dist_es/react/components/graphics/GraphicsTabViewer.js.map +1 -0
  50. package/dist_es/react/components/navigation/BasicLayout.js +126 -0
  51. package/dist_es/react/components/navigation/BasicLayout.js.map +1 -0
  52. package/dist_es/react/components/navigation/MenuPage.js +31 -0
  53. package/dist_es/react/components/navigation/MenuPage.js.map +1 -0
  54. package/dist_es/react/components/navigation/Router.js +19 -0
  55. package/dist_es/react/components/navigation/Router.js.map +1 -0
  56. package/dist_es/react/components/resolvable/configurationForm/ConfigurationForm.d.ts +27 -0
  57. package/dist_es/react/components/resolvable/configurationForm/ConfigurationForm.js +62 -0
  58. package/dist_es/react/components/resolvable/configurationForm/ConfigurationForm.js.map +1 -0
  59. package/dist_es/react/components/resolvable/configurationForm/ConfigurationFormEntry.d.ts +16 -0
  60. package/dist_es/react/components/resolvable/configurationForm/ConfigurationFormEntry.js +56 -0
  61. package/dist_es/react/components/resolvable/configurationForm/ConfigurationFormEntry.js.map +1 -0
  62. package/dist_es/react/components/resolvable/configurationForm/getSectionDefault.d.ts +16 -0
  63. package/dist_es/react/components/resolvable/configurationForm/getSectionDefault.js +92 -0
  64. package/dist_es/react/components/resolvable/configurationForm/getSectionDefault.js.map +1 -0
  65. package/package.json +5 -3
  66. package/dist/react/app/Fin5AppContainer.jsx.map +0 -1
  67. package/dist/react/components/ErrorBoundary.jsx.map +0 -1
  68. package/dist/react/components/ErrorDisplayer.jsx.map +0 -1
  69. package/dist/react/components/Loader.jsx.map +0 -1
  70. package/dist/react/components/LoadingSpinner.jsx.map +0 -1
  71. package/dist/react/components/graphics/GraphicViewer.jsx.map +0 -1
  72. package/dist/react/components/graphics/GraphicsTabViewer.jsx.map +0 -1
  73. package/dist/react/components/navigation/BasicLayout.jsx.map +0 -1
  74. package/dist/react/components/navigation/MenuPage.jsx.map +0 -1
  75. package/dist/react/components/navigation/Router.jsx.map +0 -1
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.ConfigurationFormEntry = void 0;
30
+ const ui_1 = require("@j2inn/ui");
31
+ const classnames_1 = __importDefault(require("classnames"));
32
+ const haystack_core_1 = require("haystack-core");
33
+ const react_1 = __importStar(require("react"));
34
+ const react_jss_1 = require("react-jss");
35
+ const useStyles = (0, react_jss_1.createUseStyles)((theme) => ({
36
+ formEntry: {
37
+ [`& .${ui_1.ant_prefix}-input`]: {
38
+ height: 32,
39
+ },
40
+ },
41
+ entryTitle: {
42
+ fontWeight: 600,
43
+ fontSize: '1em',
44
+ color: theme.textColorSecondary,
45
+ },
46
+ select: {
47
+ width: '100%',
48
+ },
49
+ }));
50
+ const getHValFromSelectValue = (selectValue, initialHVal) => {
51
+ if ((0, haystack_core_1.valueIsKind)(initialHVal, haystack_core_1.Kind.Number)) {
52
+ return haystack_core_1.HNum.make(selectValue, initialHVal.unit);
53
+ }
54
+ else if ((0, haystack_core_1.valueIsKind)(initialHVal, haystack_core_1.Kind.Ref)) {
55
+ return haystack_core_1.HRef.make(selectValue);
56
+ }
57
+ return haystack_core_1.HStr.make(selectValue);
58
+ };
59
+ const ConfigurationFormEntry = ({ name, value, onChange, disabled, options, className, }) => {
60
+ const classes = useStyles();
61
+ if (!(0, haystack_core_1.isHVal)(value)) {
62
+ return react_1.default.createElement(react_1.default.Fragment, null, `${name} = ${value}`);
63
+ }
64
+ const [showedVal, setShowedVal] = (0, react_1.useState)(value);
65
+ (0, react_1.useEffect)(() => {
66
+ setShowedVal(value);
67
+ }, [value]);
68
+ const selectOptions = (0, react_1.useMemo)(() => options?.getRows().map((cfeOpt) => ({
69
+ value: cfeOpt.value.value,
70
+ label: cfeOpt.label.value,
71
+ })), [options]);
72
+ const onInputChange = (0, react_1.useCallback)((val) => {
73
+ setShowedVal(val);
74
+ onChange?.(val);
75
+ }, [onChange]);
76
+ return (react_1.default.createElement("div", { className: (0, classnames_1.default)(classes.formEntry, className) },
77
+ react_1.default.createElement("div", { className: classes.entryTitle }, name),
78
+ selectOptions ? (react_1.default.createElement(ui_1.Select, { showSearch: true, className: classes.select, value: showedVal.value, options: selectOptions, disabled: disabled, onChange: (val) => {
79
+ if (val != null) {
80
+ const newVal = getHValFromSelectValue(val, value);
81
+ onInputChange(newVal);
82
+ }
83
+ } })) : !disabled ? (react_1.default.createElement(ui_1.HInput, { val: showedVal, editable: true, onChange: onInputChange })) : (react_1.default.createElement(ui_1.Input, { disabled: true, value: showedVal.toString() }))));
84
+ };
85
+ exports.ConfigurationFormEntry = ConfigurationFormEntry;
86
+ //# sourceMappingURL=ConfigurationFormEntry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigurationFormEntry.js","sourceRoot":"","sources":["../../../../../src/react/components/resolvable/configurationForm/ConfigurationFormEntry.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kCAAuE;AACvE,4DAA2B;AAC3B,iDAUsB;AACtB,+CAAwE;AACxE,yCAA2C;AAE3C,MAAM,SAAS,GAAG,IAAA,2BAAe,EAAC,CAAC,KAAe,EAAE,EAAE,CAAC,CAAC;IACvD,SAAS,EAAE;QACV,CAAC,MAAM,eAAU,QAAQ,CAAC,EAAE;YAC3B,MAAM,EAAE,EAAE;SACV;KACD;IACD,UAAU,EAAE;QACX,UAAU,EAAE,GAAG;QACf,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,KAAK,CAAC,kBAAkB;KAC/B;IACD,MAAM,EAAE;QACP,KAAK,EAAE,MAAM;KACb;CACD,CAAC,CAAC,CAAA;AAgBH,MAAM,sBAAsB,GAAG,CAAC,WAAoB,EAAE,WAAiB,EAAE,EAAE;IAC1E,IAAI,IAAA,2BAAW,EAAC,WAAW,EAAE,oBAAI,CAAC,MAAM,CAAC,EAAE;QAC1C,OAAO,oBAAI,CAAC,IAAI,CAAC,WAAqB,EAAG,WAAoB,CAAC,IAAI,CAAC,CAAA;KACnE;SAAM,IAAI,IAAA,2BAAW,EAAC,WAAW,EAAE,oBAAI,CAAC,GAAG,CAAC,EAAE;QAC9C,OAAO,oBAAI,CAAC,IAAI,CAAC,WAAqB,CAAC,CAAA;KACvC;IAED,OAAO,oBAAI,CAAC,IAAI,CAAC,WAAqB,CAAC,CAAA;AACxC,CAAC,CAAA;AAEM,MAAM,sBAAsB,GAAG,CAAC,EACtC,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,SAAS,GACoB,EAAE,EAAE;IACjC,MAAM,OAAO,GAAG,SAAS,EAAE,CAAA;IAE3B,IAAI,CAAC,IAAA,sBAAM,EAAC,KAAK,CAAC,EAAE;QACnB,OAAO,8DAAG,GAAG,IAAI,MAAM,KAAK,EAAE,CAAI,CAAA;KAClC;IAED,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IAEjD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACd,YAAY,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAEX,MAAM,aAAa,GAAG,IAAA,eAAO,EAC5B,GAAG,EAAE,CACJ,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK;QACzB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK;KACzB,CAAC,CAAC,EACJ,CAAC,OAAO,CAAC,CACT,CAAA;IAED,MAAM,aAAa,GAAG,IAAA,mBAAW,EAChC,CAAC,GAAS,EAAE,EAAE;QACb,YAAY,CAAC,GAAG,CAAC,CAAA;QACjB,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAA;IAChB,CAAC,EACD,CAAC,QAAQ,CAAC,CACV,CAAA;IAED,OAAO,CACN,uCAAK,SAAS,EAAE,IAAA,oBAAE,EAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;QAC/C,uCAAK,SAAS,EAAE,OAAO,CAAC,UAAU,IAAG,IAAI,CAAO;QAC/C,aAAa,CAAC,CAAC,CAAC,CAChB,8BAAC,WAAM,IACN,UAAU,QACV,SAAS,EAAE,OAAO,CAAC,MAAM,EACzB,KAAK,EAAG,SAAgC,CAAC,KAAK,EAC9C,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;gBACjB,IAAI,GAAG,IAAI,IAAI,EAAE;oBAChB,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;oBACjD,aAAa,CAAC,MAAM,CAAC,CAAA;iBACrB;YACF,CAAC,GACA,CACF,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CACf,8BAAC,WAAM,IAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,QAAC,QAAQ,EAAE,aAAa,GAAI,CAC5D,CAAC,CAAC,CAAC,CACH,8BAAC,UAAK,IAAC,QAAQ,QAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,GAAI,CAC/C,CACI,CACN,CAAA;AACF,CAAC,CAAA;AA7DY,QAAA,sBAAsB,0BA6DlC"}
@@ -0,0 +1,16 @@
1
+ import { UiElementData } from '@j2inn/resolvable-ui-elements';
2
+ import { HVal } from 'haystack-core';
3
+ /**
4
+ * Get default values for all elements that should resolve into an HVal.
5
+ * @param section a section element
6
+ * @returns an object containing as key the section element name and as value the default HVal.
7
+ */
8
+ export declare const getSectionDefault: (section: UiElementData) => {
9
+ [key: string]: HVal;
10
+ };
11
+ /**
12
+ * Get a default for a specific kind of HVal.
13
+ * @param kind can be expressed as new or old Hayson, or alternatively the haystack-core type name
14
+ * @returns
15
+ */
16
+ export declare const getDefaultHVal: (kind?: string) => HVal | undefined;
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDefaultHVal = exports.getSectionDefault = void 0;
4
+ const haystack_core_1 = require("haystack-core");
5
+ /**
6
+ * Get default values for all elements that should resolve into an HVal.
7
+ * @param section a section element
8
+ * @returns an object containing as key the section element name and as value the default HVal.
9
+ */
10
+ const getSectionDefault = (section) => {
11
+ const result = {};
12
+ Object.entries(section).forEach(([key, element]) => {
13
+ const elementData = element;
14
+ const defaultValue = (0, exports.getDefaultHVal)(elementData?._meta?.resolvedType);
15
+ if (defaultValue) {
16
+ result[key] = defaultValue;
17
+ }
18
+ });
19
+ return result;
20
+ };
21
+ exports.getSectionDefault = getSectionDefault;
22
+ /**
23
+ * Get a default for a specific kind of HVal.
24
+ * @param kind can be expressed as new or old Hayson, or alternatively the haystack-core type name
25
+ * @returns
26
+ */
27
+ const getDefaultHVal = (kind) => {
28
+ switch (kind) {
29
+ case haystack_core_1.Kind.Marker:
30
+ case 'Marker':
31
+ case 'HMarker':
32
+ return haystack_core_1.HMarker.make();
33
+ case haystack_core_1.Kind.Remove:
34
+ case 'Remove':
35
+ case 'HRemove':
36
+ return haystack_core_1.HRemove.make();
37
+ case haystack_core_1.Kind.NA:
38
+ case 'NA':
39
+ case 'HNa':
40
+ return haystack_core_1.HNa.make();
41
+ case haystack_core_1.Kind.Coord:
42
+ case 'Coord':
43
+ case 'HCoord':
44
+ return haystack_core_1.HCoord.make({ latitude: 0, longitude: 0 });
45
+ case haystack_core_1.Kind.XStr:
46
+ case 'XStr':
47
+ case 'HXStr':
48
+ return haystack_core_1.HXStr.make('');
49
+ case haystack_core_1.Kind.Date:
50
+ case 'Date':
51
+ case 'HDate':
52
+ return haystack_core_1.HDate.make(new Date());
53
+ case haystack_core_1.Kind.DateTime:
54
+ case 'DateTime':
55
+ case 'HDateTime':
56
+ return haystack_core_1.HDateTime.make(new Date());
57
+ case haystack_core_1.Kind.Number:
58
+ case 'Number':
59
+ case 'HNum':
60
+ return haystack_core_1.HNum.make(0);
61
+ case haystack_core_1.Kind.Bool:
62
+ case 'Bool':
63
+ case 'HBool':
64
+ return haystack_core_1.HBool.make(false);
65
+ case 'Str':
66
+ case 'HStr':
67
+ return haystack_core_1.HStr.make('');
68
+ case haystack_core_1.Kind.Ref:
69
+ case 'Ref':
70
+ case 'HRef':
71
+ return haystack_core_1.HRef.make('');
72
+ case haystack_core_1.Kind.Symbol:
73
+ case 'Symbol':
74
+ case 'HSymbol':
75
+ return haystack_core_1.HSymbol.make('');
76
+ case haystack_core_1.Kind.Time:
77
+ case 'Time':
78
+ case 'HTime':
79
+ return haystack_core_1.HTime.make(new Date());
80
+ case haystack_core_1.Kind.Uri:
81
+ case 'Uri':
82
+ case 'HUri':
83
+ return haystack_core_1.HUri.make('');
84
+ case haystack_core_1.Kind.Dict:
85
+ case 'Dict':
86
+ case 'HDict':
87
+ return haystack_core_1.HDict.make();
88
+ case haystack_core_1.Kind.Grid:
89
+ case 'Grid':
90
+ case 'HGrid':
91
+ return haystack_core_1.HGrid.make();
92
+ default:
93
+ return undefined;
94
+ }
95
+ };
96
+ exports.getDefaultHVal = getDefaultHVal;
97
+ //# sourceMappingURL=getSectionDefault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSectionDefault.js","sourceRoot":"","sources":["../../../../../src/react/components/resolvable/configurationForm/getSectionDefault.ts"],"names":[],"mappings":";;;AAEA,iDAmBsB;AAEtB;;;;GAIG;AACI,MAAM,iBAAiB,GAAG,CAChC,OAAsB,EACI,EAAE;IAC5B,MAAM,MAAM,GAA4B,EAAE,CAAA;IAC1C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;QAClD,MAAM,WAAW,GAAG,OAAoD,CAAA;QACxE,MAAM,YAAY,GAAG,IAAA,sBAAc,EAAC,WAAW,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;QAErE,IAAI,YAAY,EAAE;YACjB,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAA;SAC1B;IACF,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACd,CAAC,CAAA;AAdY,QAAA,iBAAiB,qBAc7B;AAED;;;;GAIG;AACI,MAAM,cAAc,GAAG,CAAC,IAAa,EAAoB,EAAE;IACjE,QAAQ,IAAI,EAAE;QACb,KAAK,oBAAI,CAAC,MAAM,CAAC;QACjB,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACb,OAAO,uBAAO,CAAC,IAAI,EAAE,CAAA;QACtB,KAAK,oBAAI,CAAC,MAAM,CAAC;QACjB,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACb,OAAO,uBAAO,CAAC,IAAI,EAAE,CAAA;QACtB,KAAK,oBAAI,CAAC,EAAE,CAAC;QACb,KAAK,IAAI,CAAC;QACV,KAAK,KAAK;YACT,OAAO,mBAAG,CAAC,IAAI,EAAE,CAAA;QAClB,KAAK,oBAAI,CAAC,KAAK,CAAC;QAChB,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ;YACZ,OAAO,sBAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAA;QAClD,KAAK,oBAAI,CAAC,IAAI,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACX,OAAO,qBAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACtB,KAAK,oBAAI,CAAC,IAAI,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACX,OAAO,qBAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;QAC9B,KAAK,oBAAI,CAAC,QAAQ,CAAC;QACnB,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW;YACf,OAAO,yBAAS,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;QAClC,KAAK,oBAAI,CAAC,MAAM,CAAC;QACjB,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACV,OAAO,oBAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACpB,KAAK,oBAAI,CAAC,IAAI,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACX,OAAO,qBAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACzB,KAAK,KAAK,CAAC;QACX,KAAK,MAAM;YACV,OAAO,oBAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACrB,KAAK,oBAAI,CAAC,GAAG,CAAC;QACd,KAAK,KAAK,CAAC;QACX,KAAK,MAAM;YACV,OAAO,oBAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACrB,KAAK,oBAAI,CAAC,MAAM,CAAC;QACjB,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACb,OAAO,uBAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACxB,KAAK,oBAAI,CAAC,IAAI,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACX,OAAO,qBAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;QAC9B,KAAK,oBAAI,CAAC,GAAG,CAAC;QACd,KAAK,KAAK,CAAC;QACX,KAAK,MAAM;YACV,OAAO,oBAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACrB,KAAK,oBAAI,CAAC,IAAI,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACX,OAAO,qBAAK,CAAC,IAAI,EAAE,CAAA;QACpB,KAAK,oBAAI,CAAC,IAAI,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACX,OAAO,qBAAK,CAAC,IAAI,EAAE,CAAA;QACpB;YACC,OAAO,SAAS,CAAA;KACjB;AACF,CAAC,CAAA;AApEY,QAAA,cAAc,kBAoE1B"}
@@ -12,5 +12,8 @@ export * from './react/components/navigation/MenuPage';
12
12
  export * from './react/components/navigation/Router';
13
13
  export * from './react/components/graphics/GraphicsTabViewer';
14
14
  export * from './react/components/graphics/GraphicViewer';
15
+ export * from './react/components/resolvable/configurationForm/ConfigurationForm';
16
+ export * from './react/components/resolvable/configurationForm/ConfigurationFormEntry';
17
+ export * from './react/components/resolvable/configurationForm/getSectionDefault';
15
18
  export * from './react/app/Fin5AppContainer';
16
19
  export * from './react/app/Fin5AppRootStore';
package/dist_es/index.js CHANGED
@@ -21,6 +21,9 @@ export * from './react/components/navigation/MenuPage';
21
21
  export * from './react/components/navigation/Router';
22
22
  export * from './react/components/graphics/GraphicsTabViewer';
23
23
  export * from './react/components/graphics/GraphicViewer';
24
+ export * from './react/components/resolvable/configurationForm/ConfigurationForm';
25
+ export * from './react/components/resolvable/configurationForm/ConfigurationFormEntry';
26
+ export * from './react/components/resolvable/configurationForm/getSectionDefault';
24
27
  //////////////////////////////////////////////////////////////////////////
25
28
  // j2inn/app support for FIN5
26
29
  //////////////////////////////////////////////////////////////////////////
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,0EAA0E;AAC1E,4BAA4B;AAC5B,0EAA0E;AAE1E,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sCAAsC,CAAA;AAEpD,0EAA0E;AAC1E,mBAAmB;AACnB,0EAA0E;AAE1E,cAAc,mCAAmC,CAAA;AACjD,cAAc,kCAAkC,CAAA;AAChD,cAAc,2BAA2B,CAAA;AACzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,2CAA2C,CAAA;AACzD,cAAc,wCAAwC,CAAA;AACtD,cAAc,sCAAsC,CAAA;AACpD,cAAc,+CAA+C,CAAA;AAC7D,cAAc,2CAA2C,CAAA;AAEzD,0EAA0E;AAC1E,6BAA6B;AAC7B,0EAA0E;AAE1E,cAAc,8BAA8B,CAAA;AAC5C,cAAc,8BAA8B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,0EAA0E;AAC1E,4BAA4B;AAC5B,0EAA0E;AAE1E,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sCAAsC,CAAA;AAEpD,0EAA0E;AAC1E,mBAAmB;AACnB,0EAA0E;AAE1E,cAAc,mCAAmC,CAAA;AACjD,cAAc,kCAAkC,CAAA;AAChD,cAAc,2BAA2B,CAAA;AACzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,2CAA2C,CAAA;AACzD,cAAc,wCAAwC,CAAA;AACtD,cAAc,sCAAsC,CAAA;AACpD,cAAc,+CAA+C,CAAA;AAC7D,cAAc,2CAA2C,CAAA;AACzD,cAAc,mEAAmE,CAAA;AACjF,cAAc,wEAAwE,CAAA;AACtF,cAAc,mEAAmE,CAAA;AAEjF,0EAA0E;AAC1E,6BAA6B;AAC7B,0EAA0E;AAE1E,cAAc,8BAA8B,CAAA;AAC5C,cAAc,8BAA8B,CAAA"}
@@ -0,0 +1,74 @@
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 (React.createElement(AppRootStoreContext.Provider, { value: rootStore },
67
+ React.createElement(AppStoreContext.Provider, { value: appStore },
68
+ React.createElement(ClientContext.Provider, { value: containerClient },
69
+ React.createElement(I18NProvider, { locale: locale, setLoading: setLoadingi18n },
70
+ React.createElement(ThemeProvider, { theme: theme },
71
+ React.createElement(Loader, { loading: loading || loadingi18n },
72
+ React.createElement(ErrorBoundary, { mode: "global" /* ErrorBoundaryMode.global */ }, children))))))));
73
+ });
74
+ //# sourceMappingURL=Fin5AppContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Fin5AppContainer.js","sourceRoot":"","sources":["../../../src/react/app/Fin5AppContainer.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAY,eAAe,EAAE,MAAM,YAAY,CAAA;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EACN,MAAM,GAKN,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAY,MAAM,WAAW,CAAA;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAA;AACrF,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,aAAa,EAAqB,MAAM,6BAA6B,CAAA;AAC9E,OAAO,MAAM,MAAM,sBAAsB,CAAA;AAEzC,MAAM,WAAW,GAAG,QAAQ,CAAA;AAE5B,MAAM,aAAa,GAA0B,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAU,EAAE,CACzE,GAAG,MAAM,IAAI,WAAW,QAAQ,IAAI,EAAE,CAAA;AAEvC,MAAM,QAAQ,GAAqB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,EAAU,EAAE,CACtE,GAAG,MAAM,QAAQ,OAAO,IAAI,EAAE,EAAE,CAAA;AAEjC,MAAM,qBAAqB,GAAkC,CAAC,EAC7D,MAAM,EACN,OAAO,EACP,IAAI,GACJ,EAAU,EAAE,CACZ,GAAG,MAAM,IAAI,WAAW,gBACvB,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAC3B,IAAI,IAAI,EAAE,CAAA;AAEX,MAAM,iBAAiB,GAA8B,CAAC,EACrD,MAAM,EACN,IAAI,GACJ,EAAU,EAAE,CAAC,GAAG,MAAM,IAAI,WAAW,aAAa,IAAI,EAAE,CAAA;AAiCzD;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CACvC,CAAC,EACA,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,EACP,KAAK,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC,KAAK,GACnB,EAAe,EAAE;IACxC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC5C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAEpD,MAAM,YAAY,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAA;IAC1D,MAAM,SAAS,GACd,YAAY,CAAC,OAAO;QACpB,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC,CAAA;IAEhD,MAAM,CAAC,YAAY,CAAC,GAAG,0BAA0B,CAAC,aAAa,CAAC,CAAA;IAEhE,MAAM,gBAAgB,GACrB,OAAO,IAAI,YAAY,IAAI,OAAO,EAAE,QAAQ,EAAE,WAAW,IAAI,EAAE,CAAA;IAEhE,MAAM,MAAM,GACX,OAAO,EAAE,eAAe,EAAE,WAAW,IAAI,SAAS,EAAE,QAAQ,CAAA;IAE7D,SAAS,CAAC,MAAM,GAAG,MAAM,CAAA;IACzB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAC3C,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;KACjC;IAED,MAAM,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAA;IAChD,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IAExD,MAAM,SAAS,GAAG,GAAG,EAAE,CACtB,MAAM;QACN,IAAI,MAAM,CAAC;YACV,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACnC,OAAO,EAAE,gBAAgB;YACzB,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;YAC7C,aAAa;YACb,QAAQ;YACR,qBAAqB;YACrB,iBAAiB;SACjB,CAAC,CAAA;IAEH,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAC1C,QAAQ,CAAS,SAAS,CAAC,CAAA;IAE5B,SAAS,CAAC,GAAG,EAAE;QACd,UAAU,CAAC,IAAI,CAAC,CAAA;QAEhB,MAAM,SAAS,GAAG,SAAS,EAAE,CAAA;QAC7B,kBAAkB,CAAC,SAAS,CAAC,CAAA;QAE7B,8CAA8C;QAC9C,mBAAmB;QACnB,OAAO,CAAC,GAAG,CAAC;YACX,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC;YACzC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE;SACxB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;YACtB,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAA;YACtC,UAAU,CAAC,KAAK,CAAC,CAAA;QAClB,CAAC,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAA;IAE9B,OAAO,CACN,oBAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,SAAS;QAC7C,oBAAC,eAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,QAAQ;YACxC,oBAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,eAAe;gBAC7C,oBAAC,YAAY,IACZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,cAAc;oBAC1B,oBAAC,aAAa,IAAC,KAAK,EAAE,KAAK;wBAC1B,oBAAC,MAAM,IAAC,OAAO,EAAE,OAAO,IAAI,WAAW;4BACtC,oBAAC,aAAa,IACb,IAAI,6CACH,QAAQ,CACM,CACR,CACM,CACF,CACS,CACC,CACG,CAC/B,CAAA;AACF,CAAC,CACD,CAAA"}
@@ -0,0 +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
+ }
124
+ //# sourceMappingURL=ErrorBoundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorBoundary.js","sourceRoot":"","sources":["../../../src/react/components/ErrorBoundary.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +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
+ };
29
+ //# sourceMappingURL=ErrorDisplayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorDisplayer.js","sourceRoot":"","sources":["../../../src/react/components/ErrorDisplayer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAC3E,OAAO,KAA+B,MAAM,OAAO,CAAA;AAUnD,MAAM,OAAO,oBAAqB,SAAQ,KAAK,CAAC,SAA6B;IACnE,KAAK,GAAuB,EAAE,CAAA;IAEvC,MAAM,CAAC,wBAAwB,CAAC,KAAY;QAC3C,6DAA6D;QAC7D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;IACxB,CAAC;IAEQ,iBAAiB,CAAC,KAAY,EAAE,SAAoB;QAC5D,2DAA2D;QAC3D,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAChC,CAAC;IAEQ,MAAM;QACd,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YACrB,wCAAwC;YACxC,OAAO,CACN,oBAAC,cAAc,IACd,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,KAAK,EAAE;oBACN,oBAAC,MAAM,IACN,IAAI,EAAC,SAAS,EACd,GAAG,EAAC,SAAS,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,uBAE/B;iBACT,GACA,CACF,CAAA;SACD;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAA;IAC3B,CAAC;CACD;AAOD,MAAM,CAAC,MAAM,cAAc,GAAkC,CAAC,EAC7D,KAAK,EACL,KAAK,GACL,EAAE,EAAE;IACJ,OAAO,CACN,oBAAC,MAAM,IACN,MAAM,EAAC,OAAO,EACd,KAAK,EAAC,8BAA8B,EACpC,QAAQ,EACP,oBAAC,SAAS,IAAC,MAAM;YAChB,oBAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE;gBACjD,oBAAC,QAAQ,CAAC,KAAK,IAAC,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAC,GAAG;oBACrD,oBAAC,UAAU,CAAC,IAAI,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IACpC,KAAK,CAAC,KAAK,CACK,CACF,CACP,CACA,EAEb,KAAK,EAAE,KAAK,GACX,CACF,CAAA;AACF,CAAC,CAAA"}
@@ -0,0 +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;
13
+ //# sourceMappingURL=Loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Loader.js","sourceRoot":"","sources":["../../../src/react/components/Loader.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD;;GAEG;AACH,MAAM,MAAM,GAAG,CAAC,EACf,OAAO,EACP,QAAQ,GAIR,EAAe,EAAE;IACjB,OAAO,OAAO,CAAC,CAAC,CAAC,oBAAC,cAAc,OAAG,CAAC,CAAC,CAAC,0CAAG,QAAQ,CAAI,CAAA;AACtD,CAAC,CAAA;AAED,eAAe,MAAM,CAAA"}
@@ -0,0 +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
+ };
21
+ //# sourceMappingURL=LoadingSpinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadingSpinner.js","sourceRoot":"","sources":["../../../src/react/components/LoadingSpinner.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,MAAM,SAAS,GAAG,eAAe,CAAC;IACjC,SAAS,EAAE;QACV,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;QACxB,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,MAAM;KACb;CACD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,cAAc,GAAa,GAAG,EAAE;IAC5C,MAAM,OAAO,GAAG,SAAS,EAAE,CAAA;IAC3B,OAAO,CACN,6BAAK,SAAS,EAAE,OAAO,CAAC,SAAS;QAChC,oBAAC,IAAI,IAAC,IAAI,EAAC,OAAO,GAAQ,CACrB,CACN,CAAA;AACF,CAAC,CAAA"}
@@ -0,0 +1,23 @@
1
+ /*
2
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
+ */
4
+ import cn from 'classnames';
5
+ import React from 'react';
6
+ import { createUseStyles } from 'react-jss';
7
+ import { fin5Top } from '../../../fin5Top/fin5Top';
8
+ const useStyles = createUseStyles({
9
+ iframe: {
10
+ width: '100%',
11
+ height: '100%',
12
+ border: 0,
13
+ overflow: 'hidden',
14
+ },
15
+ });
16
+ export const GraphicViewer = ({ projectName = fin5Top?.finstack?.projectName ?? '', graphicId, targetRef, className, }) => {
17
+ const classes = useStyles();
18
+ const url = new URL(`${window.location.protocol}//${window.location.host}/fin5/${projectName}`);
19
+ url.hash = `targetRef=${targetRef.toAxon()}`;
20
+ url.searchParams.set('projectRef', graphicId.toAxon());
21
+ return (React.createElement("iframe", { id: graphicId.toAxon(), className: cn(classes.iframe, className), src: url.toString() }));
22
+ };
23
+ //# sourceMappingURL=GraphicViewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphicViewer.js","sourceRoot":"","sources":["../../../../src/react/components/graphics/GraphicViewer.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAElD,MAAM,SAAS,GAAG,eAAe,CAAC;IACjC,MAAM,EAAE;QACP,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,QAAQ;KAClB;CACD,CAAC,CAAA;AASF,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EAC3D,WAAW,GAAG,OAAO,EAAE,QAAQ,EAAE,WAAW,IAAI,EAAE,EAClD,SAAS,EACT,SAAS,EACT,SAAS,GACT,EAAE,EAAE;IACJ,MAAM,OAAO,GAAG,SAAS,EAAE,CAAA;IAE3B,MAAM,GAAG,GAAG,IAAI,GAAG,CAClB,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAS,WAAW,EAAE,CAC1E,CAAA;IACD,GAAG,CAAC,IAAI,GAAG,aAAa,SAAS,CAAC,MAAM,EAAE,EAAE,CAAA;IAC5C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;IAEtD,OAAO,CACN,gCACC,EAAE,EAAE,SAAS,CAAC,MAAM,EAAE,EACtB,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,EACxC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,GAClB,CACF,CAAA;AACF,CAAC,CAAA"}
@@ -0,0 +1,61 @@
1
+ /*
2
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
+ */
4
+ import { ant_prefix, Tabs } from '@j2inn/ui';
5
+ import cn from 'classnames';
6
+ import { useClient } from 'haystack-react';
7
+ import React, { useEffect, useMemo, useState } from 'react';
8
+ import { createUseStyles } from 'react-jss';
9
+ import { fin5Top } from '../../../fin5Top/fin5Top';
10
+ import { LoadingSpinner } from '../LoadingSpinner';
11
+ import { GraphicViewer } from './GraphicViewer';
12
+ const useStyles = createUseStyles({
13
+ tabs: {
14
+ height: '100%',
15
+ [`& .${ant_prefix}-tabs-content-holder`]: {
16
+ height: '100%',
17
+ [`& .${ant_prefix}-tabs-content`]: {
18
+ height: '100%',
19
+ [`& .${ant_prefix}-tabs-tabpane`]: {
20
+ height: '100%',
21
+ },
22
+ },
23
+ },
24
+ },
25
+ fallback: {
26
+ height: '100%',
27
+ display: 'flex',
28
+ justifyContent: 'center',
29
+ alignItems: 'center',
30
+ fontSize: '1.1em',
31
+ },
32
+ });
33
+ export const GraphicsTabViewer = ({ projectName = fin5Top?.finstack?.projectName, targetRef, className, queryRelated = false, fallbackText = 'No graphics found.', fallbackClassName, }) => {
34
+ const client = useClient();
35
+ const classes = useStyles();
36
+ const [loading, setLoading] = useState(true);
37
+ const [graphicsList, setGraphicsList] = useState([]);
38
+ useEffect(() => {
39
+ if (targetRef) {
40
+ client.ext
41
+ .eval(`readById(${targetRef.toAxon()}).finGraphicOn(${queryRelated})`)
42
+ .then((grid) => {
43
+ setGraphicsList(grid.getRows());
44
+ })
45
+ .finally(() => setLoading(false));
46
+ }
47
+ }, [targetRef]);
48
+ const tabs = useMemo(() => {
49
+ return graphicsList
50
+ .sort((g1, g2) => g1.toDis().localeCompare(g2.toDis()))
51
+ .map((graphic) => {
52
+ return {
53
+ label: graphic.toDis(),
54
+ key: graphic.id.toAxon(),
55
+ children: (React.createElement(GraphicViewer, { projectName: projectName ?? '', targetRef: targetRef, graphicId: graphic.id })),
56
+ };
57
+ });
58
+ }, [graphicsList]);
59
+ return loading ? (React.createElement(LoadingSpinner, null)) : tabs.length > 0 ? (React.createElement(Tabs, { className: cn(classes.tabs, className), items: tabs })) : (React.createElement("div", { className: cn(classes.fallback, fallbackClassName) }, fallbackText));
60
+ };
61
+ //# sourceMappingURL=GraphicsTabViewer.js.map