@fctc/widget-logic 2.7.0 → 2.7.2

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.js CHANGED
@@ -55,7 +55,7 @@ var require_moment = __commonJS({
55
55
  function hasOwnProp(a, b) {
56
56
  return Object.prototype.hasOwnProperty.call(a, b);
57
57
  }
58
- function isObjectEmpty4(obj) {
58
+ function isObjectEmpty5(obj) {
59
59
  if (Object.getOwnPropertyNames) {
60
60
  return Object.getOwnPropertyNames(obj).length === 0;
61
61
  } else {
@@ -2194,7 +2194,7 @@ var require_moment = __commonJS({
2194
2194
  strict = locale2;
2195
2195
  locale2 = void 0;
2196
2196
  }
2197
- if (isObject(input) && isObjectEmpty4(input) || isArray(input) && input.length === 0) {
2197
+ if (isObject(input) && isObjectEmpty5(input) || isArray(input) && input.length === 0) {
2198
2198
  input = void 0;
2199
2199
  }
2200
2200
  c._isAMomentObject = true;
@@ -2613,7 +2613,7 @@ var require_moment = __commonJS({
2613
2613
  return isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === void 0;
2614
2614
  }
2615
2615
  function isMomentInputObject(input) {
2616
- var objectTest = isObject(input) && !isObjectEmpty4(input), propertyTest = false, properties = [
2616
+ var objectTest = isObject(input) && !isObjectEmpty5(input), propertyTest = false, properties = [
2617
2617
  "years",
2618
2618
  "year",
2619
2619
  "y",
@@ -2655,7 +2655,7 @@ var require_moment = __commonJS({
2655
2655
  return arrayTest && dataTypeTest;
2656
2656
  }
2657
2657
  function isCalendarSpec(input) {
2658
- var objectTest = isObject(input) && !isObjectEmpty4(input), propertyTest = false, properties = [
2658
+ var objectTest = isObject(input) && !isObjectEmpty5(input), propertyTest = false, properties = [
2659
2659
  "sameDay",
2660
2660
  "nextDay",
2661
2661
  "lastDay",
@@ -4164,7 +4164,7 @@ var import_hooks2 = require("@fctc/interface-logic/hooks");
4164
4164
  var import_react8 = require("react");
4165
4165
 
4166
4166
  // src/hooks/core/use-menu.ts
4167
- var import_react2 = require("react");
4167
+ var import_react3 = require("react");
4168
4168
 
4169
4169
  // src/hooks/core/use-call-action.ts
4170
4170
  var import_react = require("react");
@@ -4212,92 +4212,6 @@ var useCallAction = () => {
4212
4212
  return [actionData, callAction];
4213
4213
  };
4214
4214
 
4215
- // src/hooks/core/use-menu.ts
4216
- var useMenu = ({
4217
- context,
4218
- specification
4219
- }) => {
4220
- const { env } = (0, provider_exports.useEnv)();
4221
- const { useGetMenu: useGetMenu2 } = (0, provider_exports.useService)();
4222
- const [action, callAction] = useCallAction();
4223
- const menuData = useGetMenu2(
4224
- context,
4225
- specification,
4226
- !!context && Object.keys(context).length > 0
4227
- );
4228
- const [menuId, setMenuId] = (0, import_react2.useState)(void 0);
4229
- const configedIconData = (0, import_react2.useMemo)(() => {
4230
- const data = menuData.data;
4231
- return data?.map((item) => {
4232
- return {
4233
- ...item,
4234
- child_id: item?.child_id?.map((child) => {
4235
- return {
4236
- ...child,
4237
- url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + child.url_icon
4238
- };
4239
- }) ?? [],
4240
- url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + item.url_icon
4241
- };
4242
- });
4243
- }, [menuData.data, env?.envFile?.VITE_APP_DOMAIN]);
4244
- const handleChangeMenu = async ({ menu }) => {
4245
- const aidMenu = menu?.action?.id?.id;
4246
- if (menu) {
4247
- setMenuId(menu.id?.toString() ?? "");
4248
- }
4249
- if (aidMenu) {
4250
- const actionResponse = await callAction({
4251
- aid: Number(aidMenu)
4252
- });
4253
- return actionResponse;
4254
- }
4255
- };
4256
- return {
4257
- ...menuData,
4258
- data: configedIconData,
4259
- action: { handleChangeMenu },
4260
- state: { menuId, action },
4261
- context,
4262
- isLoading: menuData.isLoading,
4263
- isError: menuData.isError,
4264
- error: menuData.error,
4265
- refetch: menuData.refetch
4266
- };
4267
- };
4268
-
4269
- // src/hooks/core/use-detail.ts
4270
- var import_react_query = require("@tanstack/react-query");
4271
- var import_react3 = require("react");
4272
- var useDetail = (sub) => {
4273
- const { setUserInfo, env } = (0, provider_exports.useEnv)();
4274
- const { useGetDetail: useGetDetail2 } = (0, provider_exports.useService)();
4275
- const fetchGetDetail = useGetDetail2();
4276
- const userDetailQuery = (0, import_react_query.useQuery)({
4277
- queryKey: ["userDetailQuery", sub],
4278
- queryFn: () => {
4279
- return fetchGetDetail.mutateAsync({
4280
- model: "res.users",
4281
- ids: [sub],
4282
- specification: { image_256: {} }
4283
- });
4284
- },
4285
- enabled: !!sub
4286
- });
4287
- (0, import_react3.useEffect)(() => {
4288
- if (userDetailQuery.data) {
4289
- const userPicture = userDetailQuery.data;
4290
- setUserInfo({ ...env?.user, image: userPicture?.[0]?.image_256 });
4291
- }
4292
- }, [userDetailQuery.isFetched]);
4293
- return { ...userDetailQuery };
4294
- };
4295
-
4296
- // src/hooks/core/use-profile.ts
4297
- var import_react_query2 = require("@tanstack/react-query");
4298
- var import_react5 = require("react");
4299
- var import_react_i18next = require("react-i18next");
4300
-
4301
4215
  // src/utils.ts
4302
4216
  var utils_exports = {};
4303
4217
  __export(utils_exports, {
@@ -4319,7 +4233,7 @@ var languages = [
4319
4233
  ];
4320
4234
 
4321
4235
  // src/utils/function.ts
4322
- var import_react4 = require("react");
4236
+ var import_react2 = require("react");
4323
4237
  var countSum = (data, field) => {
4324
4238
  if (!data || !field) return 0;
4325
4239
  return data.reduce(
@@ -4440,7 +4354,7 @@ var STORAGES = {
4440
4354
  USER_INFO: "USER_INFO"
4441
4355
  };
4442
4356
  function useAsyncState(initialValue = [true, null]) {
4443
- return (0, import_react4.useReducer)(
4357
+ return (0, import_react2.useReducer)(
4444
4358
  (_state, action = null) => [false, action],
4445
4359
  initialValue
4446
4360
  );
@@ -4458,7 +4372,7 @@ async function setStorageItemAsync(key, value) {
4458
4372
  }
4459
4373
  function useStorageState(key) {
4460
4374
  const [state, setState] = useAsyncState();
4461
- (0, import_react4.useEffect)(() => {
4375
+ (0, import_react2.useEffect)(() => {
4462
4376
  try {
4463
4377
  const storedValue = localStorage.getItem(key);
4464
4378
  setState(storedValue);
@@ -4466,7 +4380,7 @@ function useStorageState(key) {
4466
4380
  console.error("Local storage is unavailable:", e);
4467
4381
  }
4468
4382
  }, [key]);
4469
- const setValue = (0, import_react4.useCallback)(
4383
+ const setValue = (0, import_react2.useCallback)(
4470
4384
  (value) => {
4471
4385
  setState(value);
4472
4386
  setStorageItemAsync(key, value);
@@ -4479,7 +4393,91 @@ function useStorageState(key) {
4479
4393
  // src/utils.ts
4480
4394
  __reExport(utils_exports, require("@fctc/interface-logic/utils"));
4481
4395
 
4396
+ // src/hooks/core/use-menu.ts
4397
+ var useMenu = ({
4398
+ context,
4399
+ specification
4400
+ }) => {
4401
+ const { env } = (0, provider_exports.useEnv)();
4402
+ const { useGetMenu: useGetMenu2 } = (0, provider_exports.useService)();
4403
+ const [action, callAction] = useCallAction();
4404
+ const menuData = useGetMenu2(
4405
+ context,
4406
+ specification,
4407
+ !!context && !(0, utils_exports.isObjectEmpty)(context)
4408
+ );
4409
+ const [menuId, setMenuId] = (0, import_react3.useState)(void 0);
4410
+ const configedIconData = (0, import_react3.useMemo)(() => {
4411
+ const data = menuData.data;
4412
+ return data?.map((item) => {
4413
+ return {
4414
+ ...item,
4415
+ child_id: item?.child_id?.map((child) => {
4416
+ return {
4417
+ ...child,
4418
+ url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + child.url_icon
4419
+ };
4420
+ }) ?? [],
4421
+ url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + item.url_icon
4422
+ };
4423
+ });
4424
+ }, [menuData.data, env?.envFile?.VITE_APP_DOMAIN]);
4425
+ const handleChangeMenu = async ({ menu }) => {
4426
+ const aidMenu = menu?.action?.id?.id;
4427
+ if (menu) {
4428
+ setMenuId(menu.id?.toString() ?? "");
4429
+ }
4430
+ if (aidMenu) {
4431
+ const actionResponse = await callAction({
4432
+ aid: Number(aidMenu)
4433
+ });
4434
+ return actionResponse;
4435
+ }
4436
+ };
4437
+ return {
4438
+ ...menuData,
4439
+ data: configedIconData,
4440
+ action: { handleChangeMenu },
4441
+ state: { menuId, action },
4442
+ context,
4443
+ isLoading: menuData.isLoading,
4444
+ isError: menuData.isError,
4445
+ error: menuData.error,
4446
+ refetch: menuData.refetch
4447
+ };
4448
+ };
4449
+
4450
+ // src/hooks/core/use-detail.ts
4451
+ var import_react_query = require("@tanstack/react-query");
4452
+ var import_react4 = require("react");
4453
+ var useDetail = (sub) => {
4454
+ const { setUserInfo, env } = (0, provider_exports.useEnv)();
4455
+ const { useGetDetail: useGetDetail2 } = (0, provider_exports.useService)();
4456
+ const fetchGetDetail = useGetDetail2();
4457
+ const userDetailQuery = (0, import_react_query.useQuery)({
4458
+ queryKey: ["userDetailQuery", sub],
4459
+ queryFn: () => {
4460
+ return fetchGetDetail.mutateAsync({
4461
+ model: "res.users",
4462
+ ids: [sub],
4463
+ specification: { image_256: {} }
4464
+ });
4465
+ },
4466
+ enabled: !!sub
4467
+ });
4468
+ (0, import_react4.useEffect)(() => {
4469
+ if (userDetailQuery.data) {
4470
+ const userPicture = userDetailQuery.data;
4471
+ setUserInfo({ ...env?.user, image: userPicture?.[0]?.image_256 });
4472
+ }
4473
+ }, [userDetailQuery.isFetched]);
4474
+ return { ...userDetailQuery };
4475
+ };
4476
+
4482
4477
  // src/hooks/core/use-profile.ts
4478
+ var import_react_query2 = require("@tanstack/react-query");
4479
+ var import_react5 = require("react");
4480
+ var import_react_i18next = require("react-i18next");
4483
4481
  var useProfile = () => {
4484
4482
  const { setUid, setLang, setUserInfo, env } = (0, provider_exports.useEnv)();
4485
4483
  const { useGetProfile: useGetProfile2 } = (0, provider_exports.useService)();
@@ -4527,21 +4525,31 @@ var useUser = () => {
4527
4525
  // src/hooks/core/use-view-v2.ts
4528
4526
  var import_react6 = require("react");
4529
4527
  var useViewV2 = ({
4530
- id,
4528
+ action,
4531
4529
  context,
4532
- views,
4533
- model
4530
+ aid
4534
4531
  }) => {
4535
4532
  const { useGetView: useGetView2 } = (0, provider_exports.useService)();
4536
4533
  const viewParams = (0, import_react6.useMemo)(() => {
4537
- if (views.length === 0) return void 0;
4534
+ if (!action || !action?.res_model) {
4535
+ return void 0;
4536
+ }
4537
+ const actionResult = action;
4538
4538
  return {
4539
- model,
4540
- views,
4539
+ model: String(actionResult?.res_model),
4540
+ views: [
4541
+ ...Array.isArray(actionResult?.views) ? actionResult?.views.map(
4542
+ (view2) => view2[1] === "list" ? [view2[0], "list"] : view2
4543
+ ) : [],
4544
+ [
4545
+ Array.isArray(actionResult?.search_view_id) ? actionResult?.search_view_id[0] : actionResult?.search_view_id,
4546
+ "search"
4547
+ ]
4548
+ ],
4541
4549
  context,
4542
- id
4550
+ id: isNaN(Number(aid)) ? action?.id : aid
4543
4551
  };
4544
- }, [views]);
4552
+ }, [action, context, aid]);
4545
4553
  const view = useGetView2({
4546
4554
  viewParams: viewParams || {},
4547
4555
  enabled: !!viewParams
@@ -4641,22 +4649,10 @@ var AppProvider = ({
4641
4649
  { ...(0, utils_exports.evalJSONContext)(action?.context) }
4642
4650
  ]);
4643
4651
  }, [menuContext, action?.context, env?.context?.lang]);
4644
- const memoViews = (0, import_react8.useMemo)(() => {
4645
- if (!action) return [];
4646
- return [
4647
- ...Array.isArray(action?.views) ? action.views.map(
4648
- (view2) => view2[1] === "list" ? [view2[0], "list"] : view2
4649
- ) : [],
4650
- [
4651
- Array.isArray(action?.search_view_id) ? action.search_view_id[0] : action.search_view_id,
4652
- "search"
4653
- ]
4654
- ];
4655
- }, [action]);
4656
4652
  const view = useViewV2({
4653
+ action,
4657
4654
  context: viewContext,
4658
- views: memoViews,
4659
- model: action?.res_model ? String(action.res_model) : void 0
4655
+ aid
4660
4656
  });
4661
4657
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
4662
4658
  ReactContext.Provider,
@@ -4781,7 +4777,7 @@ var useGetSpecification = ({
4781
4777
 
4782
4778
  // src/hooks/core/use-list-data.ts
4783
4779
  var import_react14 = require("react");
4784
- var import_utils4 = require("@fctc/interface-logic/utils");
4780
+ var import_utils5 = require("@fctc/interface-logic/utils");
4785
4781
 
4786
4782
  // src/hooks/utils/use-click-outside.ts
4787
4783
  var import_react11 = require("react");
@@ -4923,12 +4919,12 @@ var useListData = ({
4923
4919
  if (!viewData || !action || !context) {
4924
4920
  return null;
4925
4921
  }
4926
- const domainParse = type === "calendar" ? getDateRange(currentDate, mode) : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0, import_utils4.evalJSONDomain)(action?.domain, context) : [];
4922
+ const domainParse = type === "calendar" ? getDateRange(currentDate, mode) : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0, import_utils5.evalJSONDomain)(action?.domain, context) : [];
4927
4923
  const limit = type === "calendar" ? 2500 : pageLimit;
4928
4924
  const offset = debouncedPage * pageLimit;
4929
4925
  const fields = type === "calendar" ? convertFieldsToArray(viewData?.views?.calendar?.fields) || [] : typeof groupByList === "object" ? groupByList?.fields : void 0;
4930
4926
  const groupby = typeof groupByList === "object" ? [groupByList?.contexts?.[0]?.group_by] : [];
4931
- const sort = order ? order : viewData?.views?.list?.default_order ? (0, import_utils4.formatSortingString)(viewData?.views?.list?.default_order) : "";
4927
+ const sort = order ? order : viewData?.views?.list?.default_order ? (0, import_utils5.formatSortingString)(viewData?.views?.list?.default_order) : "";
4932
4928
  return {
4933
4929
  model: action.res_model,
4934
4930
  specification,
@@ -4956,7 +4952,7 @@ var useListData = ({
4956
4952
  const list = useGetListData2(
4957
4953
  listDataProps,
4958
4954
  [listDataProps],
4959
- !!listDataProps && !!specification && !(0, import_utils4.isObjectEmpty)(specification)
4955
+ !!listDataProps && !!specification && !(0, import_utils5.isObjectEmpty)(specification)
4960
4956
  );
4961
4957
  return {
4962
4958
  ...list,
@@ -5463,18 +5459,18 @@ var many2oneFieldController = (props) => {
5463
5459
  // src/widget/basic/many2one-button-field/controller.ts
5464
5460
  var import_environment2 = require("@fctc/interface-logic/environment");
5465
5461
  var import_hooks6 = require("@fctc/interface-logic/hooks");
5466
- var import_utils7 = require("@fctc/interface-logic/utils");
5462
+ var import_utils8 = require("@fctc/interface-logic/utils");
5467
5463
  var many2oneButtonController = (props) => {
5468
5464
  const { domain, methods, relation, service, xNode } = props;
5469
5465
  const actionDataString = sessionStorage.getItem("actionData");
5470
5466
  const env = (0, import_environment2.getEnv)();
5471
- const domainObject = (0, import_utils7.evalJSONDomain)(domain, methods?.getValues() || {});
5467
+ const domainObject = (0, import_utils8.evalJSONDomain)(domain, methods?.getValues() || {});
5472
5468
  const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
5473
5469
  const { data: dataOfSelection } = (0, import_hooks6.useGetSelection)({
5474
5470
  data: {
5475
5471
  model: relation ?? "",
5476
5472
  domain: domainObject,
5477
- context: { ...env.context, ...(0, import_utils7.evalJSONContext)(actionData?.context) }
5473
+ context: { ...env.context, ...(0, import_utils8.evalJSONContext)(actionData?.context) }
5478
5474
  },
5479
5475
  queryKey: [`data_${relation}`, domainObject],
5480
5476
  service,
@@ -5491,7 +5487,7 @@ var many2oneButtonController = (props) => {
5491
5487
 
5492
5488
  // src/widget/basic/many2many-field/controller.ts
5493
5489
  var import_react17 = require("react");
5494
- var import_utils8 = require("@fctc/interface-logic/utils");
5490
+ var import_utils9 = require("@fctc/interface-logic/utils");
5495
5491
  var many2manyFieldController = (props) => {
5496
5492
  const {
5497
5493
  relation,
@@ -5552,10 +5548,10 @@ var many2manyFieldController = (props) => {
5552
5548
  return null;
5553
5549
  }, [modelInstance]);
5554
5550
  const default_order = viewResponse && viewResponse?.views?.list?.default_order;
5555
- const optionsObject = tab?.options ? (0, import_utils8.evalJSONContext)(tab?.options) : (options ? (0, import_utils8.evalJSONContext)(options) : {}) || {};
5551
+ const optionsObject = tab?.options ? (0, import_utils9.evalJSONContext)(tab?.options) : (options ? (0, import_utils9.evalJSONContext)(options) : {}) || {};
5556
5552
  const fetchData = async () => {
5557
5553
  try {
5558
- const domainParse = typeof domain === "string" ? (0, import_utils8.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
5554
+ const domainParse = typeof domain === "string" ? (0, import_utils9.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
5559
5555
  setDomainMany2Many(domainParse);
5560
5556
  setPage(0);
5561
5557
  } catch (err) {
@@ -5579,7 +5575,7 @@ var many2manyFieldController = (props) => {
5579
5575
  context: contextObject,
5580
5576
  fields: groupByDomain?.fields,
5581
5577
  groupby: [groupByDomain?.contexts[0]?.group_by],
5582
- sort: order ? order : default_order ? (0, import_utils8.formatSortingString)(default_order) : ""
5578
+ sort: order ? order : default_order ? (0, import_utils9.formatSortingString)(default_order) : ""
5583
5579
  };
5584
5580
  const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5585
5581
  const {
@@ -5643,7 +5639,7 @@ var many2manyFieldController = (props) => {
5643
5639
  // src/widget/basic/many2many-tags-field/controller.ts
5644
5640
  var import_react18 = require("react");
5645
5641
  var import_constants2 = require("@fctc/interface-logic/constants");
5646
- var import_utils9 = require("@fctc/interface-logic/utils");
5642
+ var import_utils10 = require("@fctc/interface-logic/utils");
5647
5643
  var many2manyTagsController = (props) => {
5648
5644
  const {
5649
5645
  relation,
@@ -5658,9 +5654,9 @@ var many2manyTagsController = (props) => {
5658
5654
  const isUser = relation === "res.users" || relation === "res.partner";
5659
5655
  const { env } = (0, provider_exports.useEnv)();
5660
5656
  const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
5661
- const addtionalFields = optionsFields ? (0, import_utils9.evalJSONContext)(optionsFields) : null;
5657
+ const addtionalFields = optionsFields ? (0, import_utils10.evalJSONContext)(optionsFields) : null;
5662
5658
  const domainObject = (0, import_react18.useMemo)(
5663
- () => (0, import_utils9.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues || {}))),
5659
+ () => (0, import_utils10.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues || {}))),
5664
5660
  [domain, formValues]
5665
5661
  );
5666
5662
  const data = {
@@ -5705,7 +5701,7 @@ var many2manyTagsController = (props) => {
5705
5701
 
5706
5702
  // src/widget/basic/status-bar-field/controller.ts
5707
5703
  var import_react19 = require("react");
5708
- var import_utils10 = require("@fctc/interface-logic/utils");
5704
+ var import_utils11 = require("@fctc/interface-logic/utils");
5709
5705
  var durationController = (props) => {
5710
5706
  const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
5711
5707
  const specification = {
@@ -5721,7 +5717,7 @@ var durationController = (props) => {
5721
5717
  const listDataProps = {
5722
5718
  model: relation,
5723
5719
  specification,
5724
- domain: (0, import_utils10.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues))),
5720
+ domain: (0, import_utils11.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues))),
5725
5721
  limit: 10,
5726
5722
  offset: 0,
5727
5723
  fields: "",
@@ -5771,10 +5767,10 @@ var durationController = (props) => {
5771
5767
  };
5772
5768
 
5773
5769
  // src/widget/basic/priority-field/controller.ts
5774
- var import_utils11 = require("@fctc/interface-logic/utils");
5770
+ var import_utils12 = require("@fctc/interface-logic/utils");
5775
5771
  var priorityFieldController = (props) => {
5776
5772
  const { name, model, index, actionData, context, onChange, specification } = props;
5777
- const _context = { ...(0, import_utils11.evalJSONContext)(actionData?.context) };
5773
+ const _context = { ...(0, import_utils12.evalJSONContext)(actionData?.context) };
5778
5774
  const contextObject = { ...context, ..._context };
5779
5775
  const { useSave: useSave3 } = (0, provider_exports.useService)();
5780
5776
  const { mutateAsync: fetchSave } = useSave3();
@@ -6742,12 +6738,12 @@ var dateFieldController = (props) => {
6742
6738
 
6743
6739
  // src/widget/basic/copy-link-button/controller.ts
6744
6740
  var import_react21 = require("react");
6745
- var import_utils12 = require("@fctc/interface-logic/utils");
6741
+ var import_utils13 = require("@fctc/interface-logic/utils");
6746
6742
  var copyLinkButtonController = (props) => {
6747
6743
  const { value, defaultValue } = props;
6748
6744
  const [isCopied, setIsCopied] = (0, import_react21.useState)(false);
6749
6745
  const handleCopyToClipboard = async (value2) => {
6750
- await (0, import_utils12.copyTextToClipboard)(value2);
6746
+ await (0, import_utils13.copyTextToClipboard)(value2);
6751
6747
  setIsCopied(true);
6752
6748
  setTimeout(() => setIsCopied(false), 2e3);
6753
6749
  };
@@ -6760,12 +6756,12 @@ var copyLinkButtonController = (props) => {
6760
6756
  };
6761
6757
 
6762
6758
  // src/widget/basic/color-field/color-controller.ts
6763
- var import_utils13 = require("@fctc/interface-logic/utils");
6759
+ var import_utils14 = require("@fctc/interface-logic/utils");
6764
6760
  var colorFieldController = (props) => {
6765
6761
  const { value, isForm, name, formValues, idForm, model, actionData } = props;
6766
6762
  const { env } = (0, provider_exports.useEnv)();
6767
6763
  const { useSave: useSave3 } = (0, provider_exports.useService)();
6768
- const _context = { ...(0, import_utils13.evalJSONContext)(actionData?.context) || {} };
6764
+ const _context = { ...(0, import_utils14.evalJSONContext)(actionData?.context) || {} };
6769
6765
  const contextObject = { ...env.context, ..._context };
6770
6766
  const idDefault = isForm ? idForm : formValues?.id;
6771
6767
  const { mutate: onSave } = useSave3();
@@ -6794,7 +6790,7 @@ var colorFieldController = (props) => {
6794
6790
 
6795
6791
  // src/widget/basic/binary-field/controller.ts
6796
6792
  var import_react22 = require("react");
6797
- var import_utils14 = require("@fctc/interface-logic/utils");
6793
+ var import_utils15 = require("@fctc/interface-logic/utils");
6798
6794
  var binaryFieldController = (props) => {
6799
6795
  const { name, methods, readonly = false, value } = props;
6800
6796
  const inputId = (0, import_react22.useId)();
@@ -6851,11 +6847,11 @@ var binaryFieldController = (props) => {
6851
6847
  };
6852
6848
  const checkIsImageLink = (url) => {
6853
6849
  const imageExtensions = /\.(jpg|jpeg|png|gif|bmp|webp|svg|tiff|ico)$/i;
6854
- return imageExtensions.test(url) || (0, import_utils14.isBase64Image)(url) || isBlobUrl(url);
6850
+ return imageExtensions.test(url) || (0, import_utils15.isBase64Image)(url) || isBlobUrl(url);
6855
6851
  };
6856
6852
  const getImageBase64WithMimeType = (base64) => {
6857
6853
  if (typeof base64 !== "string" || base64.length < 10) return null;
6858
- if ((0, import_utils14.isBase64Image)(base64)) return base64;
6854
+ if ((0, import_utils15.isBase64Image)(base64)) return base64;
6859
6855
  let mimeType = null;
6860
6856
  if (base64.startsWith("iVBORw0KGgo")) mimeType = "image/png";
6861
6857
  else if (base64.startsWith("/9j/")) mimeType = "image/jpeg";
@@ -6958,7 +6954,7 @@ var tableHeadController = (props) => {
6958
6954
 
6959
6955
  // src/widget/advance/table/table-view/controller.ts
6960
6956
  var import_react24 = require("react");
6961
- var import_utils16 = require("@fctc/interface-logic/utils");
6957
+ var import_utils17 = require("@fctc/interface-logic/utils");
6962
6958
  var tableController = ({ data }) => {
6963
6959
  const [rows, setRows] = (0, import_react24.useState)(null);
6964
6960
  const [columns, setColumns] = (0, import_react24.useState)(null);
@@ -6996,7 +6992,7 @@ var tableController = ({ data }) => {
6996
6992
  let cols = [];
6997
6993
  try {
6998
6994
  cols = mergeFields?.filter((item) => {
6999
- return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_utils16.domainHelper.matchDomains(data.context, item?.column_invisible) : item?.invisible ? import_utils16.domainHelper.matchDomains(data.context, item?.invisible) : false);
6995
+ return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_utils17.domainHelper.matchDomains(data.context, item?.column_invisible) : item?.invisible ? import_utils17.domainHelper.matchDomains(data.context, item?.invisible) : false);
7000
6996
  })?.map((field) => {
7001
6997
  return {
7002
6998
  name: field?.name,
@@ -7180,7 +7176,7 @@ var tableGroupController = (props) => {
7180
7176
 
7181
7177
  // src/widget/advance/search/controller.ts
7182
7178
  var import_constants3 = require("@fctc/interface-logic/constants");
7183
- var import_utils18 = require("@fctc/interface-logic/utils");
7179
+ var import_utils19 = require("@fctc/interface-logic/utils");
7184
7180
  var import_moment2 = __toESM(require_moment());
7185
7181
  var import_react26 = require("react");
7186
7182
  var searchController = ({
@@ -7197,9 +7193,9 @@ var searchController = ({
7197
7193
  const [selectedTags, setSelectedTags] = (0, import_react26.useState)(null);
7198
7194
  const [searchString, setSearchString] = (0, import_react26.useState)("");
7199
7195
  const [searchMap, setSearchMap] = (0, import_react26.useState)({});
7200
- const actionContext = typeof context === "string" ? (0, import_utils18.evalJSONContext)(context) : context;
7196
+ const actionContext = typeof context === "string" ? (0, import_utils19.evalJSONContext)(context) : context;
7201
7197
  const contextSearch = { ...env.context, ...actionContext };
7202
- const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0, import_utils18.evalJSONDomain)(domain, contextSearch) : [];
7198
+ const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0, import_utils19.evalJSONDomain)(domain, contextSearch) : [];
7203
7199
  const clearSearch = () => {
7204
7200
  setFilterBy([]);
7205
7201
  setGroupBy([]);
@@ -7214,7 +7210,7 @@ var searchController = ({
7214
7210
  const dataModel = viewData?.models?.[model];
7215
7211
  const searchViews = viewData?.views?.search;
7216
7212
  const searchByItems = searchViews?.search_by?.filter(
7217
- (item) => !import_utils18.domainHelper.matchDomains(contextSearch, item.invisible)
7213
+ (item) => !import_utils19.domainHelper.matchDomains(contextSearch, item.invisible)
7218
7214
  )?.map(
7219
7215
  ({ string, name, filter_domain, operator, widget }, index) => ({
7220
7216
  dataIndex: index,
@@ -7227,10 +7223,10 @@ var searchController = ({
7227
7223
  })
7228
7224
  );
7229
7225
  const filterByItems = searchViews?.filter_by.filter((item) => {
7230
- return !import_utils18.domainHelper.matchDomains(contextSearch, item?.invisible);
7226
+ return !import_utils19.domainHelper.matchDomains(contextSearch, item?.invisible);
7231
7227
  })?.map((item) => ({ ...item, active: false }));
7232
7228
  const groupByItems = searchViews?.group_by.filter(
7233
- (item) => !import_utils18.domainHelper.matchDomains(contextSearch, item?.invisible)
7229
+ (item) => !import_utils19.domainHelper.matchDomains(contextSearch, item?.invisible)
7234
7230
  ).map((item) => ({
7235
7231
  ...item,
7236
7232
  string: item.string ?? viewData?.models?.[model]?.[item?.name?.split("group_by_")?.[1]]?.string
@@ -7307,14 +7303,14 @@ var searchController = ({
7307
7303
  }
7308
7304
  let valueDomainItem = value?.value;
7309
7305
  if (value?.modelType === "date") {
7310
- valueDomainItem = (0, import_utils18.validateAndParseDate)(value?.value);
7306
+ valueDomainItem = (0, import_utils19.validateAndParseDate)(value?.value);
7311
7307
  } else if (value?.modelType === "datetime") {
7312
7308
  if (value?.operator === "<=" || value?.operator === "<") {
7313
- const parsedDate = (0, import_utils18.validateAndParseDate)(value?.value, true);
7309
+ const parsedDate = (0, import_utils19.validateAndParseDate)(value?.value, true);
7314
7310
  const hasTime = (0, import_moment2.default)(value?.value).format("HH:mm:ss") !== "00:00:00";
7315
7311
  valueDomainItem = hasTime ? (0, import_moment2.default)(parsedDate).format("YYYY-MM-DD HH:mm:ss") : (0, import_moment2.default)(parsedDate).add(1, "day").subtract(1, "second").format("YYYY-MM-DD HH:mm:ss");
7316
7312
  } else {
7317
- valueDomainItem = (0, import_utils18.validateAndParseDate)(value?.value, true);
7313
+ valueDomainItem = (0, import_utils19.validateAndParseDate)(value?.value, true);
7318
7314
  }
7319
7315
  }
7320
7316
  const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
@@ -7393,7 +7389,7 @@ var searchController = ({
7393
7389
  }, [searchMap]);
7394
7390
  const handleAddTagSearch = (tag) => {
7395
7391
  const { domain: domain2, groupIndex, value, type, context: context2, dataIndex } = tag;
7396
- const domainFormat = new import_utils18.domainHelper.Domain(domain2);
7392
+ const domainFormat = new import_utils19.domainHelper.Domain(domain2);
7397
7393
  if (type === import_constants3.SearchType.FILTER) {
7398
7394
  addSearchItems(`${import_constants3.SearchType.FILTER}_${groupIndex}`, {
7399
7395
  ...tag,