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