@erpsquad/common 1.10.75 → 1.10.76

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.
Files changed (115) hide show
  1. package/dist/chunks/{ERPUIProvider-Ce7EhOa_.js → ERPUIProvider-CUwFzQDS.js} +8 -8
  2. package/dist/chunks/{ERPUIProvider-Ce7EhOa_.js.map → ERPUIProvider-CUwFzQDS.js.map} +1 -1
  3. package/dist/chunks/{ERPUIProvider-CmmabhgQ.esm.js → ERPUIProvider-CjIWXAFQ.esm.js} +8 -8
  4. package/dist/chunks/{ERPUIProvider-CmmabhgQ.esm.js.map → ERPUIProvider-CjIWXAFQ.esm.js.map} +1 -1
  5. package/dist/chunks/{actionCreator-DqVmiGzl.js → actionCreator-B-xXGO_F.js} +2 -2
  6. package/dist/chunks/{actionCreator-DqVmiGzl.js.map → actionCreator-B-xXGO_F.js.map} +1 -1
  7. package/dist/chunks/{actionCreator-Cy_J6Xfp.esm.js → actionCreator-CWeYbk0a.esm.js} +2 -2
  8. package/dist/chunks/{actionCreator-Cy_J6Xfp.esm.js.map → actionCreator-CWeYbk0a.esm.js.map} +1 -1
  9. package/dist/chunks/{android-12-switch-Cruc3J1J.js → android-12-switch-BwWhufNY.js} +11 -13
  10. package/dist/chunks/{android-12-switch-Cruc3J1J.js.map → android-12-switch-BwWhufNY.js.map} +1 -1
  11. package/dist/chunks/{android-12-switch-DPP00xjJ.esm.js → android-12-switch-CqzSpWic.esm.js} +11 -13
  12. package/dist/chunks/{android-12-switch-DPP00xjJ.esm.js.map → android-12-switch-CqzSpWic.esm.js.map} +1 -1
  13. package/dist/chunks/{appbar-7puZelDZ.esm.js → appbar-BHhB-1U-.esm.js} +4 -4
  14. package/dist/chunks/{appbar-7puZelDZ.esm.js.map → appbar-BHhB-1U-.esm.js.map} +1 -1
  15. package/dist/chunks/{appbar-DbazXkez.js → appbar-NZcZPNzx.js} +4 -4
  16. package/dist/chunks/{appbar-DbazXkez.js.map → appbar-NZcZPNzx.js.map} +1 -1
  17. package/dist/chunks/{checkbox-DNW1SYc0.js → checkbox-CKG0IzuP.js} +3 -3
  18. package/dist/chunks/{checkbox-DNW1SYc0.js.map → checkbox-CKG0IzuP.js.map} +1 -1
  19. package/dist/chunks/{checkbox-Vd4h25n2.esm.js → checkbox-DdtsMxO8.esm.js} +3 -3
  20. package/dist/chunks/{checkbox-Vd4h25n2.esm.js.map → checkbox-DdtsMxO8.esm.js.map} +1 -1
  21. package/dist/chunks/{common-B1hGK8kQ.js → common-CbkoxxEu.js} +23 -9
  22. package/dist/chunks/{common-B1hGK8kQ.js.map → common-CbkoxxEu.js.map} +1 -1
  23. package/dist/chunks/{common-BVfS06ca.esm.js → common-r5LBzRrd.esm.js} +23 -9
  24. package/dist/chunks/{common-BVfS06ca.esm.js.map → common-r5LBzRrd.esm.js.map} +1 -1
  25. package/dist/chunks/{custom-editor-e50eHmKt.esm.js → custom-editor-C7xbAktX.esm.js} +2 -2
  26. package/dist/chunks/{custom-editor-e50eHmKt.esm.js.map → custom-editor-C7xbAktX.esm.js.map} +1 -1
  27. package/dist/chunks/{custom-editor-iUZb8s2v.js → custom-editor-DPF1mYl4.js} +2 -2
  28. package/dist/chunks/{custom-editor-iUZb8s2v.js.map → custom-editor-DPF1mYl4.js.map} +1 -1
  29. package/dist/chunks/{default-data-B0Y8TU26.js → default-data-CL2V5IF-.js} +12 -12
  30. package/dist/chunks/{default-data-B0Y8TU26.js.map → default-data-CL2V5IF-.js.map} +1 -1
  31. package/dist/chunks/{default-data-DlPr1rYe.esm.js → default-data-CewDRdY9.esm.js} +12 -12
  32. package/dist/chunks/{default-data-DlPr1rYe.esm.js.map → default-data-CewDRdY9.esm.js.map} +1 -1
  33. package/dist/chunks/{form-builder-conversion-DrA9C0NQ.esm.js → form-builder-conversion-5PObjQmo.esm.js} +2 -2
  34. package/dist/chunks/{form-builder-conversion-DrA9C0NQ.esm.js.map → form-builder-conversion-5PObjQmo.esm.js.map} +1 -1
  35. package/dist/chunks/{form-builder-conversion-BcJXOpRp.js → form-builder-conversion-CZUD_4rn.js} +2 -2
  36. package/dist/chunks/{form-builder-conversion-BcJXOpRp.js.map → form-builder-conversion-CZUD_4rn.js.map} +1 -1
  37. package/dist/chunks/{form-builder-deconversion-BmHlW07j.js → form-builder-deconversion-Bgk1q6Fa.js} +3 -3
  38. package/dist/chunks/{form-builder-deconversion-BmHlW07j.js.map → form-builder-deconversion-Bgk1q6Fa.js.map} +1 -1
  39. package/dist/chunks/{form-builder-deconversion-1hYI2jWw.esm.js → form-builder-deconversion-ELcu8H0N.esm.js} +3 -3
  40. package/dist/chunks/{form-builder-deconversion-1hYI2jWw.esm.js.map → form-builder-deconversion-ELcu8H0N.esm.js.map} +1 -1
  41. package/dist/chunks/{fullScreen-B4ZPj9dr.esm.js → fullScreen-7u2dFYMi.esm.js} +2 -2
  42. package/dist/chunks/{fullScreen-B4ZPj9dr.esm.js.map → fullScreen-7u2dFYMi.esm.js.map} +1 -1
  43. package/dist/chunks/{fullScreen-BrdRBi-K.js → fullScreen-BjtERQfx.js} +2 -2
  44. package/dist/chunks/{fullScreen-BrdRBi-K.js.map → fullScreen-BjtERQfx.js.map} +1 -1
  45. package/dist/chunks/{languageContext-DfIURMbF.esm.js → languageContext-BDBjPlEp.esm.js} +3 -3
  46. package/dist/chunks/{languageContext-DfIURMbF.esm.js.map → languageContext-BDBjPlEp.esm.js.map} +1 -1
  47. package/dist/chunks/{languageContext-CANlRoA0.js → languageContext-D5aFHu92.js} +3 -3
  48. package/dist/chunks/{languageContext-CANlRoA0.js.map → languageContext-D5aFHu92.js.map} +1 -1
  49. package/dist/chunks/{migration-utils-Dc_6VdeJ.js → migration-utils-CKsbzmGE.js} +2 -2
  50. package/dist/chunks/{migration-utils-Dc_6VdeJ.js.map → migration-utils-CKsbzmGE.js.map} +1 -1
  51. package/dist/chunks/{migration-utils-D4OMb4fL.esm.js → migration-utils-DLHDD2HQ.esm.js} +2 -2
  52. package/dist/chunks/{migration-utils-D4OMb4fL.esm.js.map → migration-utils-DLHDD2HQ.esm.js.map} +1 -1
  53. package/dist/chunks/{page-context-DfmpUWuf.esm.js → page-context-Cvdc6oCn.esm.js} +3 -3
  54. package/dist/chunks/{page-context-DfmpUWuf.esm.js.map → page-context-Cvdc6oCn.esm.js.map} +1 -1
  55. package/dist/chunks/{page-context-Cg2MyCmD.js → page-context-DbmNiYCW.js} +3 -3
  56. package/dist/chunks/{page-context-Cg2MyCmD.js.map → page-context-DbmNiYCW.js.map} +1 -1
  57. package/dist/chunks/{reducer-C0cHDjmv.esm.js → reducer-B-83-Uuu.esm.js} +2 -2
  58. package/dist/chunks/{reducer-C0cHDjmv.esm.js.map → reducer-B-83-Uuu.esm.js.map} +1 -1
  59. package/dist/chunks/{reducer-BuEwR2fM.js → reducer-dJC7462F.js} +2 -2
  60. package/dist/chunks/{reducer-BuEwR2fM.js.map → reducer-dJC7462F.js.map} +1 -1
  61. package/dist/chunks/{shareSlice-BHlSQRKw.js → shareSlice-CLJDkmkc.js} +2 -2
  62. package/dist/chunks/{shareSlice-BHlSQRKw.js.map → shareSlice-CLJDkmkc.js.map} +1 -1
  63. package/dist/chunks/{shareSlice-DvnaG9GO.esm.js → shareSlice-bLbaaebU.esm.js} +2 -2
  64. package/dist/chunks/{shareSlice-DvnaG9GO.esm.js.map → shareSlice-bLbaaebU.esm.js.map} +1 -1
  65. package/dist/chunks/{sidebar-CBzmUNFw.js → sidebar-DjLVz3cn.js} +4 -4
  66. package/dist/chunks/{sidebar-CBzmUNFw.js.map → sidebar-DjLVz3cn.js.map} +1 -1
  67. package/dist/chunks/{sidebar-B6-JNM4K.esm.js → sidebar-Dvkxcr0w.esm.js} +4 -4
  68. package/dist/chunks/{sidebar-B6-JNM4K.esm.js.map → sidebar-Dvkxcr0w.esm.js.map} +1 -1
  69. package/dist/chunks/{sidebarScreen-vIzHgQxd.js → sidebarScreen-CAcPjFlR.js} +5 -5
  70. package/dist/chunks/{sidebarScreen-vIzHgQxd.js.map → sidebarScreen-CAcPjFlR.js.map} +1 -1
  71. package/dist/chunks/{sidebarScreen-C7gUqSYZ.esm.js → sidebarScreen-LBfnbAnh.esm.js} +5 -5
  72. package/dist/chunks/{sidebarScreen-C7gUqSYZ.esm.js.map → sidebarScreen-LBfnbAnh.esm.js.map} +1 -1
  73. package/dist/chunks/{store-giqheYvw.esm.js → store-Bs2TLIwy.esm.js} +3 -3
  74. package/dist/chunks/{store-giqheYvw.esm.js.map → store-Bs2TLIwy.esm.js.map} +1 -1
  75. package/dist/chunks/{store-6mckWhh4.js → store-pSoHSTnK.js} +3 -3
  76. package/dist/chunks/{store-6mckWhh4.js.map → store-pSoHSTnK.js.map} +1 -1
  77. package/dist/chunks/{translations-vAZ7RIc7.js → translations-B6NX87Xk.js} +2 -2
  78. package/dist/chunks/{translations-vAZ7RIc7.js.map → translations-B6NX87Xk.js.map} +1 -1
  79. package/dist/chunks/{translations-DiE6kTBI.esm.js → translations-Da-xM_ve.esm.js} +2 -2
  80. package/dist/chunks/{translations-DiE6kTBI.esm.js.map → translations-Da-xM_ve.esm.js.map} +1 -1
  81. package/dist/chunks/{uom-field-wrapper-aR0Kqbm9.js → uom-field-wrapper-B90Jdtz1.js} +84 -27
  82. package/dist/chunks/uom-field-wrapper-B90Jdtz1.js.map +1 -0
  83. package/dist/chunks/{uom-field-wrapper-BnjRsGw2.esm.js → uom-field-wrapper-DGM5Po80.esm.js} +84 -27
  84. package/dist/chunks/uom-field-wrapper-DGM5Po80.esm.js.map +1 -0
  85. package/dist/chunks/{useAddressContact-VUXo0xxq.esm.js → useAddressContact-COPal7kl.esm.js} +6 -6
  86. package/dist/chunks/{useAddressContact-VUXo0xxq.esm.js.map → useAddressContact-COPal7kl.esm.js.map} +1 -1
  87. package/dist/chunks/{useAddressContact-3jZsdmGS.js → useAddressContact-Df1RW91F.js} +6 -6
  88. package/dist/chunks/{useAddressContact-3jZsdmGS.js.map → useAddressContact-Df1RW91F.js.map} +1 -1
  89. package/dist/chunks/{useAuth-BNR7N60-.js → useAuth-PKEPSrPi.js} +2 -2
  90. package/dist/chunks/{useAuth-BNR7N60-.js.map → useAuth-PKEPSrPi.js.map} +1 -1
  91. package/dist/chunks/{useAuth-b1FMAFmO.esm.js → useAuth-rLGEr4kR.esm.js} +2 -2
  92. package/dist/chunks/{useAuth-b1FMAFmO.esm.js.map → useAuth-rLGEr4kR.esm.js.map} +1 -1
  93. package/dist/chunks/{useLangauge-dxTIlPe-.esm.js → useLangauge-DM-_vu9I.esm.js} +2 -2
  94. package/dist/chunks/{useLangauge-dxTIlPe-.esm.js.map → useLangauge-DM-_vu9I.esm.js.map} +1 -1
  95. package/dist/chunks/{useLangauge-DsEM05Ll.js → useLangauge-DTmhopi3.js} +2 -2
  96. package/dist/chunks/{useLangauge-DsEM05Ll.js.map → useLangauge-DTmhopi3.js.map} +1 -1
  97. package/dist/components/index.esm.js +10 -10
  98. package/dist/components/index.js +10 -10
  99. package/dist/contexts/index.esm.js +3 -3
  100. package/dist/contexts/index.js +3 -3
  101. package/dist/hooks/index.esm.js +5 -5
  102. package/dist/hooks/index.js +5 -5
  103. package/dist/index.esm.js +24 -24
  104. package/dist/index.js +24 -24
  105. package/dist/layout/index.esm.js +2 -2
  106. package/dist/layout/index.js +2 -2
  107. package/dist/redux/index.esm.js +4 -4
  108. package/dist/redux/index.js +4 -4
  109. package/dist/utils/index.esm.js +7 -7
  110. package/dist/utils/index.js +6 -6
  111. package/dist/views/index.esm.js +8 -8
  112. package/dist/views/index.js +7 -7
  113. package/package.json +1 -1
  114. package/dist/chunks/uom-field-wrapper-BnjRsGw2.esm.js.map +0 -1
  115. package/dist/chunks/uom-field-wrapper-aR0Kqbm9.js.map +0 -1
