@fctc/interface-logic 1.4.2 → 1.4.4
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/index.d.mts +1675 -0
- package/dist/index.d.ts +1675 -0
- package/dist/{hooks.js → index.js} +1208 -11
- package/dist/{hooks.mjs → index.mjs} +1064 -6
- package/package.json +1 -1
- package/dist/configs.d.mts +0 -15
- package/dist/configs.d.ts +0 -15
- package/dist/configs.js +0 -2386
- package/dist/configs.mjs +0 -2349
- package/dist/constants.d.mts +0 -131
- package/dist/constants.d.ts +0 -131
- package/dist/constants.js +0 -205
- package/dist/constants.mjs +0 -166
- package/dist/environment.d.mts +0 -55
- package/dist/environment.d.ts +0 -55
- package/dist/environment.js +0 -3094
- package/dist/environment.mjs +0 -3054
- package/dist/hooks.d.mts +0 -359
- package/dist/hooks.d.ts +0 -359
- package/dist/provider.d.mts +0 -15
- package/dist/provider.d.ts +0 -15
- package/dist/provider.js +0 -3603
- package/dist/provider.mjs +0 -3564
- package/dist/services.d.mts +0 -255
- package/dist/services.d.ts +0 -255
- package/dist/services.js +0 -4662
- package/dist/services.mjs +0 -4617
- package/dist/store.d.mts +0 -643
- package/dist/store.d.ts +0 -643
- package/dist/store.js +0 -814
- package/dist/store.mjs +0 -709
- package/dist/types.d.mts +0 -17
- package/dist/types.d.ts +0 -17
- package/dist/types.js +0 -18
- package/dist/types.mjs +0 -0
- package/dist/utils.d.mts +0 -93
- package/dist/utils.d.ts +0 -93
- package/dist/utils.js +0 -2962
- package/dist/utils.mjs +0 -2896
- package/dist/view-type-BGJfDe73.d.mts +0 -113
- package/dist/view-type-BGJfDe73.d.ts +0 -113
|
@@ -27,9 +27,145 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
29
|
|
|
30
|
-
// src/
|
|
31
|
-
var
|
|
32
|
-
__export(
|
|
30
|
+
// src/index.ts
|
|
31
|
+
var index_exports = {};
|
|
32
|
+
__export(index_exports, {
|
|
33
|
+
ActionService: () => action_service_default,
|
|
34
|
+
AuthService: () => auth_service_default,
|
|
35
|
+
CompanyService: () => company_service_default,
|
|
36
|
+
ComponentType: () => ComponentType,
|
|
37
|
+
EnvStore: () => EnvStore,
|
|
38
|
+
ExcelService: () => excel_service_default,
|
|
39
|
+
FieldTypeConstants: () => FieldTypeConstants,
|
|
40
|
+
FormService: () => form_service_default,
|
|
41
|
+
KanbanService: () => kanban_service_default,
|
|
42
|
+
KeyConstants: () => KeyConstants,
|
|
43
|
+
MainProvider: () => MainProvider,
|
|
44
|
+
MethodConstants: () => MethodConstants,
|
|
45
|
+
MethodType: () => MethodType,
|
|
46
|
+
ModelConstants: () => ModelConstants,
|
|
47
|
+
ModelService: () => model_service_default,
|
|
48
|
+
ReactQueryProvider: () => ReactQueryProvider,
|
|
49
|
+
SearchType: () => SearchType,
|
|
50
|
+
UriConstants: () => UriConstants,
|
|
51
|
+
UserService: () => user_service_default,
|
|
52
|
+
VersionGate: () => VersionGate,
|
|
53
|
+
ViewService: () => view_service_default,
|
|
54
|
+
WIDGETAVATAR: () => WIDGETAVATAR,
|
|
55
|
+
WIDGETCOLOR: () => WIDGETCOLOR,
|
|
56
|
+
WIDGETCURRENCY: () => WIDGETCURRENCY,
|
|
57
|
+
WIDGETNOSTRING: () => WIDGETNOSTRING,
|
|
58
|
+
WIDGETSTATUS: () => WIDGETSTATUS,
|
|
59
|
+
WesapError: () => WesapError,
|
|
60
|
+
axiosClient: () => axiosClient,
|
|
61
|
+
breadcrumbsSlice: () => breadcrumbsSlice,
|
|
62
|
+
checkIsImageLink: () => checkIsImageLink,
|
|
63
|
+
clearSearchMap: () => clearSearchMap,
|
|
64
|
+
convertFloatToTime: () => convertFloatToTime,
|
|
65
|
+
convertTimeToFloat: () => convertTimeToFloat,
|
|
66
|
+
copyTextToClipboard: () => copyTextToClipboard,
|
|
67
|
+
domainHelper: () => domainHelper,
|
|
68
|
+
env: () => env,
|
|
69
|
+
envSlice: () => envSlice,
|
|
70
|
+
envStore: () => envStore,
|
|
71
|
+
evalJSONContext: () => evalJSONContext,
|
|
72
|
+
evalJSONDomain: () => evalJSONDomain,
|
|
73
|
+
excelSlice: () => excelSlice,
|
|
74
|
+
filterFieldDirty: () => filterFieldDirty,
|
|
75
|
+
formSlice: () => formSlice,
|
|
76
|
+
formatCurrency: () => formatCurrency,
|
|
77
|
+
formatDate: () => formatDate,
|
|
78
|
+
formatFileSize: () => formatFileSize,
|
|
79
|
+
formatSortingString: () => formatSortingString,
|
|
80
|
+
formatUrlPath: () => formatUrlPath,
|
|
81
|
+
getEnv: () => getEnv,
|
|
82
|
+
getFieldsOnChange: () => getFieldsOnChange,
|
|
83
|
+
getOffSet: () => getOffSet,
|
|
84
|
+
getSubdomain: () => getSubdomain,
|
|
85
|
+
handleError: () => handleError,
|
|
86
|
+
headerSlice: () => headerSlice,
|
|
87
|
+
initEnv: () => initEnv,
|
|
88
|
+
isBase64File: () => isBase64File,
|
|
89
|
+
isBase64Image: () => isBase64Image,
|
|
90
|
+
isObjectEmpty: () => isObjectEmpty,
|
|
91
|
+
listSlice: () => listSlice,
|
|
92
|
+
loginSlice: () => loginSlice,
|
|
93
|
+
mergeObjects: () => mergeObjects,
|
|
94
|
+
navbarSlice: () => navbarSlice,
|
|
95
|
+
profileSlice: () => profileSlice,
|
|
96
|
+
removeKeyFromSearchMap: () => removeKeyFromSearchMap,
|
|
97
|
+
removeUndefinedFields: () => removeUndefinedFields,
|
|
98
|
+
resequence: () => resequence,
|
|
99
|
+
searchSlice: () => searchSlice,
|
|
100
|
+
selectBreadCrumbs: () => selectBreadCrumbs,
|
|
101
|
+
selectEnv: () => selectEnv,
|
|
102
|
+
selectExcel: () => selectExcel,
|
|
103
|
+
selectForm: () => selectForm,
|
|
104
|
+
selectHeader: () => selectHeader,
|
|
105
|
+
selectList: () => selectList,
|
|
106
|
+
selectLogin: () => selectLogin,
|
|
107
|
+
selectNavbar: () => selectNavbar,
|
|
108
|
+
selectProfile: () => selectProfile,
|
|
109
|
+
selectSearch: () => selectSearch,
|
|
110
|
+
selectSearchMap: () => selectSearchMap,
|
|
111
|
+
setAllowCompanies: () => setAllowCompanies,
|
|
112
|
+
setAllowedCompanyIds: () => setAllowedCompanyIds,
|
|
113
|
+
setBreadCrumbs: () => setBreadCrumbs,
|
|
114
|
+
setCompanies: () => setCompanies,
|
|
115
|
+
setConfig: () => setConfig,
|
|
116
|
+
setDataParse: () => setDataParse,
|
|
117
|
+
setDataUser: () => setDataUser,
|
|
118
|
+
setDb: () => setDb,
|
|
119
|
+
setDefaultCompany: () => setDefaultCompany,
|
|
120
|
+
setDomainTable: () => setDomainTable,
|
|
121
|
+
setEnv: () => setEnv,
|
|
122
|
+
setEnvFile: () => setEnvFile,
|
|
123
|
+
setErrorData: () => setErrorData,
|
|
124
|
+
setFieldTranslate: () => setFieldTranslate,
|
|
125
|
+
setFields: () => setFields,
|
|
126
|
+
setFilterBy: () => setFilterBy,
|
|
127
|
+
setFirstDomain: () => setFirstDomain,
|
|
128
|
+
setForgotPasswordUrl: () => setForgotPasswordUrl,
|
|
129
|
+
setFormSubmitComponent: () => setFormSubmitComponent,
|
|
130
|
+
setGroupBy: () => setGroupBy,
|
|
131
|
+
setGroupByDomain: () => setGroupByDomain,
|
|
132
|
+
setHeader: () => setHeader,
|
|
133
|
+
setHoveredIndexSearchList: () => setHoveredIndexSearchList,
|
|
134
|
+
setIdFile: () => setIdFile,
|
|
135
|
+
setIndexRowTableModal: () => setIndexRowTableModal,
|
|
136
|
+
setIsFileLoaded: () => setIsFileLoaded,
|
|
137
|
+
setIsShowModalTranslate: () => setIsShowModalTranslate,
|
|
138
|
+
setIsShowingModalDetail: () => setIsShowingModalDetail,
|
|
139
|
+
setIsUpdateTableModal: () => setIsUpdateTableModal,
|
|
140
|
+
setLang: () => setLang,
|
|
141
|
+
setListSubject: () => setListSubject,
|
|
142
|
+
setLoadingImport: () => setLoadingImport,
|
|
143
|
+
setMenuFocus: () => setMenuFocus,
|
|
144
|
+
setMenuFocusAction: () => setMenuFocusAction,
|
|
145
|
+
setMenuList: () => setMenuList,
|
|
146
|
+
setNavbarWidth: () => setNavbarWidth,
|
|
147
|
+
setOrder: () => setOrder,
|
|
148
|
+
setPage: () => setPage,
|
|
149
|
+
setPageLimit: () => setPageLimit,
|
|
150
|
+
setProfile: () => setProfile,
|
|
151
|
+
setRedirectTo: () => setRedirectTo,
|
|
152
|
+
setSearchBy: () => setSearchBy,
|
|
153
|
+
setSearchMap: () => setSearchMap,
|
|
154
|
+
setSearchString: () => setSearchString,
|
|
155
|
+
setSelectedFile: () => setSelectedFile,
|
|
156
|
+
setSelectedRadioKey: () => setSelectedRadioKey,
|
|
157
|
+
setSelectedRowKeys: () => setSelectedRowKeys,
|
|
158
|
+
setSelectedTags: () => setSelectedTags,
|
|
159
|
+
setTransferDetail: () => setTransferDetail,
|
|
160
|
+
setUid: () => setUid,
|
|
161
|
+
setUser: () => setUser,
|
|
162
|
+
setViewDataStore: () => setViewDataStore,
|
|
163
|
+
stringToColor: () => stringToColor,
|
|
164
|
+
toQueryString: () => toQueryString,
|
|
165
|
+
updateSearchMap: () => updateSearchMap,
|
|
166
|
+
updateTokenParamInOriginalRequest: () => updateTokenParamInOriginalRequest,
|
|
167
|
+
useAppDispatch: () => useAppDispatch,
|
|
168
|
+
useAppSelector: () => useAppSelector,
|
|
33
169
|
useButton: () => use_button_default,
|
|
34
170
|
useChangeStatus: () => use_change_status_default,
|
|
35
171
|
useDelete: () => use_delete_default,
|
|
@@ -37,6 +173,7 @@ __export(hooks_exports, {
|
|
|
37
173
|
useDuplicateRecord: () => use_duplicate_record_default,
|
|
38
174
|
useExecuteImport: () => uss_execute_import_default,
|
|
39
175
|
useExportExcel: () => use_export_excel_default,
|
|
176
|
+
useField: () => useField,
|
|
40
177
|
useForgotPassword: () => use_forgot_password_default,
|
|
41
178
|
useForgotPasswordSSO: () => use_forgotpassword_sso_default,
|
|
42
179
|
useGet2FAMethods: () => uset_get_2FA_method_default,
|
|
@@ -92,17 +229,48 @@ __export(hooks_exports, {
|
|
|
92
229
|
useSettingsWebRead2fa: () => use_settings_web_read_2fa_default,
|
|
93
230
|
useSignInSSO: () => use_signin_sso_default,
|
|
94
231
|
useSwitchLocale: () => use_switch_locale_default,
|
|
232
|
+
useTabModel: () => useTabModel,
|
|
95
233
|
useUpdatePassword: () => use_update_password_default,
|
|
96
234
|
useUploadFile: () => use_upload_file_default,
|
|
97
235
|
useUploadIdFile: () => use_upload_id_file_default,
|
|
98
236
|
useUploadImage: () => use_upload_image_default,
|
|
99
237
|
useVerify2FA: () => use_verify_2FA_default,
|
|
100
|
-
useVerifyTotp: () => use_verify_totp_default
|
|
238
|
+
useVerifyTotp: () => use_verify_totp_default,
|
|
239
|
+
validateAndParseDate: () => validateAndParseDate
|
|
101
240
|
});
|
|
102
|
-
module.exports = __toCommonJS(
|
|
241
|
+
module.exports = __toCommonJS(index_exports);
|
|
103
242
|
|
|
104
|
-
// src/
|
|
105
|
-
var
|
|
243
|
+
// src/configs/axios-client.ts
|
|
244
|
+
var import_axios = __toESM(require("axios"));
|
|
245
|
+
|
|
246
|
+
// src/constants/api/key-constant.ts
|
|
247
|
+
var KeyConstants = /* @__PURE__ */ ((KeyConstants2) => {
|
|
248
|
+
KeyConstants2["PROFILE"] = "userinfo";
|
|
249
|
+
KeyConstants2["CURRENT_COMPANY"] = "current_company";
|
|
250
|
+
KeyConstants2["LIST_COMPANY"] = "list_company";
|
|
251
|
+
KeyConstants2["COMPANY_INFO"] = "company_info";
|
|
252
|
+
KeyConstants2["MENU"] = "menus";
|
|
253
|
+
KeyConstants2["GET_VIEW_BY_ACTION"] = "get_view_by_action";
|
|
254
|
+
KeyConstants2["ACTION_DETAIL"] = "action_detail";
|
|
255
|
+
KeyConstants2["GET_DATA_SELECTION"] = "get_data_select";
|
|
256
|
+
KeyConstants2["WEB_SAVE"] = "web_save";
|
|
257
|
+
KeyConstants2["WEB_READ"] = "web_read";
|
|
258
|
+
KeyConstants2["GET_PROVIDER"] = "get_provider";
|
|
259
|
+
return KeyConstants2;
|
|
260
|
+
})(KeyConstants || {});
|
|
261
|
+
|
|
262
|
+
// src/constants/api/method-constant.ts
|
|
263
|
+
var MethodConstants = /* @__PURE__ */ ((MethodConstants2) => {
|
|
264
|
+
MethodConstants2["WEB_SEARCH_READ"] = "web_search_read";
|
|
265
|
+
MethodConstants2["WEB_READ_GROUP"] = "web_read_group";
|
|
266
|
+
MethodConstants2["WEB_READ"] = "web_read";
|
|
267
|
+
MethodConstants2["WEB_SAVE"] = "web_save";
|
|
268
|
+
MethodConstants2["UNLINK"] = "unlink";
|
|
269
|
+
MethodConstants2["ONCHANGE"] = "onchange";
|
|
270
|
+
MethodConstants2["GET_ONCHANGE_FIELDS"] = "get_fields_onchange";
|
|
271
|
+
MethodConstants2["GET_FIELD_VIEW"] = "get_fields_view_v2";
|
|
272
|
+
return MethodConstants2;
|
|
273
|
+
})(MethodConstants || {});
|
|
106
274
|
|
|
107
275
|
// src/constants/api/uri-constant.ts
|
|
108
276
|
var UriConstants = /* @__PURE__ */ ((UriConstants2) => {
|
|
@@ -134,11 +302,380 @@ var UriConstants = /* @__PURE__ */ ((UriConstants2) => {
|
|
|
134
302
|
return UriConstants2;
|
|
135
303
|
})(UriConstants || {});
|
|
136
304
|
|
|
137
|
-
// src/
|
|
138
|
-
var
|
|
305
|
+
// src/utils/error-handler.ts
|
|
306
|
+
var WesapError = class extends Error {
|
|
307
|
+
code;
|
|
308
|
+
constructor(message, code) {
|
|
309
|
+
super(message);
|
|
310
|
+
this.code = code;
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
function handleError(error, env2) {
|
|
314
|
+
if (error instanceof WesapError) {
|
|
315
|
+
env2.services.notification.error(error.message);
|
|
316
|
+
} else {
|
|
317
|
+
env2.services.notification.error("An unexpected error occurred");
|
|
318
|
+
}
|
|
319
|
+
}
|
|
139
320
|
|
|
140
321
|
// src/utils/format.ts
|
|
141
322
|
var import_moment = __toESM(require("moment"));
|
|
323
|
+
var formatCurrency = (amount, currency = "USD") => {
|
|
324
|
+
const formatter = new Intl.NumberFormat("vi-VN", {
|
|
325
|
+
style: "currency",
|
|
326
|
+
currency,
|
|
327
|
+
minimumFractionDigits: 0
|
|
328
|
+
});
|
|
329
|
+
return formatter.format(amount).replaceAll(".", ",");
|
|
330
|
+
};
|
|
331
|
+
var formatDate = (date, locale = "en-US") => {
|
|
332
|
+
return new Intl.DateTimeFormat(locale).format(new Date(date));
|
|
333
|
+
};
|
|
334
|
+
var validateAndParseDate = (input, isDateTime = false) => {
|
|
335
|
+
if (!input || typeof input !== "string") return null;
|
|
336
|
+
const cleanInput = input.replace(/[^0-9-\/:\s]/g, "");
|
|
337
|
+
const dateFormat = "YYYY-MM-DD";
|
|
338
|
+
const dateTimeFormat = "YYYY-MM-DD HH:mm:ss";
|
|
339
|
+
const currentDay = (0, import_moment.default)().format("DD");
|
|
340
|
+
const currentMonth = (0, import_moment.default)().format("MM");
|
|
341
|
+
const currentYear = (0, import_moment.default)().format("YYYY");
|
|
342
|
+
const defaultTime = "00:00:00";
|
|
343
|
+
const maxYear = parseInt(currentYear) + 10;
|
|
344
|
+
const isValidDate = (day, month, year) => {
|
|
345
|
+
const date = (0, import_moment.default)(`${day}-${month}-${year}`, "DD-MM-YYYY", true);
|
|
346
|
+
return date.isValid();
|
|
347
|
+
};
|
|
348
|
+
const isValidTime = (hour, minute = "00", second = "00") => {
|
|
349
|
+
const h = parseInt(hour, 10);
|
|
350
|
+
const m = parseInt(minute, 10);
|
|
351
|
+
const s = parseInt(second, 10);
|
|
352
|
+
return h >= 0 && h <= 23 && m >= 0 && m <= 59 && s >= 0 && s <= 59;
|
|
353
|
+
};
|
|
354
|
+
const formatOutput = (day, month, year, time = defaultTime) => {
|
|
355
|
+
let result = (0, import_moment.default)(
|
|
356
|
+
`${day}-${month}-${year} ${time}`,
|
|
357
|
+
"DD-MM-YYYY HH:mm:ss"
|
|
358
|
+
);
|
|
359
|
+
if (!result.isValid()) return null;
|
|
360
|
+
if (isDateTime) {
|
|
361
|
+
result = result.subtract(7, "hours");
|
|
362
|
+
return result.format(dateTimeFormat);
|
|
363
|
+
}
|
|
364
|
+
return result.format(dateFormat);
|
|
365
|
+
};
|
|
366
|
+
if (isDateTime && input.match(
|
|
367
|
+
/^\d{1,2}[\/-]\d{1,2}[\/-]\d{2,4}\s+\d{1,2}(:\d{1,2}(:\d{1,2})?)?$/
|
|
368
|
+
)) {
|
|
369
|
+
const [datePart, timePart] = input.split(/\s+/);
|
|
370
|
+
const dateParts = datePart.split(/[\/-]/);
|
|
371
|
+
const timeParts = timePart.split(":");
|
|
372
|
+
const day = dateParts[0].padStart(2, "0");
|
|
373
|
+
const month = dateParts[1].padStart(2, "0");
|
|
374
|
+
const year = dateParts[2].length <= 2 ? `20${dateParts[2].padStart(2, "0")}` : dateParts[2].padStart(4, "0");
|
|
375
|
+
const hour = timeParts[0].padStart(2, "0");
|
|
376
|
+
const minute = timeParts[1] ? timeParts[1].padStart(2, "0") : "00";
|
|
377
|
+
const second = timeParts[2] ? timeParts[2].padStart(2, "0") : "00";
|
|
378
|
+
if (isValidDate(day, month, year) && isValidTime(hour, minute, second)) {
|
|
379
|
+
let result = (0, import_moment.default)(
|
|
380
|
+
`${day}-${month}-${year} ${hour}:${minute}:${second}`,
|
|
381
|
+
"DD-MM-YYYY HH:mm:ss"
|
|
382
|
+
);
|
|
383
|
+
if (!result.isValid()) return null;
|
|
384
|
+
result = result.subtract(7, "hours");
|
|
385
|
+
return result.format(dateTimeFormat);
|
|
386
|
+
}
|
|
387
|
+
return null;
|
|
388
|
+
}
|
|
389
|
+
if (cleanInput.match(/^\d{4}-\d{2}-\d{2}$/)) {
|
|
390
|
+
const [year, month, day] = cleanInput.split("-");
|
|
391
|
+
if (isValidDate(day, month, year)) {
|
|
392
|
+
return formatOutput(day, month, year);
|
|
393
|
+
}
|
|
394
|
+
return null;
|
|
395
|
+
}
|
|
396
|
+
if (cleanInput.match(/^\d{1,2}\/\d{1,2}\/\d{2,4}$/)) {
|
|
397
|
+
const [day, month, year] = cleanInput.split("/");
|
|
398
|
+
const paddedDay = day.padStart(2, "0");
|
|
399
|
+
const paddedMonth = month.padStart(2, "0");
|
|
400
|
+
const fullYear = year.length <= 2 ? `20${year.padStart(2, "0")}` : year.padStart(4, "0");
|
|
401
|
+
if (isValidDate(paddedDay, paddedMonth, fullYear)) {
|
|
402
|
+
return formatOutput(paddedDay, paddedMonth, fullYear);
|
|
403
|
+
}
|
|
404
|
+
return null;
|
|
405
|
+
}
|
|
406
|
+
if (cleanInput.match(/^\d{1,2}-\d{1,2}-\d{2,4}$/)) {
|
|
407
|
+
const [day, month, year] = cleanInput.split("-");
|
|
408
|
+
const paddedDay = day.padStart(2, "0");
|
|
409
|
+
const paddedMonth = month.padStart(2, "0");
|
|
410
|
+
const fullYear = year.length <= 2 ? `20${year.padStart(2, "0")}` : year.padStart(4, "0");
|
|
411
|
+
if (isValidDate(paddedDay, paddedMonth, fullYear)) {
|
|
412
|
+
return formatOutput(paddedDay, paddedMonth, fullYear);
|
|
413
|
+
}
|
|
414
|
+
return null;
|
|
415
|
+
}
|
|
416
|
+
if (cleanInput.match(/^\d{1,2}[\/-]\d{1,2}$/)) {
|
|
417
|
+
const [day, month] = cleanInput.split(/[\/-]/);
|
|
418
|
+
const paddedDay = day.padStart(2, "0");
|
|
419
|
+
const paddedMonth = month.padStart(2, "0");
|
|
420
|
+
if (isValidDate(paddedDay, paddedMonth, currentYear)) {
|
|
421
|
+
return formatOutput(paddedDay, paddedMonth, currentYear);
|
|
422
|
+
}
|
|
423
|
+
return null;
|
|
424
|
+
}
|
|
425
|
+
if (cleanInput.match(/^\d{4}$/)) {
|
|
426
|
+
const num = parseInt(cleanInput, 10);
|
|
427
|
+
if (num >= 2e3 && num <= maxYear) {
|
|
428
|
+
if (isValidDate(currentDay, currentMonth, num.toString())) {
|
|
429
|
+
return formatOutput(currentDay, currentMonth, num.toString());
|
|
430
|
+
}
|
|
431
|
+
return null;
|
|
432
|
+
}
|
|
433
|
+
const day = cleanInput.slice(0, 2);
|
|
434
|
+
const month = cleanInput.slice(2, 4);
|
|
435
|
+
if (isValidDate(day, month, currentYear)) {
|
|
436
|
+
return formatOutput(day, month, currentYear);
|
|
437
|
+
}
|
|
438
|
+
return null;
|
|
439
|
+
}
|
|
440
|
+
if (cleanInput.startsWith("-") && /^\-\d+$/.test(cleanInput)) {
|
|
441
|
+
const daysToSubtract = Math.abs(parseInt(cleanInput, 10));
|
|
442
|
+
let result = (0, import_moment.default)().subtract(daysToSubtract, "days");
|
|
443
|
+
if (isDateTime) {
|
|
444
|
+
result = result.subtract(7, "hours");
|
|
445
|
+
}
|
|
446
|
+
if (result.isValid()) {
|
|
447
|
+
return isDateTime ? result.format(dateTimeFormat) : result.format(dateFormat);
|
|
448
|
+
}
|
|
449
|
+
return null;
|
|
450
|
+
}
|
|
451
|
+
if (input.match(/^\d{1,2}[^0-9-\/]+\d{1,2}[^0-9-\/]+\d{2,4}.*$/)) {
|
|
452
|
+
const parts = input.split(/[^0-9-\/]+/).filter(Boolean);
|
|
453
|
+
const day = parts[0].padStart(2, "0");
|
|
454
|
+
const month = parts[1].padStart(2, "0");
|
|
455
|
+
let year = parts[2];
|
|
456
|
+
year = year.length === 2 ? `20${year}` : year.padStart(4, "0");
|
|
457
|
+
if (isValidDate(day, month, year)) {
|
|
458
|
+
return formatOutput(day, month, year);
|
|
459
|
+
}
|
|
460
|
+
return null;
|
|
461
|
+
}
|
|
462
|
+
if (isDateTime) {
|
|
463
|
+
if (cleanInput.length === 9) {
|
|
464
|
+
const day = cleanInput.slice(0, 2);
|
|
465
|
+
const month = cleanInput.slice(2, 4);
|
|
466
|
+
const year = cleanInput.slice(4, 8);
|
|
467
|
+
const hour = cleanInput.slice(8, 9).padStart(2, "0");
|
|
468
|
+
if (isValidDate(day, month, year) && isValidTime(hour)) {
|
|
469
|
+
let result = (0, import_moment.default)(
|
|
470
|
+
`${day}-${month}-${year} ${hour}:00:00`,
|
|
471
|
+
"DD-MM-YYYY HH:mm:ss"
|
|
472
|
+
);
|
|
473
|
+
if (!result.isValid()) return null;
|
|
474
|
+
result = result.subtract(7, "hours");
|
|
475
|
+
return result.format(dateTimeFormat);
|
|
476
|
+
}
|
|
477
|
+
return null;
|
|
478
|
+
}
|
|
479
|
+
if (cleanInput.length === 10) {
|
|
480
|
+
const day = cleanInput.slice(0, 2);
|
|
481
|
+
const month = cleanInput.slice(2, 4);
|
|
482
|
+
const year = cleanInput.slice(4, 8);
|
|
483
|
+
const hour = cleanInput.slice(8, 10);
|
|
484
|
+
if (isValidDate(day, month, year) && isValidTime(hour)) {
|
|
485
|
+
let result = (0, import_moment.default)(
|
|
486
|
+
`${day}-${month}-${year} ${hour}:00:00`,
|
|
487
|
+
"DD-MM-YYYY HH:mm:ss"
|
|
488
|
+
);
|
|
489
|
+
if (!result.isValid()) return null;
|
|
490
|
+
result = result.subtract(7, "hours");
|
|
491
|
+
return result.format(dateTimeFormat);
|
|
492
|
+
}
|
|
493
|
+
return null;
|
|
494
|
+
}
|
|
495
|
+
if (cleanInput.length === 11) {
|
|
496
|
+
const day = cleanInput.slice(0, 2);
|
|
497
|
+
const month = cleanInput.slice(2, 4);
|
|
498
|
+
const year = cleanInput.slice(4, 8);
|
|
499
|
+
const hour = cleanInput.slice(8, 10);
|
|
500
|
+
const minute = cleanInput.slice(10, 11).padStart(2, "0");
|
|
501
|
+
if (isValidDate(day, month, year) && isValidTime(hour, minute)) {
|
|
502
|
+
let result = (0, import_moment.default)(
|
|
503
|
+
`${day}-${month}-${year} ${hour}:${minute}:00`,
|
|
504
|
+
"DD-MM-YYYY HH:mm:ss"
|
|
505
|
+
);
|
|
506
|
+
if (!result.isValid()) return null;
|
|
507
|
+
result = result.subtract(7, "hours");
|
|
508
|
+
return result.format(dateTimeFormat);
|
|
509
|
+
}
|
|
510
|
+
return null;
|
|
511
|
+
}
|
|
512
|
+
if (cleanInput.length === 12) {
|
|
513
|
+
const day = cleanInput.slice(0, 2);
|
|
514
|
+
const month = cleanInput.slice(2, 4);
|
|
515
|
+
const year = cleanInput.slice(4, 8);
|
|
516
|
+
const hour = cleanInput.slice(8, 10);
|
|
517
|
+
const minute = cleanInput.slice(10, 12);
|
|
518
|
+
if (isValidDate(day, month, year) && isValidTime(hour, minute)) {
|
|
519
|
+
let result = (0, import_moment.default)(
|
|
520
|
+
`${day}-${month}-${year} ${hour}:${minute}:00`,
|
|
521
|
+
"DD-MM-YYYY HH:mm:ss"
|
|
522
|
+
);
|
|
523
|
+
if (!result.isValid()) return null;
|
|
524
|
+
result = result.subtract(7, "hours");
|
|
525
|
+
return result.format(dateTimeFormat);
|
|
526
|
+
}
|
|
527
|
+
return null;
|
|
528
|
+
}
|
|
529
|
+
if (cleanInput.length === 13) {
|
|
530
|
+
const day = cleanInput.slice(0, 2);
|
|
531
|
+
const month = cleanInput.slice(2, 4);
|
|
532
|
+
const year = cleanInput.slice(4, 8);
|
|
533
|
+
const hour = cleanInput.slice(8, 10);
|
|
534
|
+
const minute = cleanInput.slice(10, 12);
|
|
535
|
+
const second = cleanInput.slice(12, 13).padStart(2, "0");
|
|
536
|
+
if (isValidDate(day, month, year) && isValidTime(hour, minute, second)) {
|
|
537
|
+
let result = (0, import_moment.default)(
|
|
538
|
+
`${day}-${month}-${year} ${hour}:${minute}:${second}`,
|
|
539
|
+
"DD-MM-YYYY HH:mm:ss"
|
|
540
|
+
);
|
|
541
|
+
if (!result.isValid()) return null;
|
|
542
|
+
result = result.subtract(7, "hours");
|
|
543
|
+
return result.format(dateTimeFormat);
|
|
544
|
+
}
|
|
545
|
+
return null;
|
|
546
|
+
}
|
|
547
|
+
if (cleanInput.length === 14) {
|
|
548
|
+
const day = cleanInput.slice(0, 2);
|
|
549
|
+
const month = cleanInput.slice(2, 4);
|
|
550
|
+
const year = cleanInput.slice(4, 8);
|
|
551
|
+
const hour = cleanInput.slice(8, 10);
|
|
552
|
+
const minute = cleanInput.slice(10, 12);
|
|
553
|
+
const second = cleanInput.slice(12, 14);
|
|
554
|
+
if (isValidDate(day, month, year) && isValidTime(hour, minute, second)) {
|
|
555
|
+
let result = (0, import_moment.default)(
|
|
556
|
+
`${day}-${month}-${year} ${hour}:${minute}:${second}`,
|
|
557
|
+
"DD-MM-YYYY HH:mm:ss"
|
|
558
|
+
);
|
|
559
|
+
if (!result.isValid()) return null;
|
|
560
|
+
result = result.subtract(7, "hours");
|
|
561
|
+
return result.format(dateTimeFormat);
|
|
562
|
+
}
|
|
563
|
+
return null;
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
const len = cleanInput.length;
|
|
567
|
+
if (len === 1 || len === 2) {
|
|
568
|
+
const paddedDay = cleanInput.padStart(2, "0");
|
|
569
|
+
if (isValidDate(paddedDay, currentMonth, currentYear)) {
|
|
570
|
+
return formatOutput(paddedDay, currentMonth, currentYear);
|
|
571
|
+
}
|
|
572
|
+
return null;
|
|
573
|
+
}
|
|
574
|
+
if (len === 3) {
|
|
575
|
+
const day = cleanInput.slice(0, 2);
|
|
576
|
+
const month = cleanInput.slice(2, 3).padStart(2, "0");
|
|
577
|
+
if (isValidDate(day, month, currentYear)) {
|
|
578
|
+
return formatOutput(day, month, currentYear);
|
|
579
|
+
}
|
|
580
|
+
return null;
|
|
581
|
+
}
|
|
582
|
+
if (len === 6) {
|
|
583
|
+
const day = cleanInput.slice(0, 2);
|
|
584
|
+
const month = cleanInput.slice(2, 4);
|
|
585
|
+
let year = cleanInput.slice(4, 6);
|
|
586
|
+
year = `20${year}`;
|
|
587
|
+
if (parseInt(month) > 12) {
|
|
588
|
+
if (isValidDate(day, currentMonth, currentYear)) {
|
|
589
|
+
return formatOutput(day, currentMonth, currentYear);
|
|
590
|
+
}
|
|
591
|
+
return null;
|
|
592
|
+
}
|
|
593
|
+
if (isValidDate(day, month, year)) {
|
|
594
|
+
return formatOutput(day, month, year);
|
|
595
|
+
}
|
|
596
|
+
return null;
|
|
597
|
+
}
|
|
598
|
+
if (len === 7) {
|
|
599
|
+
return null;
|
|
600
|
+
}
|
|
601
|
+
if (len === 8) {
|
|
602
|
+
const day = cleanInput.slice(0, 2);
|
|
603
|
+
const month = cleanInput.slice(2, 4);
|
|
604
|
+
const year = cleanInput.slice(4, 8);
|
|
605
|
+
if (isValidDate(day, month, year)) {
|
|
606
|
+
return formatOutput(day, month, year);
|
|
607
|
+
}
|
|
608
|
+
return null;
|
|
609
|
+
}
|
|
610
|
+
if (len > 8 && !isDateTime) {
|
|
611
|
+
return null;
|
|
612
|
+
}
|
|
613
|
+
return null;
|
|
614
|
+
};
|
|
615
|
+
|
|
616
|
+
// src/constants/field/field-type-constant.ts
|
|
617
|
+
var FieldTypeConstants = /* @__PURE__ */ ((FieldTypeConstants2) => {
|
|
618
|
+
FieldTypeConstants2["CHAR"] = "char";
|
|
619
|
+
FieldTypeConstants2["TEXT"] = "text";
|
|
620
|
+
FieldTypeConstants2["INTEGER"] = "integer";
|
|
621
|
+
FieldTypeConstants2["FLOAT"] = "float";
|
|
622
|
+
FieldTypeConstants2["BOOLEAN"] = "boolean";
|
|
623
|
+
FieldTypeConstants2["DATE"] = "date";
|
|
624
|
+
FieldTypeConstants2["DATETIME"] = "datetime";
|
|
625
|
+
FieldTypeConstants2["BINARY"] = "binary";
|
|
626
|
+
FieldTypeConstants2["SELECTION"] = "selection";
|
|
627
|
+
FieldTypeConstants2["HTML"] = "html";
|
|
628
|
+
FieldTypeConstants2["MANY2ONE"] = "many2one";
|
|
629
|
+
FieldTypeConstants2["ONE2MANY"] = "one2many";
|
|
630
|
+
FieldTypeConstants2["MANY2MANY"] = "many2many";
|
|
631
|
+
FieldTypeConstants2["MONETARY"] = "monetary";
|
|
632
|
+
FieldTypeConstants2["REFERENCE"] = "reference";
|
|
633
|
+
FieldTypeConstants2["FUNCTION"] = "function";
|
|
634
|
+
FieldTypeConstants2["PROPERTY"] = "property";
|
|
635
|
+
return FieldTypeConstants2;
|
|
636
|
+
})(FieldTypeConstants || {});
|
|
637
|
+
|
|
638
|
+
// src/constants/method/method-type-constant.ts
|
|
639
|
+
var MethodType = /* @__PURE__ */ ((MethodType2) => {
|
|
640
|
+
MethodType2[MethodType2["CREATE"] = 0] = "CREATE";
|
|
641
|
+
MethodType2[MethodType2["UPDATE"] = 1] = "UPDATE";
|
|
642
|
+
MethodType2[MethodType2["DELETE"] = 2] = "DELETE";
|
|
643
|
+
MethodType2[MethodType2["UNLINK"] = 3] = "UNLINK";
|
|
644
|
+
MethodType2[MethodType2["NO_CHANGE"] = 4] = "NO_CHANGE";
|
|
645
|
+
return MethodType2;
|
|
646
|
+
})(MethodType || {});
|
|
647
|
+
|
|
648
|
+
// src/constants/model/model-constant.ts
|
|
649
|
+
var ModelConstants = /* @__PURE__ */ ((ModelConstants2) => {
|
|
650
|
+
ModelConstants2["MENU"] = "ir.ui.menu";
|
|
651
|
+
ModelConstants2["USER"] = "res.users";
|
|
652
|
+
ModelConstants2["COMPANY"] = "res.company";
|
|
653
|
+
ModelConstants2["WINDOW_ACTION"] = "ir.actions.act_window";
|
|
654
|
+
ModelConstants2["BASE_IMPORT"] = "base_import.import";
|
|
655
|
+
ModelConstants2["GET_IMPORT"] = "get_import_templates";
|
|
656
|
+
return ModelConstants2;
|
|
657
|
+
})(ModelConstants || {});
|
|
658
|
+
|
|
659
|
+
// src/constants/type/index.ts
|
|
660
|
+
var ComponentType = /* @__PURE__ */ ((ComponentType2) => {
|
|
661
|
+
ComponentType2["GROUP"] = "group";
|
|
662
|
+
ComponentType2["FIELD"] = "field";
|
|
663
|
+
ComponentType2["TREE"] = "tree";
|
|
664
|
+
ComponentType2["DIV"] = "div";
|
|
665
|
+
ComponentType2["LIST"] = "list";
|
|
666
|
+
ComponentType2["FORM"] = "form";
|
|
667
|
+
ComponentType2["SETTINGS"] = "setting";
|
|
668
|
+
ComponentType2["SPAN"] = "span";
|
|
669
|
+
ComponentType2["KANBAN"] = "kanban";
|
|
670
|
+
ComponentType2["CALENDAR"] = "calendar";
|
|
671
|
+
ComponentType2["TYPE"] = "view-type";
|
|
672
|
+
return ComponentType2;
|
|
673
|
+
})(ComponentType || {});
|
|
674
|
+
var SearchType = {
|
|
675
|
+
FILTER: "filter_by",
|
|
676
|
+
SEARCH: "search_by",
|
|
677
|
+
GROUP: "group_by"
|
|
678
|
+
};
|
|
142
679
|
|
|
143
680
|
// src/constants/widget/widget-avatar-constant.ts
|
|
144
681
|
var WIDGETAVATAR = /* @__PURE__ */ ((WIDGETAVATAR2) => {
|
|
@@ -146,6 +683,28 @@ var WIDGETAVATAR = /* @__PURE__ */ ((WIDGETAVATAR2) => {
|
|
|
146
683
|
WIDGETAVATAR2["many2many_avatar_user"] = "many2many_avatar_user";
|
|
147
684
|
return WIDGETAVATAR2;
|
|
148
685
|
})(WIDGETAVATAR || {});
|
|
686
|
+
var WIDGETCURRENCY = /* @__PURE__ */ ((WIDGETCURRENCY2) => {
|
|
687
|
+
WIDGETCURRENCY2["many2one_avatar_user"] = "many2one_avatar_user";
|
|
688
|
+
WIDGETCURRENCY2["many2many_avatar_user"] = "many2many_avatar_user";
|
|
689
|
+
return WIDGETCURRENCY2;
|
|
690
|
+
})(WIDGETCURRENCY || {});
|
|
691
|
+
|
|
692
|
+
// src/constants/widget/widget-color-constant.ts
|
|
693
|
+
var WIDGETCOLOR = /* @__PURE__ */ ((WIDGETCOLOR2) => {
|
|
694
|
+
WIDGETCOLOR2["many2many_tags"] = "many2many_tags";
|
|
695
|
+
WIDGETCOLOR2["helpdesk_sla_many2many_tags"] = "helpdesk_sla_many2many_tags";
|
|
696
|
+
return WIDGETCOLOR2;
|
|
697
|
+
})(WIDGETCOLOR || {});
|
|
698
|
+
|
|
699
|
+
// src/constants/widget/widget-status-constant.ts
|
|
700
|
+
var WIDGETSTATUS = /* @__PURE__ */ ((WIDGETSTATUS2) => {
|
|
701
|
+
WIDGETSTATUS2["sla_status_ids"] = "sla_status_ids";
|
|
702
|
+
return WIDGETSTATUS2;
|
|
703
|
+
})(WIDGETSTATUS || {});
|
|
704
|
+
var WIDGETNOSTRING = /* @__PURE__ */ ((WIDGETNOSTRING2) => {
|
|
705
|
+
WIDGETNOSTRING2["sla_status_ids"] = "sla_status_ids";
|
|
706
|
+
return WIDGETNOSTRING2;
|
|
707
|
+
})(WIDGETNOSTRING || {});
|
|
149
708
|
|
|
150
709
|
// src/utils/domain/py_tokenizer.ts
|
|
151
710
|
var TokenizerError = class extends Error {
|
|
@@ -1914,6 +2473,48 @@ function parseExpr(expr) {
|
|
|
1914
2473
|
const tokens = tokenize(expr);
|
|
1915
2474
|
return parse(tokens);
|
|
1916
2475
|
}
|
|
2476
|
+
function evaluateExpr(expr, context = {}) {
|
|
2477
|
+
let ast;
|
|
2478
|
+
try {
|
|
2479
|
+
ast = parseExpr(expr);
|
|
2480
|
+
} catch (error) {
|
|
2481
|
+
throw new EvalError(
|
|
2482
|
+
`Can not parse python expression: (${expr})
|
|
2483
|
+
Error: ${error.message}`
|
|
2484
|
+
);
|
|
2485
|
+
}
|
|
2486
|
+
try {
|
|
2487
|
+
return evaluate(ast, context);
|
|
2488
|
+
} catch (error) {
|
|
2489
|
+
throw new EvalError(
|
|
2490
|
+
`Can not evaluate python expression: (${expr})
|
|
2491
|
+
Error: ${error.message}`
|
|
2492
|
+
);
|
|
2493
|
+
}
|
|
2494
|
+
}
|
|
2495
|
+
function evaluateBooleanExpr(expr, context = {}) {
|
|
2496
|
+
if (!expr || expr === "False" || expr === "0") {
|
|
2497
|
+
return false;
|
|
2498
|
+
}
|
|
2499
|
+
if (expr === "True" || expr === "1") {
|
|
2500
|
+
return true;
|
|
2501
|
+
}
|
|
2502
|
+
return evaluateExpr(`bool(${expr})`, context);
|
|
2503
|
+
}
|
|
2504
|
+
|
|
2505
|
+
// src/utils/domain/context.ts
|
|
2506
|
+
function evalPartialContext(_context, evaluationContext = {}) {
|
|
2507
|
+
const ast = parseExpr(_context);
|
|
2508
|
+
const context = {};
|
|
2509
|
+
for (const key in ast.value) {
|
|
2510
|
+
const value = ast.value[key];
|
|
2511
|
+
try {
|
|
2512
|
+
context[key] = evaluate(value, evaluationContext);
|
|
2513
|
+
} catch {
|
|
2514
|
+
}
|
|
2515
|
+
}
|
|
2516
|
+
return context;
|
|
2517
|
+
}
|
|
1917
2518
|
|
|
1918
2519
|
// src/utils/domain/objects.ts
|
|
1919
2520
|
function shallowEqual(obj1, obj2, comparisonFn = (a, b) => a === b) {
|
|
@@ -2252,14 +2853,280 @@ function matchDomain(record, domain) {
|
|
|
2252
2853
|
}
|
|
2253
2854
|
return matchCondition(record, condStack.pop());
|
|
2254
2855
|
}
|
|
2856
|
+
var checkDomain = (context, domain) => {
|
|
2857
|
+
try {
|
|
2858
|
+
if (domain === void 0 || domain === "0" || domain === "False" || domain === false) {
|
|
2859
|
+
return false;
|
|
2860
|
+
} else if (domain === "1" || domain === "True" || domain === true) {
|
|
2861
|
+
return true;
|
|
2862
|
+
}
|
|
2863
|
+
try {
|
|
2864
|
+
if (context && domain) {
|
|
2865
|
+
const d = new Domain(domain);
|
|
2866
|
+
return d.contains(context);
|
|
2867
|
+
}
|
|
2868
|
+
} catch (error) {
|
|
2869
|
+
if (context && domain) {
|
|
2870
|
+
const domainEval = evaluateBooleanExpr(domain, context);
|
|
2871
|
+
return domainEval;
|
|
2872
|
+
}
|
|
2873
|
+
return false;
|
|
2874
|
+
}
|
|
2875
|
+
return false;
|
|
2876
|
+
} catch (e) {
|
|
2877
|
+
return false;
|
|
2878
|
+
}
|
|
2879
|
+
};
|
|
2880
|
+
var matchDomains = (context, domains) => {
|
|
2881
|
+
if (Array.isArray(domains)) {
|
|
2882
|
+
if (domains?.length > 0) {
|
|
2883
|
+
return domains && domains.some((domain) => checkDomain(context, domain));
|
|
2884
|
+
}
|
|
2885
|
+
} else return checkDomain(context, domains);
|
|
2886
|
+
return false;
|
|
2887
|
+
};
|
|
2255
2888
|
|
|
2256
2889
|
// src/utils/function.ts
|
|
2257
2890
|
var import_react = require("react");
|
|
2891
|
+
var evalJSONContext = (_context, context = {}) => {
|
|
2892
|
+
try {
|
|
2893
|
+
return evalPartialContext(_context, context);
|
|
2894
|
+
} catch (err) {
|
|
2895
|
+
return null;
|
|
2896
|
+
}
|
|
2897
|
+
};
|
|
2898
|
+
var evalJSONDomain = (domain, context) => {
|
|
2899
|
+
try {
|
|
2900
|
+
if (context) {
|
|
2901
|
+
Object.keys(context)?.forEach((key) => {
|
|
2902
|
+
if (Array.isArray(context[key])) {
|
|
2903
|
+
const isTypeObject = context[key]?.every(
|
|
2904
|
+
(item) => typeof item === "object" && item !== null && item?.id !== void 0
|
|
2905
|
+
);
|
|
2906
|
+
if (isTypeObject) {
|
|
2907
|
+
context[key] = context[key]?.map((item) => item?.id);
|
|
2908
|
+
}
|
|
2909
|
+
}
|
|
2910
|
+
});
|
|
2911
|
+
}
|
|
2912
|
+
const value = evaluateExpr(domain, context);
|
|
2913
|
+
return value;
|
|
2914
|
+
} catch (err) {
|
|
2915
|
+
try {
|
|
2916
|
+
const domainObject = new Domain(domain).toList(context);
|
|
2917
|
+
return domainObject;
|
|
2918
|
+
} catch (err2) {
|
|
2919
|
+
return [];
|
|
2920
|
+
}
|
|
2921
|
+
}
|
|
2922
|
+
};
|
|
2923
|
+
var formatSortingString = (input) => {
|
|
2924
|
+
if (!input) return null;
|
|
2925
|
+
return input.split(",").map((field) => {
|
|
2926
|
+
const [key, order] = field.trim().split(/\s+/);
|
|
2927
|
+
const sortOrder = order?.toUpperCase() === "DESC" ? "DESC" : "ASC";
|
|
2928
|
+
return `${key} ${sortOrder}`;
|
|
2929
|
+
}).join(", ");
|
|
2930
|
+
};
|
|
2931
|
+
var domainHelper = {
|
|
2932
|
+
checkDomain,
|
|
2933
|
+
matchDomains,
|
|
2934
|
+
Domain
|
|
2935
|
+
};
|
|
2258
2936
|
var toQueryString = (params) => {
|
|
2259
2937
|
return Object.keys(params).map(
|
|
2260
2938
|
(key) => encodeURIComponent(key) + "=" + encodeURIComponent(params[key].toString())
|
|
2261
2939
|
).join("&");
|
|
2262
2940
|
};
|
|
2941
|
+
var convertFloatToTime = (floatValue) => {
|
|
2942
|
+
const hours = Math.floor(floatValue);
|
|
2943
|
+
const minutes = Math.round((floatValue - hours) * 60);
|
|
2944
|
+
const formattedHours = String(hours).padStart(2, "0");
|
|
2945
|
+
const formattedMinutes = String(minutes).padStart(2, "0");
|
|
2946
|
+
return `${formattedHours}:${formattedMinutes}`;
|
|
2947
|
+
};
|
|
2948
|
+
var convertTimeToFloat = (timeString) => {
|
|
2949
|
+
const [hours, minutes] = timeString.split(":").map(Number);
|
|
2950
|
+
return hours + minutes / 60;
|
|
2951
|
+
};
|
|
2952
|
+
var stringToColor = (name, id) => {
|
|
2953
|
+
const combined = name + id / 2;
|
|
2954
|
+
let hash = 0;
|
|
2955
|
+
for (let i = 0; i < combined.length; i++) {
|
|
2956
|
+
hash = combined.charCodeAt(i) + ((hash << 5) - hash);
|
|
2957
|
+
}
|
|
2958
|
+
const r = hash >> 16 & 255;
|
|
2959
|
+
const g = hash >> 8 & 255;
|
|
2960
|
+
const b = hash & 255;
|
|
2961
|
+
const adjustedR = 120 + r % 61;
|
|
2962
|
+
const adjustedG = 120 + g % 61;
|
|
2963
|
+
const adjustedB = 120 + b % 61;
|
|
2964
|
+
return `#${adjustedR.toString(16).padStart(2, "0")}${adjustedG.toString(16).padStart(2, "0")}${adjustedB.toString(16).padStart(2, "0")}`;
|
|
2965
|
+
};
|
|
2966
|
+
var getFieldsOnChange = (fields) => {
|
|
2967
|
+
const result = [];
|
|
2968
|
+
function traverse(items) {
|
|
2969
|
+
for (const item of items) {
|
|
2970
|
+
if (item) {
|
|
2971
|
+
if (item?.type_co === "field" && matchDomains(fields, item?.on_change)) {
|
|
2972
|
+
result.push(item.name);
|
|
2973
|
+
}
|
|
2974
|
+
if (item?.fields && Array.isArray(item?.fields)) {
|
|
2975
|
+
traverse(item?.fields);
|
|
2976
|
+
}
|
|
2977
|
+
}
|
|
2978
|
+
}
|
|
2979
|
+
}
|
|
2980
|
+
traverse(fields);
|
|
2981
|
+
return result;
|
|
2982
|
+
};
|
|
2983
|
+
var filterFieldDirty = ({
|
|
2984
|
+
id,
|
|
2985
|
+
viewData,
|
|
2986
|
+
formValues,
|
|
2987
|
+
dirtyFields,
|
|
2988
|
+
model,
|
|
2989
|
+
defaultData
|
|
2990
|
+
}) => {
|
|
2991
|
+
const data = id ? { ...dirtyFields } : { ...formValues };
|
|
2992
|
+
for (const key in data) {
|
|
2993
|
+
if (viewData?.models?.[model]?.[key]?.type === "one2many" /* ONE2MANY */) {
|
|
2994
|
+
const lineData = [];
|
|
2995
|
+
(formValues[key] ?? []).forEach((itemData, index) => {
|
|
2996
|
+
if (typeof itemData?.id === "string" && itemData?.id.includes("virtual")) {
|
|
2997
|
+
delete itemData?.id;
|
|
2998
|
+
}
|
|
2999
|
+
if (!itemData?.id) {
|
|
3000
|
+
lineData.push([
|
|
3001
|
+
0 /* CREATE */,
|
|
3002
|
+
`virtual_${index}`,
|
|
3003
|
+
filterFieldDirty({
|
|
3004
|
+
id: itemData?.id,
|
|
3005
|
+
viewData,
|
|
3006
|
+
formValues: itemData,
|
|
3007
|
+
dirtyFields: {},
|
|
3008
|
+
model: viewData?.models?.[model]?.[key]?.relation,
|
|
3009
|
+
defaultData
|
|
3010
|
+
})
|
|
3011
|
+
]);
|
|
3012
|
+
} else if (dirtyFields[key]?.length) {
|
|
3013
|
+
dirtyFields[key].forEach((itemDirty, indexDirty) => {
|
|
3014
|
+
if (Object.values(itemDirty).includes(true) && indexDirty === index) {
|
|
3015
|
+
lineData.push([
|
|
3016
|
+
1 /* UPDATE */,
|
|
3017
|
+
itemData?.id,
|
|
3018
|
+
filterFieldDirty({
|
|
3019
|
+
id: itemData?.id,
|
|
3020
|
+
viewData,
|
|
3021
|
+
formValues: itemData,
|
|
3022
|
+
dirtyFields: itemDirty,
|
|
3023
|
+
model: viewData?.models?.[model]?.[key]?.relation,
|
|
3024
|
+
defaultData: {}
|
|
3025
|
+
})
|
|
3026
|
+
]);
|
|
3027
|
+
}
|
|
3028
|
+
});
|
|
3029
|
+
}
|
|
3030
|
+
});
|
|
3031
|
+
(defaultData[key] ?? []).forEach((item) => {
|
|
3032
|
+
if (!(formValues[key] ?? []).find(
|
|
3033
|
+
(itemData) => itemData?.id === item?.id
|
|
3034
|
+
)) {
|
|
3035
|
+
lineData.push([2 /* DELETE */, item?.id, item]);
|
|
3036
|
+
}
|
|
3037
|
+
});
|
|
3038
|
+
data[key] = lineData;
|
|
3039
|
+
} else if (viewData?.models?.[model]?.[key]?.type === "many2many" /* MANY2MANY */) {
|
|
3040
|
+
const lineData = [];
|
|
3041
|
+
(formValues[key] || []).forEach((itemData) => {
|
|
3042
|
+
if (itemData?.id) {
|
|
3043
|
+
lineData.push([4 /* NO_CHANGE */, itemData?.id]);
|
|
3044
|
+
}
|
|
3045
|
+
});
|
|
3046
|
+
(defaultData[key] ?? []).forEach((item) => {
|
|
3047
|
+
if (!(formValues[key] ?? []).find(
|
|
3048
|
+
(itemData) => itemData?.id === item?.id
|
|
3049
|
+
)) {
|
|
3050
|
+
lineData.push([3 /* UNLINK */, item?.id]);
|
|
3051
|
+
}
|
|
3052
|
+
});
|
|
3053
|
+
data[key] = lineData;
|
|
3054
|
+
} else {
|
|
3055
|
+
if (id && (typeof dirtyFields?.[key] === "object" && !dirtyFields?.[key]?.id || typeof dirtyFields[key] !== "object" && !dirtyFields[key])) {
|
|
3056
|
+
delete data[key];
|
|
3057
|
+
} else {
|
|
3058
|
+
if (!data[key]) {
|
|
3059
|
+
delete data[key];
|
|
3060
|
+
} else {
|
|
3061
|
+
data[key] = formValues?.[key]?.display_name ? formValues?.[key]?.id : formValues?.[key];
|
|
3062
|
+
}
|
|
3063
|
+
}
|
|
3064
|
+
}
|
|
3065
|
+
}
|
|
3066
|
+
return data;
|
|
3067
|
+
};
|
|
3068
|
+
var mergeObjects = (object1, object2) => {
|
|
3069
|
+
if (!object1 || !object2) return void 0;
|
|
3070
|
+
const mergedObject = { ...object2 };
|
|
3071
|
+
Object.keys(object1).forEach((key) => {
|
|
3072
|
+
if (Array.isArray(object1[key]) && Array.isArray(object2[key])) {
|
|
3073
|
+
mergedObject[key] = object2[key].map((item, index) => {
|
|
3074
|
+
if (object1[key][index]) {
|
|
3075
|
+
return {
|
|
3076
|
+
...item,
|
|
3077
|
+
...object1[key][index]
|
|
3078
|
+
};
|
|
3079
|
+
}
|
|
3080
|
+
return item;
|
|
3081
|
+
});
|
|
3082
|
+
} else if (typeof object1[key] === "object" && typeof object2[key] === "object" && object1[key] !== null && object2[key] !== null) {
|
|
3083
|
+
mergedObject[key] = mergeObjects(object1[key], object2[key]);
|
|
3084
|
+
} else {
|
|
3085
|
+
mergedObject[key] = object1[key] !== void 0 ? object1[key] : object2[key];
|
|
3086
|
+
}
|
|
3087
|
+
});
|
|
3088
|
+
if (object2) {
|
|
3089
|
+
Object.keys(object2).forEach((key) => {
|
|
3090
|
+
if (!mergedObject.hasOwnProperty(key)) {
|
|
3091
|
+
mergedObject[key] = object2[key];
|
|
3092
|
+
}
|
|
3093
|
+
});
|
|
3094
|
+
}
|
|
3095
|
+
return mergedObject;
|
|
3096
|
+
};
|
|
3097
|
+
var formatUrlPath = ({
|
|
3098
|
+
viewType,
|
|
3099
|
+
aid,
|
|
3100
|
+
model,
|
|
3101
|
+
id,
|
|
3102
|
+
actionPath
|
|
3103
|
+
}) => {
|
|
3104
|
+
let _url = `/${viewType}/${actionPath}?aid=${aid}&model=${model}`;
|
|
3105
|
+
if (id) {
|
|
3106
|
+
_url += `&id=${id}`;
|
|
3107
|
+
}
|
|
3108
|
+
return _url;
|
|
3109
|
+
};
|
|
3110
|
+
var removeUndefinedFields = (obj) => {
|
|
3111
|
+
const newObj = {};
|
|
3112
|
+
for (const key in obj) {
|
|
3113
|
+
if (obj[key] !== void 0) {
|
|
3114
|
+
newObj[key] = obj[key];
|
|
3115
|
+
}
|
|
3116
|
+
}
|
|
3117
|
+
return newObj;
|
|
3118
|
+
};
|
|
3119
|
+
var useTabModel = (viewData, onchangeData) => {
|
|
3120
|
+
const tabsData = viewData?.views?.form?.tabs?.filter((val) => {
|
|
3121
|
+
if (!val) return null;
|
|
3122
|
+
const hide = checkDomain(onchangeData, val.invisible);
|
|
3123
|
+
if (!hide) {
|
|
3124
|
+
return val;
|
|
3125
|
+
}
|
|
3126
|
+
return false;
|
|
3127
|
+
}) || [];
|
|
3128
|
+
return tabsData;
|
|
3129
|
+
};
|
|
2263
3130
|
var isBase64File = (str) => {
|
|
2264
3131
|
try {
|
|
2265
3132
|
const dataUriPattern = /^data:([a-zA-Z]+\/[a-zA-Z0-9-.+]+)?;base64,/;
|
|
@@ -2275,6 +3142,69 @@ var isBase64File = (str) => {
|
|
|
2275
3142
|
return false;
|
|
2276
3143
|
}
|
|
2277
3144
|
};
|
|
3145
|
+
var isBase64Image = (str) => {
|
|
3146
|
+
const base64Regex = /^data:image\/(png|jpeg|jpg|gif|webp);base64,/;
|
|
3147
|
+
if (!base64Regex.test(str)) {
|
|
3148
|
+
return false;
|
|
3149
|
+
}
|
|
3150
|
+
try {
|
|
3151
|
+
const base64Data = str.split(",")[1];
|
|
3152
|
+
return !!base64Data && atob(base64Data).length > 0;
|
|
3153
|
+
} catch (error) {
|
|
3154
|
+
return false;
|
|
3155
|
+
}
|
|
3156
|
+
};
|
|
3157
|
+
var checkIsImageLink = (url) => {
|
|
3158
|
+
const imageExtensions = /\.(jpg|jpeg|png|gif|bmp|webp|svg|tiff|ico)$/i;
|
|
3159
|
+
return imageExtensions.test(url) || isBase64Image(url);
|
|
3160
|
+
};
|
|
3161
|
+
var formatFileSize = (size) => {
|
|
3162
|
+
if (size < 1024) return `${size} B`;
|
|
3163
|
+
const i = Math.floor(Math.log(size) / Math.log(1024));
|
|
3164
|
+
const sizes = ["B", "KB", "MB", "GB", "TB"];
|
|
3165
|
+
return `${(size / Math.pow(1024, i)).toFixed(2)} ${sizes[i]}`;
|
|
3166
|
+
};
|
|
3167
|
+
var getSubdomain = (url = window.location.href) => {
|
|
3168
|
+
const parts = url?.split(".");
|
|
3169
|
+
if (parts.length > 2) {
|
|
3170
|
+
return parts[0].replace("https://", "").replace("http://", "");
|
|
3171
|
+
}
|
|
3172
|
+
return null;
|
|
3173
|
+
};
|
|
3174
|
+
var resequence = (arr, start, end) => {
|
|
3175
|
+
if (start < 0 || start >= arr.length || end < 0 || end >= arr.length) {
|
|
3176
|
+
return [];
|
|
3177
|
+
}
|
|
3178
|
+
const [element] = arr.splice(start, 1);
|
|
3179
|
+
arr.splice(end, 0, element);
|
|
3180
|
+
return arr.slice(Math.min(start, end), Math.max(start, end) + 1);
|
|
3181
|
+
};
|
|
3182
|
+
var getOffSet = (arr, start, end) => {
|
|
3183
|
+
if (start < 0 || start >= arr.length || end < 0 || end >= arr.length) {
|
|
3184
|
+
return 0;
|
|
3185
|
+
}
|
|
3186
|
+
if (start > end) {
|
|
3187
|
+
return end;
|
|
3188
|
+
}
|
|
3189
|
+
return arr.slice(0, start).length;
|
|
3190
|
+
};
|
|
3191
|
+
var copyTextToClipboard = async (text) => {
|
|
3192
|
+
if ("clipboard" in navigator) {
|
|
3193
|
+
return await navigator.clipboard.writeText(text);
|
|
3194
|
+
} else {
|
|
3195
|
+
const textArea = document.createElement("textarea");
|
|
3196
|
+
textArea.value = text;
|
|
3197
|
+
textArea.style.position = "fixed";
|
|
3198
|
+
document.body.appendChild(textArea);
|
|
3199
|
+
textArea.focus();
|
|
3200
|
+
textArea.select();
|
|
3201
|
+
try {
|
|
3202
|
+
document.execCommand("copy");
|
|
3203
|
+
} finally {
|
|
3204
|
+
document.body.removeChild(textArea);
|
|
3205
|
+
}
|
|
3206
|
+
}
|
|
3207
|
+
};
|
|
2278
3208
|
var updateTokenParamInOriginalRequest = (originalRequest, newAccessToken) => {
|
|
2279
3209
|
if (!originalRequest.data) return originalRequest.data;
|
|
2280
3210
|
if (typeof originalRequest.data === "string") {
|
|
@@ -2294,6 +3224,41 @@ var updateTokenParamInOriginalRequest = (originalRequest, newAccessToken) => {
|
|
|
2294
3224
|
}
|
|
2295
3225
|
return originalRequest.data;
|
|
2296
3226
|
};
|
|
3227
|
+
var isObjectEmpty = (obj) => {
|
|
3228
|
+
return Object.keys(obj).length === 0;
|
|
3229
|
+
};
|
|
3230
|
+
var useField = (props) => {
|
|
3231
|
+
const [invisible, setInvisible] = (0, import_react.useState)(true);
|
|
3232
|
+
const [required, setRequired] = (0, import_react.useState)(false);
|
|
3233
|
+
const [readonly, setReadOnly] = (0, import_react.useState)(false);
|
|
3234
|
+
const {
|
|
3235
|
+
invisible: inv,
|
|
3236
|
+
required: req,
|
|
3237
|
+
readonly: rea,
|
|
3238
|
+
onchangeData,
|
|
3239
|
+
rootField,
|
|
3240
|
+
index,
|
|
3241
|
+
name
|
|
3242
|
+
} = props;
|
|
3243
|
+
const nameField = rootField ? `${rootField?.name}.${index}.${name}` : null;
|
|
3244
|
+
(0, import_react.useEffect)(() => {
|
|
3245
|
+
if (onchangeData && Object.keys(onchangeData).length > 0) {
|
|
3246
|
+
setRequired(
|
|
3247
|
+
typeof req === "object" ? matchDomains(onchangeData, req) : checkDomain(onchangeData, req)
|
|
3248
|
+
);
|
|
3249
|
+
setInvisible(matchDomains(onchangeData, inv));
|
|
3250
|
+
setReadOnly(
|
|
3251
|
+
typeof req === "object" ? matchDomains(onchangeData, rea) : checkDomain(onchangeData, rea)
|
|
3252
|
+
);
|
|
3253
|
+
}
|
|
3254
|
+
}, [onchangeData]);
|
|
3255
|
+
return {
|
|
3256
|
+
invisible,
|
|
3257
|
+
required,
|
|
3258
|
+
readonly,
|
|
3259
|
+
nameField
|
|
3260
|
+
};
|
|
3261
|
+
};
|
|
2297
3262
|
|
|
2298
3263
|
// src/utils/storage/local-storage.ts
|
|
2299
3264
|
var localStorageUtils = () => {
|
|
@@ -2526,6 +3491,7 @@ var breadcrumbsSlice = (0, import_toolkit.createSlice)({
|
|
|
2526
3491
|
}
|
|
2527
3492
|
});
|
|
2528
3493
|
var { setBreadCrumbs } = breadcrumbsSlice.actions;
|
|
3494
|
+
var selectBreadCrumbs = (state) => state.breadcrumbs;
|
|
2529
3495
|
var breadcrums_slice_default = breadcrumbsSlice.reducer;
|
|
2530
3496
|
|
|
2531
3497
|
// src/store/reducers/env-slice/index.ts
|
|
@@ -2594,6 +3560,7 @@ var {
|
|
|
2594
3560
|
setConfig,
|
|
2595
3561
|
setEnvFile
|
|
2596
3562
|
} = envSlice.actions;
|
|
3563
|
+
var selectEnv = (state) => state.env;
|
|
2597
3564
|
var env_slice_default = envSlice.reducer;
|
|
2598
3565
|
|
|
2599
3566
|
// src/store/reducers/excel-slice/index.ts
|
|
@@ -2638,6 +3605,7 @@ var {
|
|
|
2638
3605
|
setSelectedFile,
|
|
2639
3606
|
setErrorData
|
|
2640
3607
|
} = excelSlice.actions;
|
|
3608
|
+
var selectExcel = (state) => state.excel;
|
|
2641
3609
|
var excel_slice_default = excelSlice.reducer;
|
|
2642
3610
|
|
|
2643
3611
|
// src/store/reducers/form-slice/index.ts
|
|
@@ -2687,6 +3655,7 @@ var {
|
|
|
2687
3655
|
setListSubject,
|
|
2688
3656
|
setDataUser
|
|
2689
3657
|
} = formSlice.actions;
|
|
3658
|
+
var selectForm = (state) => state.form;
|
|
2690
3659
|
var form_slice_default = formSlice.reducer;
|
|
2691
3660
|
|
|
2692
3661
|
// src/store/reducers/header-slice/index.ts
|
|
@@ -2706,6 +3675,7 @@ var headerSlice = (0, import_toolkit5.createSlice)({
|
|
|
2706
3675
|
}
|
|
2707
3676
|
});
|
|
2708
3677
|
var { setAllowedCompanyIds, setHeader } = headerSlice.actions;
|
|
3678
|
+
var selectHeader = (state) => state.header;
|
|
2709
3679
|
var header_slice_default = headerSlice.reducer;
|
|
2710
3680
|
|
|
2711
3681
|
// src/store/reducers/list-slice/index.ts
|
|
@@ -2771,6 +3741,7 @@ var {
|
|
|
2771
3741
|
setTransferDetail,
|
|
2772
3742
|
setDomainTable
|
|
2773
3743
|
} = listSlice.actions;
|
|
3744
|
+
var selectList = (state) => state.list;
|
|
2774
3745
|
var list_slice_default = listSlice.reducer;
|
|
2775
3746
|
|
|
2776
3747
|
// src/store/reducers/login-slice/index.ts
|
|
@@ -2796,6 +3767,7 @@ var loginSlice = (0, import_toolkit7.createSlice)({
|
|
|
2796
3767
|
}
|
|
2797
3768
|
});
|
|
2798
3769
|
var { setDb, setRedirectTo, setForgotPasswordUrl } = loginSlice.actions;
|
|
3770
|
+
var selectLogin = (state) => state.login;
|
|
2799
3771
|
var login_slice_default = loginSlice.reducer;
|
|
2800
3772
|
|
|
2801
3773
|
// src/store/reducers/navbar-slice/index.ts
|
|
@@ -2825,6 +3797,7 @@ var navbarSlice = (0, import_toolkit8.createSlice)({
|
|
|
2825
3797
|
}
|
|
2826
3798
|
});
|
|
2827
3799
|
var { setMenuFocus, setMenuFocusAction, setNavbarWidth, setMenuList } = navbarSlice.actions;
|
|
3800
|
+
var selectNavbar = (state) => state.navbar;
|
|
2828
3801
|
var navbar_slice_default = navbarSlice.reducer;
|
|
2829
3802
|
|
|
2830
3803
|
// src/store/reducers/profile-slice/index.ts
|
|
@@ -2842,6 +3815,7 @@ var profileSlice = (0, import_toolkit9.createSlice)({
|
|
|
2842
3815
|
}
|
|
2843
3816
|
});
|
|
2844
3817
|
var { setProfile } = profileSlice.actions;
|
|
3818
|
+
var selectProfile = (state) => state.profile;
|
|
2845
3819
|
var profile_slice_default = profileSlice.reducer;
|
|
2846
3820
|
|
|
2847
3821
|
// src/store/reducers/search-slice/index.ts
|
|
@@ -2928,6 +3902,8 @@ var {
|
|
|
2928
3902
|
setGroupBy,
|
|
2929
3903
|
clearSearchMap
|
|
2930
3904
|
} = searchSlice.actions;
|
|
3905
|
+
var selectSearch = (state) => state.search;
|
|
3906
|
+
var selectSearchMap = (state) => state.search.searchMap;
|
|
2931
3907
|
var search_slice_default = searchSlice.reducer;
|
|
2932
3908
|
|
|
2933
3909
|
// src/store/store.ts
|
|
@@ -3122,6 +4098,10 @@ var envStore = (0, import_toolkit11.configureStore)({
|
|
|
3122
4098
|
})
|
|
3123
4099
|
});
|
|
3124
4100
|
|
|
4101
|
+
// src/store/index.ts
|
|
4102
|
+
var useAppDispatch = import_react_redux.useDispatch;
|
|
4103
|
+
var useAppSelector = import_react_redux.useSelector;
|
|
4104
|
+
|
|
3125
4105
|
// src/environment/EnvStore.ts
|
|
3126
4106
|
var EnvStore = class {
|
|
3127
4107
|
envStore;
|
|
@@ -3197,12 +4177,22 @@ var EnvStore = class {
|
|
|
3197
4177
|
}
|
|
3198
4178
|
};
|
|
3199
4179
|
var env = null;
|
|
4180
|
+
function initEnv({
|
|
4181
|
+
localStorageUtils: localStorageUtils2,
|
|
4182
|
+
sessionStorageUtils: sessionStorageUtils2
|
|
4183
|
+
}) {
|
|
4184
|
+
env = new EnvStore(envStore, localStorageUtils2, sessionStorageUtils2);
|
|
4185
|
+
return env;
|
|
4186
|
+
}
|
|
3200
4187
|
function getEnv() {
|
|
3201
4188
|
if (!env)
|
|
3202
4189
|
env = new EnvStore(envStore, localStorageUtils(), sessionStorageUtils());
|
|
3203
4190
|
return env;
|
|
3204
4191
|
}
|
|
3205
4192
|
|
|
4193
|
+
// src/hooks/auth/use-forgot-password.ts
|
|
4194
|
+
var import_react_query = require("@tanstack/react-query");
|
|
4195
|
+
|
|
3206
4196
|
// src/services/action-service/index.ts
|
|
3207
4197
|
var ActionService = {
|
|
3208
4198
|
// Load Action
|
|
@@ -4229,7 +5219,7 @@ var model_service_default = ModelService;
|
|
|
4229
5219
|
var UserService = {
|
|
4230
5220
|
async getProfile(path) {
|
|
4231
5221
|
const env2 = getEnv();
|
|
4232
|
-
return env2
|
|
5222
|
+
return env2?.requests?.get(path ?? "/userinfo" /* PROFILE_PATH */, {
|
|
4233
5223
|
headers: {
|
|
4234
5224
|
"Content-Type": "application/x-www-form-urlencoded"
|
|
4235
5225
|
}
|
|
@@ -5946,8 +6936,212 @@ var useVerifyTotp = () => {
|
|
|
5946
6936
|
});
|
|
5947
6937
|
};
|
|
5948
6938
|
var use_verify_totp_default = useVerifyTotp;
|
|
6939
|
+
|
|
6940
|
+
// src/provider/react-query-provider.tsx
|
|
6941
|
+
var import_react_query67 = require("@tanstack/react-query");
|
|
6942
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
6943
|
+
var ReactQueryProvider = ({ children }) => {
|
|
6944
|
+
const queryClient = new import_react_query67.QueryClient({
|
|
6945
|
+
defaultOptions: {
|
|
6946
|
+
queries: {
|
|
6947
|
+
// placeholderData: keepPreviousData,
|
|
6948
|
+
refetchOnWindowFocus: false,
|
|
6949
|
+
refetchOnMount: false,
|
|
6950
|
+
refetchOnReconnect: false,
|
|
6951
|
+
retry: false
|
|
6952
|
+
}
|
|
6953
|
+
}
|
|
6954
|
+
});
|
|
6955
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_query67.QueryClientProvider, { client: queryClient, children });
|
|
6956
|
+
};
|
|
6957
|
+
|
|
6958
|
+
// src/provider/redux-provider.tsx
|
|
6959
|
+
var import_react_redux2 = require("react-redux");
|
|
6960
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
6961
|
+
var ReduxProvider = ({ children }) => {
|
|
6962
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react_redux2.Provider, { store: envStore, children });
|
|
6963
|
+
};
|
|
6964
|
+
|
|
6965
|
+
// src/provider/main-provider.tsx
|
|
6966
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
6967
|
+
var MainProvider = ({ children }) => {
|
|
6968
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(ReduxProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(ReactQueryProvider, { children }) });
|
|
6969
|
+
};
|
|
6970
|
+
|
|
6971
|
+
// src/provider/version-gate-provider.tsx
|
|
6972
|
+
var import_react2 = require("react");
|
|
6973
|
+
var import_react_query68 = require("@tanstack/react-query");
|
|
6974
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
6975
|
+
var VersionGate = ({ children }) => {
|
|
6976
|
+
const queryClient = (0, import_react_query68.useQueryClient)();
|
|
6977
|
+
const [ready, setReady] = (0, import_react2.useState)(false);
|
|
6978
|
+
(0, import_react2.useEffect)(() => {
|
|
6979
|
+
const clearVersion = () => {
|
|
6980
|
+
queryClient.clear();
|
|
6981
|
+
localStorage.removeItem("__api_version__");
|
|
6982
|
+
};
|
|
6983
|
+
const validateVersion = async () => {
|
|
6984
|
+
const serverVersion = await view_service_default.getVersion();
|
|
6985
|
+
const cached = localStorage.getItem("__api_version__");
|
|
6986
|
+
if (cached !== serverVersion?.api_version) {
|
|
6987
|
+
clearVersion();
|
|
6988
|
+
localStorage.setItem("__api_version__", serverVersion?.api_version);
|
|
6989
|
+
} else {
|
|
6990
|
+
console.log("Api version:", serverVersion?.api_version);
|
|
6991
|
+
}
|
|
6992
|
+
setReady(true);
|
|
6993
|
+
};
|
|
6994
|
+
validateVersion();
|
|
6995
|
+
if (typeof window !== "undefined") {
|
|
6996
|
+
const onKey = (e) => {
|
|
6997
|
+
const key = e.key.toLowerCase();
|
|
6998
|
+
const isHardRefresh = (key === "f5" || key === "r") && e.ctrlKey && (key !== "r" || e.shiftKey) || key === "r" && e.metaKey && e.shiftKey || key === "r" && e.metaKey && e.altKey;
|
|
6999
|
+
if (isHardRefresh) clearVersion();
|
|
7000
|
+
};
|
|
7001
|
+
window.addEventListener("keydown", onKey);
|
|
7002
|
+
return () => window.removeEventListener("keydown", onKey);
|
|
7003
|
+
}
|
|
7004
|
+
}, [queryClient]);
|
|
7005
|
+
return ready ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children }) : null;
|
|
7006
|
+
};
|
|
5949
7007
|
// Annotate the CommonJS export names for ESM import in node:
|
|
5950
7008
|
0 && (module.exports = {
|
|
7009
|
+
ActionService,
|
|
7010
|
+
AuthService,
|
|
7011
|
+
CompanyService,
|
|
7012
|
+
ComponentType,
|
|
7013
|
+
EnvStore,
|
|
7014
|
+
ExcelService,
|
|
7015
|
+
FieldTypeConstants,
|
|
7016
|
+
FormService,
|
|
7017
|
+
KanbanService,
|
|
7018
|
+
KeyConstants,
|
|
7019
|
+
MainProvider,
|
|
7020
|
+
MethodConstants,
|
|
7021
|
+
MethodType,
|
|
7022
|
+
ModelConstants,
|
|
7023
|
+
ModelService,
|
|
7024
|
+
ReactQueryProvider,
|
|
7025
|
+
SearchType,
|
|
7026
|
+
UriConstants,
|
|
7027
|
+
UserService,
|
|
7028
|
+
VersionGate,
|
|
7029
|
+
ViewService,
|
|
7030
|
+
WIDGETAVATAR,
|
|
7031
|
+
WIDGETCOLOR,
|
|
7032
|
+
WIDGETCURRENCY,
|
|
7033
|
+
WIDGETNOSTRING,
|
|
7034
|
+
WIDGETSTATUS,
|
|
7035
|
+
WesapError,
|
|
7036
|
+
axiosClient,
|
|
7037
|
+
breadcrumbsSlice,
|
|
7038
|
+
checkIsImageLink,
|
|
7039
|
+
clearSearchMap,
|
|
7040
|
+
convertFloatToTime,
|
|
7041
|
+
convertTimeToFloat,
|
|
7042
|
+
copyTextToClipboard,
|
|
7043
|
+
domainHelper,
|
|
7044
|
+
env,
|
|
7045
|
+
envSlice,
|
|
7046
|
+
envStore,
|
|
7047
|
+
evalJSONContext,
|
|
7048
|
+
evalJSONDomain,
|
|
7049
|
+
excelSlice,
|
|
7050
|
+
filterFieldDirty,
|
|
7051
|
+
formSlice,
|
|
7052
|
+
formatCurrency,
|
|
7053
|
+
formatDate,
|
|
7054
|
+
formatFileSize,
|
|
7055
|
+
formatSortingString,
|
|
7056
|
+
formatUrlPath,
|
|
7057
|
+
getEnv,
|
|
7058
|
+
getFieldsOnChange,
|
|
7059
|
+
getOffSet,
|
|
7060
|
+
getSubdomain,
|
|
7061
|
+
handleError,
|
|
7062
|
+
headerSlice,
|
|
7063
|
+
initEnv,
|
|
7064
|
+
isBase64File,
|
|
7065
|
+
isBase64Image,
|
|
7066
|
+
isObjectEmpty,
|
|
7067
|
+
listSlice,
|
|
7068
|
+
loginSlice,
|
|
7069
|
+
mergeObjects,
|
|
7070
|
+
navbarSlice,
|
|
7071
|
+
profileSlice,
|
|
7072
|
+
removeKeyFromSearchMap,
|
|
7073
|
+
removeUndefinedFields,
|
|
7074
|
+
resequence,
|
|
7075
|
+
searchSlice,
|
|
7076
|
+
selectBreadCrumbs,
|
|
7077
|
+
selectEnv,
|
|
7078
|
+
selectExcel,
|
|
7079
|
+
selectForm,
|
|
7080
|
+
selectHeader,
|
|
7081
|
+
selectList,
|
|
7082
|
+
selectLogin,
|
|
7083
|
+
selectNavbar,
|
|
7084
|
+
selectProfile,
|
|
7085
|
+
selectSearch,
|
|
7086
|
+
selectSearchMap,
|
|
7087
|
+
setAllowCompanies,
|
|
7088
|
+
setAllowedCompanyIds,
|
|
7089
|
+
setBreadCrumbs,
|
|
7090
|
+
setCompanies,
|
|
7091
|
+
setConfig,
|
|
7092
|
+
setDataParse,
|
|
7093
|
+
setDataUser,
|
|
7094
|
+
setDb,
|
|
7095
|
+
setDefaultCompany,
|
|
7096
|
+
setDomainTable,
|
|
7097
|
+
setEnv,
|
|
7098
|
+
setEnvFile,
|
|
7099
|
+
setErrorData,
|
|
7100
|
+
setFieldTranslate,
|
|
7101
|
+
setFields,
|
|
7102
|
+
setFilterBy,
|
|
7103
|
+
setFirstDomain,
|
|
7104
|
+
setForgotPasswordUrl,
|
|
7105
|
+
setFormSubmitComponent,
|
|
7106
|
+
setGroupBy,
|
|
7107
|
+
setGroupByDomain,
|
|
7108
|
+
setHeader,
|
|
7109
|
+
setHoveredIndexSearchList,
|
|
7110
|
+
setIdFile,
|
|
7111
|
+
setIndexRowTableModal,
|
|
7112
|
+
setIsFileLoaded,
|
|
7113
|
+
setIsShowModalTranslate,
|
|
7114
|
+
setIsShowingModalDetail,
|
|
7115
|
+
setIsUpdateTableModal,
|
|
7116
|
+
setLang,
|
|
7117
|
+
setListSubject,
|
|
7118
|
+
setLoadingImport,
|
|
7119
|
+
setMenuFocus,
|
|
7120
|
+
setMenuFocusAction,
|
|
7121
|
+
setMenuList,
|
|
7122
|
+
setNavbarWidth,
|
|
7123
|
+
setOrder,
|
|
7124
|
+
setPage,
|
|
7125
|
+
setPageLimit,
|
|
7126
|
+
setProfile,
|
|
7127
|
+
setRedirectTo,
|
|
7128
|
+
setSearchBy,
|
|
7129
|
+
setSearchMap,
|
|
7130
|
+
setSearchString,
|
|
7131
|
+
setSelectedFile,
|
|
7132
|
+
setSelectedRadioKey,
|
|
7133
|
+
setSelectedRowKeys,
|
|
7134
|
+
setSelectedTags,
|
|
7135
|
+
setTransferDetail,
|
|
7136
|
+
setUid,
|
|
7137
|
+
setUser,
|
|
7138
|
+
setViewDataStore,
|
|
7139
|
+
stringToColor,
|
|
7140
|
+
toQueryString,
|
|
7141
|
+
updateSearchMap,
|
|
7142
|
+
updateTokenParamInOriginalRequest,
|
|
7143
|
+
useAppDispatch,
|
|
7144
|
+
useAppSelector,
|
|
5951
7145
|
useButton,
|
|
5952
7146
|
useChangeStatus,
|
|
5953
7147
|
useDelete,
|
|
@@ -5955,6 +7149,7 @@ var use_verify_totp_default = useVerifyTotp;
|
|
|
5955
7149
|
useDuplicateRecord,
|
|
5956
7150
|
useExecuteImport,
|
|
5957
7151
|
useExportExcel,
|
|
7152
|
+
useField,
|
|
5958
7153
|
useForgotPassword,
|
|
5959
7154
|
useForgotPasswordSSO,
|
|
5960
7155
|
useGet2FAMethods,
|
|
@@ -6010,10 +7205,12 @@ var use_verify_totp_default = useVerifyTotp;
|
|
|
6010
7205
|
useSettingsWebRead2fa,
|
|
6011
7206
|
useSignInSSO,
|
|
6012
7207
|
useSwitchLocale,
|
|
7208
|
+
useTabModel,
|
|
6013
7209
|
useUpdatePassword,
|
|
6014
7210
|
useUploadFile,
|
|
6015
7211
|
useUploadIdFile,
|
|
6016
7212
|
useUploadImage,
|
|
6017
7213
|
useVerify2FA,
|
|
6018
|
-
useVerifyTotp
|
|
7214
|
+
useVerifyTotp,
|
|
7215
|
+
validateAndParseDate
|
|
6019
7216
|
});
|