@fctc/widget-logic 2.7.1 → 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.mjs CHANGED
@@ -59,7 +59,7 @@ var require_moment = __commonJS({
59
59
  function hasOwnProp(a, b) {
60
60
  return Object.prototype.hasOwnProperty.call(a, b);
61
61
  }
62
- function isObjectEmpty4(obj) {
62
+ function isObjectEmpty5(obj) {
63
63
  if (Object.getOwnPropertyNames) {
64
64
  return Object.getOwnPropertyNames(obj).length === 0;
65
65
  } else {
@@ -2198,7 +2198,7 @@ var require_moment = __commonJS({
2198
2198
  strict = locale2;
2199
2199
  locale2 = void 0;
2200
2200
  }
2201
- if (isObject(input) && isObjectEmpty4(input) || isArray(input) && input.length === 0) {
2201
+ if (isObject(input) && isObjectEmpty5(input) || isArray(input) && input.length === 0) {
2202
2202
  input = void 0;
2203
2203
  }
2204
2204
  c._isAMomentObject = true;
@@ -2617,7 +2617,7 @@ var require_moment = __commonJS({
2617
2617
  return isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === void 0;
2618
2618
  }
2619
2619
  function isMomentInputObject(input) {
2620
- var objectTest = isObject(input) && !isObjectEmpty4(input), propertyTest = false, properties = [
2620
+ var objectTest = isObject(input) && !isObjectEmpty5(input), propertyTest = false, properties = [
2621
2621
  "years",
2622
2622
  "year",
2623
2623
  "y",
@@ -2659,7 +2659,7 @@ var require_moment = __commonJS({
2659
2659
  return arrayTest && dataTypeTest;
2660
2660
  }
2661
2661
  function isCalendarSpec(input) {
2662
- var objectTest = isObject(input) && !isObjectEmpty4(input), propertyTest = false, properties = [
2662
+ var objectTest = isObject(input) && !isObjectEmpty5(input), propertyTest = false, properties = [
2663
2663
  "sameDay",
2664
2664
  "nextDay",
2665
2665
  "lastDay",
@@ -4286,92 +4286,6 @@ var useCallAction = () => {
4286
4286
  return [actionData, callAction];
4287
4287
  };
4288
4288
 
4289
- // src/hooks/core/use-menu.ts
4290
- var useMenu = ({
4291
- context,
4292
- specification
4293
- }) => {
4294
- const { env } = (0, provider_exports.useEnv)();
4295
- const { useGetMenu: useGetMenu2 } = (0, provider_exports.useService)();
4296
- const [action, callAction] = useCallAction();
4297
- const menuData = useGetMenu2(
4298
- context,
4299
- specification,
4300
- !!context && Object.keys(context).length > 0
4301
- );
4302
- const [menuId, setMenuId] = useState2(void 0);
4303
- const configedIconData = useMemo(() => {
4304
- const data = menuData.data;
4305
- return data?.map((item) => {
4306
- return {
4307
- ...item,
4308
- child_id: item?.child_id?.map((child) => {
4309
- return {
4310
- ...child,
4311
- url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + child.url_icon
4312
- };
4313
- }) ?? [],
4314
- url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + item.url_icon
4315
- };
4316
- });
4317
- }, [menuData.data, env?.envFile?.VITE_APP_DOMAIN]);
4318
- const handleChangeMenu = async ({ menu }) => {
4319
- const aidMenu = menu?.action?.id?.id;
4320
- if (menu) {
4321
- setMenuId(menu.id?.toString() ?? "");
4322
- }
4323
- if (aidMenu) {
4324
- const actionResponse = await callAction({
4325
- aid: Number(aidMenu)
4326
- });
4327
- return actionResponse;
4328
- }
4329
- };
4330
- return {
4331
- ...menuData,
4332
- data: configedIconData,
4333
- action: { handleChangeMenu },
4334
- state: { menuId, action },
4335
- context,
4336
- isLoading: menuData.isLoading,
4337
- isError: menuData.isError,
4338
- error: menuData.error,
4339
- refetch: menuData.refetch
4340
- };
4341
- };
4342
-
4343
- // src/hooks/core/use-detail.ts
4344
- import { useQuery } from "@tanstack/react-query";
4345
- import { useEffect } from "react";
4346
- var useDetail = (sub) => {
4347
- const { setUserInfo, env } = (0, provider_exports.useEnv)();
4348
- const { useGetDetail: useGetDetail2 } = (0, provider_exports.useService)();
4349
- const fetchGetDetail = useGetDetail2();
4350
- const userDetailQuery = useQuery({
4351
- queryKey: ["userDetailQuery", sub],
4352
- queryFn: () => {
4353
- return fetchGetDetail.mutateAsync({
4354
- model: "res.users",
4355
- ids: [sub],
4356
- specification: { image_256: {} }
4357
- });
4358
- },
4359
- enabled: !!sub
4360
- });
4361
- useEffect(() => {
4362
- if (userDetailQuery.data) {
4363
- const userPicture = userDetailQuery.data;
4364
- setUserInfo({ ...env?.user, image: userPicture?.[0]?.image_256 });
4365
- }
4366
- }, [userDetailQuery.isFetched]);
4367
- return { ...userDetailQuery };
4368
- };
4369
-
4370
- // src/hooks/core/use-profile.ts
4371
- import { useQuery as useQuery2 } from "@tanstack/react-query";
4372
- import { useEffect as useEffect3, useMemo as useMemo2 } from "react";
4373
- import { useTranslation } from "react-i18next";
4374
-
4375
4289
  // src/utils.ts
4376
4290
  var utils_exports = {};
4377
4291
  __export(utils_exports, {
@@ -4393,7 +4307,7 @@ var languages = [
4393
4307
  ];
4394
4308
 
4395
4309
  // src/utils/function.ts
4396
- import { useCallback as useCallback2, useEffect as useEffect2, useReducer } from "react";
4310
+ import { useCallback as useCallback2, useEffect, useReducer } from "react";
4397
4311
  var countSum = (data, field) => {
4398
4312
  if (!data || !field) return 0;
4399
4313
  return data.reduce(
@@ -4532,7 +4446,7 @@ async function setStorageItemAsync(key, value) {
4532
4446
  }
4533
4447
  function useStorageState(key) {
4534
4448
  const [state, setState] = useAsyncState();
4535
- useEffect2(() => {
4449
+ useEffect(() => {
4536
4450
  try {
4537
4451
  const storedValue = localStorage.getItem(key);
4538
4452
  setState(storedValue);
@@ -4554,7 +4468,91 @@ function useStorageState(key) {
4554
4468
  __reExport(utils_exports, utils_star);
4555
4469
  import * as utils_star from "@fctc/interface-logic/utils";
4556
4470
 
4471
+ // src/hooks/core/use-menu.ts
4472
+ var useMenu = ({
4473
+ context,
4474
+ specification
4475
+ }) => {
4476
+ const { env } = (0, provider_exports.useEnv)();
4477
+ const { useGetMenu: useGetMenu2 } = (0, provider_exports.useService)();
4478
+ const [action, callAction] = useCallAction();
4479
+ const menuData = useGetMenu2(
4480
+ context,
4481
+ specification,
4482
+ !!context && !(0, utils_exports.isObjectEmpty)(context)
4483
+ );
4484
+ const [menuId, setMenuId] = useState2(void 0);
4485
+ const configedIconData = useMemo(() => {
4486
+ const data = menuData.data;
4487
+ return data?.map((item) => {
4488
+ return {
4489
+ ...item,
4490
+ child_id: item?.child_id?.map((child) => {
4491
+ return {
4492
+ ...child,
4493
+ url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + child.url_icon
4494
+ };
4495
+ }) ?? [],
4496
+ url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + item.url_icon
4497
+ };
4498
+ });
4499
+ }, [menuData.data, env?.envFile?.VITE_APP_DOMAIN]);
4500
+ const handleChangeMenu = async ({ menu }) => {
4501
+ const aidMenu = menu?.action?.id?.id;
4502
+ if (menu) {
4503
+ setMenuId(menu.id?.toString() ?? "");
4504
+ }
4505
+ if (aidMenu) {
4506
+ const actionResponse = await callAction({
4507
+ aid: Number(aidMenu)
4508
+ });
4509
+ return actionResponse;
4510
+ }
4511
+ };
4512
+ return {
4513
+ ...menuData,
4514
+ data: configedIconData,
4515
+ action: { handleChangeMenu },
4516
+ state: { menuId, action },
4517
+ context,
4518
+ isLoading: menuData.isLoading,
4519
+ isError: menuData.isError,
4520
+ error: menuData.error,
4521
+ refetch: menuData.refetch
4522
+ };
4523
+ };
4524
+
4525
+ // src/hooks/core/use-detail.ts
4526
+ import { useQuery } from "@tanstack/react-query";
4527
+ import { useEffect as useEffect2 } from "react";
4528
+ var useDetail = (sub) => {
4529
+ const { setUserInfo, env } = (0, provider_exports.useEnv)();
4530
+ const { useGetDetail: useGetDetail2 } = (0, provider_exports.useService)();
4531
+ const fetchGetDetail = useGetDetail2();
4532
+ const userDetailQuery = useQuery({
4533
+ queryKey: ["userDetailQuery", sub],
4534
+ queryFn: () => {
4535
+ return fetchGetDetail.mutateAsync({
4536
+ model: "res.users",
4537
+ ids: [sub],
4538
+ specification: { image_256: {} }
4539
+ });
4540
+ },
4541
+ enabled: !!sub
4542
+ });
4543
+ useEffect2(() => {
4544
+ if (userDetailQuery.data) {
4545
+ const userPicture = userDetailQuery.data;
4546
+ setUserInfo({ ...env?.user, image: userPicture?.[0]?.image_256 });
4547
+ }
4548
+ }, [userDetailQuery.isFetched]);
4549
+ return { ...userDetailQuery };
4550
+ };
4551
+
4557
4552
  // src/hooks/core/use-profile.ts
4553
+ import { useQuery as useQuery2 } from "@tanstack/react-query";
4554
+ import { useEffect as useEffect3, useMemo as useMemo2 } from "react";
4555
+ import { useTranslation } from "react-i18next";
4558
4556
  var useProfile = () => {
4559
4557
  const { setUid, setLang, setUserInfo, env } = (0, provider_exports.useEnv)();
4560
4558
  const { useGetProfile: useGetProfile2 } = (0, provider_exports.useService)();
@@ -4602,21 +4600,31 @@ var useUser = () => {
4602
4600
  // src/hooks/core/use-view-v2.ts
4603
4601
  import { useMemo as useMemo3 } from "react";
4604
4602
  var useViewV2 = ({
4605
- id,
4603
+ action,
4606
4604
  context,
4607
- views,
4608
- model
4605
+ aid
4609
4606
  }) => {
4610
4607
  const { useGetView: useGetView2 } = (0, provider_exports.useService)();
4611
4608
  const viewParams = useMemo3(() => {
4612
- if (views || views.length === 0) return void 0;
4609
+ if (!action || !action?.res_model) {
4610
+ return void 0;
4611
+ }
4612
+ const actionResult = action;
4613
4613
  return {
4614
- model,
4615
- views,
4614
+ model: String(actionResult?.res_model),
4615
+ views: [
4616
+ ...Array.isArray(actionResult?.views) ? actionResult?.views.map(
4617
+ (view2) => view2[1] === "list" ? [view2[0], "list"] : view2
4618
+ ) : [],
4619
+ [
4620
+ Array.isArray(actionResult?.search_view_id) ? actionResult?.search_view_id[0] : actionResult?.search_view_id,
4621
+ "search"
4622
+ ]
4623
+ ],
4616
4624
  context,
4617
- id
4625
+ id: isNaN(Number(aid)) ? action?.id : aid
4618
4626
  };
4619
- }, [views]);
4627
+ }, [action, context, aid]);
4620
4628
  const view = useGetView2({
4621
4629
  viewParams: viewParams || {},
4622
4630
  enabled: !!viewParams
@@ -4716,22 +4724,10 @@ var AppProvider = ({
4716
4724
  { ...(0, utils_exports.evalJSONContext)(action?.context) }
4717
4725
  ]);
4718
4726
  }, [menuContext, action?.context, env?.context?.lang]);
4719
- const memoViews = useMemo5(() => {
4720
- if (!action) return [];
4721
- return [
4722
- ...Array.isArray(action?.views) ? action.views.map(
4723
- (view2) => view2[1] === "list" ? [view2[0], "list"] : view2
4724
- ) : [],
4725
- [
4726
- Array.isArray(action?.search_view_id) ? action.search_view_id[0] : action.search_view_id,
4727
- "search"
4728
- ]
4729
- ];
4730
- }, [action]);
4731
4727
  const view = useViewV2({
4728
+ action,
4732
4729
  context: viewContext,
4733
- views: memoViews,
4734
- model: action?.res_model ? String(action.res_model) : void 0
4730
+ aid
4735
4731
  });
4736
4732
  return /* @__PURE__ */ jsx(
4737
4733
  ReactContext.Provider,
@@ -4859,7 +4855,7 @@ import { useMemo as useMemo7, useState as useState5 } from "react";
4859
4855
  import {
4860
4856
  evalJSONDomain,
4861
4857
  formatSortingString,
4862
- isObjectEmpty as isObjectEmpty3
4858
+ isObjectEmpty as isObjectEmpty4
4863
4859
  } from "@fctc/interface-logic/utils";
4864
4860
 
4865
4861
  // src/hooks/utils/use-click-outside.ts
@@ -5035,7 +5031,7 @@ var useListData = ({
5035
5031
  const list = useGetListData2(
5036
5032
  listDataProps,
5037
5033
  [listDataProps],
5038
- !!listDataProps && !!specification && !isObjectEmpty3(specification)
5034
+ !!listDataProps && !!specification && !isObjectEmpty4(specification)
5039
5035
  );
5040
5036
  return {
5041
5037
  ...list,
package/dist/widget.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",
@@ -4119,7 +4119,7 @@ var import_hooks3 = require("@fctc/interface-logic/hooks");
4119
4119
  var import_react9 = require("react");
4120
4120
 
4121
4121
  // src/hooks/core/use-menu.ts
4122
- var import_react3 = require("react");
4122
+ var import_react4 = require("react");
4123
4123
 
4124
4124
  // src/hooks/core/use-call-action.ts
4125
4125
  var import_react2 = require("react");
@@ -4128,15 +4128,6 @@ var import_react2 = require("react");
4128
4128
  var provider_exports = {};
4129
4129
  __reExport(provider_exports, require("@fctc/interface-logic/provider"));
4130
4130
 
4131
- // src/hooks/core/use-detail.ts
4132
- var import_react_query = require("@tanstack/react-query");
4133
- var import_react4 = require("react");
4134
-
4135
- // src/hooks/core/use-profile.ts
4136
- var import_react_query2 = require("@tanstack/react-query");
4137
- var import_react6 = require("react");
4138
- var import_react_i18next = require("react-i18next");
4139
-
4140
4131
  // src/utils.ts
4141
4132
  var utils_exports = {};
4142
4133
  __export(utils_exports, {
@@ -4158,7 +4149,7 @@ var languages = [
4158
4149
  ];
4159
4150
 
4160
4151
  // src/utils/function.ts
4161
- var import_react5 = require("react");
4152
+ var import_react3 = require("react");
4162
4153
  var countSum = (data, field) => {
4163
4154
  if (!data || !field) return 0;
4164
4155
  return data.reduce(
@@ -4279,7 +4270,7 @@ var STORAGES = {
4279
4270
  USER_INFO: "USER_INFO"
4280
4271
  };
4281
4272
  function useAsyncState(initialValue = [true, null]) {
4282
- return (0, import_react5.useReducer)(
4273
+ return (0, import_react3.useReducer)(
4283
4274
  (_state, action = null) => [false, action],
4284
4275
  initialValue
4285
4276
  );
@@ -4297,7 +4288,7 @@ async function setStorageItemAsync(key, value) {
4297
4288
  }
4298
4289
  function useStorageState(key) {
4299
4290
  const [state, setState] = useAsyncState();
4300
- (0, import_react5.useEffect)(() => {
4291
+ (0, import_react3.useEffect)(() => {
4301
4292
  try {
4302
4293
  const storedValue = localStorage.getItem(key);
4303
4294
  setState(storedValue);
@@ -4305,7 +4296,7 @@ function useStorageState(key) {
4305
4296
  console.error("Local storage is unavailable:", e);
4306
4297
  }
4307
4298
  }, [key]);
4308
- const setValue = (0, import_react5.useCallback)(
4299
+ const setValue = (0, import_react3.useCallback)(
4309
4300
  (value) => {
4310
4301
  setState(value);
4311
4302
  setStorageItemAsync(key, value);
@@ -4318,6 +4309,15 @@ function useStorageState(key) {
4318
4309
  // src/utils.ts
4319
4310
  __reExport(utils_exports, require("@fctc/interface-logic/utils"));
4320
4311
 
4312
+ // src/hooks/core/use-detail.ts
4313
+ var import_react_query = require("@tanstack/react-query");
4314
+ var import_react5 = require("react");
4315
+
4316
+ // src/hooks/core/use-profile.ts
4317
+ var import_react_query2 = require("@tanstack/react-query");
4318
+ var import_react6 = require("react");
4319
+ var import_react_i18next = require("react-i18next");
4320
+
4321
4321
  // src/hooks/core/use-view-v2.ts
4322
4322
  var import_react7 = require("react");
4323
4323
 
@@ -4344,7 +4344,7 @@ var import_react11 = require("react");
4344
4344
 
4345
4345
  // src/hooks/core/use-list-data.ts
4346
4346
  var import_react15 = require("react");
4347
- var import_utils4 = require("@fctc/interface-logic/utils");
4347
+ var import_utils5 = require("@fctc/interface-logic/utils");
4348
4348
 
4349
4349
  // src/hooks/utils/use-click-outside.ts
4350
4350
  var import_react12 = require("react");
@@ -4615,18 +4615,18 @@ var many2oneFieldController = (props) => {
4615
4615
  // src/widget/basic/many2one-button-field/controller.ts
4616
4616
  var import_environment2 = require("@fctc/interface-logic/environment");
4617
4617
  var import_hooks6 = require("@fctc/interface-logic/hooks");
4618
- var import_utils7 = require("@fctc/interface-logic/utils");
4618
+ var import_utils8 = require("@fctc/interface-logic/utils");
4619
4619
  var many2oneButtonController = (props) => {
4620
4620
  const { domain, methods, relation, service, xNode } = props;
4621
4621
  const actionDataString = sessionStorage.getItem("actionData");
4622
4622
  const env = (0, import_environment2.getEnv)();
4623
- const domainObject = (0, import_utils7.evalJSONDomain)(domain, methods?.getValues() || {});
4623
+ const domainObject = (0, import_utils8.evalJSONDomain)(domain, methods?.getValues() || {});
4624
4624
  const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
4625
4625
  const { data: dataOfSelection } = (0, import_hooks6.useGetSelection)({
4626
4626
  data: {
4627
4627
  model: relation ?? "",
4628
4628
  domain: domainObject,
4629
- context: { ...env.context, ...(0, import_utils7.evalJSONContext)(actionData?.context) }
4629
+ context: { ...env.context, ...(0, import_utils8.evalJSONContext)(actionData?.context) }
4630
4630
  },
4631
4631
  queryKey: [`data_${relation}`, domainObject],
4632
4632
  service,
@@ -4643,7 +4643,7 @@ var many2oneButtonController = (props) => {
4643
4643
 
4644
4644
  // src/widget/basic/many2many-field/controller.ts
4645
4645
  var import_react17 = require("react");
4646
- var import_utils8 = require("@fctc/interface-logic/utils");
4646
+ var import_utils9 = require("@fctc/interface-logic/utils");
4647
4647
  var many2manyFieldController = (props) => {
4648
4648
  const {
4649
4649
  relation,
@@ -4704,10 +4704,10 @@ var many2manyFieldController = (props) => {
4704
4704
  return null;
4705
4705
  }, [modelInstance]);
4706
4706
  const default_order = viewResponse && viewResponse?.views?.list?.default_order;
4707
- const optionsObject = tab?.options ? (0, import_utils8.evalJSONContext)(tab?.options) : (options ? (0, import_utils8.evalJSONContext)(options) : {}) || {};
4707
+ const optionsObject = tab?.options ? (0, import_utils9.evalJSONContext)(tab?.options) : (options ? (0, import_utils9.evalJSONContext)(options) : {}) || {};
4708
4708
  const fetchData = async () => {
4709
4709
  try {
4710
- const domainParse = typeof domain === "string" ? (0, import_utils8.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
4710
+ const domainParse = typeof domain === "string" ? (0, import_utils9.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
4711
4711
  setDomainMany2Many(domainParse);
4712
4712
  setPage(0);
4713
4713
  } catch (err) {
@@ -4731,7 +4731,7 @@ var many2manyFieldController = (props) => {
4731
4731
  context: contextObject,
4732
4732
  fields: groupByDomain?.fields,
4733
4733
  groupby: [groupByDomain?.contexts[0]?.group_by],
4734
- sort: order ? order : default_order ? (0, import_utils8.formatSortingString)(default_order) : ""
4734
+ sort: order ? order : default_order ? (0, import_utils9.formatSortingString)(default_order) : ""
4735
4735
  };
4736
4736
  const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
4737
4737
  const {
@@ -4795,7 +4795,7 @@ var many2manyFieldController = (props) => {
4795
4795
  // src/widget/basic/many2many-tags-field/controller.ts
4796
4796
  var import_react18 = require("react");
4797
4797
  var import_constants2 = require("@fctc/interface-logic/constants");
4798
- var import_utils9 = require("@fctc/interface-logic/utils");
4798
+ var import_utils10 = require("@fctc/interface-logic/utils");
4799
4799
  var many2manyTagsController = (props) => {
4800
4800
  const {
4801
4801
  relation,
@@ -4810,9 +4810,9 @@ var many2manyTagsController = (props) => {
4810
4810
  const isUser = relation === "res.users" || relation === "res.partner";
4811
4811
  const { env } = (0, provider_exports.useEnv)();
4812
4812
  const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
4813
- const addtionalFields = optionsFields ? (0, import_utils9.evalJSONContext)(optionsFields) : null;
4813
+ const addtionalFields = optionsFields ? (0, import_utils10.evalJSONContext)(optionsFields) : null;
4814
4814
  const domainObject = (0, import_react18.useMemo)(
4815
- () => (0, import_utils9.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues || {}))),
4815
+ () => (0, import_utils10.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues || {}))),
4816
4816
  [domain, formValues]
4817
4817
  );
4818
4818
  const data = {
@@ -4857,7 +4857,7 @@ var many2manyTagsController = (props) => {
4857
4857
 
4858
4858
  // src/widget/basic/status-bar-field/controller.ts
4859
4859
  var import_react19 = require("react");
4860
- var import_utils10 = require("@fctc/interface-logic/utils");
4860
+ var import_utils11 = require("@fctc/interface-logic/utils");
4861
4861
  var durationController = (props) => {
4862
4862
  const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
4863
4863
  const specification = {
@@ -4873,7 +4873,7 @@ var durationController = (props) => {
4873
4873
  const listDataProps = {
4874
4874
  model: relation,
4875
4875
  specification,
4876
- domain: (0, import_utils10.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues))),
4876
+ domain: (0, import_utils11.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues))),
4877
4877
  limit: 10,
4878
4878
  offset: 0,
4879
4879
  fields: "",
@@ -4923,10 +4923,10 @@ var durationController = (props) => {
4923
4923
  };
4924
4924
 
4925
4925
  // src/widget/basic/priority-field/controller.ts
4926
- var import_utils11 = require("@fctc/interface-logic/utils");
4926
+ var import_utils12 = require("@fctc/interface-logic/utils");
4927
4927
  var priorityFieldController = (props) => {
4928
4928
  const { name, model, index, actionData, context, onChange, specification } = props;
4929
- const _context = { ...(0, import_utils11.evalJSONContext)(actionData?.context) };
4929
+ const _context = { ...(0, import_utils12.evalJSONContext)(actionData?.context) };
4930
4930
  const contextObject = { ...context, ..._context };
4931
4931
  const { useSave: useSave3 } = (0, provider_exports.useService)();
4932
4932
  const { mutateAsync: fetchSave } = useSave3();
@@ -5894,12 +5894,12 @@ var dateFieldController = (props) => {
5894
5894
 
5895
5895
  // src/widget/basic/copy-link-button/controller.ts
5896
5896
  var import_react21 = require("react");
5897
- var import_utils12 = require("@fctc/interface-logic/utils");
5897
+ var import_utils13 = require("@fctc/interface-logic/utils");
5898
5898
  var copyLinkButtonController = (props) => {
5899
5899
  const { value, defaultValue } = props;
5900
5900
  const [isCopied, setIsCopied] = (0, import_react21.useState)(false);
5901
5901
  const handleCopyToClipboard = async (value2) => {
5902
- await (0, import_utils12.copyTextToClipboard)(value2);
5902
+ await (0, import_utils13.copyTextToClipboard)(value2);
5903
5903
  setIsCopied(true);
5904
5904
  setTimeout(() => setIsCopied(false), 2e3);
5905
5905
  };
@@ -5912,12 +5912,12 @@ var copyLinkButtonController = (props) => {
5912
5912
  };
5913
5913
 
5914
5914
  // src/widget/basic/color-field/color-controller.ts
5915
- var import_utils13 = require("@fctc/interface-logic/utils");
5915
+ var import_utils14 = require("@fctc/interface-logic/utils");
5916
5916
  var colorFieldController = (props) => {
5917
5917
  const { value, isForm, name, formValues, idForm, model, actionData } = props;
5918
5918
  const { env } = (0, provider_exports.useEnv)();
5919
5919
  const { useSave: useSave3 } = (0, provider_exports.useService)();
5920
- const _context = { ...(0, import_utils13.evalJSONContext)(actionData?.context) || {} };
5920
+ const _context = { ...(0, import_utils14.evalJSONContext)(actionData?.context) || {} };
5921
5921
  const contextObject = { ...env.context, ..._context };
5922
5922
  const idDefault = isForm ? idForm : formValues?.id;
5923
5923
  const { mutate: onSave } = useSave3();
@@ -5946,7 +5946,7 @@ var colorFieldController = (props) => {
5946
5946
 
5947
5947
  // src/widget/basic/binary-field/controller.ts
5948
5948
  var import_react22 = require("react");
5949
- var import_utils14 = require("@fctc/interface-logic/utils");
5949
+ var import_utils15 = require("@fctc/interface-logic/utils");
5950
5950
  var binaryFieldController = (props) => {
5951
5951
  const { name, methods, readonly = false, value } = props;
5952
5952
  const inputId = (0, import_react22.useId)();
@@ -6003,11 +6003,11 @@ var binaryFieldController = (props) => {
6003
6003
  };
6004
6004
  const checkIsImageLink = (url) => {
6005
6005
  const imageExtensions = /\.(jpg|jpeg|png|gif|bmp|webp|svg|tiff|ico)$/i;
6006
- return imageExtensions.test(url) || (0, import_utils14.isBase64Image)(url) || isBlobUrl(url);
6006
+ return imageExtensions.test(url) || (0, import_utils15.isBase64Image)(url) || isBlobUrl(url);
6007
6007
  };
6008
6008
  const getImageBase64WithMimeType = (base64) => {
6009
6009
  if (typeof base64 !== "string" || base64.length < 10) return null;
6010
- if ((0, import_utils14.isBase64Image)(base64)) return base64;
6010
+ if ((0, import_utils15.isBase64Image)(base64)) return base64;
6011
6011
  let mimeType = null;
6012
6012
  if (base64.startsWith("iVBORw0KGgo")) mimeType = "image/png";
6013
6013
  else if (base64.startsWith("/9j/")) mimeType = "image/jpeg";
@@ -6110,7 +6110,7 @@ var tableHeadController = (props) => {
6110
6110
 
6111
6111
  // src/widget/advance/table/table-view/controller.ts
6112
6112
  var import_react24 = require("react");
6113
- var import_utils16 = require("@fctc/interface-logic/utils");
6113
+ var import_utils17 = require("@fctc/interface-logic/utils");
6114
6114
  var tableController = ({ data }) => {
6115
6115
  const [rows, setRows] = (0, import_react24.useState)(null);
6116
6116
  const [columns, setColumns] = (0, import_react24.useState)(null);
@@ -6148,7 +6148,7 @@ var tableController = ({ data }) => {
6148
6148
  let cols = [];
6149
6149
  try {
6150
6150
  cols = mergeFields?.filter((item) => {
6151
- 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);
6151
+ 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);
6152
6152
  })?.map((field) => {
6153
6153
  return {
6154
6154
  name: field?.name,
@@ -6332,7 +6332,7 @@ var tableGroupController = (props) => {
6332
6332
 
6333
6333
  // src/widget/advance/search/controller.ts
6334
6334
  var import_constants3 = require("@fctc/interface-logic/constants");
6335
- var import_utils18 = require("@fctc/interface-logic/utils");
6335
+ var import_utils19 = require("@fctc/interface-logic/utils");
6336
6336
  var import_moment2 = __toESM(require_moment());
6337
6337
  var import_react26 = require("react");
6338
6338
  var searchController = ({
@@ -6349,9 +6349,9 @@ var searchController = ({
6349
6349
  const [selectedTags, setSelectedTags] = (0, import_react26.useState)(null);
6350
6350
  const [searchString, setSearchString] = (0, import_react26.useState)("");
6351
6351
  const [searchMap, setSearchMap] = (0, import_react26.useState)({});
6352
- const actionContext = typeof context === "string" ? (0, import_utils18.evalJSONContext)(context) : context;
6352
+ const actionContext = typeof context === "string" ? (0, import_utils19.evalJSONContext)(context) : context;
6353
6353
  const contextSearch = { ...env.context, ...actionContext };
6354
- const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0, import_utils18.evalJSONDomain)(domain, contextSearch) : [];
6354
+ const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0, import_utils19.evalJSONDomain)(domain, contextSearch) : [];
6355
6355
  const clearSearch = () => {
6356
6356
  setFilterBy([]);
6357
6357
  setGroupBy([]);
@@ -6366,7 +6366,7 @@ var searchController = ({
6366
6366
  const dataModel = viewData?.models?.[model];
6367
6367
  const searchViews = viewData?.views?.search;
6368
6368
  const searchByItems = searchViews?.search_by?.filter(
6369
- (item) => !import_utils18.domainHelper.matchDomains(contextSearch, item.invisible)
6369
+ (item) => !import_utils19.domainHelper.matchDomains(contextSearch, item.invisible)
6370
6370
  )?.map(
6371
6371
  ({ string, name, filter_domain, operator, widget }, index) => ({
6372
6372
  dataIndex: index,
@@ -6379,10 +6379,10 @@ var searchController = ({
6379
6379
  })
6380
6380
  );
6381
6381
  const filterByItems = searchViews?.filter_by.filter((item) => {
6382
- return !import_utils18.domainHelper.matchDomains(contextSearch, item?.invisible);
6382
+ return !import_utils19.domainHelper.matchDomains(contextSearch, item?.invisible);
6383
6383
  })?.map((item) => ({ ...item, active: false }));
6384
6384
  const groupByItems = searchViews?.group_by.filter(
6385
- (item) => !import_utils18.domainHelper.matchDomains(contextSearch, item?.invisible)
6385
+ (item) => !import_utils19.domainHelper.matchDomains(contextSearch, item?.invisible)
6386
6386
  ).map((item) => ({
6387
6387
  ...item,
6388
6388
  string: item.string ?? viewData?.models?.[model]?.[item?.name?.split("group_by_")?.[1]]?.string
@@ -6459,14 +6459,14 @@ var searchController = ({
6459
6459
  }
6460
6460
  let valueDomainItem = value?.value;
6461
6461
  if (value?.modelType === "date") {
6462
- valueDomainItem = (0, import_utils18.validateAndParseDate)(value?.value);
6462
+ valueDomainItem = (0, import_utils19.validateAndParseDate)(value?.value);
6463
6463
  } else if (value?.modelType === "datetime") {
6464
6464
  if (value?.operator === "<=" || value?.operator === "<") {
6465
- const parsedDate = (0, import_utils18.validateAndParseDate)(value?.value, true);
6465
+ const parsedDate = (0, import_utils19.validateAndParseDate)(value?.value, true);
6466
6466
  const hasTime = (0, import_moment2.default)(value?.value).format("HH:mm:ss") !== "00:00:00";
6467
6467
  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");
6468
6468
  } else {
6469
- valueDomainItem = (0, import_utils18.validateAndParseDate)(value?.value, true);
6469
+ valueDomainItem = (0, import_utils19.validateAndParseDate)(value?.value, true);
6470
6470
  }
6471
6471
  }
6472
6472
  const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
@@ -6545,7 +6545,7 @@ var searchController = ({
6545
6545
  }, [searchMap]);
6546
6546
  const handleAddTagSearch = (tag) => {
6547
6547
  const { domain: domain2, groupIndex, value, type, context: context2, dataIndex } = tag;
6548
- const domainFormat = new import_utils18.domainHelper.Domain(domain2);
6548
+ const domainFormat = new import_utils19.domainHelper.Domain(domain2);
6549
6549
  if (type === import_constants3.SearchType.FILTER) {
6550
6550
  addSearchItems(`${import_constants3.SearchType.FILTER}_${groupIndex}`, {
6551
6551
  ...tag,