@j2inn/fin5-ui-utils 8.1.1-beta.4 → 8.1.1-beta.6
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.
- package/README.md +5 -5
- package/dist/fantomProps/createFin5Props/index.d.ts +12 -12
- package/dist/fantomProps/createFin5Props/index.js +146 -146
- package/dist/fantomProps/createFin5Props/runCreateFin5Props.d.ts +2 -2
- package/dist/fantomProps/createFin5Props/runCreateFin5Props.js +20 -20
- package/dist/fantomProps/fantomPropsToObject.d.ts +8 -8
- package/dist/fantomProps/fantomPropsToObject.js +183 -183
- package/dist/fantomProps/generateJsonFromFantomPropsFile.d.ts +4 -4
- package/dist/fantomProps/generateJsonFromFantomPropsFile.js +41 -41
- package/dist/fantomProps/localePropsToJson.d.ts +1 -1
- package/dist/fantomProps/localePropsToJson.js +50 -50
- package/dist/fantomProps/readFantomPropsFile.d.ts +5 -5
- package/dist/fantomProps/readFantomPropsFile.js +65 -65
- package/dist/fin5Top/fin5FileUpload.d.ts +24 -24
- package/dist/fin5Top/fin5FileUpload.js +51 -51
- package/dist/fin5Top/fin5Top.d.ts +165 -124
- package/dist/fin5Top/fin5Top.js +61 -53
- package/dist/fin5Top/fin5Top.js.map +1 -1
- package/dist/fin5Top/finEdge2Cloud.d.ts +6 -6
- package/dist/fin5Top/finEdge2Cloud.js +15 -15
- package/dist/fin5Top/getFin5BinUrl.d.ts +2 -2
- package/dist/fin5Top/getFin5BinUrl.js +9 -9
- package/dist/fin5Top/openFin5Alarm.d.ts +22 -22
- package/dist/fin5Top/openFin5Alarm.js +23 -23
- package/dist/fin5Top/openFin5Historian.d.ts +3 -3
- package/dist/fin5Top/openFin5Historian.js +19 -19
- package/dist/fin5Top/useFin5AppURLHashParameter.d.ts +18 -18
- package/dist/fin5Top/useFin5AppURLHashParameter.js +133 -133
- package/dist/index.d.ts +35 -35
- package/dist/index.js +69 -69
- package/dist/jobs/jobUtils.d.ts +14 -14
- package/dist/jobs/jobUtils.js +15 -15
- package/dist/react/app/Fin5AppContainer.d.ts +36 -36
- package/dist/react/app/Fin5AppContainer.js +145 -168
- package/dist/react/app/Fin5AppContainer.js.map +1 -1
- package/dist/react/app/Fin5AppRootStore.d.ts +40 -42
- package/dist/react/app/Fin5AppRootStore.js +90 -114
- package/dist/react/app/Fin5AppRootStore.js.map +1 -1
- package/dist/react/components/ErrorBoundary.d.ts +57 -57
- package/dist/react/components/ErrorBoundary.js +150 -150
- package/dist/react/components/ErrorDisplayer.d.ts +19 -19
- package/dist/react/components/ErrorDisplayer.js +36 -36
- package/dist/react/components/Loader.d.ts +9 -9
- package/dist/react/components/Loader.js +17 -17
- package/dist/react/components/LoadingSpinner.d.ts +2 -2
- package/dist/react/components/LoadingSpinner.js +27 -27
- package/dist/react/components/RecordImage.d.ts +20 -20
- package/dist/react/components/RecordImage.js +51 -51
- package/dist/react/components/charts/QRCode.d.ts +25 -25
- package/dist/react/components/charts/QRCode.js +82 -82
- package/dist/react/components/charts/line-bar/Chart.d.ts +166 -166
- package/dist/react/components/charts/line-bar/Chart.js +442 -442
- package/dist/react/components/charts/line-bar/HGridChart.d.ts +58 -58
- package/dist/react/components/charts/line-bar/HGridChart.js +285 -285
- package/dist/react/components/charts/pie/PieChart.d.ts +94 -94
- package/dist/react/components/charts/pie/PieChart.js +204 -204
- package/dist/react/components/charts/pie/SimplePieChart.d.ts +21 -21
- package/dist/react/components/charts/pie/SimplePieChart.js +55 -55
- package/dist/react/components/graphics/GraphicViewer.d.ts +10 -10
- package/dist/react/components/graphics/GraphicViewer.js +29 -29
- package/dist/react/components/graphics/GraphicsTabViewer.d.ts +17 -17
- package/dist/react/components/graphics/GraphicsTabViewer.js +90 -90
- package/dist/react/components/makeCustomElement.d.ts +16 -16
- package/dist/react/components/makeCustomElement.js +150 -150
- package/dist/react/components/navigation/BasicLayout.d.ts +41 -41
- package/dist/react/components/navigation/BasicLayout.js +155 -155
- package/dist/react/components/navigation/HeaderSiderLayout.d.ts +13 -13
- package/dist/react/components/navigation/HeaderSiderLayout.js +110 -110
- package/dist/react/components/navigation/MenuPage.d.ts +37 -37
- package/dist/react/components/navigation/MenuPage.js +36 -36
- package/dist/react/components/navigation/MenuTrigger.d.ts +9 -9
- package/dist/react/components/navigation/MenuTrigger.js +33 -33
- package/dist/react/components/navigation/ReactRouterHeaderSiderLayout.d.ts +11 -11
- package/dist/react/components/navigation/ReactRouterHeaderSiderLayout.js +25 -25
- package/dist/react/components/navigation/ReactRouterLayout.d.ts +46 -46
- package/dist/react/components/navigation/ReactRouterLayout.js +132 -132
- package/dist/react/components/navigation/customRouting/Router.d.ts +12 -12
- package/dist/react/components/navigation/customRouting/Router.js +45 -45
- package/dist/react/components/navigation/customRouting/RouterLayout.d.ts +11 -11
- package/dist/react/components/navigation/customRouting/RouterLayout.js +61 -61
- package/dist/react/components/resolvable/configurationForm/ConfigurationForm.d.ts +27 -27
- package/dist/react/components/resolvable/configurationForm/ConfigurationForm.js +95 -95
- package/dist/react/components/resolvable/configurationForm/ConfigurationFormEntry.d.ts +16 -16
- package/dist/react/components/resolvable/configurationForm/ConfigurationFormEntry.js +88 -88
- package/dist/react/components/resolvable/configurationForm/getSectionDefault.d.ts +16 -16
- package/dist/react/components/resolvable/configurationForm/getSectionDefault.js +99 -99
- package/dist/react/hooks/useFin5BinUrl.d.ts +6 -6
- package/dist/react/hooks/useFin5BinUrl.js +15 -15
- package/dist/react/hooks/useFin5ColorScheme.d.ts +2 -2
- package/dist/react/hooks/useFin5ColorScheme.js +56 -56
- package/dist/react/hooks/useScreenSize.d.ts +7 -7
- package/dist/react/hooks/useScreenSize.js +31 -31
- package/dist_es/fantomProps/createFin5Props/index.d.ts +12 -12
- package/dist_es/fantomProps/createFin5Props/index.js +140 -140
- package/dist_es/fantomProps/createFin5Props/runCreateFin5Props.d.ts +2 -2
- package/dist_es/fantomProps/createFin5Props/runCreateFin5Props.js +15 -15
- package/dist_es/fantomProps/fantomPropsToObject.d.ts +8 -8
- package/dist_es/fantomProps/fantomPropsToObject.js +178 -178
- package/dist_es/fantomProps/generateJsonFromFantomPropsFile.d.ts +4 -4
- package/dist_es/fantomProps/generateJsonFromFantomPropsFile.js +12 -12
- package/dist_es/fantomProps/localePropsToJson.d.ts +1 -1
- package/dist_es/fantomProps/localePropsToJson.js +21 -21
- package/dist_es/fantomProps/readFantomPropsFile.d.ts +5 -5
- package/dist_es/fantomProps/readFantomPropsFile.js +39 -39
- package/dist_es/fin5Top/fin5FileUpload.d.ts +24 -24
- package/dist_es/fin5Top/fin5FileUpload.js +47 -47
- package/dist_es/fin5Top/fin5Top.d.ts +165 -124
- package/dist_es/fin5Top/fin5Top.js +57 -49
- package/dist_es/fin5Top/fin5Top.js.map +1 -1
- package/dist_es/fin5Top/finEdge2Cloud.d.ts +6 -6
- package/dist_es/fin5Top/finEdge2Cloud.js +11 -11
- package/dist_es/fin5Top/getFin5BinUrl.d.ts +2 -2
- package/dist_es/fin5Top/getFin5BinUrl.js +5 -5
- package/dist_es/fin5Top/openFin5Alarm.d.ts +22 -22
- package/dist_es/fin5Top/openFin5Alarm.js +19 -19
- package/dist_es/fin5Top/openFin5Historian.d.ts +3 -3
- package/dist_es/fin5Top/openFin5Historian.js +15 -15
- package/dist_es/fin5Top/useFin5AppURLHashParameter.d.ts +18 -18
- package/dist_es/fin5Top/useFin5AppURLHashParameter.js +124 -124
- package/dist_es/index.d.ts +35 -35
- package/dist_es/index.js +53 -53
- package/dist_es/jobs/jobUtils.d.ts +14 -14
- package/dist_es/jobs/jobUtils.js +9 -9
- package/dist_es/react/app/Fin5AppContainer.d.ts +36 -36
- package/dist_es/react/app/Fin5AppContainer.js +116 -139
- package/dist_es/react/app/Fin5AppContainer.js.map +1 -1
- package/dist_es/react/app/Fin5AppContainer.jsx +82 -0
- package/dist_es/react/app/Fin5AppContainer.jsx.map +1 -0
- package/dist_es/react/app/Fin5AppRootStore.d.ts +40 -42
- package/dist_es/react/app/Fin5AppRootStore.js +86 -110
- package/dist_es/react/app/Fin5AppRootStore.js.map +1 -1
- package/dist_es/react/components/ErrorBoundary.d.ts +57 -57
- package/dist_es/react/components/ErrorBoundary.js +123 -123
- package/dist_es/react/components/ErrorBoundary.jsx +150 -0
- package/dist_es/react/components/ErrorBoundary.jsx.map +1 -0
- package/dist_es/react/components/ErrorDisplayer.d.ts +19 -19
- package/dist_es/react/components/ErrorDisplayer.js +28 -28
- package/dist_es/react/components/ErrorDisplayer.jsx +36 -0
- package/dist_es/react/components/ErrorDisplayer.jsx.map +1 -0
- package/dist_es/react/components/Loader.d.ts +9 -9
- package/dist_es/react/components/Loader.js +12 -12
- package/dist_es/react/components/Loader.jsx +13 -0
- package/dist_es/react/components/Loader.jsx.map +1 -0
- package/dist_es/react/components/LoadingSpinner.d.ts +2 -2
- package/dist_es/react/components/LoadingSpinner.js +20 -20
- package/dist_es/react/components/LoadingSpinner.jsx +22 -0
- package/dist_es/react/components/LoadingSpinner.jsx.map +1 -0
- package/dist_es/react/components/RecordImage.d.ts +20 -20
- package/dist_es/react/components/RecordImage.js +24 -24
- package/dist_es/react/components/charts/QRCode.d.ts +25 -25
- package/dist_es/react/components/charts/QRCode.js +52 -52
- package/dist_es/react/components/charts/line-bar/Chart.d.ts +166 -166
- package/dist_es/react/components/charts/line-bar/Chart.js +415 -415
- package/dist_es/react/components/charts/line-bar/HGridChart.d.ts +58 -58
- package/dist_es/react/components/charts/line-bar/HGridChart.js +250 -250
- package/dist_es/react/components/charts/line-bar/ZincGridChart.d.ts +12 -0
- package/dist_es/react/components/charts/line-bar/ZincGridChart.js +17 -0
- package/dist_es/react/components/charts/line-bar/ZincGridChart.js.map +1 -0
- package/dist_es/react/components/charts/pie/PieChart.d.ts +94 -94
- package/dist_es/react/components/charts/pie/PieChart.js +177 -177
- package/dist_es/react/components/charts/pie/SimplePieChart.d.ts +21 -21
- package/dist_es/react/components/charts/pie/SimplePieChart.js +25 -25
- package/dist_es/react/components/graphics/GraphicViewer.d.ts +10 -10
- package/dist_es/react/components/graphics/GraphicViewer.js +22 -22
- package/dist_es/react/components/graphics/GraphicViewer.jsx +23 -0
- package/dist_es/react/components/graphics/GraphicViewer.jsx.map +1 -0
- package/dist_es/react/components/graphics/GraphicsTabViewer.d.ts +17 -17
- package/dist_es/react/components/graphics/GraphicsTabViewer.js +60 -60
- package/dist_es/react/components/graphics/GraphicsTabViewer.jsx +63 -0
- package/dist_es/react/components/graphics/GraphicsTabViewer.jsx.map +1 -0
- package/dist_es/react/components/makeCustomElement.d.ts +16 -16
- package/dist_es/react/components/makeCustomElement.js +142 -142
- package/dist_es/react/components/navigation/BasicLayout.d.ts +41 -41
- package/dist_es/react/components/navigation/BasicLayout.js +124 -124
- package/dist_es/react/components/navigation/BasicLayout.jsx +133 -0
- package/dist_es/react/components/navigation/BasicLayout.jsx.map +1 -0
- package/dist_es/react/components/navigation/HeaderSiderLayout.d.ts +13 -13
- package/dist_es/react/components/navigation/HeaderSiderLayout.js +80 -80
- package/dist_es/react/components/navigation/MenuPage.d.ts +37 -37
- package/dist_es/react/components/navigation/MenuPage.js +30 -30
- package/dist_es/react/components/navigation/MenuPage.jsx +31 -0
- package/dist_es/react/components/navigation/MenuPage.jsx.map +1 -0
- package/dist_es/react/components/navigation/MenuTrigger.d.ts +9 -9
- package/dist_es/react/components/navigation/MenuTrigger.js +28 -28
- package/dist_es/react/components/navigation/ReactRouterHeaderSiderLayout.d.ts +11 -11
- package/dist_es/react/components/navigation/ReactRouterHeaderSiderLayout.js +18 -18
- package/dist_es/react/components/navigation/ReactRouterLayout.d.ts +46 -46
- package/dist_es/react/components/navigation/ReactRouterLayout.js +99 -99
- package/dist_es/react/components/navigation/Router.d.ts +12 -0
- package/dist_es/react/components/navigation/Router.js +19 -0
- package/dist_es/react/components/navigation/Router.js.map +1 -0
- package/dist_es/react/components/navigation/Router.jsx +19 -0
- package/dist_es/react/components/navigation/Router.jsx.map +1 -0
- package/dist_es/react/components/navigation/customRouting/Router.d.ts +12 -12
- package/dist_es/react/components/navigation/customRouting/Router.js +18 -18
- package/dist_es/react/components/navigation/customRouting/RouterLayout.d.ts +11 -11
- package/dist_es/react/components/navigation/customRouting/RouterLayout.js +34 -34
- package/dist_es/react/components/navigation/react-router/BasicLayout.d.ts +23 -0
- package/dist_es/react/components/navigation/react-router/BasicLayout.js +82 -0
- package/dist_es/react/components/navigation/react-router/BasicLayout.js.map +1 -0
- package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.d.ts +24 -0
- package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.js +82 -0
- package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.js.map +1 -0
- package/dist_es/react/components/resolvable/configurationForm/ConfigurationForm.d.ts +27 -27
- package/dist_es/react/components/resolvable/configurationForm/ConfigurationForm.js +64 -64
- package/dist_es/react/components/resolvable/configurationForm/ConfigurationFormEntry.d.ts +16 -16
- package/dist_es/react/components/resolvable/configurationForm/ConfigurationFormEntry.js +58 -58
- package/dist_es/react/components/resolvable/configurationForm/getSectionDefault.d.ts +16 -16
- package/dist_es/react/components/resolvable/configurationForm/getSectionDefault.js +94 -94
- package/dist_es/react/hooks/useFin5BinUrl.d.ts +6 -6
- package/dist_es/react/hooks/useFin5BinUrl.js +11 -11
- package/dist_es/react/hooks/useFin5ColorScheme.d.ts +2 -2
- package/dist_es/react/hooks/useFin5ColorScheme.js +52 -52
- package/dist_es/react/hooks/useScreenSize.d.ts +7 -7
- package/dist_es/react/hooks/useScreenSize.js +27 -27
- package/package.json +1 -1
|
@@ -1,179 +1,179 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Convert the given fantom props as string to JS object (@see https://fantom.org/doc/sys/InStream#readProps)
|
|
6
|
-
*/
|
|
7
|
-
export default function fantomPropsToObject(props) {
|
|
8
|
-
let i = 0;
|
|
9
|
-
const readChar = () => {
|
|
10
|
-
if (i < props.length) {
|
|
11
|
-
i++;
|
|
12
|
-
return props.charCodeAt(i - 1);
|
|
13
|
-
}
|
|
14
|
-
else
|
|
15
|
-
return -1;
|
|
16
|
-
};
|
|
17
|
-
const unreadChar = () => {
|
|
18
|
-
if (i > 0) {
|
|
19
|
-
i--;
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
return parseFantomProps(readChar, unreadChar);
|
|
23
|
-
}
|
|
24
|
-
var UTF_8;
|
|
25
|
-
(function (UTF_8) {
|
|
26
|
-
UTF_8[UTF_8["tab"] = 9] = "tab";
|
|
27
|
-
UTF_8[UTF_8["lf"] = 10] = "lf";
|
|
28
|
-
UTF_8[UTF_8["cr"] = 13] = "cr";
|
|
29
|
-
UTF_8[UTF_8["space"] = 32] = "space";
|
|
30
|
-
UTF_8[UTF_8["numberSign"] = 35] = "numberSign";
|
|
31
|
-
UTF_8[UTF_8["asterisk"] = 42] = "asterisk";
|
|
32
|
-
UTF_8[UTF_8["solidus"] = 47] = "solidus";
|
|
33
|
-
UTF_8[UTF_8["equalSign"] = 61] = "equalSign";
|
|
34
|
-
UTF_8[UTF_8["reverseSolidus"] = 92] = "reverseSolidus";
|
|
35
|
-
UTF_8[UTF_8["n"] = 110] = "n";
|
|
36
|
-
UTF_8[UTF_8["r"] = 114] = "r";
|
|
37
|
-
UTF_8[UTF_8["t"] = 116] = "t";
|
|
38
|
-
UTF_8[UTF_8["u"] = 117] = "u";
|
|
39
|
-
})(UTF_8 || (UTF_8 = {}));
|
|
40
|
-
const isSpace = (char) => char === UTF_8.space ||
|
|
41
|
-
char === UTF_8.tab ||
|
|
42
|
-
char === UTF_8.lf ||
|
|
43
|
-
char === UTF_8.cr;
|
|
44
|
-
const hex = function (c) {
|
|
45
|
-
if (48 <= c && c <= 57)
|
|
46
|
-
return c - 48;
|
|
47
|
-
if (97 <= c && c <= 102)
|
|
48
|
-
return c - 97 + 10;
|
|
49
|
-
if (65 <= c && c <= 70)
|
|
50
|
-
return c - 65 + 10;
|
|
51
|
-
return -1;
|
|
52
|
-
};
|
|
53
|
-
/*
|
|
54
|
-
* Parse the Fantom props file character by character.
|
|
55
|
-
* Implementation based on https://github.com/fantom-lang/fantom/blob/master/src/sys/js/fan/InStream.js
|
|
56
|
-
*/
|
|
57
|
-
export function parseFantomProps(readChar, unreadChar) {
|
|
58
|
-
const props = {};
|
|
59
|
-
let name = '';
|
|
60
|
-
let value = null;
|
|
61
|
-
let inBlockComment = 0;
|
|
62
|
-
let inEndOfLineComment = false;
|
|
63
|
-
let char = UTF_8.space, lastChar = UTF_8.space;
|
|
64
|
-
let lineNum = 1;
|
|
65
|
-
while (true) {
|
|
66
|
-
lastChar = char;
|
|
67
|
-
char = readChar();
|
|
68
|
-
if (char < 0)
|
|
69
|
-
break;
|
|
70
|
-
// end of line
|
|
71
|
-
if (char == UTF_8.lf || char == UTF_8.cr) {
|
|
72
|
-
inEndOfLineComment = false;
|
|
73
|
-
if (lastChar == UTF_8.cr && char == UTF_8.lf)
|
|
74
|
-
continue;
|
|
75
|
-
const n = name.trim();
|
|
76
|
-
if (value !== null) {
|
|
77
|
-
props[n] = value.trim();
|
|
78
|
-
name = '';
|
|
79
|
-
value = null;
|
|
80
|
-
}
|
|
81
|
-
else if (n.length > 0)
|
|
82
|
-
throw new Error('Invalid name/value pair [Line ' + lineNum + ']');
|
|
83
|
-
lineNum++;
|
|
84
|
-
continue;
|
|
85
|
-
}
|
|
86
|
-
// if in comment
|
|
87
|
-
if (inEndOfLineComment)
|
|
88
|
-
continue;
|
|
89
|
-
// block comment
|
|
90
|
-
if (inBlockComment > 0) {
|
|
91
|
-
if (lastChar == UTF_8.solidus && char == UTF_8.asterisk)
|
|
92
|
-
inBlockComment++;
|
|
93
|
-
if (lastChar == UTF_8.asterisk && char == UTF_8.solidus)
|
|
94
|
-
inBlockComment--;
|
|
95
|
-
continue;
|
|
96
|
-
}
|
|
97
|
-
// equal
|
|
98
|
-
if (char == UTF_8.equalSign && value === null) {
|
|
99
|
-
value = '';
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
// line comment
|
|
103
|
-
if (char === UTF_8.numberSign &&
|
|
104
|
-
(lastChar == UTF_8.lf || lastChar == UTF_8.cr)) {
|
|
105
|
-
inEndOfLineComment = true;
|
|
106
|
-
continue;
|
|
107
|
-
}
|
|
108
|
-
// end of line comment
|
|
109
|
-
if (char == UTF_8.solidus && isSpace(lastChar)) {
|
|
110
|
-
const peek = readChar();
|
|
111
|
-
if (peek < 0)
|
|
112
|
-
break;
|
|
113
|
-
if (peek == UTF_8.solidus) {
|
|
114
|
-
inEndOfLineComment = true;
|
|
115
|
-
continue;
|
|
116
|
-
}
|
|
117
|
-
if (peek == UTF_8.asterisk) {
|
|
118
|
-
inBlockComment++;
|
|
119
|
-
continue;
|
|
120
|
-
}
|
|
121
|
-
unreadChar(peek);
|
|
122
|
-
}
|
|
123
|
-
// escape or line continuation
|
|
124
|
-
if (char == UTF_8.reverseSolidus) {
|
|
125
|
-
let peek = readChar();
|
|
126
|
-
if (peek < 0)
|
|
127
|
-
break;
|
|
128
|
-
else if (peek == UTF_8.n)
|
|
129
|
-
char = UTF_8.lf;
|
|
130
|
-
else if (peek == UTF_8.r)
|
|
131
|
-
char = UTF_8.cr;
|
|
132
|
-
else if (peek == UTF_8.t)
|
|
133
|
-
char = UTF_8.tab;
|
|
134
|
-
else if (peek == UTF_8.reverseSolidus)
|
|
135
|
-
char = UTF_8.reverseSolidus;
|
|
136
|
-
else if (peek == UTF_8.cr || peek == UTF_8.lf) {
|
|
137
|
-
// line continuation
|
|
138
|
-
lineNum++;
|
|
139
|
-
if (peek == UTF_8.cr) {
|
|
140
|
-
peek = readChar();
|
|
141
|
-
if (peek != UTF_8.lf)
|
|
142
|
-
unreadChar(peek);
|
|
143
|
-
}
|
|
144
|
-
while (true) {
|
|
145
|
-
peek = readChar();
|
|
146
|
-
if (peek == UTF_8.space || peek == UTF_8.tab)
|
|
147
|
-
continue;
|
|
148
|
-
unreadChar(peek);
|
|
149
|
-
break;
|
|
150
|
-
}
|
|
151
|
-
continue;
|
|
152
|
-
}
|
|
153
|
-
else if (peek == UTF_8.u) {
|
|
154
|
-
const n3 = hex(readChar());
|
|
155
|
-
const n2 = hex(readChar());
|
|
156
|
-
const n1 = hex(readChar());
|
|
157
|
-
const n0 = hex(readChar());
|
|
158
|
-
if (n3 < 0 || n2 < 0 || n1 < 0 || n0 < 0)
|
|
159
|
-
throw new Error('Invalid hex value for \\uxxxx [Line ' + lineNum + ']');
|
|
160
|
-
char = (n3 << 12) | (n2 << 8) | (n1 << 4) | n0;
|
|
161
|
-
}
|
|
162
|
-
else
|
|
163
|
-
throw new Error('Invalid escape sequence [Line ' + lineNum + ']');
|
|
164
|
-
}
|
|
165
|
-
// normal character
|
|
166
|
-
if (value === null)
|
|
167
|
-
name += String.fromCharCode(char);
|
|
168
|
-
else
|
|
169
|
-
value += String.fromCharCode(char);
|
|
170
|
-
}
|
|
171
|
-
const n = name.trim();
|
|
172
|
-
if (value !== null) {
|
|
173
|
-
props[n] = value.trim();
|
|
174
|
-
}
|
|
175
|
-
else if (n.length > 0)
|
|
176
|
-
throw new Error('Invalid name/value pair [Line ' + lineNum + ']');
|
|
177
|
-
return props;
|
|
178
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Convert the given fantom props as string to JS object (@see https://fantom.org/doc/sys/InStream#readProps)
|
|
6
|
+
*/
|
|
7
|
+
export default function fantomPropsToObject(props) {
|
|
8
|
+
let i = 0;
|
|
9
|
+
const readChar = () => {
|
|
10
|
+
if (i < props.length) {
|
|
11
|
+
i++;
|
|
12
|
+
return props.charCodeAt(i - 1);
|
|
13
|
+
}
|
|
14
|
+
else
|
|
15
|
+
return -1;
|
|
16
|
+
};
|
|
17
|
+
const unreadChar = () => {
|
|
18
|
+
if (i > 0) {
|
|
19
|
+
i--;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
return parseFantomProps(readChar, unreadChar);
|
|
23
|
+
}
|
|
24
|
+
var UTF_8;
|
|
25
|
+
(function (UTF_8) {
|
|
26
|
+
UTF_8[UTF_8["tab"] = 9] = "tab";
|
|
27
|
+
UTF_8[UTF_8["lf"] = 10] = "lf";
|
|
28
|
+
UTF_8[UTF_8["cr"] = 13] = "cr";
|
|
29
|
+
UTF_8[UTF_8["space"] = 32] = "space";
|
|
30
|
+
UTF_8[UTF_8["numberSign"] = 35] = "numberSign";
|
|
31
|
+
UTF_8[UTF_8["asterisk"] = 42] = "asterisk";
|
|
32
|
+
UTF_8[UTF_8["solidus"] = 47] = "solidus";
|
|
33
|
+
UTF_8[UTF_8["equalSign"] = 61] = "equalSign";
|
|
34
|
+
UTF_8[UTF_8["reverseSolidus"] = 92] = "reverseSolidus";
|
|
35
|
+
UTF_8[UTF_8["n"] = 110] = "n";
|
|
36
|
+
UTF_8[UTF_8["r"] = 114] = "r";
|
|
37
|
+
UTF_8[UTF_8["t"] = 116] = "t";
|
|
38
|
+
UTF_8[UTF_8["u"] = 117] = "u";
|
|
39
|
+
})(UTF_8 || (UTF_8 = {}));
|
|
40
|
+
const isSpace = (char) => char === UTF_8.space ||
|
|
41
|
+
char === UTF_8.tab ||
|
|
42
|
+
char === UTF_8.lf ||
|
|
43
|
+
char === UTF_8.cr;
|
|
44
|
+
const hex = function (c) {
|
|
45
|
+
if (48 <= c && c <= 57)
|
|
46
|
+
return c - 48;
|
|
47
|
+
if (97 <= c && c <= 102)
|
|
48
|
+
return c - 97 + 10;
|
|
49
|
+
if (65 <= c && c <= 70)
|
|
50
|
+
return c - 65 + 10;
|
|
51
|
+
return -1;
|
|
52
|
+
};
|
|
53
|
+
/*
|
|
54
|
+
* Parse the Fantom props file character by character.
|
|
55
|
+
* Implementation based on https://github.com/fantom-lang/fantom/blob/master/src/sys/js/fan/InStream.js
|
|
56
|
+
*/
|
|
57
|
+
export function parseFantomProps(readChar, unreadChar) {
|
|
58
|
+
const props = {};
|
|
59
|
+
let name = '';
|
|
60
|
+
let value = null;
|
|
61
|
+
let inBlockComment = 0;
|
|
62
|
+
let inEndOfLineComment = false;
|
|
63
|
+
let char = UTF_8.space, lastChar = UTF_8.space;
|
|
64
|
+
let lineNum = 1;
|
|
65
|
+
while (true) {
|
|
66
|
+
lastChar = char;
|
|
67
|
+
char = readChar();
|
|
68
|
+
if (char < 0)
|
|
69
|
+
break;
|
|
70
|
+
// end of line
|
|
71
|
+
if (char == UTF_8.lf || char == UTF_8.cr) {
|
|
72
|
+
inEndOfLineComment = false;
|
|
73
|
+
if (lastChar == UTF_8.cr && char == UTF_8.lf)
|
|
74
|
+
continue;
|
|
75
|
+
const n = name.trim();
|
|
76
|
+
if (value !== null) {
|
|
77
|
+
props[n] = value.trim();
|
|
78
|
+
name = '';
|
|
79
|
+
value = null;
|
|
80
|
+
}
|
|
81
|
+
else if (n.length > 0)
|
|
82
|
+
throw new Error('Invalid name/value pair [Line ' + lineNum + ']');
|
|
83
|
+
lineNum++;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
// if in comment
|
|
87
|
+
if (inEndOfLineComment)
|
|
88
|
+
continue;
|
|
89
|
+
// block comment
|
|
90
|
+
if (inBlockComment > 0) {
|
|
91
|
+
if (lastChar == UTF_8.solidus && char == UTF_8.asterisk)
|
|
92
|
+
inBlockComment++;
|
|
93
|
+
if (lastChar == UTF_8.asterisk && char == UTF_8.solidus)
|
|
94
|
+
inBlockComment--;
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
// equal
|
|
98
|
+
if (char == UTF_8.equalSign && value === null) {
|
|
99
|
+
value = '';
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
// line comment
|
|
103
|
+
if (char === UTF_8.numberSign &&
|
|
104
|
+
(lastChar == UTF_8.lf || lastChar == UTF_8.cr)) {
|
|
105
|
+
inEndOfLineComment = true;
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
// end of line comment
|
|
109
|
+
if (char == UTF_8.solidus && isSpace(lastChar)) {
|
|
110
|
+
const peek = readChar();
|
|
111
|
+
if (peek < 0)
|
|
112
|
+
break;
|
|
113
|
+
if (peek == UTF_8.solidus) {
|
|
114
|
+
inEndOfLineComment = true;
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
if (peek == UTF_8.asterisk) {
|
|
118
|
+
inBlockComment++;
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
unreadChar(peek);
|
|
122
|
+
}
|
|
123
|
+
// escape or line continuation
|
|
124
|
+
if (char == UTF_8.reverseSolidus) {
|
|
125
|
+
let peek = readChar();
|
|
126
|
+
if (peek < 0)
|
|
127
|
+
break;
|
|
128
|
+
else if (peek == UTF_8.n)
|
|
129
|
+
char = UTF_8.lf;
|
|
130
|
+
else if (peek == UTF_8.r)
|
|
131
|
+
char = UTF_8.cr;
|
|
132
|
+
else if (peek == UTF_8.t)
|
|
133
|
+
char = UTF_8.tab;
|
|
134
|
+
else if (peek == UTF_8.reverseSolidus)
|
|
135
|
+
char = UTF_8.reverseSolidus;
|
|
136
|
+
else if (peek == UTF_8.cr || peek == UTF_8.lf) {
|
|
137
|
+
// line continuation
|
|
138
|
+
lineNum++;
|
|
139
|
+
if (peek == UTF_8.cr) {
|
|
140
|
+
peek = readChar();
|
|
141
|
+
if (peek != UTF_8.lf)
|
|
142
|
+
unreadChar(peek);
|
|
143
|
+
}
|
|
144
|
+
while (true) {
|
|
145
|
+
peek = readChar();
|
|
146
|
+
if (peek == UTF_8.space || peek == UTF_8.tab)
|
|
147
|
+
continue;
|
|
148
|
+
unreadChar(peek);
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
else if (peek == UTF_8.u) {
|
|
154
|
+
const n3 = hex(readChar());
|
|
155
|
+
const n2 = hex(readChar());
|
|
156
|
+
const n1 = hex(readChar());
|
|
157
|
+
const n0 = hex(readChar());
|
|
158
|
+
if (n3 < 0 || n2 < 0 || n1 < 0 || n0 < 0)
|
|
159
|
+
throw new Error('Invalid hex value for \\uxxxx [Line ' + lineNum + ']');
|
|
160
|
+
char = (n3 << 12) | (n2 << 8) | (n1 << 4) | n0;
|
|
161
|
+
}
|
|
162
|
+
else
|
|
163
|
+
throw new Error('Invalid escape sequence [Line ' + lineNum + ']');
|
|
164
|
+
}
|
|
165
|
+
// normal character
|
|
166
|
+
if (value === null)
|
|
167
|
+
name += String.fromCharCode(char);
|
|
168
|
+
else
|
|
169
|
+
value += String.fromCharCode(char);
|
|
170
|
+
}
|
|
171
|
+
const n = name.trim();
|
|
172
|
+
if (value !== null) {
|
|
173
|
+
props[n] = value.trim();
|
|
174
|
+
}
|
|
175
|
+
else if (n.length > 0)
|
|
176
|
+
throw new Error('Invalid name/value pair [Line ' + lineNum + ']');
|
|
177
|
+
return props;
|
|
178
|
+
}
|
|
179
179
|
//# sourceMappingURL=fantomPropsToObject.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Converts props file to json file.
|
|
3
|
-
*/
|
|
4
|
-
export default function generateJsonFromFantomPropsFile(inputPath?: string, outputPath?: string): Promise<void>;
|
|
1
|
+
/**
|
|
2
|
+
* Converts props file to json file.
|
|
3
|
+
*/
|
|
4
|
+
export default function generateJsonFromFantomPropsFile(inputPath?: string, outputPath?: string): Promise<void>;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
-
*/
|
|
4
|
-
import * as fs from 'fs';
|
|
5
|
-
import readFantomPropsFile from './readFantomPropsFile';
|
|
6
|
-
/**
|
|
7
|
-
* Converts props file to json file.
|
|
8
|
-
*/
|
|
9
|
-
export default async function generateJsonFromFantomPropsFile(inputPath = '../locale/en.props', outputPath = './src/localeKeys.json') {
|
|
10
|
-
const result = await readFantomPropsFile(inputPath);
|
|
11
|
-
fs.writeFileSync(outputPath, JSON.stringify(result, null, '\t'));
|
|
12
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import readFantomPropsFile from './readFantomPropsFile';
|
|
6
|
+
/**
|
|
7
|
+
* Converts props file to json file.
|
|
8
|
+
*/
|
|
9
|
+
export default async function generateJsonFromFantomPropsFile(inputPath = '../locale/en.props', outputPath = './src/localeKeys.json') {
|
|
10
|
+
const result = await readFantomPropsFile(inputPath);
|
|
11
|
+
fs.writeFileSync(outputPath, JSON.stringify(result, null, '\t'));
|
|
12
|
+
}
|
|
13
13
|
//# sourceMappingURL=generateJsonFromFantomPropsFile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function localePropsToJson(inputPath?: string, outputPath?: string, includeOnlyPrefixedBy?: string): Promise<void>;
|
|
1
|
+
export default function localePropsToJson(inputPath?: string, outputPath?: string, includeOnlyPrefixedBy?: string): Promise<void>;
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
-
*/
|
|
4
|
-
import * as fs from 'fs';
|
|
5
|
-
import readFantomPropsFile from './readFantomPropsFile';
|
|
6
|
-
export default async function localePropsToJson(inputPath = '../locale/en.props', outputPath = './src/localeKeys.json', includeOnlyPrefixedBy = '') {
|
|
7
|
-
const props = await readFantomPropsFile(inputPath);
|
|
8
|
-
let localeKeys;
|
|
9
|
-
if (includeOnlyPrefixedBy) {
|
|
10
|
-
localeKeys = Object.fromEntries(Object.keys(props)
|
|
11
|
-
.filter((key) => key.startsWith(includeOnlyPrefixedBy))
|
|
12
|
-
.map((key) => [
|
|
13
|
-
key.replace(includeOnlyPrefixedBy, '').replaceAll('.', '_'),
|
|
14
|
-
key,
|
|
15
|
-
]));
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
localeKeys = Object.fromEntries(Object.keys(props).map((key) => [key.replaceAll('.', '_'), key]));
|
|
19
|
-
}
|
|
20
|
-
fs.writeFileSync(outputPath, JSON.stringify(localeKeys, null, '\t'));
|
|
21
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import readFantomPropsFile from './readFantomPropsFile';
|
|
6
|
+
export default async function localePropsToJson(inputPath = '../locale/en.props', outputPath = './src/localeKeys.json', includeOnlyPrefixedBy = '') {
|
|
7
|
+
const props = await readFantomPropsFile(inputPath);
|
|
8
|
+
let localeKeys;
|
|
9
|
+
if (includeOnlyPrefixedBy) {
|
|
10
|
+
localeKeys = Object.fromEntries(Object.keys(props)
|
|
11
|
+
.filter((key) => key.startsWith(includeOnlyPrefixedBy))
|
|
12
|
+
.map((key) => [
|
|
13
|
+
key.replace(includeOnlyPrefixedBy, '').replaceAll('.', '_'),
|
|
14
|
+
key,
|
|
15
|
+
]));
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
localeKeys = Object.fromEntries(Object.keys(props).map((key) => [key.replaceAll('.', '_'), key]));
|
|
19
|
+
}
|
|
20
|
+
fs.writeFileSync(outputPath, JSON.stringify(localeKeys, null, '\t'));
|
|
21
|
+
}
|
|
22
22
|
//# sourceMappingURL=localePropsToJson.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Props } from './fantomPropsToObject';
|
|
2
|
-
/**
|
|
3
|
-
* Synchronously read the given Fantom props file to JS object (@see https://fantom.org/doc/sys/InStream#readProps)
|
|
4
|
-
*/
|
|
5
|
-
export default function readFantomPropsFile(path: string): Promise<Props>;
|
|
1
|
+
import { Props } from './fantomPropsToObject';
|
|
2
|
+
/**
|
|
3
|
+
* Synchronously read the given Fantom props file to JS object (@see https://fantom.org/doc/sys/InStream#readProps)
|
|
4
|
+
*/
|
|
5
|
+
export default function readFantomPropsFile(path: string): Promise<Props>;
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
-
*/
|
|
4
|
-
import * as fs from 'fs';
|
|
5
|
-
import { parseFantomProps } from './fantomPropsToObject';
|
|
6
|
-
/**
|
|
7
|
-
* Synchronously read the given Fantom props file to JS object (@see https://fantom.org/doc/sys/InStream#readProps)
|
|
8
|
-
*/
|
|
9
|
-
export default function readFantomPropsFile(path) {
|
|
10
|
-
return new Promise((resolve, reject) => {
|
|
11
|
-
fs.readFile(path, (err, fileBuffer) => {
|
|
12
|
-
if (err) {
|
|
13
|
-
return reject(err);
|
|
14
|
-
}
|
|
15
|
-
let bufferIndex = 0;
|
|
16
|
-
const bufferLength = fileBuffer.length;
|
|
17
|
-
const unreadBuffer = []; // Stack to handle unreadChar operations
|
|
18
|
-
const readChar = () => {
|
|
19
|
-
if (unreadBuffer.length > 0) {
|
|
20
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
21
|
-
return unreadBuffer.pop();
|
|
22
|
-
}
|
|
23
|
-
if (bufferIndex < bufferLength) {
|
|
24
|
-
return fileBuffer[bufferIndex++];
|
|
25
|
-
}
|
|
26
|
-
return -1;
|
|
27
|
-
};
|
|
28
|
-
const unreadChar = (char) => {
|
|
29
|
-
unreadBuffer.push(char);
|
|
30
|
-
};
|
|
31
|
-
try {
|
|
32
|
-
resolve(parseFantomProps(readChar, unreadChar));
|
|
33
|
-
}
|
|
34
|
-
catch (error) {
|
|
35
|
-
reject(error);
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import { parseFantomProps } from './fantomPropsToObject';
|
|
6
|
+
/**
|
|
7
|
+
* Synchronously read the given Fantom props file to JS object (@see https://fantom.org/doc/sys/InStream#readProps)
|
|
8
|
+
*/
|
|
9
|
+
export default function readFantomPropsFile(path) {
|
|
10
|
+
return new Promise((resolve, reject) => {
|
|
11
|
+
fs.readFile(path, (err, fileBuffer) => {
|
|
12
|
+
if (err) {
|
|
13
|
+
return reject(err);
|
|
14
|
+
}
|
|
15
|
+
let bufferIndex = 0;
|
|
16
|
+
const bufferLength = fileBuffer.length;
|
|
17
|
+
const unreadBuffer = []; // Stack to handle unreadChar operations
|
|
18
|
+
const readChar = () => {
|
|
19
|
+
if (unreadBuffer.length > 0) {
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
21
|
+
return unreadBuffer.pop();
|
|
22
|
+
}
|
|
23
|
+
if (bufferIndex < bufferLength) {
|
|
24
|
+
return fileBuffer[bufferIndex++];
|
|
25
|
+
}
|
|
26
|
+
return -1;
|
|
27
|
+
};
|
|
28
|
+
const unreadChar = (char) => {
|
|
29
|
+
unreadBuffer.push(char);
|
|
30
|
+
};
|
|
31
|
+
try {
|
|
32
|
+
resolve(parseFantomProps(readChar, unreadChar));
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
reject(error);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
40
|
//# sourceMappingURL=readFantomPropsFile.js.map
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { HDict } from 'haystack-core';
|
|
2
|
-
/**
|
|
3
|
-
* Upload a File to FIN5, using the FINStack /fileUpload API. Files can then be viewed using Folio menu.
|
|
4
|
-
* @param projectName The name of the project where the files will be uploaded
|
|
5
|
-
* @param file The File to upload
|
|
6
|
-
* @param additionalTags Any additional tag that needs to be added to the file record. The tags should be
|
|
7
|
-
* provided as URL search parameters. To add a marker tag, set the value of the param to `'true'`.
|
|
8
|
-
* @returns the file record as an HDict
|
|
9
|
-
* @example
|
|
10
|
-
* <input type='file' onChange={async (e) => {
|
|
11
|
-
* const file = e.target.files?.[0]
|
|
12
|
-
* if (file) {
|
|
13
|
-
* const params = new URLSearchParams()
|
|
14
|
-
* params.set('myMarker', 'true')
|
|
15
|
-
* params.set('myStrTag', 'abc')
|
|
16
|
-
* const rec = await fin5FileUpload(
|
|
17
|
-
* 'myprojectname',
|
|
18
|
-
* file,
|
|
19
|
-
* params
|
|
20
|
-
* )
|
|
21
|
-
* }
|
|
22
|
-
* }} />
|
|
23
|
-
*/
|
|
24
|
-
export declare const fin5FileUpload: (projectName: string, file: File, additionalTags?: URLSearchParams) => Promise<HDict>;
|
|
1
|
+
import { HDict } from 'haystack-core';
|
|
2
|
+
/**
|
|
3
|
+
* Upload a File to FIN5, using the FINStack /fileUpload API. Files can then be viewed using Folio menu.
|
|
4
|
+
* @param projectName The name of the project where the files will be uploaded
|
|
5
|
+
* @param file The File to upload
|
|
6
|
+
* @param additionalTags Any additional tag that needs to be added to the file record. The tags should be
|
|
7
|
+
* provided as URL search parameters. To add a marker tag, set the value of the param to `'true'`.
|
|
8
|
+
* @returns the file record as an HDict
|
|
9
|
+
* @example
|
|
10
|
+
* <input type='file' onChange={async (e) => {
|
|
11
|
+
* const file = e.target.files?.[0]
|
|
12
|
+
* if (file) {
|
|
13
|
+
* const params = new URLSearchParams()
|
|
14
|
+
* params.set('myMarker', 'true')
|
|
15
|
+
* params.set('myStrTag', 'abc')
|
|
16
|
+
* const rec = await fin5FileUpload(
|
|
17
|
+
* 'myprojectname',
|
|
18
|
+
* file,
|
|
19
|
+
* params
|
|
20
|
+
* )
|
|
21
|
+
* }
|
|
22
|
+
* }} />
|
|
23
|
+
*/
|
|
24
|
+
export declare const fin5FileUpload: (projectName: string, file: File, additionalTags?: URLSearchParams) => Promise<HDict>;
|