@@ -2,10 +2,10 @@
2
2
  const _ = require("lodash");
3
3
  const React = require("react");
4
4
  const reactRouterDom = require("react-router-dom");
5
- const pageContext = require("./page-context-Cg2MyCmD.js");
5
+ const pageContext = require("./page-context-DbmNiYCW.js");
6
6
  const routePageMap = require("./route-page-map-BMisO6c3.js");
7
7
  const apiConfig = require("./api-config-DXwDMFn-.js");
8
- const common = require("./common-B1hGK8kQ.js");
8
+ const common = require("./common-CbkoxxEu.js");
9
9
  const api = require("./api-CrXXYiZ2.js");
10
10
  const notistack = require("notistack");
11
11
  const jsxRuntime = require("./jsx-runtime-B6vEU3CM.js");
@@ -383,4 +383,4 @@ exports.useLocationFilter = useLocationFilter;
383
383
  exports.useMultipleLocationFilters = useMultipleLocationFilters;
384
384
  exports.usePages = usePages;
385
385
  exports.usePermissions = usePermissions;
386
- //# sourceMappingURL=checkbox-DNW1SYc0.js.map
386
+ //# sourceMappingURL=checkbox-CKG0IzuP.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox-DNW1SYc0.js","sources":["../../src/hooks/use-deep-memo.ts","../../src/hooks/use-permissions.ts","../../src/hooks/use-pages.ts","../../src/hooks/useLocationFilter.tsx","../../src/hooks/useApi.tsx","../../src/hooks/useAccountSetting.tsx","../../src/components/checkbox/checkbox.tsx"],"sourcesContent":["import _ from 'lodash';\nimport { useRef } from 'react';\n\nfunction useDeepMemo<T>(value: T): T {\n const ref = useRef<T>();\n\n if (!_.isEqual(ref.current, value)) {\n ref.current = value;\n }\n\n return ref.current as T;\n}\n\nexport default useDeepMemo;\n","import { useContext } from \"react\";\nimport { PermissionsContext, PermissionsContextType } from \"../contexts/permission-context\";\n\n\nexport const usePermissions = (): PermissionsContextType => {\n const context = useContext(PermissionsContext) as PermissionsContextType | null;\n\n if (!context) {\n throw new Error(\"usePermissions must be used within a PermissionsProvider\");\n }\n\n return context;\n};","import { useContext } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { PageContext } from \"../contexts/page-context\";\nimport { routeToResourceMap } from \"../constants/route-page-map\";\nimport { usePermissions } from \"./use-permissions\";\nimport { MaterialTableColumnProps } from \"../components/material-table/material-table\";\n\nfunction getByDotKey(obj: any, key: string) {\n return key.split('.').reduce((acc: any, part: string) => acc?.[part], obj);\n}\n\nexport const usePages = (defaultColumns:MaterialTableColumnProps[] = []) => {\n const context = useContext(PageContext);\n\n if (!context) {\n throw new Error(\"usePages must be used within a PageProvider\");\n }\n\n if (context.initializeColumns) {\n context.initializeColumns(defaultColumns);\n }\n\n const location = useLocation();\n const permissions = usePermissions();\n const mergedRouteToResourceMap = { ...routeToResourceMap, ...context.customRouteToResourceMap };\n const permissionKey = mergedRouteToResourceMap[location.pathname]?.permissionKey;\n const permObj = permissionKey ? getByDotKey(permissions, permissionKey) : null;\n const notAllowedFilters: string[] = permObj?.notAllowedFilters ?? [];\n\n const schemaFields = notAllowedFilters.length > 0\n ? context.schemaFields.filter((f) => !notAllowedFilters.includes(f.key))\n : context.schemaFields;\n\n return { ...context, schemaFields };\n};\n","import { useEffect, useMemo } from 'react';\n\n\nexport const useLocationFilter = ({\n selectedCompany,\n setValue,\n fieldArrayName,\n locationFieldName,\n resetValue = null,\n filterKey = '&company_id.in',\n isDirty = false\n}) => {\n\n // Reset location value when company changes\n useEffect(() => {\n if (setValue && fieldArrayName && locationFieldName && isDirty) {\n setValue(`${fieldArrayName}.${locationFieldName}`, resetValue);\n }\n }, [isDirty, setValue, fieldArrayName, locationFieldName, resetValue]);\n\n const locationFilter = useMemo(() => {\n const companyId = Array.isArray(selectedCompany) ? (selectedCompany?.length ? selectedCompany : null) : (selectedCompany || null);\n console.log(\"🚀 ~ useLocationFilter ~ companyId:\", companyId)\n\n if (companyId === null) {\n return {};\n }\n\n return {\n [filterKey]: companyId\n };\n }, [selectedCompany, filterKey]);\n\n return locationFilter;\n};\n\n\n\nexport const useMultipleLocationFilters = ({\n selectedCompany,\n setValue,\n fieldConfigs,\n resetValue = undefined,\n filterKey = '&company_id.in'\n}) => {\n return useMemo(() => {\n const companyId = selectedCompany?.length > 0 ? selectedCompany : 0;\n console.log(\"🚀 ~ useLocationFilter ~ companyId:\", companyId)\n\n // Reset all location fields\n fieldConfigs.forEach(({ fieldArrayName, locationFieldName }) => {\n if (setValue && fieldArrayName && locationFieldName) {\n setValue(`${fieldArrayName}.${locationFieldName}`, resetValue);\n }\n });\n\n return {\n [filterKey]: companyId\n };\n }, [selectedCompany, setValue, fieldConfigs, resetValue, filterKey]);\n};\n\nexport default {\n useLocationFilter,\n useMultipleLocationFilters\n}","import { useSnackbar } from 'notistack';\nimport { useCallback, useState } from 'react';\n\ninterface UseApiProps {\n apiFunc: any;\n onSuccess?: any;\n onError?: any;\n enableLoading?: any;\n successMessage?: string;\n errorMessage?: string | null;\n loadingState?: any;\n showError?: boolean;\n}\n\ntype ApiResponse = {\n meta?: {\n requestStatus?: string;\n };\n error?: {\n message?: string;\n };\n payload?: any\n};\n\ntype Callback = () => void;\n\nfunction apiHelper({\n res,\n callBack,\n showError = true,\n errorCallback,\n successMessage = null,\n enqueueSnackbar,\n}: {\n res: ApiResponse;\n callBack?: Callback;\n showError?: boolean;\n errorCallback?: (error: any) => void;\n successMessage?: string | null;\n enqueueSnackbar: any;\n}): void {\n if (res?.meta?.requestStatus === \"rejected\") {\n const errorMessage = (() => {\n try {\n const msg = res.error?.message || res?.payload?.message;\n return msg ? JSON.parse(msg) : null;\n } catch {\n return { message: res.error?.message || res?.payload?.message || \"Something went wrong\" };\n }\n })();\n\n const rawError = errorMessage?.message;\n let message = \"Something went wrong\";\n\n if (typeof rawError === \"string\") {\n message = rawError.replace(\"Error:\", \"\").trim();\n } else if (rawError && typeof rawError === \"object\") {\n message = (rawError as any).message || JSON.stringify(rawError);\n } else if (rawError) {\n message = String(rawError);\n }\n console.log(\"🚀 ~ apiHelper ~ rawError:\", rawError)\n\n console.log(\"🚀 ~ apiHelper ~ showError:\", showError)\n if (showError && typeof enqueueSnackbar === 'function') {\n enqueueSnackbar(message, { variant: \"error\" });\n }\n\n if (errorCallback && typeof errorCallback === \"function\") {\n errorCallback(message);\n }\n return;\n }\n\n if (successMessage && typeof enqueueSnackbar === 'function') {\n enqueueSnackbar(successMessage);\n }\n\n if (callBack && typeof callBack === \"function\") {\n callBack();\n }\n}\n\nexport default function useApi() {\n const { enqueueSnackbar } = useSnackbar();\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n\n const callApi = useCallback(async ({\n apiFunc,\n onSuccess,\n onError,\n successMessage,\n errorMessage,\n loadingState,\n enableLoading = true,\n showError = true,\n }: UseApiProps) => {\n if (enableLoading) setLoading(true);\n loadingState?.(true);\n let response;\n try {\n response = await apiFunc();\n } catch (err: any) {\n response = {\n meta: { requestStatus: \"rejected\" },\n error: { message: err?.message || \"Something went wrong\" }\n };\n }\n if (enableLoading) setLoading(false);\n\n loadingState?.(false);\n apiHelper(\n {\n res: response,\n callBack: () => {\n onSuccess?.(response);\n },\n errorCallback: (err) => {\n onError?.(response);\n setError(errorMessage || err);\n },\n successMessage: successMessage,\n showError,\n enqueueSnackbar,\n }\n )\n\n return { response, error }\n\n }, [enqueueSnackbar])\n\n return { callApi, loading, error };\n}\n","import { useCallback, useEffect, useState } from \"react\";\nimport { Control, FieldValues, Path, PathValue, UseFormSetValue, useWatch } from \"react-hook-form\";\nimport { getApiConfig, getToken, isApiConfigInitialized, onApiConfigReady } from \"../utils\";\nimport { getV1SettingsConfigurations, setBaseUrl } from \"../api-client/api.accounting/api\";\nimport useApi from \"./useApi\";\n\ninterface UpdateMapping {\n [key: string]: string; // Form field name -> API config key\n}\n\ninterface UseFormFieldUpdaterConfig<T extends FieldValues = any> {\n control?: Control<T>;\n setValue?: UseFormSetValue<T>;\n watch?: any;\n fieldToUpdate: UpdateMapping;\n companyField?: string;\n locationField?: string;\n departmentField?: string;\n fieldArrayName?: string;\n transformResponse?: (data: any) => any;\n customDependencies?: any[];\n getFieldState?: any;\n isUpdateAccount?: boolean;\n}\nexport function initializeApiBaseUrls(): void {\n if (!isApiConfigInitialized()) {\n console.warn('API configuration not initialized yet. Base URLs will be set when configuration is available.');\n return;\n }\n\n const config = getApiConfig();\n const baseUrl = config.backendBaseUrl;\n\n setBaseUrl(`${baseUrl}/accounting`);\n}\n\nonApiConfigReady((config) => {\n const baseUrl = config.backendBaseUrl;\n setBaseUrl(`${baseUrl}/accounting`);\n});\n\n\nexport const useFormFieldUpdater = <T extends FieldValues = any>({\n control,\n setValue,\n fieldToUpdate,\n transformResponse,\n watch,\n fieldArrayName,\n companyField = 'company_id',\n locationField = 'location_id',\n departmentField = 'department_id',\n customDependencies = [],\n getFieldState,\n isUpdateAccount = false\n}: UseFormFieldUpdaterConfig<T>) => {\n const { callApi } = useApi();\n\n\n const [initialState, setInitialState] = useState<{\n filters: { [companyField]: any;[locationField]: any;[departmentField]: any };\n values: Record<string, any>;\n } | null>(null);\n const companyPath = fieldArrayName ? `${fieldArrayName}.${companyField}` : companyField;\n const locationPath = fieldArrayName ? `${fieldArrayName}.${locationField}` : locationField;\n const departmentPath = fieldArrayName ? `${fieldArrayName}.${departmentField}` : departmentField;\n const data = watch?.(`${fieldArrayName}`) || {};\n const isDirtyCompany = getFieldState?.(companyPath)?.isDirty;\n const isDirtyLocation = getFieldState?.(locationPath)?.isDirty;\n const isDirtyDepartment = getFieldState?.(departmentPath)?.isDirty;\n const selectedCompany = data?.[companyField] || null;\n const selectedLocation = data?.[locationField] || null;\n const selectedDepartment = data?.[departmentField] || null;\n useEffect(() => {\n if (watch && !initialState) {\n const filters = {\n [companyField]: selectedCompany,\n [locationField]: selectedLocation,\n [departmentField]: selectedDepartment,\n };\n const values: Record<string, any> = {};\n Object.keys(fieldToUpdate).forEach((key) => {\n const path = fieldArrayName ? `${fieldArrayName}.${key}` : key;\n values[key] = watch(path as any);\n });\n\n setInitialState({ filters, values });\n }\n }, [watch, selectedCompany, selectedLocation, selectedDepartment, initialState, companyPath, locationPath, departmentPath, isDirtyCompany, isDirtyLocation, isDirtyDepartment]);\n\n const updateFields = useCallback((data: any, forceUpdate: boolean = false) => {\n if (!setValue || !data) return;\n\n const transformed = transformResponse ? transformResponse(data) : data;\n if (!transformed) return;\n\n Object.entries(fieldToUpdate).forEach(([sourceField, targetField]: any) => {\n const updateValue = transformed?.find((i: any) => i?.config_key == (typeof targetField == 'object' ? targetField.key : targetField));\n if (updateValue !== undefined && updateValue !== null) {\n const path = fieldArrayName ? `${fieldArrayName}.${sourceField}` : sourceField;\n\n // Check if field already has a value - skip update only if NOT force updating (edit mode protection)\n if (!forceUpdate) {\n const existingValue = watch?.(path as any);\n if (existingValue !== undefined && existingValue !== null && existingValue !== '') {\n return; // Skip updating fields that already have values\n }\n }\n\n if (typeof targetField == 'object') {\n targetField.value(updateValue?.reference_id || updateValue?.reference_text);\n } else {\n setValue(path as any, updateValue?.reference_id || updateValue?.reference_text);\n }\n }\n });\n }, [setValue, fieldToUpdate, transformResponse, fieldArrayName, watch, ...customDependencies]);\n\n\n\n const fetchAndUpdate = useCallback(async () => {\n if (!selectedCompany || !initialState) return;\n // Helper to extract ID from array/object values\n const getFilterValue = (val: any) => {\n if (Array.isArray(val)) {\n if (val.length === 0) return null;\n const firstVal = val[0];\n if (firstVal && typeof firstVal === 'object') return firstVal.id || firstVal.value || null;\n return firstVal || null;\n }\n if (val && typeof val === 'object') return val.id || val.value || null;\n return val || null;\n };\n\n const companyId = getFilterValue(selectedCompany);\n const locationId = getFilterValue(selectedLocation);\n const departmentId = getFilterValue(selectedDepartment);\n\n if (!companyId || !initialState) return;\n\n const initialFilters = {\n companyId: getFilterValue(initialState.filters[companyField]),\n locationId: getFilterValue(initialState.filters[locationField]),\n departmentId: getFilterValue(initialState.filters[departmentField]),\n };\n\n const isFilterChanged =\n initialFilters.companyId !== companyId ||\n initialFilters.locationId !== locationId ||\n initialFilters.departmentId !== departmentId;\n\n const isTargetFieldsEmpty = Object.keys(fieldToUpdate).every((key) => {\n const path = fieldArrayName ? `${fieldArrayName}.${key}` : key;\n const val = watch?.(path as any);\n return val === undefined || val === null || val === \"\";\n });\n\n if (!isFilterChanged && !isUpdateAccount && !isTargetFieldsEmpty) {\n Object.entries(initialState.values).forEach(([key, value]) => {\n const path = fieldArrayName ? `${fieldArrayName}.${key}` : key;\n setValue?.(path as any, value as any);\n });\n return;\n }\n\n const filter = `(company_id.eq=${companyId || 1}&location_id.eq=${locationId || null}&department_id.eq=${departmentId || null})`;\n\n // In edit mode (isUpdateAccount=true): only force update if user manually changed filter (isDirty)\n // In add mode: force update when filter changes\n const isUserChangedFilter = isDirtyCompany || isDirtyLocation || isDirtyDepartment;\n const shouldForceUpdate = isUpdateAccount\n ? (isFilterChanged && isUserChangedFilter) // Edit mode: only when user changed\n : isFilterChanged; // Add mode: any filter change\n\n callApi({\n apiFunc: () => getV1SettingsConfigurations({\n ...getToken(),\n filters: filter\n }),\n onSuccess: (res: any) => {\n updateFields(res?.data?.configuration_list, shouldForceUpdate);\n },\n onError: (err) => {\n console.error('Error fetching accounting settings:', err);\n }\n });\n }, [selectedCompany, selectedLocation, selectedDepartment, initialState, callApi, setValue, isDirtyCompany, isDirtyLocation, isDirtyDepartment, isUpdateAccount]);\n\n useEffect(() => {\n fetchAndUpdate();\n }, [fetchAndUpdate]);\n\n return {\n selectedCompany,\n selectedLocation,\n selectedDepartment\n };\n};\n\nexport const useAccountingSetting = ({\n fieldToUpdate,\n fieldArrayName,\n companyField = 'company_id',\n locationField = 'location_id',\n departmentField = 'department_id',\n formMethods,\n customDependencies = [],\n ...rest\n}: {\n fieldToUpdate: any;\n fieldArrayName?: string;\n companyField?: string;\n locationField?: string;\n departmentField?: string;\n setValue?: any;\n control?: any;\n formMethods?: any;\n customDependencies?: any[];\n}) => {\n const { setValue, control, watch, getFieldState } = formMethods || {};\n\n return useFormFieldUpdater({\n control,\n setValue,\n watch,\n companyField,\n locationField,\n departmentField,\n fieldToUpdate,\n fieldArrayName,\n customDependencies,\n getFieldState,\n ...rest\n });\n};","import { CheckboxProps, Checkbox as MUICheckbox, styled } from '@mui/material';\nimport { CheckBoxIcon, RecgtangleIcon } from '../icons';\nimport { memo } from 'react';\n\nconst StyledCheckbox = styled(MUICheckbox)(({ theme: { palette } }) => ({\n\tpadding: '0rem',\n\tcolor: palette.theme?.secondary[300],\n\tborderRadius: '.625rem',\n\t'&.Mui-checked': {\n\t\tcolor: palette.theme?.primary[600],\n\t\t'&:hover': {\n\t\t\tcolor: palette.theme?.primary[500]\n\t\t}\n\t},\n\t'&.Mui-disabled': {\n\t\tcolor: palette.theme?.secondary[400]\n\t}\n}));\n\nconst Checkbox = memo((props: CheckboxProps) => {\n\treturn (\n\t\t<StyledCheckbox\n\t\t\ticon={<RecgtangleIcon fontSize={props?.size || 'small'} />}\n\t\t\tcheckedIcon={<CheckBoxIcon fontSize={props?.size || 'small'} />}\n\t\t\tdisableRipple\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nexport { Checkbox };\nexport default Checkbox;\n"],"names":["useRef","useContext","PermissionsContext","PageContext","useLocation","routeToResourceMap","useEffect","useMemo","_a","useSnackbar","useState","useCallback","isApiConfigInitialized","getApiConfig","setBaseUrl","onApiConfigReady","data","getV1SettingsConfigurations","getToken","styled","MUICheckbox","memo","jsx","RecgtangleIcon","CheckBoxIcon"],"mappings":"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"}
1
+ {"version":3,"file":"checkbox-CKG0IzuP.js","sources":["../../src/hooks/use-deep-memo.ts","../../src/hooks/use-permissions.ts","../../src/hooks/use-pages.ts","../../src/hooks/useLocationFilter.tsx","../../src/hooks/useApi.tsx","../../src/hooks/useAccountSetting.tsx","../../src/components/checkbox/checkbox.tsx"],"sourcesContent":["import _ from 'lodash';\nimport { useRef } from 'react';\n\nfunction useDeepMemo<T>(value: T): T {\n const ref = useRef<T>();\n\n if (!_.isEqual(ref.current, value)) {\n ref.current = value;\n }\n\n return ref.current as T;\n}\n\nexport default useDeepMemo;\n","import { useContext } from \"react\";\nimport { PermissionsContext, PermissionsContextType } from \"../contexts/permission-context\";\n\n\nexport const usePermissions = (): PermissionsContextType => {\n const context = useContext(PermissionsContext) as PermissionsContextType | null;\n\n if (!context) {\n throw new Error(\"usePermissions must be used within a PermissionsProvider\");\n }\n\n return context;\n};","import { useContext } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { PageContext } from \"../contexts/page-context\";\nimport { routeToResourceMap } from \"../constants/route-page-map\";\nimport { usePermissions } from \"./use-permissions\";\nimport { MaterialTableColumnProps } from \"../components/material-table/material-table\";\n\nfunction getByDotKey(obj: any, key: string) {\n return key.split('.').reduce((acc: any, part: string) => acc?.[part], obj);\n}\n\nexport const usePages = (defaultColumns:MaterialTableColumnProps[] = []) => {\n const context = useContext(PageContext);\n\n if (!context) {\n throw new Error(\"usePages must be used within a PageProvider\");\n }\n\n if (context.initializeColumns) {\n context.initializeColumns(defaultColumns);\n }\n\n const location = useLocation();\n const permissions = usePermissions();\n const mergedRouteToResourceMap = { ...routeToResourceMap, ...context.customRouteToResourceMap };\n const permissionKey = mergedRouteToResourceMap[location.pathname]?.permissionKey;\n const permObj = permissionKey ? getByDotKey(permissions, permissionKey) : null;\n const notAllowedFilters: string[] = permObj?.notAllowedFilters ?? [];\n\n const schemaFields = notAllowedFilters.length > 0\n ? context.schemaFields.filter((f) => !notAllowedFilters.includes(f.key))\n : context.schemaFields;\n\n return { ...context, schemaFields };\n};\n","import { useEffect, useMemo } from 'react';\n\n\nexport const useLocationFilter = ({\n selectedCompany,\n setValue,\n fieldArrayName,\n locationFieldName,\n resetValue = null,\n filterKey = '&company_id.in',\n isDirty = false\n}) => {\n\n // Reset location value when company changes\n useEffect(() => {\n if (setValue && fieldArrayName && locationFieldName && isDirty) {\n setValue(`${fieldArrayName}.${locationFieldName}`, resetValue);\n }\n }, [isDirty, setValue, fieldArrayName, locationFieldName, resetValue]);\n\n const locationFilter = useMemo(() => {\n const companyId = Array.isArray(selectedCompany) ? (selectedCompany?.length ? selectedCompany : null) : (selectedCompany || null);\n console.log(\"🚀 ~ useLocationFilter ~ companyId:\", companyId)\n\n if (companyId === null) {\n return {};\n }\n\n return {\n [filterKey]: companyId\n };\n }, [selectedCompany, filterKey]);\n\n return locationFilter;\n};\n\n\n\nexport const useMultipleLocationFilters = ({\n selectedCompany,\n setValue,\n fieldConfigs,\n resetValue = undefined,\n filterKey = '&company_id.in'\n}) => {\n return useMemo(() => {\n const companyId = selectedCompany?.length > 0 ? selectedCompany : 0;\n console.log(\"🚀 ~ useLocationFilter ~ companyId:\", companyId)\n\n // Reset all location fields\n fieldConfigs.forEach(({ fieldArrayName, locationFieldName }) => {\n if (setValue && fieldArrayName && locationFieldName) {\n setValue(`${fieldArrayName}.${locationFieldName}`, resetValue);\n }\n });\n\n return {\n [filterKey]: companyId\n };\n }, [selectedCompany, setValue, fieldConfigs, resetValue, filterKey]);\n};\n\nexport default {\n useLocationFilter,\n useMultipleLocationFilters\n}","import { useSnackbar } from 'notistack';\nimport { useCallback, useState } from 'react';\n\ninterface UseApiProps {\n apiFunc: any;\n onSuccess?: any;\n onError?: any;\n enableLoading?: any;\n successMessage?: string;\n errorMessage?: string | null;\n loadingState?: any;\n showError?: boolean;\n}\n\ntype ApiResponse = {\n meta?: {\n requestStatus?: string;\n };\n error?: {\n message?: string;\n };\n payload?: any\n};\n\ntype Callback = () => void;\n\nfunction apiHelper({\n res,\n callBack,\n showError = true,\n errorCallback,\n successMessage = null,\n enqueueSnackbar,\n}: {\n res: ApiResponse;\n callBack?: Callback;\n showError?: boolean;\n errorCallback?: (error: any) => void;\n successMessage?: string | null;\n enqueueSnackbar: any;\n}): void {\n if (res?.meta?.requestStatus === \"rejected\") {\n const errorMessage = (() => {\n try {\n const msg = res.error?.message || res?.payload?.message;\n return msg ? JSON.parse(msg) : null;\n } catch {\n return { message: res.error?.message || res?.payload?.message || \"Something went wrong\" };\n }\n })();\n\n const rawError = errorMessage?.message;\n let message = \"Something went wrong\";\n\n if (typeof rawError === \"string\") {\n message = rawError.replace(\"Error:\", \"\").trim();\n } else if (rawError && typeof rawError === \"object\") {\n message = (rawError as any).message || JSON.stringify(rawError);\n } else if (rawError) {\n message = String(rawError);\n }\n console.log(\"🚀 ~ apiHelper ~ rawError:\", rawError)\n\n console.log(\"🚀 ~ apiHelper ~ showError:\", showError)\n if (showError && typeof enqueueSnackbar === 'function') {\n enqueueSnackbar(message, { variant: \"error\" });\n }\n\n if (errorCallback && typeof errorCallback === \"function\") {\n errorCallback(message);\n }\n return;\n }\n\n if (successMessage && typeof enqueueSnackbar === 'function') {\n enqueueSnackbar(successMessage);\n }\n\n if (callBack && typeof callBack === \"function\") {\n callBack();\n }\n}\n\nexport default function useApi() {\n const { enqueueSnackbar } = useSnackbar();\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n\n const callApi = useCallback(async ({\n apiFunc,\n onSuccess,\n onError,\n successMessage,\n errorMessage,\n loadingState,\n enableLoading = true,\n showError = true,\n }: UseApiProps) => {\n if (enableLoading) setLoading(true);\n loadingState?.(true);\n let response;\n try {\n response = await apiFunc();\n } catch (err: any) {\n response = {\n meta: { requestStatus: \"rejected\" },\n error: { message: err?.message || \"Something went wrong\" }\n };\n }\n if (enableLoading) setLoading(false);\n\n loadingState?.(false);\n apiHelper(\n {\n res: response,\n callBack: () => {\n onSuccess?.(response);\n },\n errorCallback: (err) => {\n onError?.(response);\n setError(errorMessage || err);\n },\n successMessage: successMessage,\n showError,\n enqueueSnackbar,\n }\n )\n\n return { response, error }\n\n }, [enqueueSnackbar])\n\n return { callApi, loading, error };\n}\n","import { useCallback, useEffect, useState } from \"react\";\nimport { Control, FieldValues, Path, PathValue, UseFormSetValue, useWatch } from \"react-hook-form\";\nimport { getApiConfig, getToken, isApiConfigInitialized, onApiConfigReady } from \"../utils\";\nimport { getV1SettingsConfigurations, setBaseUrl } from \"../api-client/api.accounting/api\";\nimport useApi from \"./useApi\";\n\ninterface UpdateMapping {\n [key: string]: string; // Form field name -> API config key\n}\n\ninterface UseFormFieldUpdaterConfig<T extends FieldValues = any> {\n control?: Control<T>;\n setValue?: UseFormSetValue<T>;\n watch?: any;\n fieldToUpdate: UpdateMapping;\n companyField?: string;\n locationField?: string;\n departmentField?: string;\n fieldArrayName?: string;\n transformResponse?: (data: any) => any;\n customDependencies?: any[];\n getFieldState?: any;\n isUpdateAccount?: boolean;\n}\nexport function initializeApiBaseUrls(): void {\n if (!isApiConfigInitialized()) {\n console.warn('API configuration not initialized yet. Base URLs will be set when configuration is available.');\n return;\n }\n\n const config = getApiConfig();\n const baseUrl = config.backendBaseUrl;\n\n setBaseUrl(`${baseUrl}/accounting`);\n}\n\nonApiConfigReady((config) => {\n const baseUrl = config.backendBaseUrl;\n setBaseUrl(`${baseUrl}/accounting`);\n});\n\n\nexport const useFormFieldUpdater = <T extends FieldValues = any>({\n control,\n setValue,\n fieldToUpdate,\n transformResponse,\n watch,\n fieldArrayName,\n companyField = 'company_id',\n locationField = 'location_id',\n departmentField = 'department_id',\n customDependencies = [],\n getFieldState,\n isUpdateAccount = false\n}: UseFormFieldUpdaterConfig<T>) => {\n const { callApi } = useApi();\n\n\n const [initialState, setInitialState] = useState<{\n filters: { [companyField]: any;[locationField]: any;[departmentField]: any };\n values: Record<string, any>;\n } | null>(null);\n const companyPath = fieldArrayName ? `${fieldArrayName}.${companyField}` : companyField;\n const locationPath = fieldArrayName ? `${fieldArrayName}.${locationField}` : locationField;\n const departmentPath = fieldArrayName ? `${fieldArrayName}.${departmentField}` : departmentField;\n const data = watch?.(`${fieldArrayName}`) || {};\n const isDirtyCompany = getFieldState?.(companyPath)?.isDirty;\n const isDirtyLocation = getFieldState?.(locationPath)?.isDirty;\n const isDirtyDepartment = getFieldState?.(departmentPath)?.isDirty;\n const selectedCompany = data?.[companyField] || null;\n const selectedLocation = data?.[locationField] || null;\n const selectedDepartment = data?.[departmentField] || null;\n useEffect(() => {\n if (watch && !initialState) {\n const filters = {\n [companyField]: selectedCompany,\n [locationField]: selectedLocation,\n [departmentField]: selectedDepartment,\n };\n const values: Record<string, any> = {};\n Object.keys(fieldToUpdate).forEach((key) => {\n const path = fieldArrayName ? `${fieldArrayName}.${key}` : key;\n values[key] = watch(path as any);\n });\n\n setInitialState({ filters, values });\n }\n }, [watch, selectedCompany, selectedLocation, selectedDepartment, initialState, companyPath, locationPath, departmentPath, isDirtyCompany, isDirtyLocation, isDirtyDepartment]);\n\n const updateFields = useCallback((data: any, forceUpdate: boolean = false) => {\n if (!setValue || !data) return;\n\n const transformed = transformResponse ? transformResponse(data) : data;\n if (!transformed) return;\n\n Object.entries(fieldToUpdate).forEach(([sourceField, targetField]: any) => {\n const updateValue = transformed?.find((i: any) => i?.config_key == (typeof targetField == 'object' ? targetField.key : targetField));\n if (updateValue !== undefined && updateValue !== null) {\n const path = fieldArrayName ? `${fieldArrayName}.${sourceField}` : sourceField;\n\n // Check if field already has a value - skip update only if NOT force updating (edit mode protection)\n if (!forceUpdate) {\n const existingValue = watch?.(path as any);\n if (existingValue !== undefined && existingValue !== null && existingValue !== '') {\n return; // Skip updating fields that already have values\n }\n }\n\n if (typeof targetField == 'object') {\n targetField.value(updateValue?.reference_id || updateValue?.reference_text);\n } else {\n setValue(path as any, updateValue?.reference_id || updateValue?.reference_text);\n }\n }\n });\n }, [setValue, fieldToUpdate, transformResponse, fieldArrayName, watch, ...customDependencies]);\n\n\n\n const fetchAndUpdate = useCallback(async () => {\n if (!selectedCompany || !initialState) return;\n // Helper to extract ID from array/object values\n const getFilterValue = (val: any) => {\n if (Array.isArray(val)) {\n if (val.length === 0) return null;\n const firstVal = val[0];\n if (firstVal && typeof firstVal === 'object') return firstVal.id || firstVal.value || null;\n return firstVal || null;\n }\n if (val && typeof val === 'object') return val.id || val.value || null;\n return val || null;\n };\n\n const companyId = getFilterValue(selectedCompany);\n const locationId = getFilterValue(selectedLocation);\n const departmentId = getFilterValue(selectedDepartment);\n\n if (!companyId || !initialState) return;\n\n const initialFilters = {\n companyId: getFilterValue(initialState.filters[companyField]),\n locationId: getFilterValue(initialState.filters[locationField]),\n departmentId: getFilterValue(initialState.filters[departmentField]),\n };\n\n const isFilterChanged =\n initialFilters.companyId !== companyId ||\n initialFilters.locationId !== locationId ||\n initialFilters.departmentId !== departmentId;\n\n const isTargetFieldsEmpty = Object.keys(fieldToUpdate).every((key) => {\n const path = fieldArrayName ? `${fieldArrayName}.${key}` : key;\n const val = watch?.(path as any);\n return val === undefined || val === null || val === \"\";\n });\n\n if (!isFilterChanged && !isUpdateAccount && !isTargetFieldsEmpty) {\n Object.entries(initialState.values).forEach(([key, value]) => {\n const path = fieldArrayName ? `${fieldArrayName}.${key}` : key;\n setValue?.(path as any, value as any);\n });\n return;\n }\n\n const filter = `(company_id.eq=${companyId || 1}&location_id.eq=${locationId || null}&department_id.eq=${departmentId || null})`;\n\n // In edit mode (isUpdateAccount=true): only force update if user manually changed filter (isDirty)\n // In add mode: force update when filter changes\n const isUserChangedFilter = isDirtyCompany || isDirtyLocation || isDirtyDepartment;\n const shouldForceUpdate = isUpdateAccount\n ? (isFilterChanged && isUserChangedFilter) // Edit mode: only when user changed\n : isFilterChanged; // Add mode: any filter change\n\n callApi({\n apiFunc: () => getV1SettingsConfigurations({\n ...getToken(),\n filters: filter\n }),\n onSuccess: (res: any) => {\n updateFields(res?.data?.configuration_list, shouldForceUpdate);\n },\n onError: (err) => {\n console.error('Error fetching accounting settings:', err);\n }\n });\n }, [selectedCompany, selectedLocation, selectedDepartment, initialState, callApi, setValue, isDirtyCompany, isDirtyLocation, isDirtyDepartment, isUpdateAccount]);\n\n useEffect(() => {\n fetchAndUpdate();\n }, [fetchAndUpdate]);\n\n return {\n selectedCompany,\n selectedLocation,\n selectedDepartment\n };\n};\n\nexport const useAccountingSetting = ({\n fieldToUpdate,\n fieldArrayName,\n companyField = 'company_id',\n locationField = 'location_id',\n departmentField = 'department_id',\n formMethods,\n customDependencies = [],\n ...rest\n}: {\n fieldToUpdate: any;\n fieldArrayName?: string;\n companyField?: string;\n locationField?: string;\n departmentField?: string;\n setValue?: any;\n control?: any;\n formMethods?: any;\n customDependencies?: any[];\n}) => {\n const { setValue, control, watch, getFieldState } = formMethods || {};\n\n return useFormFieldUpdater({\n control,\n setValue,\n watch,\n companyField,\n locationField,\n departmentField,\n fieldToUpdate,\n fieldArrayName,\n customDependencies,\n getFieldState,\n ...rest\n });\n};","import { CheckboxProps, Checkbox as MUICheckbox, styled } from '@mui/material';\nimport { CheckBoxIcon, RecgtangleIcon } from '../icons';\nimport { memo } from 'react';\n\nconst StyledCheckbox = styled(MUICheckbox)(({ theme: { palette } }) => ({\n\tpadding: '0rem',\n\tcolor: palette.theme?.secondary[300],\n\tborderRadius: '.625rem',\n\t'&.Mui-checked': {\n\t\tcolor: palette.theme?.primary[600],\n\t\t'&:hover': {\n\t\t\tcolor: palette.theme?.primary[500]\n\t\t}\n\t},\n\t'&.Mui-disabled': {\n\t\tcolor: palette.theme?.secondary[400]\n\t}\n}));\n\nconst Checkbox = memo((props: CheckboxProps) => {\n\treturn (\n\t\t<StyledCheckbox\n\t\t\ticon={<RecgtangleIcon fontSize={props?.size || 'small'} />}\n\t\t\tcheckedIcon={<CheckBoxIcon fontSize={props?.size || 'small'} />}\n\t\t\tdisableRipple\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nexport { Checkbox };\nexport default Checkbox;\n"],"names":["useRef","useContext","PermissionsContext","PageContext","useLocation","routeToResourceMap","useEffect","useMemo","_a","useSnackbar","useState","useCallback","isApiConfigInitialized","getApiConfig","setBaseUrl","onApiConfigReady","data","getV1SettingsConfigurations","getToken","styled","MUICheckbox","memo","jsx","RecgtangleIcon","CheckBoxIcon"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import _ from "lodash";
2
2
  import { useRef, useContext, useEffect, useMemo, useState, useCallback, memo } from "react";
3
3
  import { useLocation } from "react-router-dom";
4
- import { b as PermissionsContext, P as PageContext } from "./page-context-DfmpUWuf.esm.js";
4
+ import { b as PermissionsContext, P as PageContext } from "./page-context-Cvdc6oCn.esm.js";
5
5
  import { b1 as routeToResourceMap } from "./route-page-map-CwkJKqEq.esm.js";
6
6
  import { c as isApiConfigInitialized, g as getApiConfig, o as onApiConfigReady } from "./api-config-GOys-syK.esm.js";
7
- import { at as getToken } from "./common-BVfS06ca.esm.js";
7
+ import { at as getToken } from "./common-r5LBzRrd.esm.js";
8
8
  import { B as getV1SettingsConfigurations, C as setBaseUrl } from "./api-z4kM0HGD.esm.js";
9
9
  import { useSnackbar } from "notistack";
10
10
  import { j as jsxRuntimeExports } from "./jsx-runtime-ClFauRgV.esm.js";
@@ -384,4 +384,4 @@ export {
384
384
  initializeApiBaseUrls as i,
385
385
  useAccountingSetting as u
386
386
  };
387
- //# sourceMappingURL=checkbox-Vd4h25n2.esm.js.map
387
+ //# sourceMappingURL=checkbox-DdtsMxO8.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox-Vd4h25n2.esm.js","sources":["../../src/hooks/use-deep-memo.ts","../../src/hooks/use-permissions.ts","../../src/hooks/use-pages.ts","../../src/hooks/useLocationFilter.tsx","../../src/hooks/useApi.tsx","../../src/hooks/useAccountSetting.tsx","../../src/components/checkbox/checkbox.tsx"],"sourcesContent":["import _ from 'lodash';\nimport { useRef } from 'react';\n\nfunction useDeepMemo<T>(value: T): T {\n const ref = useRef<T>();\n\n if (!_.isEqual(ref.current, value)) {\n ref.current = value;\n }\n\n return ref.current as T;\n}\n\nexport default useDeepMemo;\n","import { useContext } from \"react\";\nimport { PermissionsContext, PermissionsContextType } from \"../contexts/permission-context\";\n\n\nexport const usePermissions = (): PermissionsContextType => {\n const context = useContext(PermissionsContext) as PermissionsContextType | null;\n\n if (!context) {\n throw new Error(\"usePermissions must be used within a PermissionsProvider\");\n }\n\n return context;\n};","import { useContext } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { PageContext } from \"../contexts/page-context\";\nimport { routeToResourceMap } from \"../constants/route-page-map\";\nimport { usePermissions } from \"./use-permissions\";\nimport { MaterialTableColumnProps } from \"../components/material-table/material-table\";\n\nfunction getByDotKey(obj: any, key: string) {\n return key.split('.').reduce((acc: any, part: string) => acc?.[part], obj);\n}\n\nexport const usePages = (defaultColumns:MaterialTableColumnProps[] = []) => {\n const context = useContext(PageContext);\n\n if (!context) {\n throw new Error(\"usePages must be used within a PageProvider\");\n }\n\n if (context.initializeColumns) {\n context.initializeColumns(defaultColumns);\n }\n\n const location = useLocation();\n const permissions = usePermissions();\n const mergedRouteToResourceMap = { ...routeToResourceMap, ...context.customRouteToResourceMap };\n const permissionKey = mergedRouteToResourceMap[location.pathname]?.permissionKey;\n const permObj = permissionKey ? getByDotKey(permissions, permissionKey) : null;\n const notAllowedFilters: string[] = permObj?.notAllowedFilters ?? [];\n\n const schemaFields = notAllowedFilters.length > 0\n ? context.schemaFields.filter((f) => !notAllowedFilters.includes(f.key))\n : context.schemaFields;\n\n return { ...context, schemaFields };\n};\n","import { useEffect, useMemo } from 'react';\n\n\nexport const useLocationFilter = ({\n selectedCompany,\n setValue,\n fieldArrayName,\n locationFieldName,\n resetValue = null,\n filterKey = '&company_id.in',\n isDirty = false\n}) => {\n\n // Reset location value when company changes\n useEffect(() => {\n if (setValue && fieldArrayName && locationFieldName && isDirty) {\n setValue(`${fieldArrayName}.${locationFieldName}`, resetValue);\n }\n }, [isDirty, setValue, fieldArrayName, locationFieldName, resetValue]);\n\n const locationFilter = useMemo(() => {\n const companyId = Array.isArray(selectedCompany) ? (selectedCompany?.length ? selectedCompany : null) : (selectedCompany || null);\n console.log(\"🚀 ~ useLocationFilter ~ companyId:\", companyId)\n\n if (companyId === null) {\n return {};\n }\n\n return {\n [filterKey]: companyId\n };\n }, [selectedCompany, filterKey]);\n\n return locationFilter;\n};\n\n\n\nexport const useMultipleLocationFilters = ({\n selectedCompany,\n setValue,\n fieldConfigs,\n resetValue = undefined,\n filterKey = '&company_id.in'\n}) => {\n return useMemo(() => {\n const companyId = selectedCompany?.length > 0 ? selectedCompany : 0;\n console.log(\"🚀 ~ useLocationFilter ~ companyId:\", companyId)\n\n // Reset all location fields\n fieldConfigs.forEach(({ fieldArrayName, locationFieldName }) => {\n if (setValue && fieldArrayName && locationFieldName) {\n setValue(`${fieldArrayName}.${locationFieldName}`, resetValue);\n }\n });\n\n return {\n [filterKey]: companyId\n };\n }, [selectedCompany, setValue, fieldConfigs, resetValue, filterKey]);\n};\n\nexport default {\n useLocationFilter,\n useMultipleLocationFilters\n}","import { useSnackbar } from 'notistack';\nimport { useCallback, useState } from 'react';\n\ninterface UseApiProps {\n apiFunc: any;\n onSuccess?: any;\n onError?: any;\n enableLoading?: any;\n successMessage?: string;\n errorMessage?: string | null;\n loadingState?: any;\n showError?: boolean;\n}\n\ntype ApiResponse = {\n meta?: {\n requestStatus?: string;\n };\n error?: {\n message?: string;\n };\n payload?: any\n};\n\ntype Callback = () => void;\n\nfunction apiHelper({\n res,\n callBack,\n showError = true,\n errorCallback,\n successMessage = null,\n enqueueSnackbar,\n}: {\n res: ApiResponse;\n callBack?: Callback;\n showError?: boolean;\n errorCallback?: (error: any) => void;\n successMessage?: string | null;\n enqueueSnackbar: any;\n}): void {\n if (res?.meta?.requestStatus === \"rejected\") {\n const errorMessage = (() => {\n try {\n const msg = res.error?.message || res?.payload?.message;\n return msg ? JSON.parse(msg) : null;\n } catch {\n return { message: res.error?.message || res?.payload?.message || \"Something went wrong\" };\n }\n })();\n\n const rawError = errorMessage?.message;\n let message = \"Something went wrong\";\n\n if (typeof rawError === \"string\") {\n message = rawError.replace(\"Error:\", \"\").trim();\n } else if (rawError && typeof rawError === \"object\") {\n message = (rawError as any).message || JSON.stringify(rawError);\n } else if (rawError) {\n message = String(rawError);\n }\n console.log(\"🚀 ~ apiHelper ~ rawError:\", rawError)\n\n console.log(\"🚀 ~ apiHelper ~ showError:\", showError)\n if (showError && typeof enqueueSnackbar === 'function') {\n enqueueSnackbar(message, { variant: \"error\" });\n }\n\n if (errorCallback && typeof errorCallback === \"function\") {\n errorCallback(message);\n }\n return;\n }\n\n if (successMessage && typeof enqueueSnackbar === 'function') {\n enqueueSnackbar(successMessage);\n }\n\n if (callBack && typeof callBack === \"function\") {\n callBack();\n }\n}\n\nexport default function useApi() {\n const { enqueueSnackbar } = useSnackbar();\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n\n const callApi = useCallback(async ({\n apiFunc,\n onSuccess,\n onError,\n successMessage,\n errorMessage,\n loadingState,\n enableLoading = true,\n showError = true,\n }: UseApiProps) => {\n if (enableLoading) setLoading(true);\n loadingState?.(true);\n let response;\n try {\n response = await apiFunc();\n } catch (err: any) {\n response = {\n meta: { requestStatus: \"rejected\" },\n error: { message: err?.message || \"Something went wrong\" }\n };\n }\n if (enableLoading) setLoading(false);\n\n loadingState?.(false);\n apiHelper(\n {\n res: response,\n callBack: () => {\n onSuccess?.(response);\n },\n errorCallback: (err) => {\n onError?.(response);\n setError(errorMessage || err);\n },\n successMessage: successMessage,\n showError,\n enqueueSnackbar,\n }\n )\n\n return { response, error }\n\n }, [enqueueSnackbar])\n\n return { callApi, loading, error };\n}\n","import { useCallback, useEffect, useState } from \"react\";\nimport { Control, FieldValues, Path, PathValue, UseFormSetValue, useWatch } from \"react-hook-form\";\nimport { getApiConfig, getToken, isApiConfigInitialized, onApiConfigReady } from \"../utils\";\nimport { getV1SettingsConfigurations, setBaseUrl } from \"../api-client/api.accounting/api\";\nimport useApi from \"./useApi\";\n\ninterface UpdateMapping {\n [key: string]: string; // Form field name -> API config key\n}\n\ninterface UseFormFieldUpdaterConfig<T extends FieldValues = any> {\n control?: Control<T>;\n setValue?: UseFormSetValue<T>;\n watch?: any;\n fieldToUpdate: UpdateMapping;\n companyField?: string;\n locationField?: string;\n departmentField?: string;\n fieldArrayName?: string;\n transformResponse?: (data: any) => any;\n customDependencies?: any[];\n getFieldState?: any;\n isUpdateAccount?: boolean;\n}\nexport function initializeApiBaseUrls(): void {\n if (!isApiConfigInitialized()) {\n console.warn('API configuration not initialized yet. Base URLs will be set when configuration is available.');\n return;\n }\n\n const config = getApiConfig();\n const baseUrl = config.backendBaseUrl;\n\n setBaseUrl(`${baseUrl}/accounting`);\n}\n\nonApiConfigReady((config) => {\n const baseUrl = config.backendBaseUrl;\n setBaseUrl(`${baseUrl}/accounting`);\n});\n\n\nexport const useFormFieldUpdater = <T extends FieldValues = any>({\n control,\n setValue,\n fieldToUpdate,\n transformResponse,\n watch,\n fieldArrayName,\n companyField = 'company_id',\n locationField = 'location_id',\n departmentField = 'department_id',\n customDependencies = [],\n getFieldState,\n isUpdateAccount = false\n}: UseFormFieldUpdaterConfig<T>) => {\n const { callApi } = useApi();\n\n\n const [initialState, setInitialState] = useState<{\n filters: { [companyField]: any;[locationField]: any;[departmentField]: any };\n values: Record<string, any>;\n } | null>(null);\n const companyPath = fieldArrayName ? `${fieldArrayName}.${companyField}` : companyField;\n const locationPath = fieldArrayName ? `${fieldArrayName}.${locationField}` : locationField;\n const departmentPath = fieldArrayName ? `${fieldArrayName}.${departmentField}` : departmentField;\n const data = watch?.(`${fieldArrayName}`) || {};\n const isDirtyCompany = getFieldState?.(companyPath)?.isDirty;\n const isDirtyLocation = getFieldState?.(locationPath)?.isDirty;\n const isDirtyDepartment = getFieldState?.(departmentPath)?.isDirty;\n const selectedCompany = data?.[companyField] || null;\n const selectedLocation = data?.[locationField] || null;\n const selectedDepartment = data?.[departmentField] || null;\n useEffect(() => {\n if (watch && !initialState) {\n const filters = {\n [companyField]: selectedCompany,\n [locationField]: selectedLocation,\n [departmentField]: selectedDepartment,\n };\n const values: Record<string, any> = {};\n Object.keys(fieldToUpdate).forEach((key) => {\n const path = fieldArrayName ? `${fieldArrayName}.${key}` : key;\n values[key] = watch(path as any);\n });\n\n setInitialState({ filters, values });\n }\n }, [watch, selectedCompany, selectedLocation, selectedDepartment, initialState, companyPath, locationPath, departmentPath, isDirtyCompany, isDirtyLocation, isDirtyDepartment]);\n\n const updateFields = useCallback((data: any, forceUpdate: boolean = false) => {\n if (!setValue || !data) return;\n\n const transformed = transformResponse ? transformResponse(data) : data;\n if (!transformed) return;\n\n Object.entries(fieldToUpdate).forEach(([sourceField, targetField]: any) => {\n const updateValue = transformed?.find((i: any) => i?.config_key == (typeof targetField == 'object' ? targetField.key : targetField));\n if (updateValue !== undefined && updateValue !== null) {\n const path = fieldArrayName ? `${fieldArrayName}.${sourceField}` : sourceField;\n\n // Check if field already has a value - skip update only if NOT force updating (edit mode protection)\n if (!forceUpdate) {\n const existingValue = watch?.(path as any);\n if (existingValue !== undefined && existingValue !== null && existingValue !== '') {\n return; // Skip updating fields that already have values\n }\n }\n\n if (typeof targetField == 'object') {\n targetField.value(updateValue?.reference_id || updateValue?.reference_text);\n } else {\n setValue(path as any, updateValue?.reference_id || updateValue?.reference_text);\n }\n }\n });\n }, [setValue, fieldToUpdate, transformResponse, fieldArrayName, watch, ...customDependencies]);\n\n\n\n const fetchAndUpdate = useCallback(async () => {\n if (!selectedCompany || !initialState) return;\n // Helper to extract ID from array/object values\n const getFilterValue = (val: any) => {\n if (Array.isArray(val)) {\n if (val.length === 0) return null;\n const firstVal = val[0];\n if (firstVal && typeof firstVal === 'object') return firstVal.id || firstVal.value || null;\n return firstVal || null;\n }\n if (val && typeof val === 'object') return val.id || val.value || null;\n return val || null;\n };\n\n const companyId = getFilterValue(selectedCompany);\n const locationId = getFilterValue(selectedLocation);\n const departmentId = getFilterValue(selectedDepartment);\n\n if (!companyId || !initialState) return;\n\n const initialFilters = {\n companyId: getFilterValue(initialState.filters[companyField]),\n locationId: getFilterValue(initialState.filters[locationField]),\n departmentId: getFilterValue(initialState.filters[departmentField]),\n };\n\n const isFilterChanged =\n initialFilters.companyId !== companyId ||\n initialFilters.locationId !== locationId ||\n initialFilters.departmentId !== departmentId;\n\n const isTargetFieldsEmpty = Object.keys(fieldToUpdate).every((key) => {\n const path = fieldArrayName ? `${fieldArrayName}.${key}` : key;\n const val = watch?.(path as any);\n return val === undefined || val === null || val === \"\";\n });\n\n if (!isFilterChanged && !isUpdateAccount && !isTargetFieldsEmpty) {\n Object.entries(initialState.values).forEach(([key, value]) => {\n const path = fieldArrayName ? `${fieldArrayName}.${key}` : key;\n setValue?.(path as any, value as any);\n });\n return;\n }\n\n const filter = `(company_id.eq=${companyId || 1}&location_id.eq=${locationId || null}&department_id.eq=${departmentId || null})`;\n\n // In edit mode (isUpdateAccount=true): only force update if user manually changed filter (isDirty)\n // In add mode: force update when filter changes\n const isUserChangedFilter = isDirtyCompany || isDirtyLocation || isDirtyDepartment;\n const shouldForceUpdate = isUpdateAccount\n ? (isFilterChanged && isUserChangedFilter) // Edit mode: only when user changed\n : isFilterChanged; // Add mode: any filter change\n\n callApi({\n apiFunc: () => getV1SettingsConfigurations({\n ...getToken(),\n filters: filter\n }),\n onSuccess: (res: any) => {\n updateFields(res?.data?.configuration_list, shouldForceUpdate);\n },\n onError: (err) => {\n console.error('Error fetching accounting settings:', err);\n }\n });\n }, [selectedCompany, selectedLocation, selectedDepartment, initialState, callApi, setValue, isDirtyCompany, isDirtyLocation, isDirtyDepartment, isUpdateAccount]);\n\n useEffect(() => {\n fetchAndUpdate();\n }, [fetchAndUpdate]);\n\n return {\n selectedCompany,\n selectedLocation,\n selectedDepartment\n };\n};\n\nexport const useAccountingSetting = ({\n fieldToUpdate,\n fieldArrayName,\n companyField = 'company_id',\n locationField = 'location_id',\n departmentField = 'department_id',\n formMethods,\n customDependencies = [],\n ...rest\n}: {\n fieldToUpdate: any;\n fieldArrayName?: string;\n companyField?: string;\n locationField?: string;\n departmentField?: string;\n setValue?: any;\n control?: any;\n formMethods?: any;\n customDependencies?: any[];\n}) => {\n const { setValue, control, watch, getFieldState } = formMethods || {};\n\n return useFormFieldUpdater({\n control,\n setValue,\n watch,\n companyField,\n locationField,\n departmentField,\n fieldToUpdate,\n fieldArrayName,\n customDependencies,\n getFieldState,\n ...rest\n });\n};","import { CheckboxProps, Checkbox as MUICheckbox, styled } from '@mui/material';\nimport { CheckBoxIcon, RecgtangleIcon } from '../icons';\nimport { memo } from 'react';\n\nconst StyledCheckbox = styled(MUICheckbox)(({ theme: { palette } }) => ({\n\tpadding: '0rem',\n\tcolor: palette.theme?.secondary[300],\n\tborderRadius: '.625rem',\n\t'&.Mui-checked': {\n\t\tcolor: palette.theme?.primary[600],\n\t\t'&:hover': {\n\t\t\tcolor: palette.theme?.primary[500]\n\t\t}\n\t},\n\t'&.Mui-disabled': {\n\t\tcolor: palette.theme?.secondary[400]\n\t}\n}));\n\nconst Checkbox = memo((props: CheckboxProps) => {\n\treturn (\n\t\t<StyledCheckbox\n\t\t\ticon={<RecgtangleIcon fontSize={props?.size || 'small'} />}\n\t\t\tcheckedIcon={<CheckBoxIcon fontSize={props?.size || 'small'} />}\n\t\t\tdisableRipple\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nexport { Checkbox };\nexport default Checkbox;\n"],"names":["_a","data","MUICheckbox","jsx"],"mappings":"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"}
1
+ {"version":3,"file":"checkbox-DdtsMxO8.esm.js","sources":["../../src/hooks/use-deep-memo.ts","../../src/hooks/use-permissions.ts","../../src/hooks/use-pages.ts","../../src/hooks/useLocationFilter.tsx","../../src/hooks/useApi.tsx","../../src/hooks/useAccountSetting.tsx","../../src/components/checkbox/checkbox.tsx"],"sourcesContent":["import _ from 'lodash';\nimport { useRef } from 'react';\n\nfunction useDeepMemo<T>(value: T): T {\n const ref = useRef<T>();\n\n if (!_.isEqual(ref.current, value)) {\n ref.current = value;\n }\n\n return ref.current as T;\n}\n\nexport default useDeepMemo;\n","import { useContext } from \"react\";\nimport { PermissionsContext, PermissionsContextType } from \"../contexts/permission-context\";\n\n\nexport const usePermissions = (): PermissionsContextType => {\n const context = useContext(PermissionsContext) as PermissionsContextType | null;\n\n if (!context) {\n throw new Error(\"usePermissions must be used within a PermissionsProvider\");\n }\n\n return context;\n};","import { useContext } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { PageContext } from \"../contexts/page-context\";\nimport { routeToResourceMap } from \"../constants/route-page-map\";\nimport { usePermissions } from \"./use-permissions\";\nimport { MaterialTableColumnProps } from \"../components/material-table/material-table\";\n\nfunction getByDotKey(obj: any, key: string) {\n return key.split('.').reduce((acc: any, part: string) => acc?.[part], obj);\n}\n\nexport const usePages = (defaultColumns:MaterialTableColumnProps[] = []) => {\n const context = useContext(PageContext);\n\n if (!context) {\n throw new Error(\"usePages must be used within a PageProvider\");\n }\n\n if (context.initializeColumns) {\n context.initializeColumns(defaultColumns);\n }\n\n const location = useLocation();\n const permissions = usePermissions();\n const mergedRouteToResourceMap = { ...routeToResourceMap, ...context.customRouteToResourceMap };\n const permissionKey = mergedRouteToResourceMap[location.pathname]?.permissionKey;\n const permObj = permissionKey ? getByDotKey(permissions, permissionKey) : null;\n const notAllowedFilters: string[] = permObj?.notAllowedFilters ?? [];\n\n const schemaFields = notAllowedFilters.length > 0\n ? context.schemaFields.filter((f) => !notAllowedFilters.includes(f.key))\n : context.schemaFields;\n\n return { ...context, schemaFields };\n};\n","import { useEffect, useMemo } from 'react';\n\n\nexport const useLocationFilter = ({\n selectedCompany,\n setValue,\n fieldArrayName,\n locationFieldName,\n resetValue = null,\n filterKey = '&company_id.in',\n isDirty = false\n}) => {\n\n // Reset location value when company changes\n useEffect(() => {\n if (setValue && fieldArrayName && locationFieldName && isDirty) {\n setValue(`${fieldArrayName}.${locationFieldName}`, resetValue);\n }\n }, [isDirty, setValue, fieldArrayName, locationFieldName, resetValue]);\n\n const locationFilter = useMemo(() => {\n const companyId = Array.isArray(selectedCompany) ? (selectedCompany?.length ? selectedCompany : null) : (selectedCompany || null);\n console.log(\"🚀 ~ useLocationFilter ~ companyId:\", companyId)\n\n if (companyId === null) {\n return {};\n }\n\n return {\n [filterKey]: companyId\n };\n }, [selectedCompany, filterKey]);\n\n return locationFilter;\n};\n\n\n\nexport const useMultipleLocationFilters = ({\n selectedCompany,\n setValue,\n fieldConfigs,\n resetValue = undefined,\n filterKey = '&company_id.in'\n}) => {\n return useMemo(() => {\n const companyId = selectedCompany?.length > 0 ? selectedCompany : 0;\n console.log(\"🚀 ~ useLocationFilter ~ companyId:\", companyId)\n\n // Reset all location fields\n fieldConfigs.forEach(({ fieldArrayName, locationFieldName }) => {\n if (setValue && fieldArrayName && locationFieldName) {\n setValue(`${fieldArrayName}.${locationFieldName}`, resetValue);\n }\n });\n\n return {\n [filterKey]: companyId\n };\n }, [selectedCompany, setValue, fieldConfigs, resetValue, filterKey]);\n};\n\nexport default {\n useLocationFilter,\n useMultipleLocationFilters\n}","import { useSnackbar } from 'notistack';\nimport { useCallback, useState } from 'react';\n\ninterface UseApiProps {\n apiFunc: any;\n onSuccess?: any;\n onError?: any;\n enableLoading?: any;\n successMessage?: string;\n errorMessage?: string | null;\n loadingState?: any;\n showError?: boolean;\n}\n\ntype ApiResponse = {\n meta?: {\n requestStatus?: string;\n };\n error?: {\n message?: string;\n };\n payload?: any\n};\n\ntype Callback = () => void;\n\nfunction apiHelper({\n res,\n callBack,\n showError = true,\n errorCallback,\n successMessage = null,\n enqueueSnackbar,\n}: {\n res: ApiResponse;\n callBack?: Callback;\n showError?: boolean;\n errorCallback?: (error: any) => void;\n successMessage?: string | null;\n enqueueSnackbar: any;\n}): void {\n if (res?.meta?.requestStatus === \"rejected\") {\n const errorMessage = (() => {\n try {\n const msg = res.error?.message || res?.payload?.message;\n return msg ? JSON.parse(msg) : null;\n } catch {\n return { message: res.error?.message || res?.payload?.message || \"Something went wrong\" };\n }\n })();\n\n const rawError = errorMessage?.message;\n let message = \"Something went wrong\";\n\n if (typeof rawError === \"string\") {\n message = rawError.replace(\"Error:\", \"\").trim();\n } else if (rawError && typeof rawError === \"object\") {\n message = (rawError as any).message || JSON.stringify(rawError);\n } else if (rawError) {\n message = String(rawError);\n }\n console.log(\"🚀 ~ apiHelper ~ rawError:\", rawError)\n\n console.log(\"🚀 ~ apiHelper ~ showError:\", showError)\n if (showError && typeof enqueueSnackbar === 'function') {\n enqueueSnackbar(message, { variant: \"error\" });\n }\n\n if (errorCallback && typeof errorCallback === \"function\") {\n errorCallback(message);\n }\n return;\n }\n\n if (successMessage && typeof enqueueSnackbar === 'function') {\n enqueueSnackbar(successMessage);\n }\n\n if (callBack && typeof callBack === \"function\") {\n callBack();\n }\n}\n\nexport default function useApi() {\n const { enqueueSnackbar } = useSnackbar();\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n\n const callApi = useCallback(async ({\n apiFunc,\n onSuccess,\n onError,\n successMessage,\n errorMessage,\n loadingState,\n enableLoading = true,\n showError = true,\n }: UseApiProps) => {\n if (enableLoading) setLoading(true);\n loadingState?.(true);\n let response;\n try {\n response = await apiFunc();\n } catch (err: any) {\n response = {\n meta: { requestStatus: \"rejected\" },\n error: { message: err?.message || \"Something went wrong\" }\n };\n }\n if (enableLoading) setLoading(false);\n\n loadingState?.(false);\n apiHelper(\n {\n res: response,\n callBack: () => {\n onSuccess?.(response);\n },\n errorCallback: (err) => {\n onError?.(response);\n setError(errorMessage || err);\n },\n successMessage: successMessage,\n showError,\n enqueueSnackbar,\n }\n )\n\n return { response, error }\n\n }, [enqueueSnackbar])\n\n return { callApi, loading, error };\n}\n","import { useCallback, useEffect, useState } from \"react\";\nimport { Control, FieldValues, Path, PathValue, UseFormSetValue, useWatch } from \"react-hook-form\";\nimport { getApiConfig, getToken, isApiConfigInitialized, onApiConfigReady } from \"../utils\";\nimport { getV1SettingsConfigurations, setBaseUrl } from \"../api-client/api.accounting/api\";\nimport useApi from \"./useApi\";\n\ninterface UpdateMapping {\n [key: string]: string; // Form field name -> API config key\n}\n\ninterface UseFormFieldUpdaterConfig<T extends FieldValues = any> {\n control?: Control<T>;\n setValue?: UseFormSetValue<T>;\n watch?: any;\n fieldToUpdate: UpdateMapping;\n companyField?: string;\n locationField?: string;\n departmentField?: string;\n fieldArrayName?: string;\n transformResponse?: (data: any) => any;\n customDependencies?: any[];\n getFieldState?: any;\n isUpdateAccount?: boolean;\n}\nexport function initializeApiBaseUrls(): void {\n if (!isApiConfigInitialized()) {\n console.warn('API configuration not initialized yet. Base URLs will be set when configuration is available.');\n return;\n }\n\n const config = getApiConfig();\n const baseUrl = config.backendBaseUrl;\n\n setBaseUrl(`${baseUrl}/accounting`);\n}\n\nonApiConfigReady((config) => {\n const baseUrl = config.backendBaseUrl;\n setBaseUrl(`${baseUrl}/accounting`);\n});\n\n\nexport const useFormFieldUpdater = <T extends FieldValues = any>({\n control,\n setValue,\n fieldToUpdate,\n transformResponse,\n watch,\n fieldArrayName,\n companyField = 'company_id',\n locationField = 'location_id',\n departmentField = 'department_id',\n customDependencies = [],\n getFieldState,\n isUpdateAccount = false\n}: UseFormFieldUpdaterConfig<T>) => {\n const { callApi } = useApi();\n\n\n const [initialState, setInitialState] = useState<{\n filters: { [companyField]: any;[locationField]: any;[departmentField]: any };\n values: Record<string, any>;\n } | null>(null);\n const companyPath = fieldArrayName ? `${fieldArrayName}.${companyField}` : companyField;\n const locationPath = fieldArrayName ? `${fieldArrayName}.${locationField}` : locationField;\n const departmentPath = fieldArrayName ? `${fieldArrayName}.${departmentField}` : departmentField;\n const data = watch?.(`${fieldArrayName}`) || {};\n const isDirtyCompany = getFieldState?.(companyPath)?.isDirty;\n const isDirtyLocation = getFieldState?.(locationPath)?.isDirty;\n const isDirtyDepartment = getFieldState?.(departmentPath)?.isDirty;\n const selectedCompany = data?.[companyField] || null;\n const selectedLocation = data?.[locationField] || null;\n const selectedDepartment = data?.[departmentField] || null;\n useEffect(() => {\n if (watch && !initialState) {\n const filters = {\n [companyField]: selectedCompany,\n [locationField]: selectedLocation,\n [departmentField]: selectedDepartment,\n };\n const values: Record<string, any> = {};\n Object.keys(fieldToUpdate).forEach((key) => {\n const path = fieldArrayName ? `${fieldArrayName}.${key}` : key;\n values[key] = watch(path as any);\n });\n\n setInitialState({ filters, values });\n }\n }, [watch, selectedCompany, selectedLocation, selectedDepartment, initialState, companyPath, locationPath, departmentPath, isDirtyCompany, isDirtyLocation, isDirtyDepartment]);\n\n const updateFields = useCallback((data: any, forceUpdate: boolean = false) => {\n if (!setValue || !data) return;\n\n const transformed = transformResponse ? transformResponse(data) : data;\n if (!transformed) return;\n\n Object.entries(fieldToUpdate).forEach(([sourceField, targetField]: any) => {\n const updateValue = transformed?.find((i: any) => i?.config_key == (typeof targetField == 'object' ? targetField.key : targetField));\n if (updateValue !== undefined && updateValue !== null) {\n const path = fieldArrayName ? `${fieldArrayName}.${sourceField}` : sourceField;\n\n // Check if field already has a value - skip update only if NOT force updating (edit mode protection)\n if (!forceUpdate) {\n const existingValue = watch?.(path as any);\n if (existingValue !== undefined && existingValue !== null && existingValue !== '') {\n return; // Skip updating fields that already have values\n }\n }\n\n if (typeof targetField == 'object') {\n targetField.value(updateValue?.reference_id || updateValue?.reference_text);\n } else {\n setValue(path as any, updateValue?.reference_id || updateValue?.reference_text);\n }\n }\n });\n }, [setValue, fieldToUpdate, transformResponse, fieldArrayName, watch, ...customDependencies]);\n\n\n\n const fetchAndUpdate = useCallback(async () => {\n if (!selectedCompany || !initialState) return;\n // Helper to extract ID from array/object values\n const getFilterValue = (val: any) => {\n if (Array.isArray(val)) {\n if (val.length === 0) return null;\n const firstVal = val[0];\n if (firstVal && typeof firstVal === 'object') return firstVal.id || firstVal.value || null;\n return firstVal || null;\n }\n if (val && typeof val === 'object') return val.id || val.value || null;\n return val || null;\n };\n\n const companyId = getFilterValue(selectedCompany);\n const locationId = getFilterValue(selectedLocation);\n const departmentId = getFilterValue(selectedDepartment);\n\n if (!companyId || !initialState) return;\n\n const initialFilters = {\n companyId: getFilterValue(initialState.filters[companyField]),\n locationId: getFilterValue(initialState.filters[locationField]),\n departmentId: getFilterValue(initialState.filters[departmentField]),\n };\n\n const isFilterChanged =\n initialFilters.companyId !== companyId ||\n initialFilters.locationId !== locationId ||\n initialFilters.departmentId !== departmentId;\n\n const isTargetFieldsEmpty = Object.keys(fieldToUpdate).every((key) => {\n const path = fieldArrayName ? `${fieldArrayName}.${key}` : key;\n const val = watch?.(path as any);\n return val === undefined || val === null || val === \"\";\n });\n\n if (!isFilterChanged && !isUpdateAccount && !isTargetFieldsEmpty) {\n Object.entries(initialState.values).forEach(([key, value]) => {\n const path = fieldArrayName ? `${fieldArrayName}.${key}` : key;\n setValue?.(path as any, value as any);\n });\n return;\n }\n\n const filter = `(company_id.eq=${companyId || 1}&location_id.eq=${locationId || null}&department_id.eq=${departmentId || null})`;\n\n // In edit mode (isUpdateAccount=true): only force update if user manually changed filter (isDirty)\n // In add mode: force update when filter changes\n const isUserChangedFilter = isDirtyCompany || isDirtyLocation || isDirtyDepartment;\n const shouldForceUpdate = isUpdateAccount\n ? (isFilterChanged && isUserChangedFilter) // Edit mode: only when user changed\n : isFilterChanged; // Add mode: any filter change\n\n callApi({\n apiFunc: () => getV1SettingsConfigurations({\n ...getToken(),\n filters: filter\n }),\n onSuccess: (res: any) => {\n updateFields(res?.data?.configuration_list, shouldForceUpdate);\n },\n onError: (err) => {\n console.error('Error fetching accounting settings:', err);\n }\n });\n }, [selectedCompany, selectedLocation, selectedDepartment, initialState, callApi, setValue, isDirtyCompany, isDirtyLocation, isDirtyDepartment, isUpdateAccount]);\n\n useEffect(() => {\n fetchAndUpdate();\n }, [fetchAndUpdate]);\n\n return {\n selectedCompany,\n selectedLocation,\n selectedDepartment\n };\n};\n\nexport const useAccountingSetting = ({\n fieldToUpdate,\n fieldArrayName,\n companyField = 'company_id',\n locationField = 'location_id',\n departmentField = 'department_id',\n formMethods,\n customDependencies = [],\n ...rest\n}: {\n fieldToUpdate: any;\n fieldArrayName?: string;\n companyField?: string;\n locationField?: string;\n departmentField?: string;\n setValue?: any;\n control?: any;\n formMethods?: any;\n customDependencies?: any[];\n}) => {\n const { setValue, control, watch, getFieldState } = formMethods || {};\n\n return useFormFieldUpdater({\n control,\n setValue,\n watch,\n companyField,\n locationField,\n departmentField,\n fieldToUpdate,\n fieldArrayName,\n customDependencies,\n getFieldState,\n ...rest\n });\n};","import { CheckboxProps, Checkbox as MUICheckbox, styled } from '@mui/material';\nimport { CheckBoxIcon, RecgtangleIcon } from '../icons';\nimport { memo } from 'react';\n\nconst StyledCheckbox = styled(MUICheckbox)(({ theme: { palette } }) => ({\n\tpadding: '0rem',\n\tcolor: palette.theme?.secondary[300],\n\tborderRadius: '.625rem',\n\t'&.Mui-checked': {\n\t\tcolor: palette.theme?.primary[600],\n\t\t'&:hover': {\n\t\t\tcolor: palette.theme?.primary[500]\n\t\t}\n\t},\n\t'&.Mui-disabled': {\n\t\tcolor: palette.theme?.secondary[400]\n\t}\n}));\n\nconst Checkbox = memo((props: CheckboxProps) => {\n\treturn (\n\t\t<StyledCheckbox\n\t\t\ticon={<RecgtangleIcon fontSize={props?.size || 'small'} />}\n\t\t\tcheckedIcon={<CheckBoxIcon fontSize={props?.size || 'small'} />}\n\t\t\tdisableRipple\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nexport { Checkbox };\nexport default Checkbox;\n"],"names":["_a","data","MUICheckbox","jsx"],"mappings":"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"}
@@ -4026,7 +4026,7 @@ const checkForDuplicate = async (payload) => {
4026
4026
  }
4027
4027
  };
4028
4028
  const partyDuplicateCheck = async (activeTab, fValues, defaultValues) => {
4029
- var _a, _b, _c;
4029
+ var _a, _b;
4030
4030
  const values = { ...fValues };
4031
4031
  if (activeTab !== 0 || !((values == null ? void 0 : values.contact_no) || (values == null ? void 0 : values.company_name))) {
4032
4032
  return null;
@@ -4034,13 +4034,27 @@ const partyDuplicateCheck = async (activeTab, fValues, defaultValues) => {
4034
4034
  if (activeTab !== 0 || !(values == null ? void 0 : values.contact_no) && (values == null ? void 0 : values.company_name) && (values == null ? void 0 : values.account_type) !== "Company") {
4035
4035
  return null;
4036
4036
  }
4037
- const phoneNumber = parsePhoneNumberFromString(((_a = values == null ? void 0 : values.contact_no) == null ? void 0 : _a.includes("+")) ? values == null ? void 0 : values.contact_no : `+${values == null ? void 0 : values.contact_no}`);
4038
- values.contact_no = (phoneNumber == null ? void 0 : phoneNumber.nationalNumber) || "";
4039
- values.country_code = (phoneNumber == null ? void 0 : phoneNumber.countryCallingCode) || "";
4040
- const cDefaultValueContactNo = (defaultValues == null ? void 0 : defaultValues.contact_no) || "";
4041
- const cValueContactNo = displayPhone(values);
4042
- const isDirtyPhone = !defaultValues || (cDefaultValueContactNo == null ? void 0 : cDefaultValueContactNo.trim()) !== (cValueContactNo == null ? void 0 : cValueContactNo.trim());
4043
- const isDirtyCompanyName = !defaultValues || ((_b = defaultValues == null ? void 0 : defaultValues.company_name) == null ? void 0 : _b.trim()) !== ((_c = values == null ? void 0 : values.company_name) == null ? void 0 : _c.trim());
4037
+ const rawNo = String((values == null ? void 0 : values.contact_no) || "").replace(/^\+/, "");
4038
+ let phoneNumber = parsePhoneNumberFromString(`+${rawNo}`);
4039
+ if (!(phoneNumber == null ? void 0 : phoneNumber.nationalNumber) && (values == null ? void 0 : values.country_code)) {
4040
+ phoneNumber = parsePhoneNumberFromString(`${values.country_code}${rawNo}`);
4041
+ }
4042
+ values.contact_no = (phoneNumber == null ? void 0 : phoneNumber.nationalNumber) || (values == null ? void 0 : values.contact_no);
4043
+ values.country_code = (phoneNumber == null ? void 0 : phoneNumber.countryCallingCode) ? `+${phoneNumber.countryCallingCode}` : values == null ? void 0 : values.country_code;
4044
+ const normalizePhone = (contactNo2, countryCode2) => {
4045
+ const rNo = String(contactNo2 || "").replace(/^\+/, "");
4046
+ let p = parsePhoneNumberFromString(`+${rNo}`);
4047
+ if (!(p == null ? void 0 : p.nationalNumber) && countryCode2) {
4048
+ p = parsePhoneNumberFromString(`${countryCode2}${rNo}`);
4049
+ }
4050
+ return {
4051
+ contact_no: (p == null ? void 0 : p.nationalNumber) || String(contactNo2 || ""),
4052
+ country_code: (p == null ? void 0 : p.countryCallingCode) ? `+${p.countryCallingCode}` : String(countryCode2 || "")
4053
+ };
4054
+ };
4055
+ const normalizedDefault = normalizePhone(defaultValues == null ? void 0 : defaultValues.contact_no, defaultValues == null ? void 0 : defaultValues.country_code);
4056
+ const isDirtyPhone = !defaultValues || normalizedDefault.contact_no !== values.contact_no || normalizedDefault.country_code !== values.country_code;
4057
+ const isDirtyCompanyName = !defaultValues || ((_a = defaultValues == null ? void 0 : defaultValues.company_name) == null ? void 0 : _a.trim()) !== ((_b = values == null ? void 0 : values.company_name) == null ? void 0 : _b.trim());
4044
4058
  if (!isDirtyPhone && !isDirtyCompanyName) {
4045
4059
  return null;
4046
4060
  }
@@ -4717,4 +4731,4 @@ exports.updateFieldsDisabledState = updateFieldsDisabledState;
4717
4731
  exports.uploadAttachments = uploadAttachments;
4718
4732
  exports.uploadFiles = uploadFiles;
4719
4733
  exports.validateDiscountValidity = validateDiscountValidity;
4720
- //# sourceMappingURL=common-B1hGK8kQ.js.map
4734
+ //# sourceMappingURL=common-CbkoxxEu.js.map