@fctc/interface-logic 5.2.4 → 5.2.5
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/dist/{chunk-Q5YXX4OR.js → chunk-CCTDGAMA.js} +11 -11
- package/dist/{chunk-WBGK2SHU.js → chunk-COC7NGXP.js} +1 -0
- package/dist/{chunk-6ARYI77N.mjs → chunk-F2VAAEVB.mjs} +2 -2
- package/dist/{chunk-OV7EKGYM.mjs → chunk-F4RE57FT.mjs} +171 -326
- package/dist/{chunk-C5QQGBN4.js → chunk-FWBYTZIV.js} +6 -6
- package/dist/{chunk-BPJZ3QRN.mjs → chunk-HQVNK2EW.mjs} +107 -771
- package/dist/{chunk-VBYRP2P7.mjs → chunk-Q3Y6RCJ4.mjs} +1 -0
- package/dist/{chunk-5STZNSW4.js → chunk-U2COUTK5.js} +187 -347
- package/dist/{chunk-JDXUTKMX.js → chunk-U4Q3MW45.js} +113 -800
- package/dist/{chunk-QOXPJWSN.mjs → chunk-VBVNP77T.mjs} +1 -1
- package/dist/{chunk-RPWKWEMA.js → chunk-WTPKTZQC.js} +2 -2
- package/dist/{chunk-ACSPOGTI.mjs → chunk-ZDXEWQQD.mjs} +5 -5
- package/dist/configs.js +3 -4
- package/dist/configs.mjs +2 -3
- package/dist/constants.d.mts +2 -1
- package/dist/constants.d.ts +2 -1
- package/dist/constants.js +17 -17
- package/dist/constants.mjs +1 -1
- package/dist/environment.d.mts +1 -1
- package/dist/environment.d.ts +1 -1
- package/dist/environment.js +6 -7
- package/dist/environment.mjs +3 -4
- package/dist/hooks.d.mts +7 -23
- package/dist/hooks.d.ts +7 -23
- package/dist/hooks.js +160 -177
- package/dist/hooks.mjs +5 -6
- package/dist/index.d.mts +4 -10
- package/dist/index.d.ts +4 -10
- package/dist/index.js +227 -636
- package/dist/index.mjs +6 -7
- package/dist/{local-storage-BPvoMGYJ.d.mts → local-storage-AbiOQTLK.d.mts} +1 -1
- package/dist/{local-storage-BPvoMGYJ.d.ts → local-storage-AbiOQTLK.d.ts} +1 -1
- package/dist/models.js +3 -3
- package/dist/models.mjs +2 -2
- package/dist/provider.d.mts +4 -12
- package/dist/provider.d.ts +4 -12
- package/dist/provider.js +14 -19
- package/dist/provider.mjs +5 -6
- package/dist/services.d.mts +6 -10
- package/dist/services.d.ts +6 -10
- package/dist/services.js +16 -17
- package/dist/services.mjs +5 -6
- package/dist/utils.d.mts +33 -61
- package/dist/utils.d.ts +33 -61
- package/dist/utils.js +26 -95
- package/dist/utils.mjs +1 -2
- package/package.json +15 -29
- package/dist/chunk-6LSKTACC.js +0 -687
- package/dist/chunk-B432GFRR.mjs +0 -606
- package/dist/store.d.mts +0 -382
- package/dist/store.d.ts +0 -382
- package/dist/store.js +0 -326
- package/dist/store.mjs +0 -1
|
@@ -1,320 +1,82 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
var moment__default = /*#__PURE__*/_interopDefault(moment);
|
|
9
|
-
|
|
10
|
-
// src/utils/error-handler.ts
|
|
11
|
-
var WesapError = class extends Error {
|
|
12
|
-
code;
|
|
13
|
-
constructor(message, code) {
|
|
14
|
-
super(message);
|
|
15
|
-
this.code = code;
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
function handleError(error, env) {
|
|
19
|
-
if (error instanceof WesapError) {
|
|
20
|
-
env.services.notification.error(error.message);
|
|
21
|
-
} else {
|
|
22
|
-
env.services.notification.error("An unexpected error occurred");
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
var formatCurrency = (amount, currency = "USD") => {
|
|
26
|
-
const formatter = new Intl.NumberFormat("vi-VN", {
|
|
27
|
-
style: "currency",
|
|
28
|
-
currency,
|
|
29
|
-
minimumFractionDigits: 0
|
|
30
|
-
});
|
|
31
|
-
return formatter.format(amount).replaceAll(".", ",");
|
|
32
|
-
};
|
|
33
|
-
var formatDate = (date, locale = "en-US") => {
|
|
34
|
-
return new Intl.DateTimeFormat(locale).format(new Date(date));
|
|
35
|
-
};
|
|
36
|
-
var validateAndParseDate = (input, isDateTime = false) => {
|
|
37
|
-
if (!input || typeof input !== "string") return null;
|
|
38
|
-
const cleanInput = input.replace(/[^0-9-\/:\s]/g, "");
|
|
39
|
-
const dateFormat = "YYYY-MM-DD";
|
|
40
|
-
const dateTimeFormat = "YYYY-MM-DD HH:mm:ss";
|
|
41
|
-
const currentDay = moment__default.default().format("DD");
|
|
42
|
-
const currentMonth = moment__default.default().format("MM");
|
|
43
|
-
const currentYear = moment__default.default().format("YYYY");
|
|
44
|
-
const defaultTime = "00:00:00";
|
|
45
|
-
const maxYear = parseInt(currentYear) + 10;
|
|
46
|
-
const isValidDate = (day, month, year) => {
|
|
47
|
-
const date = moment__default.default(`${day}-${month}-${year}`, "DD-MM-YYYY", true);
|
|
48
|
-
return date.isValid();
|
|
3
|
+
// src/utils/storage/local-storage.ts
|
|
4
|
+
var localStorageUtils = () => {
|
|
5
|
+
const setToken = async (access_token) => {
|
|
6
|
+
localStorage.setItem("accessToken", access_token);
|
|
49
7
|
};
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
const m = parseInt(minute, 10);
|
|
53
|
-
const s = parseInt(second, 10);
|
|
54
|
-
return h >= 0 && h <= 23 && m >= 0 && m <= 59 && s >= 0 && s <= 59;
|
|
8
|
+
const setRefreshToken = async (refresh_token) => {
|
|
9
|
+
localStorage.setItem("refreshToken", refresh_token);
|
|
55
10
|
};
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
);
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
11
|
+
const getAccessToken = async () => {
|
|
12
|
+
return localStorage.getItem("accessToken");
|
|
13
|
+
};
|
|
14
|
+
const getRefreshToken = async () => {
|
|
15
|
+
return localStorage.getItem("refreshToken");
|
|
16
|
+
};
|
|
17
|
+
const clearToken = async () => {
|
|
18
|
+
localStorage.removeItem("accessToken");
|
|
19
|
+
localStorage.removeItem("refreshToken");
|
|
20
|
+
};
|
|
21
|
+
return {
|
|
22
|
+
setToken,
|
|
23
|
+
setRefreshToken,
|
|
24
|
+
getAccessToken,
|
|
25
|
+
getRefreshToken,
|
|
26
|
+
clearToken
|
|
67
27
|
};
|
|
68
|
-
if (isDateTime && input.match(
|
|
69
|
-
/^\d{1,2}[\/-]\d{1,2}[\/-]\d{2,4}\s+\d{1,2}(:\d{1,2}(:\d{1,2})?)?$/
|
|
70
|
-
)) {
|
|
71
|
-
const [datePart, timePart] = input.split(/\s+/);
|
|
72
|
-
const dateParts = datePart.split(/[\/-]/);
|
|
73
|
-
const timeParts = timePart.split(":");
|
|
74
|
-
const day = dateParts[0].padStart(2, "0");
|
|
75
|
-
const month = dateParts[1].padStart(2, "0");
|
|
76
|
-
const year = dateParts[2].length <= 2 ? `20${dateParts[2].padStart(2, "0")}` : dateParts[2].padStart(4, "0");
|
|
77
|
-
const hour = timeParts[0].padStart(2, "0");
|
|
78
|
-
const minute = timeParts[1] ? timeParts[1].padStart(2, "0") : "00";
|
|
79
|
-
const second = timeParts[2] ? timeParts[2].padStart(2, "0") : "00";
|
|
80
|
-
if (isValidDate(day, month, year) && isValidTime(hour, minute, second)) {
|
|
81
|
-
let result = moment__default.default(
|
|
82
|
-
`${day}-${month}-${year} ${hour}:${minute}:${second}`,
|
|
83
|
-
"DD-MM-YYYY HH:mm:ss"
|
|
84
|
-
);
|
|
85
|
-
if (!result.isValid()) return null;
|
|
86
|
-
result = result.subtract(7, "hours");
|
|
87
|
-
return result.format(dateTimeFormat);
|
|
88
|
-
}
|
|
89
|
-
return null;
|
|
90
|
-
}
|
|
91
|
-
if (cleanInput.match(/^\d{4}-\d{2}-\d{2}$/)) {
|
|
92
|
-
const [year, month, day] = cleanInput.split("-");
|
|
93
|
-
if (isValidDate(day, month, year)) {
|
|
94
|
-
return formatOutput(day, month, year);
|
|
95
|
-
}
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
98
|
-
if (cleanInput.match(/^\d{1,2}\/\d{1,2}\/\d{2,4}$/)) {
|
|
99
|
-
const [day, month, year] = cleanInput.split("/");
|
|
100
|
-
const paddedDay = day.padStart(2, "0");
|
|
101
|
-
const paddedMonth = month.padStart(2, "0");
|
|
102
|
-
const fullYear = year.length <= 2 ? `20${year.padStart(2, "0")}` : year.padStart(4, "0");
|
|
103
|
-
if (isValidDate(paddedDay, paddedMonth, fullYear)) {
|
|
104
|
-
return formatOutput(paddedDay, paddedMonth, fullYear);
|
|
105
|
-
}
|
|
106
|
-
return null;
|
|
107
|
-
}
|
|
108
|
-
if (cleanInput.match(/^\d{1,2}-\d{1,2}-\d{2,4}$/)) {
|
|
109
|
-
const [day, month, year] = cleanInput.split("-");
|
|
110
|
-
const paddedDay = day.padStart(2, "0");
|
|
111
|
-
const paddedMonth = month.padStart(2, "0");
|
|
112
|
-
const fullYear = year.length <= 2 ? `20${year.padStart(2, "0")}` : year.padStart(4, "0");
|
|
113
|
-
if (isValidDate(paddedDay, paddedMonth, fullYear)) {
|
|
114
|
-
return formatOutput(paddedDay, paddedMonth, fullYear);
|
|
115
|
-
}
|
|
116
|
-
return null;
|
|
117
|
-
}
|
|
118
|
-
if (cleanInput.match(/^\d{1,2}[\/-]\d{1,2}$/)) {
|
|
119
|
-
const [day, month] = cleanInput.split(/[\/-]/);
|
|
120
|
-
const paddedDay = day.padStart(2, "0");
|
|
121
|
-
const paddedMonth = month.padStart(2, "0");
|
|
122
|
-
if (isValidDate(paddedDay, paddedMonth, currentYear)) {
|
|
123
|
-
return formatOutput(paddedDay, paddedMonth, currentYear);
|
|
124
|
-
}
|
|
125
|
-
return null;
|
|
126
|
-
}
|
|
127
|
-
if (cleanInput.match(/^\d{4}$/)) {
|
|
128
|
-
const num = parseInt(cleanInput, 10);
|
|
129
|
-
if (num >= 2e3 && num <= maxYear) {
|
|
130
|
-
if (isValidDate(currentDay, currentMonth, num.toString())) {
|
|
131
|
-
return formatOutput(currentDay, currentMonth, num.toString());
|
|
132
|
-
}
|
|
133
|
-
return null;
|
|
134
|
-
}
|
|
135
|
-
const day = cleanInput.slice(0, 2);
|
|
136
|
-
const month = cleanInput.slice(2, 4);
|
|
137
|
-
if (isValidDate(day, month, currentYear)) {
|
|
138
|
-
return formatOutput(day, month, currentYear);
|
|
139
|
-
}
|
|
140
|
-
return null;
|
|
141
|
-
}
|
|
142
|
-
if (cleanInput.startsWith("-") && /^\-\d+$/.test(cleanInput)) {
|
|
143
|
-
const daysToSubtract = Math.abs(parseInt(cleanInput, 10));
|
|
144
|
-
let result = moment__default.default().subtract(daysToSubtract, "days");
|
|
145
|
-
if (isDateTime) {
|
|
146
|
-
result = result.subtract(7, "hours");
|
|
147
|
-
}
|
|
148
|
-
if (result.isValid()) {
|
|
149
|
-
return isDateTime ? result.format(dateTimeFormat) : result.format(dateFormat);
|
|
150
|
-
}
|
|
151
|
-
return null;
|
|
152
|
-
}
|
|
153
|
-
if (input.match(/^\d{1,2}[^0-9-\/]+\d{1,2}[^0-9-\/]+\d{2,4}.*$/)) {
|
|
154
|
-
const parts = input.split(/[^0-9-\/]+/).filter(Boolean);
|
|
155
|
-
const day = parts[0].padStart(2, "0");
|
|
156
|
-
const month = parts[1].padStart(2, "0");
|
|
157
|
-
let year = parts[2];
|
|
158
|
-
year = year.length === 2 ? `20${year}` : year.padStart(4, "0");
|
|
159
|
-
if (isValidDate(day, month, year)) {
|
|
160
|
-
return formatOutput(day, month, year);
|
|
161
|
-
}
|
|
162
|
-
return null;
|
|
163
|
-
}
|
|
164
|
-
if (isDateTime) {
|
|
165
|
-
if (cleanInput.length === 9) {
|
|
166
|
-
const day = cleanInput.slice(0, 2);
|
|
167
|
-
const month = cleanInput.slice(2, 4);
|
|
168
|
-
const year = cleanInput.slice(4, 8);
|
|
169
|
-
const hour = cleanInput.slice(8, 9).padStart(2, "0");
|
|
170
|
-
if (isValidDate(day, month, year) && isValidTime(hour)) {
|
|
171
|
-
let result = moment__default.default(
|
|
172
|
-
`${day}-${month}-${year} ${hour}:00:00`,
|
|
173
|
-
"DD-MM-YYYY HH:mm:ss"
|
|
174
|
-
);
|
|
175
|
-
if (!result.isValid()) return null;
|
|
176
|
-
result = result.subtract(7, "hours");
|
|
177
|
-
return result.format(dateTimeFormat);
|
|
178
|
-
}
|
|
179
|
-
return null;
|
|
180
|
-
}
|
|
181
|
-
if (cleanInput.length === 10) {
|
|
182
|
-
const day = cleanInput.slice(0, 2);
|
|
183
|
-
const month = cleanInput.slice(2, 4);
|
|
184
|
-
const year = cleanInput.slice(4, 8);
|
|
185
|
-
const hour = cleanInput.slice(8, 10);
|
|
186
|
-
if (isValidDate(day, month, year) && isValidTime(hour)) {
|
|
187
|
-
let result = moment__default.default(
|
|
188
|
-
`${day}-${month}-${year} ${hour}:00:00`,
|
|
189
|
-
"DD-MM-YYYY HH:mm:ss"
|
|
190
|
-
);
|
|
191
|
-
if (!result.isValid()) return null;
|
|
192
|
-
result = result.subtract(7, "hours");
|
|
193
|
-
return result.format(dateTimeFormat);
|
|
194
|
-
}
|
|
195
|
-
return null;
|
|
196
|
-
}
|
|
197
|
-
if (cleanInput.length === 11) {
|
|
198
|
-
const day = cleanInput.slice(0, 2);
|
|
199
|
-
const month = cleanInput.slice(2, 4);
|
|
200
|
-
const year = cleanInput.slice(4, 8);
|
|
201
|
-
const hour = cleanInput.slice(8, 10);
|
|
202
|
-
const minute = cleanInput.slice(10, 11).padStart(2, "0");
|
|
203
|
-
if (isValidDate(day, month, year) && isValidTime(hour, minute)) {
|
|
204
|
-
let result = moment__default.default(
|
|
205
|
-
`${day}-${month}-${year} ${hour}:${minute}:00`,
|
|
206
|
-
"DD-MM-YYYY HH:mm:ss"
|
|
207
|
-
);
|
|
208
|
-
if (!result.isValid()) return null;
|
|
209
|
-
result = result.subtract(7, "hours");
|
|
210
|
-
return result.format(dateTimeFormat);
|
|
211
|
-
}
|
|
212
|
-
return null;
|
|
213
|
-
}
|
|
214
|
-
if (cleanInput.length === 12) {
|
|
215
|
-
const day = cleanInput.slice(0, 2);
|
|
216
|
-
const month = cleanInput.slice(2, 4);
|
|
217
|
-
const year = cleanInput.slice(4, 8);
|
|
218
|
-
const hour = cleanInput.slice(8, 10);
|
|
219
|
-
const minute = cleanInput.slice(10, 12);
|
|
220
|
-
if (isValidDate(day, month, year) && isValidTime(hour, minute)) {
|
|
221
|
-
let result = moment__default.default(
|
|
222
|
-
`${day}-${month}-${year} ${hour}:${minute}:00`,
|
|
223
|
-
"DD-MM-YYYY HH:mm:ss"
|
|
224
|
-
);
|
|
225
|
-
if (!result.isValid()) return null;
|
|
226
|
-
result = result.subtract(7, "hours");
|
|
227
|
-
return result.format(dateTimeFormat);
|
|
228
|
-
}
|
|
229
|
-
return null;
|
|
230
|
-
}
|
|
231
|
-
if (cleanInput.length === 13) {
|
|
232
|
-
const day = cleanInput.slice(0, 2);
|
|
233
|
-
const month = cleanInput.slice(2, 4);
|
|
234
|
-
const year = cleanInput.slice(4, 8);
|
|
235
|
-
const hour = cleanInput.slice(8, 10);
|
|
236
|
-
const minute = cleanInput.slice(10, 12);
|
|
237
|
-
const second = cleanInput.slice(12, 13).padStart(2, "0");
|
|
238
|
-
if (isValidDate(day, month, year) && isValidTime(hour, minute, second)) {
|
|
239
|
-
let result = moment__default.default(
|
|
240
|
-
`${day}-${month}-${year} ${hour}:${minute}:${second}`,
|
|
241
|
-
"DD-MM-YYYY HH:mm:ss"
|
|
242
|
-
);
|
|
243
|
-
if (!result.isValid()) return null;
|
|
244
|
-
result = result.subtract(7, "hours");
|
|
245
|
-
return result.format(dateTimeFormat);
|
|
246
|
-
}
|
|
247
|
-
return null;
|
|
248
|
-
}
|
|
249
|
-
if (cleanInput.length === 14) {
|
|
250
|
-
const day = cleanInput.slice(0, 2);
|
|
251
|
-
const month = cleanInput.slice(2, 4);
|
|
252
|
-
const year = cleanInput.slice(4, 8);
|
|
253
|
-
const hour = cleanInput.slice(8, 10);
|
|
254
|
-
const minute = cleanInput.slice(10, 12);
|
|
255
|
-
const second = cleanInput.slice(12, 14);
|
|
256
|
-
if (isValidDate(day, month, year) && isValidTime(hour, minute, second)) {
|
|
257
|
-
let result = moment__default.default(
|
|
258
|
-
`${day}-${month}-${year} ${hour}:${minute}:${second}`,
|
|
259
|
-
"DD-MM-YYYY HH:mm:ss"
|
|
260
|
-
);
|
|
261
|
-
if (!result.isValid()) return null;
|
|
262
|
-
result = result.subtract(7, "hours");
|
|
263
|
-
return result.format(dateTimeFormat);
|
|
264
|
-
}
|
|
265
|
-
return null;
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
const len = cleanInput.length;
|
|
269
|
-
if (len === 1 || len === 2) {
|
|
270
|
-
const paddedDay = cleanInput.padStart(2, "0");
|
|
271
|
-
if (isValidDate(paddedDay, currentMonth, currentYear)) {
|
|
272
|
-
return formatOutput(paddedDay, currentMonth, currentYear);
|
|
273
|
-
}
|
|
274
|
-
return null;
|
|
275
|
-
}
|
|
276
|
-
if (len === 3) {
|
|
277
|
-
const day = cleanInput.slice(0, 2);
|
|
278
|
-
const month = cleanInput.slice(2, 3).padStart(2, "0");
|
|
279
|
-
if (isValidDate(day, month, currentYear)) {
|
|
280
|
-
return formatOutput(day, month, currentYear);
|
|
281
|
-
}
|
|
282
|
-
return null;
|
|
283
|
-
}
|
|
284
|
-
if (len === 6) {
|
|
285
|
-
const day = cleanInput.slice(0, 2);
|
|
286
|
-
const month = cleanInput.slice(2, 4);
|
|
287
|
-
let year = cleanInput.slice(4, 6);
|
|
288
|
-
year = `20${year}`;
|
|
289
|
-
if (parseInt(month) > 12) {
|
|
290
|
-
if (isValidDate(day, currentMonth, currentYear)) {
|
|
291
|
-
return formatOutput(day, currentMonth, currentYear);
|
|
292
|
-
}
|
|
293
|
-
return null;
|
|
294
|
-
}
|
|
295
|
-
if (isValidDate(day, month, year)) {
|
|
296
|
-
return formatOutput(day, month, year);
|
|
297
|
-
}
|
|
298
|
-
return null;
|
|
299
|
-
}
|
|
300
|
-
if (len === 7) {
|
|
301
|
-
return null;
|
|
302
|
-
}
|
|
303
|
-
if (len === 8) {
|
|
304
|
-
const day = cleanInput.slice(0, 2);
|
|
305
|
-
const month = cleanInput.slice(2, 4);
|
|
306
|
-
const year = cleanInput.slice(4, 8);
|
|
307
|
-
if (isValidDate(day, month, year)) {
|
|
308
|
-
return formatOutput(day, month, year);
|
|
309
|
-
}
|
|
310
|
-
return null;
|
|
311
|
-
}
|
|
312
|
-
if (len > 8 && !isDateTime) {
|
|
313
|
-
return null;
|
|
314
|
-
}
|
|
315
|
-
return null;
|
|
316
28
|
};
|
|
317
29
|
|
|
30
|
+
// src/utils/storage/session-storage.ts
|
|
31
|
+
var sessionStorageUtils = /* @__PURE__ */ (() => {
|
|
32
|
+
const getMenuFocus = () => {
|
|
33
|
+
const menuFocus = sessionStorage.getItem("menuFocus");
|
|
34
|
+
return menuFocus ? JSON.parse(menuFocus) : {
|
|
35
|
+
id: void 0,
|
|
36
|
+
service: ""
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
const setMenuFocus = (menuTree) => {
|
|
40
|
+
sessionStorage.setItem("menuFocus", JSON.stringify({ ...menuTree }));
|
|
41
|
+
};
|
|
42
|
+
const getActionData = () => {
|
|
43
|
+
const actionData = sessionStorage.getItem("actionData");
|
|
44
|
+
return actionData ? JSON.parse(actionData) : {};
|
|
45
|
+
};
|
|
46
|
+
const setActionData = (actData) => {
|
|
47
|
+
sessionStorage.setItem("actionData", JSON.stringify(actData));
|
|
48
|
+
};
|
|
49
|
+
const getViewData = () => {
|
|
50
|
+
const viewData = sessionStorage.getItem("viewData");
|
|
51
|
+
return viewData ? JSON.parse(viewData) : {};
|
|
52
|
+
};
|
|
53
|
+
const getBrowserSession = () => {
|
|
54
|
+
const actionData = sessionStorage.getItem("browserSession");
|
|
55
|
+
return actionData ? JSON.parse(actionData) : null;
|
|
56
|
+
};
|
|
57
|
+
const setViewData = (viewData) => {
|
|
58
|
+
sessionStorage.setItem("viewData", JSON.stringify(viewData));
|
|
59
|
+
};
|
|
60
|
+
const getXNode = () => {
|
|
61
|
+
const xNode = sessionStorage.getItem("xNode");
|
|
62
|
+
return xNode;
|
|
63
|
+
};
|
|
64
|
+
const setXNode = (xNode) => {
|
|
65
|
+
sessionStorage.setItem("xNode", xNode);
|
|
66
|
+
};
|
|
67
|
+
return {
|
|
68
|
+
getMenuFocus,
|
|
69
|
+
setMenuFocus,
|
|
70
|
+
setActionData,
|
|
71
|
+
getActionData,
|
|
72
|
+
getViewData,
|
|
73
|
+
setViewData,
|
|
74
|
+
getBrowserSession,
|
|
75
|
+
getXNode,
|
|
76
|
+
setXNode
|
|
77
|
+
};
|
|
78
|
+
})();
|
|
79
|
+
|
|
318
80
|
// src/utils/domain/py_tokenizer.ts
|
|
319
81
|
var TokenizerError = class extends Error {
|
|
320
82
|
};
|
|
@@ -469,7 +231,7 @@ var IntNumber = DecNumber;
|
|
|
469
231
|
var Exponent = "[eE][+-]?\\d+";
|
|
470
232
|
var PointFloat = group(`\\d+\\.\\d*(${Exponent})?`, `\\.\\d+(${Exponent})?`);
|
|
471
233
|
var FloatNumber = group(PointFloat, `\\d+${Exponent}`);
|
|
472
|
-
var
|
|
234
|
+
var Number = group(FloatNumber, IntNumber);
|
|
473
235
|
var Operator = group(
|
|
474
236
|
"\\*\\*=?",
|
|
475
237
|
">>=?",
|
|
@@ -487,8 +249,8 @@ var ContStr = group(
|
|
|
487
249
|
"([uU])?'([^\\n'\\\\]*(?:\\\\.[^\\n'\\\\]*)*)'",
|
|
488
250
|
'([uU])?"([^\\n"\\\\]*(?:\\\\.[^\\n"\\\\]*)*)"'
|
|
489
251
|
);
|
|
490
|
-
var PseudoToken = Whitespace + group(
|
|
491
|
-
var NumberPattern = new RegExp("^" +
|
|
252
|
+
var PseudoToken = Whitespace + group(Number, Funny, ContStr, Name);
|
|
253
|
+
var NumberPattern = new RegExp("^" + Number + "$");
|
|
492
254
|
var StringPattern = new RegExp("^" + ContStr + "$");
|
|
493
255
|
var NamePattern = new RegExp("^" + Name + "$");
|
|
494
256
|
var strip = new RegExp("^" + Whitespace);
|
|
@@ -2116,6 +1878,18 @@ function evaluateBooleanExpr(expr, context = {}) {
|
|
|
2116
1878
|
}
|
|
2117
1879
|
|
|
2118
1880
|
// src/utils/domain/context.ts
|
|
1881
|
+
function makeContext(contexts, initialEvaluationContext) {
|
|
1882
|
+
const evaluationContext = Object.assign({}, initialEvaluationContext);
|
|
1883
|
+
const context = {};
|
|
1884
|
+
for (let ctx of contexts) {
|
|
1885
|
+
if (ctx !== "") {
|
|
1886
|
+
ctx = typeof ctx === "string" ? evaluateExpr(ctx, evaluationContext) : ctx || {};
|
|
1887
|
+
Object.assign(context, ctx);
|
|
1888
|
+
Object.assign(evaluationContext, context);
|
|
1889
|
+
}
|
|
1890
|
+
}
|
|
1891
|
+
return context;
|
|
1892
|
+
}
|
|
2119
1893
|
function evalPartialContext(_context, evaluationContext = {}) {
|
|
2120
1894
|
const ast = parseExpr(_context);
|
|
2121
1895
|
const context = {};
|
|
@@ -2270,6 +2044,12 @@ var Domain = class _Domain {
|
|
|
2270
2044
|
}
|
|
2271
2045
|
}
|
|
2272
2046
|
};
|
|
2047
|
+
function evalDomain(modifier, evalContext) {
|
|
2048
|
+
if (modifier && typeof modifier !== "boolean") {
|
|
2049
|
+
modifier = new Domain(modifier).contains(evalContext);
|
|
2050
|
+
}
|
|
2051
|
+
return Boolean(modifier);
|
|
2052
|
+
}
|
|
2273
2053
|
var TRUE_LEAF = [1, "=", 1];
|
|
2274
2054
|
var FALSE_LEAF = [0, "=", 1];
|
|
2275
2055
|
var TRUE_DOMAIN = new Domain([TRUE_LEAF]);
|
|
@@ -2495,6 +2275,13 @@ var matchDomains = (context, domains) => {
|
|
|
2495
2275
|
} else return checkDomain(context, domains);
|
|
2496
2276
|
return false;
|
|
2497
2277
|
};
|
|
2278
|
+
|
|
2279
|
+
// src/utils/function/index.ts
|
|
2280
|
+
var domainHelper = {
|
|
2281
|
+
checkDomain,
|
|
2282
|
+
matchDomains,
|
|
2283
|
+
Domain
|
|
2284
|
+
};
|
|
2498
2285
|
var evalJSONContext = (_context, context = {}) => {
|
|
2499
2286
|
try {
|
|
2500
2287
|
return evalPartialContext(
|
|
@@ -2539,316 +2326,20 @@ var formatSortingString = (input) => {
|
|
|
2539
2326
|
return `${key} ${sortOrder}`;
|
|
2540
2327
|
}).join(", ");
|
|
2541
2328
|
};
|
|
2542
|
-
var domainHelper = {
|
|
2543
|
-
checkDomain,
|
|
2544
|
-
matchDomains,
|
|
2545
|
-
Domain
|
|
2546
|
-
};
|
|
2547
2329
|
var toQueryString = (params) => {
|
|
2548
2330
|
return Object.keys(params).map(
|
|
2549
2331
|
(key) => encodeURIComponent(key) + "=" + encodeURIComponent(params[key].toString())
|
|
2550
2332
|
).join("&");
|
|
2551
2333
|
};
|
|
2552
|
-
|
|
2553
|
-
const
|
|
2554
|
-
const
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
return `${formattedHours}:${formattedMinutes}`;
|
|
2558
|
-
};
|
|
2559
|
-
var convertTimeToFloat = (timeString) => {
|
|
2560
|
-
const [hours, minutes] = timeString.split(":").map(Number);
|
|
2561
|
-
return hours + minutes / 60;
|
|
2562
|
-
};
|
|
2563
|
-
var stringToColor = (name, id) => {
|
|
2564
|
-
const combined = name + id / 2;
|
|
2565
|
-
let hash = 0;
|
|
2566
|
-
for (let i = 0; i < combined.length; i++) {
|
|
2567
|
-
hash = combined.charCodeAt(i) + ((hash << 5) - hash);
|
|
2568
|
-
}
|
|
2569
|
-
const r = hash >> 16 & 255;
|
|
2570
|
-
const g = hash >> 8 & 255;
|
|
2571
|
-
const b = hash & 255;
|
|
2572
|
-
const rNorm = r / 255;
|
|
2573
|
-
const gNorm = g / 255;
|
|
2574
|
-
const bNorm = b / 255;
|
|
2575
|
-
const max = Math.max(rNorm, gNorm, bNorm);
|
|
2576
|
-
const min = Math.min(rNorm, gNorm, bNorm);
|
|
2577
|
-
const delta = max - min;
|
|
2578
|
-
let h = 0;
|
|
2579
|
-
if (delta !== 0) {
|
|
2580
|
-
if (max === rNorm) h = (gNorm - bNorm) / delta % 6;
|
|
2581
|
-
else if (max === gNorm) h = (bNorm - rNorm) / delta + 2;
|
|
2582
|
-
else h = (rNorm - gNorm) / delta + 4;
|
|
2583
|
-
}
|
|
2584
|
-
h = Math.round(h * 60);
|
|
2585
|
-
if (h < 0) h += 360;
|
|
2586
|
-
let l = (max + min) / 2;
|
|
2587
|
-
let s = delta === 0 ? 0 : delta / (1 - Math.abs(2 * l - 1));
|
|
2588
|
-
s = Math.min(1, s * 1.8);
|
|
2589
|
-
l = Math.min(0.75, l * 1.05);
|
|
2590
|
-
const c = (1 - Math.abs(2 * l - 1)) * s;
|
|
2591
|
-
const x = c * (1 - Math.abs(h / 60 % 2 - 1));
|
|
2592
|
-
const m = l - c / 2;
|
|
2593
|
-
let r2 = 0, g2 = 0, b2 = 0;
|
|
2594
|
-
if (0 <= h && h < 60) [r2, g2, b2] = [c, x, 0];
|
|
2595
|
-
else if (60 <= h && h < 120) [r2, g2, b2] = [x, c, 0];
|
|
2596
|
-
else if (120 <= h && h < 180) [r2, g2, b2] = [0, c, x];
|
|
2597
|
-
else if (180 <= h && h < 240) [r2, g2, b2] = [0, x, c];
|
|
2598
|
-
else if (240 <= h && h < 300) [r2, g2, b2] = [x, 0, c];
|
|
2599
|
-
else [r2, g2, b2] = [c, 0, x];
|
|
2600
|
-
const finalR = Math.round((r2 + m) * 255);
|
|
2601
|
-
const finalG = Math.round((g2 + m) * 255);
|
|
2602
|
-
const finalB = Math.round((b2 + m) * 255);
|
|
2603
|
-
return `#${finalR.toString(16).padStart(2, "0")}${finalG.toString(16).padStart(2, "0")}${finalB.toString(16).padStart(2, "0")}`;
|
|
2604
|
-
};
|
|
2605
|
-
var getFieldsOnChange = (fields) => {
|
|
2606
|
-
const result = [];
|
|
2607
|
-
function traverse(items) {
|
|
2608
|
-
for (const item of items) {
|
|
2609
|
-
if (item) {
|
|
2610
|
-
if (item?.type_co === "field" && matchDomains(fields, item?.on_change)) {
|
|
2611
|
-
result.push(item.name);
|
|
2612
|
-
}
|
|
2613
|
-
if (item?.fields && Array.isArray(item?.fields)) {
|
|
2614
|
-
traverse(item?.fields);
|
|
2615
|
-
}
|
|
2616
|
-
}
|
|
2334
|
+
function cleanObject(obj) {
|
|
2335
|
+
const result = {};
|
|
2336
|
+
for (const [k, v] of Object.entries(obj)) {
|
|
2337
|
+
if (v !== null && v !== void 0) {
|
|
2338
|
+
result[k] = v;
|
|
2617
2339
|
}
|
|
2618
2340
|
}
|
|
2619
|
-
traverse(fields);
|
|
2620
2341
|
return result;
|
|
2621
|
-
}
|
|
2622
|
-
var filterFieldDirty = ({
|
|
2623
|
-
id,
|
|
2624
|
-
viewData,
|
|
2625
|
-
formValues,
|
|
2626
|
-
dirtyFields,
|
|
2627
|
-
model,
|
|
2628
|
-
defaultData,
|
|
2629
|
-
keepZeroValue = false
|
|
2630
|
-
}) => {
|
|
2631
|
-
const data = id ? { ...dirtyFields } : { ...formValues };
|
|
2632
|
-
for (const key in data) {
|
|
2633
|
-
if (viewData?.models?.[model]?.[key]?.type === "one2many" /* ONE2MANY */) {
|
|
2634
|
-
const lineData = [];
|
|
2635
|
-
(formValues[key] ?? []).forEach((itemData, index) => {
|
|
2636
|
-
if (typeof itemData?.id === "string" && itemData?.id.includes("virtual")) {
|
|
2637
|
-
delete itemData?.id;
|
|
2638
|
-
}
|
|
2639
|
-
if (!itemData?.id) {
|
|
2640
|
-
lineData.push([
|
|
2641
|
-
0 /* CREATE */,
|
|
2642
|
-
`virtual_${index}`,
|
|
2643
|
-
filterFieldDirty({
|
|
2644
|
-
id: itemData?.id,
|
|
2645
|
-
viewData,
|
|
2646
|
-
formValues: itemData,
|
|
2647
|
-
dirtyFields: {},
|
|
2648
|
-
model: viewData?.models?.[model]?.[key]?.relation,
|
|
2649
|
-
defaultData,
|
|
2650
|
-
keepZeroValue
|
|
2651
|
-
})
|
|
2652
|
-
]);
|
|
2653
|
-
} else if (dirtyFields[key]?.length) {
|
|
2654
|
-
dirtyFields[key].forEach((itemDirty, indexDirty) => {
|
|
2655
|
-
if (Object.values(itemDirty).includes(true) && indexDirty === index) {
|
|
2656
|
-
lineData.push([
|
|
2657
|
-
1 /* UPDATE */,
|
|
2658
|
-
itemData?.id,
|
|
2659
|
-
filterFieldDirty({
|
|
2660
|
-
id: itemData?.id,
|
|
2661
|
-
viewData,
|
|
2662
|
-
formValues: itemData,
|
|
2663
|
-
dirtyFields: itemDirty,
|
|
2664
|
-
model: viewData?.models?.[model]?.[key]?.relation,
|
|
2665
|
-
defaultData: {},
|
|
2666
|
-
keepZeroValue
|
|
2667
|
-
})
|
|
2668
|
-
]);
|
|
2669
|
-
}
|
|
2670
|
-
});
|
|
2671
|
-
}
|
|
2672
|
-
});
|
|
2673
|
-
(defaultData[key] ?? []).forEach((item) => {
|
|
2674
|
-
if (!(formValues[key] ?? []).find(
|
|
2675
|
-
(itemData) => itemData?.id === item?.id
|
|
2676
|
-
)) {
|
|
2677
|
-
lineData.push([2 /* DELETE */, item?.id, item]);
|
|
2678
|
-
}
|
|
2679
|
-
});
|
|
2680
|
-
data[key] = lineData;
|
|
2681
|
-
} else if (viewData?.models?.[model]?.[key]?.type === "many2many" /* MANY2MANY */) {
|
|
2682
|
-
const lineData = [];
|
|
2683
|
-
(formValues[key] || []).forEach((itemData) => {
|
|
2684
|
-
if (itemData?.id) {
|
|
2685
|
-
lineData.push([4 /* NO_CHANGE */, itemData?.id]);
|
|
2686
|
-
}
|
|
2687
|
-
});
|
|
2688
|
-
(defaultData[key] ?? []).forEach((item) => {
|
|
2689
|
-
if (!(formValues[key] ?? []).find(
|
|
2690
|
-
(itemData) => itemData?.id === item?.id
|
|
2691
|
-
)) {
|
|
2692
|
-
lineData.push([3 /* UNLINK */, item?.id]);
|
|
2693
|
-
}
|
|
2694
|
-
});
|
|
2695
|
-
data[key] = lineData;
|
|
2696
|
-
} else {
|
|
2697
|
-
if (id && (typeof dirtyFields?.[key] === "object" && !dirtyFields?.[key]?.id || typeof dirtyFields[key] !== "object" && !dirtyFields[key])) {
|
|
2698
|
-
if (!(keepZeroValue && (formValues[key] === 0 || formValues[key] === "0"))) {
|
|
2699
|
-
delete data[key];
|
|
2700
|
-
}
|
|
2701
|
-
} else {
|
|
2702
|
-
if (!data[key] && !(keepZeroValue && (data[key] === 0 || data[key] === "0"))) {
|
|
2703
|
-
delete data[key];
|
|
2704
|
-
} else {
|
|
2705
|
-
data[key] = formValues?.[key]?.display_name ? formValues?.[key]?.id : formValues?.[key];
|
|
2706
|
-
}
|
|
2707
|
-
}
|
|
2708
|
-
}
|
|
2709
|
-
}
|
|
2710
|
-
return data;
|
|
2711
|
-
};
|
|
2712
|
-
var mergeObjects = (object1, object2) => {
|
|
2713
|
-
if (!object1 || !object2) return void 0;
|
|
2714
|
-
const mergedObject = { ...object2 };
|
|
2715
|
-
Object.keys(object1).forEach((key) => {
|
|
2716
|
-
if (Array.isArray(object1[key]) && Array.isArray(object2[key])) {
|
|
2717
|
-
mergedObject[key] = object2[key].map((item, index) => {
|
|
2718
|
-
if (object1[key][index]) {
|
|
2719
|
-
return {
|
|
2720
|
-
...item,
|
|
2721
|
-
...object1[key][index]
|
|
2722
|
-
};
|
|
2723
|
-
}
|
|
2724
|
-
return item;
|
|
2725
|
-
});
|
|
2726
|
-
} else if (typeof object1[key] === "object" && typeof object2[key] === "object" && object1[key] !== null && object2[key] !== null) {
|
|
2727
|
-
mergedObject[key] = mergeObjects(object1[key], object2[key]);
|
|
2728
|
-
} else {
|
|
2729
|
-
mergedObject[key] = object1[key] !== void 0 ? object1[key] : object2[key];
|
|
2730
|
-
}
|
|
2731
|
-
});
|
|
2732
|
-
if (object2) {
|
|
2733
|
-
Object.keys(object2).forEach((key) => {
|
|
2734
|
-
if (!mergedObject.hasOwnProperty(key)) {
|
|
2735
|
-
mergedObject[key] = object2[key];
|
|
2736
|
-
}
|
|
2737
|
-
});
|
|
2738
|
-
}
|
|
2739
|
-
return mergedObject;
|
|
2740
|
-
};
|
|
2741
|
-
var formatUrlPath = ({
|
|
2742
|
-
viewType,
|
|
2743
|
-
aid,
|
|
2744
|
-
model,
|
|
2745
|
-
id,
|
|
2746
|
-
actionPath
|
|
2747
|
-
}) => {
|
|
2748
|
-
let _url = `/${viewType}/${actionPath}?aid=${aid}&model=${model}`;
|
|
2749
|
-
if (id) {
|
|
2750
|
-
_url += `&id=${id}`;
|
|
2751
|
-
}
|
|
2752
|
-
return _url;
|
|
2753
|
-
};
|
|
2754
|
-
var removeUndefinedFields = (obj) => {
|
|
2755
|
-
const newObj = {};
|
|
2756
|
-
for (const key in obj) {
|
|
2757
|
-
if (obj[key] !== void 0) {
|
|
2758
|
-
newObj[key] = obj[key];
|
|
2759
|
-
}
|
|
2760
|
-
}
|
|
2761
|
-
return newObj;
|
|
2762
|
-
};
|
|
2763
|
-
var useTabModel = (viewData, onchangeData) => {
|
|
2764
|
-
const tabsData = viewData?.views?.form?.tabs?.filter((val) => {
|
|
2765
|
-
if (!val) return null;
|
|
2766
|
-
const hide = checkDomain(onchangeData, val.invisible);
|
|
2767
|
-
if (!hide) {
|
|
2768
|
-
return val;
|
|
2769
|
-
}
|
|
2770
|
-
return false;
|
|
2771
|
-
}) || [];
|
|
2772
|
-
return tabsData;
|
|
2773
|
-
};
|
|
2774
|
-
var isBase64File = (str) => {
|
|
2775
|
-
try {
|
|
2776
|
-
const dataUriPattern = /^data:([a-zA-Z]+\/[a-zA-Z0-9-.+]+)?;base64,/;
|
|
2777
|
-
if (dataUriPattern.test(str)) {
|
|
2778
|
-
return true;
|
|
2779
|
-
}
|
|
2780
|
-
const base64Pattern = (
|
|
2781
|
-
// eslint-disable-next-line no-useless-escape
|
|
2782
|
-
/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{3}=|[A-Za-z0-9+\/]{2}==)?$/
|
|
2783
|
-
);
|
|
2784
|
-
return base64Pattern.test(str);
|
|
2785
|
-
} catch (e) {
|
|
2786
|
-
return false;
|
|
2787
|
-
}
|
|
2788
|
-
};
|
|
2789
|
-
var isBase64Image = (str) => {
|
|
2790
|
-
const base64Regex = /^data:image\/(png|jpeg|jpg|gif|webp);base64,/;
|
|
2791
|
-
if (!base64Regex.test(str)) {
|
|
2792
|
-
return false;
|
|
2793
|
-
}
|
|
2794
|
-
try {
|
|
2795
|
-
const base64Data = str.split(",")[1];
|
|
2796
|
-
return !!base64Data && atob(base64Data).length > 0;
|
|
2797
|
-
} catch (error) {
|
|
2798
|
-
return false;
|
|
2799
|
-
}
|
|
2800
|
-
};
|
|
2801
|
-
var checkIsImageLink = (url) => {
|
|
2802
|
-
const imageExtensions = /\.(jpg|jpeg|png|gif|bmp|webp|svg|tiff|ico)$/i;
|
|
2803
|
-
return imageExtensions.test(url) || isBase64Image(url);
|
|
2804
|
-
};
|
|
2805
|
-
var formatFileSize = (size) => {
|
|
2806
|
-
if (size < 1024) return `${size} B`;
|
|
2807
|
-
const i = Math.floor(Math.log(size) / Math.log(1024));
|
|
2808
|
-
const sizes = ["B", "KB", "MB", "GB", "TB"];
|
|
2809
|
-
return `${(size / Math.pow(1024, i)).toFixed(2)} ${sizes[i]}`;
|
|
2810
|
-
};
|
|
2811
|
-
var getSubdomain = (url = window.location.href) => {
|
|
2812
|
-
const parts = url?.split(".");
|
|
2813
|
-
if (parts.length > 2) {
|
|
2814
|
-
return parts[0].replace("https://", "").replace("http://", "");
|
|
2815
|
-
}
|
|
2816
|
-
return null;
|
|
2817
|
-
};
|
|
2818
|
-
var resequence = (arr, start, end) => {
|
|
2819
|
-
if (start < 0 || start >= arr.length || end < 0 || end >= arr.length) {
|
|
2820
|
-
return [];
|
|
2821
|
-
}
|
|
2822
|
-
const [element] = arr.splice(start, 1);
|
|
2823
|
-
arr.splice(end, 0, element);
|
|
2824
|
-
return arr.slice(Math.min(start, end), Math.max(start, end) + 1);
|
|
2825
|
-
};
|
|
2826
|
-
var getOffSet = (arr, start, end) => {
|
|
2827
|
-
if (start < 0 || start >= arr.length || end < 0 || end >= arr.length) {
|
|
2828
|
-
return 0;
|
|
2829
|
-
}
|
|
2830
|
-
if (start > end) {
|
|
2831
|
-
return end;
|
|
2832
|
-
}
|
|
2833
|
-
return arr.slice(0, start).length;
|
|
2834
|
-
};
|
|
2835
|
-
var copyTextToClipboard = async (text) => {
|
|
2836
|
-
if ("clipboard" in navigator) {
|
|
2837
|
-
return await navigator.clipboard.writeText(text);
|
|
2838
|
-
} else {
|
|
2839
|
-
const textArea = document.createElement("textarea");
|
|
2840
|
-
textArea.value = text;
|
|
2841
|
-
textArea.style.position = "fixed";
|
|
2842
|
-
document.body.appendChild(textArea);
|
|
2843
|
-
textArea.focus();
|
|
2844
|
-
textArea.select();
|
|
2845
|
-
try {
|
|
2846
|
-
document.execCommand("copy");
|
|
2847
|
-
} finally {
|
|
2848
|
-
document.body.removeChild(textArea);
|
|
2849
|
-
}
|
|
2850
|
-
}
|
|
2851
|
-
};
|
|
2342
|
+
}
|
|
2852
2343
|
var updateTokenParamInOriginalRequest = (originalRequest, newAccessToken) => {
|
|
2853
2344
|
if (!originalRequest.data) return originalRequest.data;
|
|
2854
2345
|
if (typeof originalRequest.data === "string") {
|
|
@@ -2868,198 +2359,20 @@ var updateTokenParamInOriginalRequest = (originalRequest, newAccessToken) => {
|
|
|
2868
2359
|
}
|
|
2869
2360
|
return originalRequest.data;
|
|
2870
2361
|
};
|
|
2871
|
-
var isObjectEmpty = (obj) => {
|
|
2872
|
-
return Object.keys(obj).length === 0;
|
|
2873
|
-
};
|
|
2874
|
-
var useField = (props) => {
|
|
2875
|
-
const [invisible, setInvisible] = react.useState(true);
|
|
2876
|
-
const [required, setRequired] = react.useState(false);
|
|
2877
|
-
const [readonly, setReadOnly] = react.useState(false);
|
|
2878
|
-
const {
|
|
2879
|
-
invisible: inv,
|
|
2880
|
-
required: req,
|
|
2881
|
-
readonly: rea,
|
|
2882
|
-
onchangeData,
|
|
2883
|
-
rootField,
|
|
2884
|
-
index,
|
|
2885
|
-
name
|
|
2886
|
-
} = props;
|
|
2887
|
-
const nameField = rootField ? `${rootField?.name}.${index}.${name}` : null;
|
|
2888
|
-
react.useEffect(() => {
|
|
2889
|
-
if (onchangeData && Object.keys(onchangeData).length > 0) {
|
|
2890
|
-
setRequired(
|
|
2891
|
-
typeof req === "object" ? matchDomains(onchangeData, req) : checkDomain(onchangeData, req)
|
|
2892
|
-
);
|
|
2893
|
-
setInvisible(matchDomains(onchangeData, inv));
|
|
2894
|
-
setReadOnly(
|
|
2895
|
-
typeof req === "object" ? matchDomains(onchangeData, rea) : checkDomain(onchangeData, rea)
|
|
2896
|
-
);
|
|
2897
|
-
}
|
|
2898
|
-
}, [onchangeData]);
|
|
2899
|
-
return {
|
|
2900
|
-
invisible,
|
|
2901
|
-
required,
|
|
2902
|
-
readonly,
|
|
2903
|
-
nameField
|
|
2904
|
-
};
|
|
2905
|
-
};
|
|
2906
|
-
var downloadFile = async (url, filename) => {
|
|
2907
|
-
try {
|
|
2908
|
-
const response = await fetch(url);
|
|
2909
|
-
if (!response.ok) throw new Error(`Failed to fetch ${url}`);
|
|
2910
|
-
const contentType = response.headers.get("Content-Type") || "";
|
|
2911
|
-
let ext = "";
|
|
2912
|
-
if (contentType.includes("pdf")) ext = ".pdf";
|
|
2913
|
-
else if (contentType.includes("png")) ext = ".png";
|
|
2914
|
-
else if (contentType.includes("jpeg") || contentType.includes("jpg"))
|
|
2915
|
-
ext = ".jpg";
|
|
2916
|
-
else if (contentType.includes("zip")) ext = ".zip";
|
|
2917
|
-
else if (contentType.includes("msword")) ext = ".doc";
|
|
2918
|
-
else if (contentType.includes("spreadsheet")) ext = ".xls";
|
|
2919
|
-
else if (contentType.includes("json")) ext = ".json";
|
|
2920
|
-
else if (contentType.includes("text")) ext = ".txt";
|
|
2921
|
-
else {
|
|
2922
|
-
ext = "";
|
|
2923
|
-
}
|
|
2924
|
-
const blob = await response.blob();
|
|
2925
|
-
const urlBlob = window.URL.createObjectURL(blob);
|
|
2926
|
-
const link = document.createElement("a");
|
|
2927
|
-
link.href = urlBlob;
|
|
2928
|
-
link.download = (filename || "file") + ext;
|
|
2929
|
-
document.body.appendChild(link);
|
|
2930
|
-
link.click();
|
|
2931
|
-
document.body.removeChild(link);
|
|
2932
|
-
window.URL.revokeObjectURL(urlBlob);
|
|
2933
|
-
} catch (error) {
|
|
2934
|
-
console.error("File download failed:", error);
|
|
2935
|
-
}
|
|
2936
|
-
};
|
|
2937
|
-
function cleanObject(obj) {
|
|
2938
|
-
const result = {};
|
|
2939
|
-
for (const [k, v] of Object.entries(obj)) {
|
|
2940
|
-
if (v !== null && v !== void 0) {
|
|
2941
|
-
result[k] = v;
|
|
2942
|
-
}
|
|
2943
|
-
}
|
|
2944
|
-
return result;
|
|
2945
|
-
}
|
|
2946
|
-
var extractIdFromDomain = (domain) => {
|
|
2947
|
-
if (!domain || !Array.isArray(domain)) return null;
|
|
2948
|
-
const idCond = domain.find(
|
|
2949
|
-
([field, operator]) => field === "id" && operator === "="
|
|
2950
|
-
);
|
|
2951
|
-
return idCond ? Number(idCond[2]) : null;
|
|
2952
|
-
};
|
|
2953
|
-
|
|
2954
|
-
// src/utils/storage/local-storage.ts
|
|
2955
|
-
var localStorageUtils = () => {
|
|
2956
|
-
const setToken = async (access_token) => {
|
|
2957
|
-
localStorage.setItem("accessToken", access_token);
|
|
2958
|
-
};
|
|
2959
|
-
const setRefreshToken = async (refresh_token) => {
|
|
2960
|
-
localStorage.setItem("refreshToken", refresh_token);
|
|
2961
|
-
};
|
|
2962
|
-
const getAccessToken = async () => {
|
|
2963
|
-
return localStorage.getItem("accessToken");
|
|
2964
|
-
};
|
|
2965
|
-
const getRefreshToken = async () => {
|
|
2966
|
-
return localStorage.getItem("refreshToken");
|
|
2967
|
-
};
|
|
2968
|
-
const clearToken = async () => {
|
|
2969
|
-
localStorage.removeItem("accessToken");
|
|
2970
|
-
localStorage.removeItem("refreshToken");
|
|
2971
|
-
};
|
|
2972
|
-
return {
|
|
2973
|
-
setToken,
|
|
2974
|
-
setRefreshToken,
|
|
2975
|
-
getAccessToken,
|
|
2976
|
-
getRefreshToken,
|
|
2977
|
-
clearToken
|
|
2978
|
-
};
|
|
2979
|
-
};
|
|
2980
|
-
|
|
2981
|
-
// src/utils/storage/session-storage.ts
|
|
2982
|
-
var sessionStorageUtils = /* @__PURE__ */ (() => {
|
|
2983
|
-
const getMenuFocus = () => {
|
|
2984
|
-
const menuFocus = sessionStorage.getItem("menuFocus");
|
|
2985
|
-
return menuFocus ? JSON.parse(menuFocus) : {
|
|
2986
|
-
id: void 0,
|
|
2987
|
-
service: ""
|
|
2988
|
-
};
|
|
2989
|
-
};
|
|
2990
|
-
const setMenuFocus = (menuTree) => {
|
|
2991
|
-
sessionStorage.setItem("menuFocus", JSON.stringify({ ...menuTree }));
|
|
2992
|
-
};
|
|
2993
|
-
const getActionData = () => {
|
|
2994
|
-
const actionData = sessionStorage.getItem("actionData");
|
|
2995
|
-
return actionData ? JSON.parse(actionData) : {};
|
|
2996
|
-
};
|
|
2997
|
-
const setActionData = (actData) => {
|
|
2998
|
-
sessionStorage.setItem("actionData", JSON.stringify(actData));
|
|
2999
|
-
};
|
|
3000
|
-
const getViewData = () => {
|
|
3001
|
-
const viewData = sessionStorage.getItem("viewData");
|
|
3002
|
-
return viewData ? JSON.parse(viewData) : {};
|
|
3003
|
-
};
|
|
3004
|
-
const getBrowserSession = () => {
|
|
3005
|
-
const actionData = sessionStorage.getItem("browserSession");
|
|
3006
|
-
return actionData ? JSON.parse(actionData) : null;
|
|
3007
|
-
};
|
|
3008
|
-
const setViewData = (viewData) => {
|
|
3009
|
-
sessionStorage.setItem("viewData", JSON.stringify(viewData));
|
|
3010
|
-
};
|
|
3011
|
-
const getXNode = () => {
|
|
3012
|
-
const xNode = sessionStorage.getItem("xNode");
|
|
3013
|
-
return xNode;
|
|
3014
|
-
};
|
|
3015
|
-
const setXNode = (xNode) => {
|
|
3016
|
-
sessionStorage.setItem("xNode", xNode);
|
|
3017
|
-
};
|
|
3018
|
-
return {
|
|
3019
|
-
getMenuFocus,
|
|
3020
|
-
setMenuFocus,
|
|
3021
|
-
setActionData,
|
|
3022
|
-
getActionData,
|
|
3023
|
-
getViewData,
|
|
3024
|
-
setViewData,
|
|
3025
|
-
getBrowserSession,
|
|
3026
|
-
getXNode,
|
|
3027
|
-
setXNode
|
|
3028
|
-
};
|
|
3029
|
-
})();
|
|
3030
2362
|
|
|
3031
|
-
exports.
|
|
3032
|
-
exports.
|
|
2363
|
+
exports.Domain = Domain;
|
|
2364
|
+
exports.InvalidDomainError = InvalidDomainError;
|
|
2365
|
+
exports.checkDomain = checkDomain;
|
|
3033
2366
|
exports.cleanObject = cleanObject;
|
|
3034
|
-
exports.convertFloatToTime = convertFloatToTime;
|
|
3035
|
-
exports.convertTimeToFloat = convertTimeToFloat;
|
|
3036
|
-
exports.copyTextToClipboard = copyTextToClipboard;
|
|
3037
2367
|
exports.domainHelper = domainHelper;
|
|
3038
|
-
exports.
|
|
2368
|
+
exports.evalDomain = evalDomain;
|
|
3039
2369
|
exports.evalJSONContext = evalJSONContext;
|
|
3040
2370
|
exports.evalJSONDomain = evalJSONDomain;
|
|
3041
|
-
exports.
|
|
3042
|
-
exports.filterFieldDirty = filterFieldDirty;
|
|
3043
|
-
exports.formatCurrency = formatCurrency;
|
|
3044
|
-
exports.formatDate = formatDate;
|
|
3045
|
-
exports.formatFileSize = formatFileSize;
|
|
2371
|
+
exports.evalPartialContext = evalPartialContext;
|
|
3046
2372
|
exports.formatSortingString = formatSortingString;
|
|
3047
|
-
exports.formatUrlPath = formatUrlPath;
|
|
3048
|
-
exports.getFieldsOnChange = getFieldsOnChange;
|
|
3049
|
-
exports.getOffSet = getOffSet;
|
|
3050
|
-
exports.getSubdomain = getSubdomain;
|
|
3051
|
-
exports.handleError = handleError;
|
|
3052
|
-
exports.isBase64File = isBase64File;
|
|
3053
|
-
exports.isBase64Image = isBase64Image;
|
|
3054
|
-
exports.isObjectEmpty = isObjectEmpty;
|
|
3055
2373
|
exports.localStorageUtils = localStorageUtils;
|
|
3056
|
-
exports.
|
|
3057
|
-
exports.
|
|
3058
|
-
exports.resequence = resequence;
|
|
2374
|
+
exports.makeContext = makeContext;
|
|
2375
|
+
exports.matchDomains = matchDomains;
|
|
3059
2376
|
exports.sessionStorageUtils = sessionStorageUtils;
|
|
3060
|
-
exports.stringToColor = stringToColor;
|
|
3061
2377
|
exports.toQueryString = toQueryString;
|
|
3062
2378
|
exports.updateTokenParamInOriginalRequest = updateTokenParamInOriginalRequest;
|
|
3063
|
-
exports.useField = useField;
|
|
3064
|
-
exports.useTabModel = useTabModel;
|
|
3065
|
-
exports.validateAndParseDate = validateAndParseDate;
|