@erpsquad/common 1.9.97 → 1.9.99
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/chunks/{actionCreator-DmP63jZz.esm.js → actionCreator-C-u8gtV-.esm.js} +2 -2
- package/dist/chunks/{actionCreator-DmP63jZz.esm.js.map → actionCreator-C-u8gtV-.esm.js.map} +1 -1
- package/dist/chunks/{actionCreator-DwRQnQNP.js → actionCreator-DSrKE0hh.js} +2 -2
- package/dist/chunks/{actionCreator-DwRQnQNP.js.map → actionCreator-DSrKE0hh.js.map} +1 -1
- package/dist/chunks/{android-12-switch-D3fU6Qtm.esm.js → android-12-switch-DSBIf4t0.esm.js} +46 -38
- package/dist/chunks/android-12-switch-DSBIf4t0.esm.js.map +1 -0
- package/dist/chunks/{android-12-switch-B5UmJZxg.js → android-12-switch-DvCF0gyx.js} +46 -38
- package/dist/chunks/android-12-switch-DvCF0gyx.js.map +1 -0
- package/dist/chunks/{apiHelper-BrzRrxpx.js → apiHelper-5tNsUtSY.js} +18 -10
- package/dist/chunks/apiHelper-5tNsUtSY.js.map +1 -0
- package/dist/chunks/{apiHelper-BvnhN2uo.esm.js → apiHelper-Cv_qWaYo.esm.js} +18 -10
- package/dist/chunks/apiHelper-Cv_qWaYo.esm.js.map +1 -0
- package/dist/chunks/{appbar-Dn00gF0A.esm.js → appbar-DM2iBqb4.esm.js} +5 -5
- package/dist/chunks/{appbar-Dn00gF0A.esm.js.map → appbar-DM2iBqb4.esm.js.map} +1 -1
- package/dist/chunks/{appbar-dBRF2bDa.js → appbar-rfkAYQdQ.js} +5 -5
- package/dist/chunks/{appbar-dBRF2bDa.js.map → appbar-rfkAYQdQ.js.map} +1 -1
- package/dist/chunks/{common-QvMCr1xx.js → common-6VUrYJDq.js} +10 -1
- package/dist/chunks/{common-QvMCr1xx.js.map → common-6VUrYJDq.js.map} +1 -1
- package/dist/chunks/{common-B-nmtH5r.esm.js → common-B6euWODJ.esm.js} +10 -1
- package/dist/chunks/{common-B-nmtH5r.esm.js.map → common-B6euWODJ.esm.js.map} +1 -1
- package/dist/chunks/{custom-editor-BvMlZ1Oc.js → custom-editor-DIQqk_yI.js} +2 -2
- package/dist/chunks/{custom-editor-BvMlZ1Oc.js.map → custom-editor-DIQqk_yI.js.map} +1 -1
- package/dist/chunks/{custom-editor-OrxKsIQY.esm.js → custom-editor-DnfTs5-j.esm.js} +2 -2
- package/dist/chunks/{custom-editor-OrxKsIQY.esm.js.map → custom-editor-DnfTs5-j.esm.js.map} +1 -1
- package/dist/chunks/{default-data-otyfdCNu.esm.js → default-data-BV_r59U9.esm.js} +14 -14
- package/dist/chunks/{default-data-otyfdCNu.esm.js.map → default-data-BV_r59U9.esm.js.map} +1 -1
- package/dist/chunks/{default-data-BCroqbYg.js → default-data-DQ7VPUoj.js} +14 -14
- package/dist/chunks/{default-data-BCroqbYg.js.map → default-data-DQ7VPUoj.js.map} +1 -1
- package/dist/chunks/{form-builder-conversion-Var45CEx.esm.js → form-builder-conversion-BdWASNEo.esm.js} +2 -2
- package/dist/chunks/{form-builder-conversion-Var45CEx.esm.js.map → form-builder-conversion-BdWASNEo.esm.js.map} +1 -1
- package/dist/chunks/{form-builder-conversion-nTpiw7Q2.js → form-builder-conversion-D69EGO5g.js} +2 -2
- package/dist/chunks/{form-builder-conversion-nTpiw7Q2.js.map → form-builder-conversion-D69EGO5g.js.map} +1 -1
- package/dist/chunks/{form-builder-deconversion-BjiEAt-i.esm.js → form-builder-deconversion-CUwBfP4C.esm.js} +3 -3
- package/dist/chunks/{form-builder-deconversion-BjiEAt-i.esm.js.map → form-builder-deconversion-CUwBfP4C.esm.js.map} +1 -1
- package/dist/chunks/{form-builder-deconversion-CFTqjOTb.js → form-builder-deconversion-v5GvXDZ9.js} +3 -3
- package/dist/chunks/{form-builder-deconversion-CFTqjOTb.js.map → form-builder-deconversion-v5GvXDZ9.js.map} +1 -1
- package/dist/chunks/{fullScreen-BdyRsEBm.esm.js → fullScreen-BO0UA3Zr.esm.js} +2 -2
- package/dist/chunks/{fullScreen-BdyRsEBm.esm.js.map → fullScreen-BO0UA3Zr.esm.js.map} +1 -1
- package/dist/chunks/{fullScreen-BHrQ0vTa.js → fullScreen-Bfrr-bT2.js} +2 -2
- package/dist/chunks/{fullScreen-BHrQ0vTa.js.map → fullScreen-Bfrr-bT2.js.map} +1 -1
- package/dist/chunks/{languageContext-s_EUKz_A.js → languageContext-BP7EvzMv.js} +3 -3
- package/dist/chunks/{languageContext-s_EUKz_A.js.map → languageContext-BP7EvzMv.js.map} +1 -1
- package/dist/chunks/{languageContext-CbCRCTbP.esm.js → languageContext-DM_LTp53.esm.js} +3 -3
- package/dist/chunks/{languageContext-CbCRCTbP.esm.js.map → languageContext-DM_LTp53.esm.js.map} +1 -1
- package/dist/chunks/{migration-utils-Bn35YUJM.esm.js → migration-utils-D9TSOBR0.esm.js} +2 -2
- package/dist/chunks/{migration-utils-Bn35YUJM.esm.js.map → migration-utils-D9TSOBR0.esm.js.map} +1 -1
- package/dist/chunks/{migration-utils-CmzV1tw3.js → migration-utils-DwLXzWtr.js} +2 -2
- package/dist/chunks/{migration-utils-CmzV1tw3.js.map → migration-utils-DwLXzWtr.js.map} +1 -1
- package/dist/chunks/module-routes-config-B8IucBuj.js +19 -0
- package/dist/chunks/module-routes-config-B8IucBuj.js.map +1 -0
- package/dist/chunks/module-routes-config-CCkZEtfg.esm.js +20 -0
- package/dist/chunks/module-routes-config-CCkZEtfg.esm.js.map +1 -0
- package/dist/chunks/{modules-BDHGBfwa.js → modules-C3T2Pnwc.js} +10 -5
- package/dist/chunks/modules-C3T2Pnwc.js.map +1 -0
- package/dist/chunks/{modules-UIv-lDBW.esm.js → modules-D5_hDIg9.esm.js} +10 -5
- package/dist/chunks/modules-D5_hDIg9.esm.js.map +1 -0
- package/dist/chunks/{page-context-DLUB4Qx9.esm.js → page-context-B_wK6kLR.esm.js} +4 -4
- package/dist/chunks/{page-context-DLUB4Qx9.esm.js.map → page-context-B_wK6kLR.esm.js.map} +1 -1
- package/dist/chunks/{page-context-DRbgpYFO.js → page-context-h7LEMAG0.js} +4 -4
- package/dist/chunks/{page-context-DRbgpYFO.js.map → page-context-h7LEMAG0.js.map} +1 -1
- package/dist/chunks/pathname.hrms-2_BEXO_r.js +262 -0
- package/dist/chunks/pathname.hrms-2_BEXO_r.js.map +1 -0
- package/dist/chunks/pathname.hrms-C5ojsho0.esm.js +263 -0
- package/dist/chunks/pathname.hrms-C5ojsho0.esm.js.map +1 -0
- package/dist/chunks/{reducer-Gajha1Kz.esm.js → reducer-Bpuo5eq1.esm.js} +2 -2
- package/dist/chunks/{reducer-Gajha1Kz.esm.js.map → reducer-Bpuo5eq1.esm.js.map} +1 -1
- package/dist/chunks/{reducer-DGvVphqy.js → reducer-t-U331ho.js} +2 -2
- package/dist/chunks/{reducer-DGvVphqy.js.map → reducer-t-U331ho.js.map} +1 -1
- package/dist/chunks/{route-page-map-DPlRjCJm.esm.js → route-page-map-C4wM0M4A.esm.js} +2 -2
- package/dist/chunks/{route-page-map-DPlRjCJm.esm.js.map → route-page-map-C4wM0M4A.esm.js.map} +1 -1
- package/dist/chunks/{route-page-map-Btth_lp5.js → route-page-map-CJLyl6P1.js} +2 -2
- package/dist/chunks/{route-page-map-Btth_lp5.js.map → route-page-map-CJLyl6P1.js.map} +1 -1
- package/dist/chunks/{shareSlice-Cn2PGA6m.js → shareSlice-Br9IsR9k.js} +2 -2
- package/dist/chunks/{shareSlice-Cn2PGA6m.js.map → shareSlice-Br9IsR9k.js.map} +1 -1
- package/dist/chunks/{shareSlice-DGme6jBu.esm.js → shareSlice-CbG_VJcW.esm.js} +2 -2
- package/dist/chunks/{shareSlice-DGme6jBu.esm.js.map → shareSlice-CbG_VJcW.esm.js.map} +1 -1
- package/dist/chunks/{sidebar-Dcw_6aQ7.js → sidebar-C2zkLZyA.js} +4 -4
- package/dist/chunks/{sidebar-Dcw_6aQ7.js.map → sidebar-C2zkLZyA.js.map} +1 -1
- package/dist/chunks/{sidebar-PZqii53B.esm.js → sidebar-l49eLo8p.esm.js} +4 -4
- package/dist/chunks/{sidebar-PZqii53B.esm.js.map → sidebar-l49eLo8p.esm.js.map} +1 -1
- package/dist/chunks/{sidebarScreen-DY4Uklrh.esm.js → sidebarScreen-BQN2N8jx.esm.js} +5 -5
- package/dist/chunks/{sidebarScreen-DY4Uklrh.esm.js.map → sidebarScreen-BQN2N8jx.esm.js.map} +1 -1
- package/dist/chunks/{sidebarScreen-FH1CEH8k.js → sidebarScreen-PoYXto7E.js} +5 -5
- package/dist/chunks/{sidebarScreen-FH1CEH8k.js.map → sidebarScreen-PoYXto7E.js.map} +1 -1
- package/dist/chunks/{store-DEoLcgbp.js → store-BdrUnJ3G.js} +3 -3
- package/dist/chunks/{store-DEoLcgbp.js.map → store-BdrUnJ3G.js.map} +1 -1
- package/dist/chunks/{store-zDGOGRDm.esm.js → store-ksRZPIIc.esm.js} +3 -3
- package/dist/chunks/{store-zDGOGRDm.esm.js.map → store-ksRZPIIc.esm.js.map} +1 -1
- package/dist/chunks/{translations-BVvsrCTo.js → translations-1vp9srMj.js} +2 -2
- package/dist/chunks/{translations-BVvsrCTo.js.map → translations-1vp9srMj.js.map} +1 -1
- package/dist/chunks/{translations-DJFxXzIm.esm.js → translations-B5t-KZNN.esm.js} +2 -2
- package/dist/chunks/{translations-DJFxXzIm.esm.js.map → translations-B5t-KZNN.esm.js.map} +1 -1
- package/dist/chunks/{uom-field-wrapper-CeeTt3Ph.esm.js → uom-field-wrapper-Ckop1JTE.esm.js} +15 -15
- package/dist/chunks/{uom-field-wrapper-CeeTt3Ph.esm.js.map → uom-field-wrapper-Ckop1JTE.esm.js.map} +1 -1
- package/dist/chunks/{uom-field-wrapper-UBPKubPh.js → uom-field-wrapper-l8HA79k1.js} +15 -15
- package/dist/chunks/{uom-field-wrapper-UBPKubPh.js.map → uom-field-wrapper-l8HA79k1.js.map} +1 -1
- package/dist/chunks/{useAccountSetting-BcPg1o6H.esm.js → useAccountSetting-D6Hhq1Pz.esm.js} +3 -3
- package/dist/chunks/{useAccountSetting-BcPg1o6H.esm.js.map → useAccountSetting-D6Hhq1Pz.esm.js.map} +1 -1
- package/dist/chunks/{useAccountSetting-B5qXSiGa.js → useAccountSetting-ngzko7sX.js} +3 -3
- package/dist/chunks/{useAccountSetting-B5qXSiGa.js.map → useAccountSetting-ngzko7sX.js.map} +1 -1
- package/dist/chunks/{useAuth-BhsPEB2T.js → useAuth-HvZ6U960.js} +2 -2
- package/dist/chunks/{useAuth-BhsPEB2T.js.map → useAuth-HvZ6U960.js.map} +1 -1
- package/dist/chunks/{useAuth-C4WcddEE.esm.js → useAuth-Tfx2guEJ.esm.js} +2 -2
- package/dist/chunks/{useAuth-C4WcddEE.esm.js.map → useAuth-Tfx2guEJ.esm.js.map} +1 -1
- package/dist/chunks/{useLangauge-Bie5anLS.esm.js → useLangauge-BU_fP3ZM.esm.js} +2 -2
- package/dist/chunks/{useLangauge-Bie5anLS.esm.js.map → useLangauge-BU_fP3ZM.esm.js.map} +1 -1
- package/dist/chunks/{useLangauge-BtG3kyRv.js → useLangauge-DwsR1jcv.js} +2 -2
- package/dist/chunks/{useLangauge-BtG3kyRv.js.map → useLangauge-DwsR1jcv.js.map} +1 -1
- package/dist/chunks/{useReduxIntegration-DvUNoDIr.js → useReduxIntegration-JMVTp0lq.js} +4 -4
- package/dist/chunks/{useReduxIntegration-DvUNoDIr.js.map → useReduxIntegration-JMVTp0lq.js.map} +1 -1
- package/dist/chunks/{useReduxIntegration-CPPcf1p7.esm.js → useReduxIntegration-VgWJGErE.esm.js} +4 -4
- package/dist/chunks/{useReduxIntegration-CPPcf1p7.esm.js.map → useReduxIntegration-VgWJGErE.esm.js.map} +1 -1
- package/dist/components/index.esm.js +9 -9
- package/dist/components/index.js +9 -9
- package/dist/components/providers/ERPUIProvider.d.ts +1 -0
- package/dist/constants/index.esm.js +3 -3
- package/dist/constants/index.js +3 -3
- package/dist/constants/pathnames/pathname.hrms.d.ts +61 -3
- package/dist/contexts/index.esm.js +3 -3
- package/dist/contexts/index.js +3 -3
- package/dist/hooks/index.esm.js +5 -5
- package/dist/hooks/index.js +5 -5
- package/dist/index.esm.js +55 -50
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +32 -27
- package/dist/index.js.map +1 -1
- package/dist/layout/index.esm.js +2 -2
- package/dist/layout/index.js +2 -2
- package/dist/redux/index.esm.js +4 -4
- package/dist/redux/index.js +4 -4
- package/dist/src/components/providers/ERPUIProvider.d.ts +1 -0
- package/dist/src/constants/pathnames/pathname.hrms.d.ts +61 -3
- package/dist/src/utils/api.d.ts +10 -0
- package/dist/src/utils/index.d.ts +1 -0
- package/dist/src/utils/module-routes-config.d.ts +34 -0
- package/dist/src/views/form-builder/utils/common.d.ts +1 -1
- package/dist/utils/api.d.ts +10 -0
- package/dist/utils/index.esm.js +12 -7
- package/dist/utils/index.esm.js.map +1 -1
- package/dist/utils/index.js +11 -6
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/module-routes-config.d.ts +34 -0
- package/dist/views/form-builder/utils/common.d.ts +1 -1
- package/dist/views/index.esm.js +10 -10
- package/dist/views/index.js +9 -9
- package/package.json +1 -1
- package/dist/chunks/android-12-switch-B5UmJZxg.js.map +0 -1
- package/dist/chunks/android-12-switch-D3fU6Qtm.esm.js.map +0 -1
- package/dist/chunks/apiHelper-BrzRrxpx.js.map +0 -1
- package/dist/chunks/apiHelper-BvnhN2uo.esm.js.map +0 -1
- package/dist/chunks/modules-BDHGBfwa.js.map +0 -1
- package/dist/chunks/modules-UIv-lDBW.esm.js.map +0 -1
- package/dist/chunks/pathname.hrms-BVwbtB1M.js +0 -109
- package/dist/chunks/pathname.hrms-BVwbtB1M.js.map +0 -1
- package/dist/chunks/pathname.hrms-BiL7sQv0.esm.js +0 -110
- package/dist/chunks/pathname.hrms-BiL7sQv0.esm.js.map +0 -1
package/dist/chunks/{useReduxIntegration-DvUNoDIr.js.map → useReduxIntegration-JMVTp0lq.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReduxIntegration-DvUNoDIr.js","sources":["../../src/hooks/common.ts","../../src/hooks/use-material-calculations.ts","../../src/hooks/useCheckSkuAndName.tsx","../../src/hooks/useUniquenessCheck.tsx","../../src/hooks/useLanguageFallback.ts","../../src/hooks/useReduxIntegration.ts"],"sourcesContent":["import moment from \"moment\";\nimport { useAuth } from \"./useAuth\";\nimport _ from \"lodash\";\n// Note: These action creators should be provided by the consuming application\n// Creating stubs for build compatibility\nconst createStub = (name: string) => () => {\n console.warn(`${name} is not implemented. This function should be provided by the consuming application.`);\n return Promise.resolve([]);\n};\n\nconst getAgreement = createStub('getAgreement');\nconst getBins = createStub('getBins');\nconst getCategoryItems = createStub('getCategoryItems');\nconst getChartOfAccounts = createStub('getChartOfAccounts');\nconst getCompanies = createStub('getCompanies');\nconst getCurrency = createStub('getCurrency');\nconst getCustomerSegments = createStub('getCustomerSegments');\nconst getDepartments = createStub('getDepartments');\nconst getDiscountedItems = createStub('getDiscountedItems');\nconst getIncoTerms = createStub('getIncoTerms');\nconst getItems = createStub('getItems');\nconst getLocation = createStub('getLocation');\nconst getParties = createStub('getParties');\nconst getPartiesIndustry = createStub('getPartiesIndustry');\nconst getPaymentTerm = createStub('getPaymentTerm');\nconst getPurchaseInvoices = createStub('getPurchaseInvoices');\nconst getPurchaseOrderReceipts = createStub('getPurchaseOrderReceipts');\nconst getPurchaseRepresentatives = createStub('getPurchaseRepresentatives');\nconst getSalesPerason = createStub('getSalesPerason');\nconst getShippingRules = createStub('getShippingRules');\nconst getTaxTemplate = createStub('getTaxTemplate');\nconst getUoms = createStub('getUoms');\nimport { getCountries } from \"libphonenumber-js\";\nexport const formatNumber = (\n num: number,\n defaultCurrencySymbol: string = \"$\"\n): string => {\n if (num >= 1_000_000) {\n return `${defaultCurrencySymbol} ${(num / 1_000_000).toFixed(1)} M`;\n } else if (num >= 100_000) {\n return `${defaultCurrencySymbol} ${(num / 100_000).toFixed(1)} L`; // L for Lakhs\n } else if (num >= 1_000) {\n return `${(num / 1_000).toFixed(1)} K`;\n } else {\n return `${defaultCurrencySymbol} ${num.toFixed(2)}`;\n }\n};\n\nexport function formateDate(date, format = \"DD-MM-YYYY\") {\n console.log(\"date\",date)\n if (!date) {\n return;\n }\n return moment(date).format(format);\n}\n\nexport function capitalizeWords(str) {\n return str\n ? str\n .split(\" \")\n .map(\n (word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()\n )\n .join(\" \")\n : \"\";\n}\n\nexport const defaultUserCurrency = () => {\n // eslint-disable-next-line\n const { user } = useAuth();\n return user?.currency_data?.symbol || \"\";\n};\nexport const valueWithCurrency = (value: any) => {\n // eslint-disable-next-line\n const { user } = useAuth();\n if (!value) {\n return;\n }\n return `${user?.currency_data?.symbol || \"\"} ${value}`;\n};\n\nexport const sortData = (data: any[], key: string, direction: string) => {\n const formatedData = _.orderBy(data, key, direction);\n return formatedData;\n};\nexport function recursiveSort(\n data: any[],\n nestedKeys: any[],\n header: string,\n direction: string\n) {\n console.log(data, nestedKeys, header, direction);\n if (!nestedKeys.length) return sortData(data, header, direction);\n const [currentKey, ...remainingKey] = nestedKeys;\n return data?.map((item) => {\n return {\n ...item,\n [currentKey]: recursiveSort(\n item[currentKey],\n remainingKey || [],\n header,\n direction\n ),\n };\n });\n}\n\nexport function formatTime(isoString: string, format: string = \"HH:mm:ss\") {\n if (!isoString) {\n return;\n }\n const date = new Date(isoString); // Parse the ISO string\n\n const padZero = (num: number) => (num < 10 ? \"0\" : \"\") + num;\n\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n\n if (format === \"HH:mm:ss\") {\n return `${padZero(hours)}:${padZero(minutes)}:${padZero(seconds)}`;\n }\n\n if (format === \"HH:mm\") {\n return `${padZero(hours)}:${padZero(minutes)}`;\n }\n\n if (format === \"hh:mm A\") {\n const period = hours >= 12 ? \"PM\" : \"AM\";\n const twelveHour = hours % 12 || 12;\n return `${padZero(twelveHour)}:${padZero(minutes)} ${period}`;\n }\n\n return date.toTimeString().slice(0, 8); // Default: HH:mm:ss\n}\n\ntype Nullable<T> = {\n [P in keyof T]: T[P] extends object ? Nullable<T[P]> : T[P] | null;\n};\n\nexport function convertEmptyToNull<T extends Record<string, any>>(\n obj: T\n): Nullable<T> {\n return Object.entries(obj).reduce((acc, [key, value]) => {\n if (\n value === \"\" ||\n (Array.isArray(value) && value.length === 0) ||\n (typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) && // Prevent arrays from being treated as objects\n Object.keys(value).length === 0)\n ) {\n acc[key as keyof T] = null;\n } else if (Array.isArray(value)) {\n acc[key as keyof T] = value.map((item) =>\n typeof item === \"object\" && item !== null\n ? convertEmptyToNull(item) // Recursively handle array elements\n : item\n );\n } else if (typeof value === \"object\" && value !== null) {\n acc[key as keyof T] = convertEmptyToNull(value);\n } else {\n acc[key as keyof T] = value;\n }\n return acc;\n }, {} as Nullable<T>);\n}\n\nfunction checkPattern(i: any, pattern: any[]) {\n return pattern.some((obj) => i.includes(obj));\n}\n\nexport function removeExtraKeys(data: any, extraKeys = []) {\n const pattern = [\n \"_at\",\n \"_by\",\n \"_data\",\n \"created_user\",\n \"updated_user\",\n ...extraKeys,\n ];\n for (const i in data) {\n if (checkPattern(i, pattern)) {\n delete data[i];\n } else if (typeof data[i] === \"object\" && !Array.isArray(data[i])) {\n removeExtraKeys(data[i], [\"_at\", \"_by\", \"_data\"]);\n }\n }\n\n return data;\n}\n\nexport const apiType = {\n company: getCompanies,\n items: getItems,\n currency: getCurrency,\n salesperson: getSalesPerason,\n party: getParties,\n department: getDepartments,\n location: getLocation,\n uom: getUoms,\n discountedItems: getDiscountedItems,\n taxTemplate: getTaxTemplate,\n paymentTerm: getPaymentTerm,\n incoTerms: getIncoTerms,\n shippingRules:getShippingRules,\n bins:getBins,\n agreement: getAgreement,\n accounts: getChartOfAccounts,\n invoices: getPurchaseInvoices,\n purchaseOrderReceipts: getPurchaseOrderReceipts,\n representatives: getPurchaseRepresentatives,\n industry:getPartiesIndustry,\n categoryItems:getCategoryItems,\n customerSegment:getCustomerSegments,\n countries:getCountries,\n};\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { useMemo } from 'react';\n\n// ==================== CONSTANTS ====================\nconst MATERIAL_CONSTANTS = {\n STEEL_DENSITY: 7.85,\n LENGTH_CONVERSION_FACTOR: 1000,\n TUBE_CALCULATION_FACTOR: 0.024662,\n COIL_WEIGHTS: {\n GI: 2879.95,\n HR: 2356.59,\n },\n} as const;\n\n// ==================== TYPES ====================\ntype SteelType = keyof typeof MATERIAL_CONSTANTS.COIL_WEIGHTS;\ntype TubeType = 'Round' | 'Square' | 'Rectangle';\n\ninterface BaseFormValues {\n // Board calculation fields\n face_width?: string | number;\n bending?: string | number;\n height?: string | number;\n total_width?: string | number;\n boards_thickness?: string | number;\n boards_length?: string | number;\n \n // Steel calculation fields\n steel_length?: string | number;\n steel_width?: string | number;\n steel_thickness?: string | number;\n steel_type?: SteelType;\n \n // Tube calculation fields\n tube_type?: TubeType;\n tube_od?: string | number;\n shape_width?: string | number;\n shape_height?: string | number;\n material_thickness?: string | number;\n material_length?: string | number;\n}\n\ninterface MaterialCalculations {\n totalWidth: number;\n materialUnit: number;\n boardsWeight: number;\n steelWeight: number;\n materialWeight: number;\n}\n\ninterface CalculationResult<T = number> {\n value: T;\n isValid: boolean;\n error?: string;\n}\n\n// ==================== UTILITY FUNCTIONS ====================\n/**\n * Safely parses a value to number with comprehensive validation\n */\nconst safeParseNumber = (value: string | number | undefined | null): CalculationResult<number> => {\n if (value === undefined || value === null || value === '') {\n return { value: 0, isValid: false, error: 'Empty value' };\n }\n \n const parsed = typeof value === 'string' ? parseFloat(value.trim()) : Number(value);\n \n if (isNaN(parsed)) {\n return { value: 0, isValid: false, error: 'Invalid number format' };\n }\n \n if (!isFinite(parsed)) {\n return { value: 0, isValid: false, error: 'Number is not finite' };\n }\n \n return { value: parsed, isValid: true };\n};\n\n/**\n * Validates that all provided values are positive numbers\n */\nconst validatePositiveNumbers = (...values: (string | number | undefined)[]): boolean => {\n return values.every(value => {\n const result = safeParseNumber(value);\n return result.isValid && result.value > 0;\n });\n};\n\n/**\n * Creates a memoization key from form values to optimize re-calculations\n */\nconst createMemoKey = (formValues: BaseFormValues | undefined): string => {\n if (!formValues) return 'empty';\n \n // Only include relevant fields to avoid unnecessary recalculations\n const relevantFields = [\n 'face_width', 'bending', 'height', 'total_width', 'boards_thickness', 'boards_length',\n 'steel_length', 'steel_width', 'steel_thickness', 'steel_type',\n 'tube_type', 'tube_od', 'shape_width', 'shape_height', 'material_thickness', 'material_length'\n ];\n \n return relevantFields\n .map(field => `${field}:${formValues[field as keyof BaseFormValues] ?? ''}`)\n .join('|');\n};\n\n// ==================== CALCULATION FUNCTIONS ====================\n/**\n * Calculates the total width for boards costing\n * Formula: ((height + bending) * 2) + face_width\n */\nconst calculateBoardsTotalWidth = (formValues: BaseFormValues): CalculationResult<number> => {\n const { face_width, bending, height } = formValues;\n \n if (!validatePositiveNumbers(face_width, bending, height)) {\n return { value: 0, isValid: false, error: 'Invalid input values for boards total width calculation' };\n }\n \n const faceWidthResult = safeParseNumber(face_width);\n const bendingResult = safeParseNumber(bending);\n const heightResult = safeParseNumber(height);\n \n if (![faceWidthResult, bendingResult, heightResult].every(r => r.isValid)) {\n return { value: 0, isValid: false, error: 'Failed to parse input values' };\n }\n \n const totalWidth = ((heightResult.value + bendingResult.value) * 2) + faceWidthResult.value;\n \n return { value: totalWidth, isValid: true };\n};\n\n/**\n * Calculates the weight of boards\n * Formula: (total_width * thickness * (length / 1000)) * 7.85\n */\nconst calculateBoardsWeight = (formValues: BaseFormValues): CalculationResult<number> => {\n const { total_width, boards_thickness, boards_length } = formValues;\n \n if (!validatePositiveNumbers(total_width, boards_thickness, boards_length)) {\n return { value: 0, isValid: false, error: 'Invalid input values for boards weight calculation' };\n }\n \n const totalWidthResult = safeParseNumber(total_width);\n const thicknessResult = safeParseNumber(boards_thickness);\n const lengthResult = safeParseNumber(boards_length);\n \n if (![totalWidthResult, thicknessResult, lengthResult].every(r => r.isValid)) {\n return { value: 0, isValid: false, error: 'Failed to parse input values' };\n }\n \n const weight = (totalWidthResult.value * thicknessResult.value * \n (lengthResult.value / MATERIAL_CONSTANTS.LENGTH_CONVERSION_FACTOR)) * \n MATERIAL_CONSTANTS.STEEL_DENSITY;\n \n return { value: weight, isValid: true };\n};\n\n/**\n * Calculates the weight of steel\n * Formula: (length * width * thickness * 7.85) / 1000\n */\nconst calculateSteelWeight = (formValues: BaseFormValues): CalculationResult<number> => {\n const { steel_length, steel_width, steel_thickness } = formValues;\n \n if (!validatePositiveNumbers(steel_length, steel_width, steel_thickness)) {\n return { value: 0, isValid: false, error: 'Invalid input values for steel weight calculation' };\n }\n \n const lengthResult = safeParseNumber(steel_length);\n const widthResult = safeParseNumber(steel_width);\n const thicknessResult = safeParseNumber(steel_thickness);\n \n if (![lengthResult, widthResult, thicknessResult].every(r => r.isValid)) {\n return { value: 0, isValid: false, error: 'Failed to parse input values' };\n }\n \n const weight = (lengthResult.value * widthResult.value * thicknessResult.value * \n MATERIAL_CONSTANTS.STEEL_DENSITY) / MATERIAL_CONSTANTS.LENGTH_CONVERSION_FACTOR;\n \n return { value: weight, isValid: true };\n};\n\n/**\n * Gets the material unit weight based on steel type\n */\nconst calculateMaterialUnit = (formValues: BaseFormValues): CalculationResult<number> => {\n const { steel_type } = formValues;\n \n if (!steel_type) {\n return { value: 0, isValid: false, error: 'Steel type not specified' };\n }\n \n if (!(steel_type in MATERIAL_CONSTANTS.COIL_WEIGHTS)) {\n return { value: 0, isValid: false, error: `Unsupported steel type: ${steel_type}` };\n }\n \n const weight = MATERIAL_CONSTANTS.COIL_WEIGHTS[steel_type];\n return { value: weight, isValid: true };\n};\n\n/**\n * Calculates material weight based on tube type and dimensions\n * Supports Round, Square, and Rectangle tube types\n */\nconst calculateTubeMaterialWeight = (formValues: BaseFormValues): CalculationResult<number> => {\n const { tube_type, tube_od, shape_width, shape_height, material_thickness, material_length } = formValues;\n \n if (!tube_type) {\n return { value: 0, isValid: false, error: 'Tube type not specified' };\n }\n \n const thicknessResult = safeParseNumber(material_thickness);\n const lengthResult = safeParseNumber(material_length);\n \n if (!thicknessResult.isValid || !lengthResult.isValid) {\n return { value: 0, isValid: false, error: 'Invalid thickness or length values' };\n }\n \n let weight = 0;\n \n switch (tube_type) {\n case 'Round': {\n const odResult = safeParseNumber(tube_od);\n if (!odResult.isValid || odResult.value <= thicknessResult.value) {\n return { value: 0, isValid: false, error: 'Invalid outer diameter for round tube' };\n }\n \n weight = (odResult.value - thicknessResult.value) * thicknessResult.value * \n MATERIAL_CONSTANTS.TUBE_CALCULATION_FACTOR * lengthResult.value;\n break;\n }\n \n case 'Square':\n case 'Rectangle': {\n const widthResult = safeParseNumber(shape_width);\n const heightResult = safeParseNumber(shape_height);\n \n if (!widthResult.isValid || !heightResult.isValid) {\n return { value: 0, isValid: false, error: 'Invalid width or height for rectangular tube' };\n }\n \n const perimeter = 2 * (widthResult.value + heightResult.value);\n weight = (((perimeter / Math.PI) - thicknessResult.value) * thicknessResult.value * \n MATERIAL_CONSTANTS.TUBE_CALCULATION_FACTOR) * lengthResult.value;\n break;\n }\n \n default:\n return { value: 0, isValid: false, error: `Unsupported tube type: ${tube_type}` };\n }\n \n return { value: Math.max(0, weight), isValid: true };\n};\n\n// ==================== MAIN HOOK ====================\n/**\n * Custom hook for optimized material calculations with comprehensive error handling\n * and performance optimization through memoization\n */\nexport const useMaterialCalculations = (formValues?: BaseFormValues): MaterialCalculations => {\n const calculations = useMemo(() => {\n if (!formValues) {\n return {\n totalWidth: 0,\n materialUnit: 0,\n boardsWeight: 0,\n steelWeight: 0,\n materialWeight: 0,\n };\n }\n \n // Calculate all values with error handling\n const totalWidthResult = calculateBoardsTotalWidth(formValues);\n const materialUnitResult = calculateMaterialUnit(formValues);\n const boardsWeightResult = calculateBoardsWeight(formValues);\n const steelWeightResult = calculateSteelWeight(formValues);\n const materialWeightResult = calculateTubeMaterialWeight(formValues);\n \n // Optional: Log errors in development\n if (process.env.NODE_ENV === 'development') {\n [totalWidthResult, materialUnitResult, boardsWeightResult, steelWeightResult, materialWeightResult]\n .filter(result => !result.isValid && result.error)\n .forEach(result => console.warn('Calculation warning:', result.error));\n }\n \n return {\n totalWidth: totalWidthResult.value,\n materialUnit: materialUnitResult.value,\n boardsWeight: boardsWeightResult.value,\n steelWeight: steelWeightResult.value,\n materialWeight: materialWeightResult.value,\n };\n }, [createMemoKey(formValues)]); // Optimized dependency to prevent unnecessary recalculations\n \n return calculations;\n};\n\n// ==================== ADDITIONAL UTILITIES ====================\n/**\n * Utility function to validate form values before calculations\n */\nexport const validateFormValues = (formValues: BaseFormValues): { isValid: boolean; errors: string[] } => {\n const errors: string[] = [];\n const { tube_type, steel_type } = formValues;\n \n // Validate steel type if provided\n if (steel_type && !(steel_type in MATERIAL_CONSTANTS.COIL_WEIGHTS)) {\n errors.push(`Invalid steel type: ${steel_type}`);\n }\n \n // Validate tube type if provided\n if (tube_type && !['Round', 'Square', 'Rectangle'].includes(tube_type)) {\n errors.push(`Invalid tube type: ${tube_type}`);\n }\n \n return { isValid: errors.length === 0, errors };\n};\n\n/**\n * Get available steel types for form validation\n */\nexport const getAvailableSteelTypes = (): SteelType[] => {\n return Object.keys(MATERIAL_CONSTANTS.COIL_WEIGHTS) as SteelType[];\n};\n\n/**\n * Get available tube types for form validation\n */\nexport const getAvailableTubeTypes = (): TubeType[] => {\n return ['Round', 'Square', 'Rectangle'];\n};\n\nexport default {\n useMaterialCalculations,\n validateFormValues,\n getAvailableSteelTypes,\n getAvailableTubeTypes,\n MATERIAL_CONSTANTS,\n};\nexport type {\n BaseFormValues,\n MaterialCalculations,\n SteelType,\n TubeType,\n CalculationResult,\n};","import { useCallback } from 'react';\nimport { checkSkuAndItemName } from '../utils/common';\n\nexport interface IUseNameSkuUniquenessCheckProps {\n fieldPrefix: string;\n formMethods: any;\n data?: any;\n}\n\nexport const useNameSkuUniquenessCheck = ({\n fieldPrefix,\n formMethods,\n data,\n}: IUseNameSkuUniquenessCheckProps) => {\n const { watch=()=>{}, setError=()=>{} } = formMethods||{};\n const formValues = watch(fieldPrefix);\n\n const namePrev = data?.name;\n const skuPrev= data?.sku\n const checkNameAndSkuUniqueness = useCallback(async () => {\n let isUnique=true; \n\n try {\n if(namePrev===formValues?.name && skuPrev===formValues?.sku) return true;\n const response = await checkSkuAndItemName({\n name: formValues?.name,\n sku: formValues?.sku,\n ...(data?.id && { id: data?.id }),\n });\n if (response.name) {\n setError(`${fieldPrefix}.name`, {\n message: 'Name already exists',\n type: 'manual',\n ref: `${fieldPrefix}.name`,\n });\n isUnique=false;\n }\n\n if (response.sku) {\n setError(`${fieldPrefix}.sku`, {\n message: 'SKU already exists',\n type: 'manual',\n ref: `${fieldPrefix}.sku`,\n });\n isUnique=false;\n }\n\n return isUnique;\n } catch (error) {\n console.error('Uniqueness check failed:', error);\n return isUnique;\n }\n //eslint-disable-next-line\n }, [formValues?.name, formValues?.sku, setError]);\n\n return { checkNameAndSkuUniqueness };\n};\n\nexport default useNameSkuUniquenessCheck;\n","import { useMemo } from 'react'\nimport { checkUniqueFields } from '../utils/common'\n\nexport default function useUniquenessCheck({ fieldPrefix, formMethods, data = {}, fields = [] }) {\n\tconst { watch = () => { }, setError = () => { }, formState = {} } = formMethods || {}\n\n\tconst formValues = watch(fieldPrefix)\n\n\t// Stable reference\n\tconst previous = useMemo(() => data || {}, [data])\n\n\tconst checkUniqueness = async () => {\n\t\tlet isUnique = true\n\n\t\ttry {\n\t\t\t// Skip check if no changes\n\t\t\tconst nothingChanged = fields.every((field) => previous[field] === formValues?.[field])\n\n\t\t\tif (nothingChanged) return true\n\n\t\t\t// Build payload\n\t\t\tconst payload = {}\n\t\t\tfields.forEach((field) => (payload[field] = formValues?.[field]))\n\n\t\t\tif (data?.id) payload.id = data.id\n\n\t\t\t// API call\n\t\t\tconst response = await checkUniqueFields(payload)\n\n\t\t\t// Loop through API response\n\t\t\tfor (const [field, exists] of Object.entries(response)) {\n\t\t\t\tif (exists) {\n\t\t\t\t\tconst errorPath = `${fieldPrefix}.${field}`\n\t\t\t\t\tsetError(errorPath, {\n\t\t\t\t\t\ttype: 'manual',\n\t\t\t\t\t\tmessage: `${field.replace(/_/g, ' ').toLowerCase()} already exists`,\n\t\t\t\t\t})\n\n\t\t\t\t\tisUnique = false\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconsole.log('Errors now:', formState.errors)\n\n\t\t\treturn isUnique\n\t\t} catch (error) {\n\t\t\tconsole.error('Uniqueness check failed:', error)\n\t\t\treturn isUnique\n\t\t}\n\t}\n\n\treturn { checkUniqueness }\n}\n","import { useState } from 'react';\nimport { DEFAULT_LANG } from '../constants/all-language';\n\ninterface ILanguage {\n label: string;\n code: string;\n direction: string;\n}\n\n// Configuration for fallback behavior\ninterface FallbackConfig {\n fallbackOrder?: string[];\n enableConsoleWarnings?: boolean;\n retryOnError?: boolean;\n maxRetries?: number;\n}\n\n// Updated fallback order with English first\nconst DEFAULT_FALLBACK_CONFIG: Required<FallbackConfig> = {\n fallbackOrder: ['en', 'en-US', DEFAULT_LANG], // English first\n enableConsoleWarnings: true,\n retryOnError: false,\n maxRetries: 3,\n};\n\nexport const useLanguageFallback = (config: FallbackConfig = {}) => {\n const finalConfig = { ...DEFAULT_FALLBACK_CONFIG, ...config };\n const [retryCount, setRetryCount] = useState(0);\n\n // Create English fallback language object\n const createEnglishFallback = (): ILanguage => ({\n code: 'en',\n label: 'English',\n direction: 'ltr'\n });\n\n // Find the best available language with fallback logic\n const findBestAvailableLanguage = (\n languages: ILanguage[], \n preferredCode?: string\n ): ILanguage | null => {\n if (!languages || languages.length === 0) {\n if (finalConfig.enableConsoleWarnings) {\n console.warn('No languages available for fallback selection, using English');\n }\n return createEnglishFallback();\n }\n\n // First try the preferred language if provided\n if (preferredCode) {\n const preferred = languages.find(lang => lang.code === preferredCode);\n if (preferred) return preferred;\n \n if (finalConfig.enableConsoleWarnings) {\n console.warn(`Preferred language \"${preferredCode}\" not found, trying fallbacks`);\n }\n }\n\n // Try fallback languages in order (English first)\n for (const fallbackCode of finalConfig.fallbackOrder) {\n const fallback = languages.find(lang => lang.code === fallbackCode);\n if (fallback) {\n if (finalConfig.enableConsoleWarnings && preferredCode && preferredCode !== fallbackCode) {\n console.warn(`Using fallback language: \"${fallbackCode}\" instead of \"${preferredCode}\"`);\n }\n return fallback;\n }\n }\n\n // If no fallbacks found, return English or first available language\n const englishLang = languages.find(lang => lang.code === 'en');\n if (englishLang) {\n if (finalConfig.enableConsoleWarnings) {\n console.warn('Using English as ultimate fallback');\n }\n return englishLang;\n }\n\n // Last resort - return first available language\n if (finalConfig.enableConsoleWarnings) {\n console.warn('No English fallback found, using first available language');\n }\n return languages[0] || createEnglishFallback();\n };\n\n // Create a fallback language object when API fails - always English\n const createEmergencyFallback = (): ILanguage => {\n return createEnglishFallback();\n };\n\n // Validate if a language code exists in the available languages\n const validateLanguageCode = (languages: ILanguage[], code: string): boolean => {\n return languages.some(lang => lang.code === code);\n };\n\n // Get saved language from localStorage with validation\n const getSavedLanguage = (languages: ILanguage[]): string | null => {\n const saved = localStorage.getItem('_language');\n if (!saved) return null;\n \n // Validate saved language exists in available languages\n if (validateLanguageCode(languages, saved)) {\n return saved;\n }\n \n if (finalConfig.enableConsoleWarnings) {\n console.warn(`Saved language \"${saved}\" is no longer available, will use English fallback`);\n }\n return null;\n };\n\n // Ensure English is always available in languages array\n const ensureEnglishAvailable = (languages: ILanguage[]): ILanguage[] => {\n const hasEnglish = languages.some(lang => lang.code === 'en');\n if (!hasEnglish) {\n return [createEnglishFallback(), ...languages];\n }\n return languages;\n };\n\n // Retry mechanism for failed language fetches\n const shouldRetry = (): boolean => {\n return finalConfig.retryOnError && retryCount < finalConfig.maxRetries;\n };\n\n const incrementRetry = () => {\n setRetryCount(prev => prev + 1);\n };\n\n const resetRetry = () => {\n setRetryCount(0);\n };\n\n return {\n findBestAvailableLanguage,\n createEmergencyFallback,\n createEnglishFallback,\n validateLanguageCode,\n getSavedLanguage,\n ensureEnglishAvailable,\n shouldRetry,\n incrementRetry,\n resetRetry,\n retryCount,\n config: finalConfig,\n };\n};\n\n// Additional utility hook for language state management\nexport const useLanguageState = () => {\n const [isInitialized, setIsInitialized] = useState(false);\n const [hasError, setHasError] = useState(false);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n\n const markInitialized = () => setIsInitialized(true);\n const setError = (error: string) => {\n setHasError(true);\n setErrorMessage(error);\n };\n const clearError = () => {\n setHasError(false);\n setErrorMessage(null);\n };\n\n return {\n isInitialized,\n hasError,\n errorMessage,\n markInitialized,\n setError,\n clearError,\n };\n};\n\nexport default {\n useLanguageFallback,\n useLanguageState,\n};\n\nexport type { ILanguage, FallbackConfig };\n\n","import { useERPUI } from '../components/providers/ERPUIProvider';\n\n/**\n * Hook to determine Redux integration status and provide conditional Redux usage\n */\nexport const useReduxIntegration = () => {\n const { useRedux, apiClient } = useERPUI();\n \n // Helper function to conditionally use Redux hooks\n const useConditionalRedux = <T>(\n reduxHook: () => T,\n fallbackValue: T\n ): T => {\n if (!useRedux) {\n return fallbackValue;\n }\n \n try {\n return reduxHook();\n } catch (error) {\n console.warn('Redux hook failed, falling back to default value:', error);\n return fallbackValue;\n }\n };\n \n // Helper function to conditionally dispatch Redux actions\n const conditionalDispatch = (action: any) => {\n if (!useRedux) {\n console.warn('Redux not enabled, cannot dispatch action:', action);\n return Promise.resolve();\n }\n \n try {\n const { useAppDispatch } = require('../redux/hooks');\n const dispatch = useAppDispatch();\n return dispatch(action);\n } catch (error) {\n console.error('Failed to dispatch Redux action:', error);\n return Promise.reject(error);\n }\n };\n \n return {\n useRedux,\n apiClient,\n useConditionalRedux,\n conditionalDispatch,\n };\n};"],"names":["useAuth","getCountries","useMemo","useCallback","checkSkuAndItemName","checkUniqueFields","DEFAULT_LANG","useState","useERPUI"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useReduxIntegration-JMVTp0lq.js","sources":["../../src/hooks/common.ts","../../src/hooks/use-material-calculations.ts","../../src/hooks/useCheckSkuAndName.tsx","../../src/hooks/useUniquenessCheck.tsx","../../src/hooks/useLanguageFallback.ts","../../src/hooks/useReduxIntegration.ts"],"sourcesContent":["import moment from \"moment\";\nimport { useAuth } from \"./useAuth\";\nimport _ from \"lodash\";\n// Note: These action creators should be provided by the consuming application\n// Creating stubs for build compatibility\nconst createStub = (name: string) => () => {\n console.warn(`${name} is not implemented. This function should be provided by the consuming application.`);\n return Promise.resolve([]);\n};\n\nconst getAgreement = createStub('getAgreement');\nconst getBins = createStub('getBins');\nconst getCategoryItems = createStub('getCategoryItems');\nconst getChartOfAccounts = createStub('getChartOfAccounts');\nconst getCompanies = createStub('getCompanies');\nconst getCurrency = createStub('getCurrency');\nconst getCustomerSegments = createStub('getCustomerSegments');\nconst getDepartments = createStub('getDepartments');\nconst getDiscountedItems = createStub('getDiscountedItems');\nconst getIncoTerms = createStub('getIncoTerms');\nconst getItems = createStub('getItems');\nconst getLocation = createStub('getLocation');\nconst getParties = createStub('getParties');\nconst getPartiesIndustry = createStub('getPartiesIndustry');\nconst getPaymentTerm = createStub('getPaymentTerm');\nconst getPurchaseInvoices = createStub('getPurchaseInvoices');\nconst getPurchaseOrderReceipts = createStub('getPurchaseOrderReceipts');\nconst getPurchaseRepresentatives = createStub('getPurchaseRepresentatives');\nconst getSalesPerason = createStub('getSalesPerason');\nconst getShippingRules = createStub('getShippingRules');\nconst getTaxTemplate = createStub('getTaxTemplate');\nconst getUoms = createStub('getUoms');\nimport { getCountries } from \"libphonenumber-js\";\nexport const formatNumber = (\n num: number,\n defaultCurrencySymbol: string = \"$\"\n): string => {\n if (num >= 1_000_000) {\n return `${defaultCurrencySymbol} ${(num / 1_000_000).toFixed(1)} M`;\n } else if (num >= 100_000) {\n return `${defaultCurrencySymbol} ${(num / 100_000).toFixed(1)} L`; // L for Lakhs\n } else if (num >= 1_000) {\n return `${(num / 1_000).toFixed(1)} K`;\n } else {\n return `${defaultCurrencySymbol} ${num.toFixed(2)}`;\n }\n};\n\nexport function formateDate(date, format = \"DD-MM-YYYY\") {\n console.log(\"date\",date)\n if (!date) {\n return;\n }\n return moment(date).format(format);\n}\n\nexport function capitalizeWords(str) {\n return str\n ? str\n .split(\" \")\n .map(\n (word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()\n )\n .join(\" \")\n : \"\";\n}\n\nexport const defaultUserCurrency = () => {\n // eslint-disable-next-line\n const { user } = useAuth();\n return user?.currency_data?.symbol || \"\";\n};\nexport const valueWithCurrency = (value: any) => {\n // eslint-disable-next-line\n const { user } = useAuth();\n if (!value) {\n return;\n }\n return `${user?.currency_data?.symbol || \"\"} ${value}`;\n};\n\nexport const sortData = (data: any[], key: string, direction: string) => {\n const formatedData = _.orderBy(data, key, direction);\n return formatedData;\n};\nexport function recursiveSort(\n data: any[],\n nestedKeys: any[],\n header: string,\n direction: string\n) {\n console.log(data, nestedKeys, header, direction);\n if (!nestedKeys.length) return sortData(data, header, direction);\n const [currentKey, ...remainingKey] = nestedKeys;\n return data?.map((item) => {\n return {\n ...item,\n [currentKey]: recursiveSort(\n item[currentKey],\n remainingKey || [],\n header,\n direction\n ),\n };\n });\n}\n\nexport function formatTime(isoString: string, format: string = \"HH:mm:ss\") {\n if (!isoString) {\n return;\n }\n const date = new Date(isoString); // Parse the ISO string\n\n const padZero = (num: number) => (num < 10 ? \"0\" : \"\") + num;\n\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n\n if (format === \"HH:mm:ss\") {\n return `${padZero(hours)}:${padZero(minutes)}:${padZero(seconds)}`;\n }\n\n if (format === \"HH:mm\") {\n return `${padZero(hours)}:${padZero(minutes)}`;\n }\n\n if (format === \"hh:mm A\") {\n const period = hours >= 12 ? \"PM\" : \"AM\";\n const twelveHour = hours % 12 || 12;\n return `${padZero(twelveHour)}:${padZero(minutes)} ${period}`;\n }\n\n return date.toTimeString().slice(0, 8); // Default: HH:mm:ss\n}\n\ntype Nullable<T> = {\n [P in keyof T]: T[P] extends object ? Nullable<T[P]> : T[P] | null;\n};\n\nexport function convertEmptyToNull<T extends Record<string, any>>(\n obj: T\n): Nullable<T> {\n return Object.entries(obj).reduce((acc, [key, value]) => {\n if (\n value === \"\" ||\n (Array.isArray(value) && value.length === 0) ||\n (typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) && // Prevent arrays from being treated as objects\n Object.keys(value).length === 0)\n ) {\n acc[key as keyof T] = null;\n } else if (Array.isArray(value)) {\n acc[key as keyof T] = value.map((item) =>\n typeof item === \"object\" && item !== null\n ? convertEmptyToNull(item) // Recursively handle array elements\n : item\n );\n } else if (typeof value === \"object\" && value !== null) {\n acc[key as keyof T] = convertEmptyToNull(value);\n } else {\n acc[key as keyof T] = value;\n }\n return acc;\n }, {} as Nullable<T>);\n}\n\nfunction checkPattern(i: any, pattern: any[]) {\n return pattern.some((obj) => i.includes(obj));\n}\n\nexport function removeExtraKeys(data: any, extraKeys = []) {\n const pattern = [\n \"_at\",\n \"_by\",\n \"_data\",\n \"created_user\",\n \"updated_user\",\n ...extraKeys,\n ];\n for (const i in data) {\n if (checkPattern(i, pattern)) {\n delete data[i];\n } else if (typeof data[i] === \"object\" && !Array.isArray(data[i])) {\n removeExtraKeys(data[i], [\"_at\", \"_by\", \"_data\"]);\n }\n }\n\n return data;\n}\n\nexport const apiType = {\n company: getCompanies,\n items: getItems,\n currency: getCurrency,\n salesperson: getSalesPerason,\n party: getParties,\n department: getDepartments,\n location: getLocation,\n uom: getUoms,\n discountedItems: getDiscountedItems,\n taxTemplate: getTaxTemplate,\n paymentTerm: getPaymentTerm,\n incoTerms: getIncoTerms,\n shippingRules:getShippingRules,\n bins:getBins,\n agreement: getAgreement,\n accounts: getChartOfAccounts,\n invoices: getPurchaseInvoices,\n purchaseOrderReceipts: getPurchaseOrderReceipts,\n representatives: getPurchaseRepresentatives,\n industry:getPartiesIndustry,\n categoryItems:getCategoryItems,\n customerSegment:getCustomerSegments,\n countries:getCountries,\n};\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { useMemo } from 'react';\n\n// ==================== CONSTANTS ====================\nconst MATERIAL_CONSTANTS = {\n STEEL_DENSITY: 7.85,\n LENGTH_CONVERSION_FACTOR: 1000,\n TUBE_CALCULATION_FACTOR: 0.024662,\n COIL_WEIGHTS: {\n GI: 2879.95,\n HR: 2356.59,\n },\n} as const;\n\n// ==================== TYPES ====================\ntype SteelType = keyof typeof MATERIAL_CONSTANTS.COIL_WEIGHTS;\ntype TubeType = 'Round' | 'Square' | 'Rectangle';\n\ninterface BaseFormValues {\n // Board calculation fields\n face_width?: string | number;\n bending?: string | number;\n height?: string | number;\n total_width?: string | number;\n boards_thickness?: string | number;\n boards_length?: string | number;\n \n // Steel calculation fields\n steel_length?: string | number;\n steel_width?: string | number;\n steel_thickness?: string | number;\n steel_type?: SteelType;\n \n // Tube calculation fields\n tube_type?: TubeType;\n tube_od?: string | number;\n shape_width?: string | number;\n shape_height?: string | number;\n material_thickness?: string | number;\n material_length?: string | number;\n}\n\ninterface MaterialCalculations {\n totalWidth: number;\n materialUnit: number;\n boardsWeight: number;\n steelWeight: number;\n materialWeight: number;\n}\n\ninterface CalculationResult<T = number> {\n value: T;\n isValid: boolean;\n error?: string;\n}\n\n// ==================== UTILITY FUNCTIONS ====================\n/**\n * Safely parses a value to number with comprehensive validation\n */\nconst safeParseNumber = (value: string | number | undefined | null): CalculationResult<number> => {\n if (value === undefined || value === null || value === '') {\n return { value: 0, isValid: false, error: 'Empty value' };\n }\n \n const parsed = typeof value === 'string' ? parseFloat(value.trim()) : Number(value);\n \n if (isNaN(parsed)) {\n return { value: 0, isValid: false, error: 'Invalid number format' };\n }\n \n if (!isFinite(parsed)) {\n return { value: 0, isValid: false, error: 'Number is not finite' };\n }\n \n return { value: parsed, isValid: true };\n};\n\n/**\n * Validates that all provided values are positive numbers\n */\nconst validatePositiveNumbers = (...values: (string | number | undefined)[]): boolean => {\n return values.every(value => {\n const result = safeParseNumber(value);\n return result.isValid && result.value > 0;\n });\n};\n\n/**\n * Creates a memoization key from form values to optimize re-calculations\n */\nconst createMemoKey = (formValues: BaseFormValues | undefined): string => {\n if (!formValues) return 'empty';\n \n // Only include relevant fields to avoid unnecessary recalculations\n const relevantFields = [\n 'face_width', 'bending', 'height', 'total_width', 'boards_thickness', 'boards_length',\n 'steel_length', 'steel_width', 'steel_thickness', 'steel_type',\n 'tube_type', 'tube_od', 'shape_width', 'shape_height', 'material_thickness', 'material_length'\n ];\n \n return relevantFields\n .map(field => `${field}:${formValues[field as keyof BaseFormValues] ?? ''}`)\n .join('|');\n};\n\n// ==================== CALCULATION FUNCTIONS ====================\n/**\n * Calculates the total width for boards costing\n * Formula: ((height + bending) * 2) + face_width\n */\nconst calculateBoardsTotalWidth = (formValues: BaseFormValues): CalculationResult<number> => {\n const { face_width, bending, height } = formValues;\n \n if (!validatePositiveNumbers(face_width, bending, height)) {\n return { value: 0, isValid: false, error: 'Invalid input values for boards total width calculation' };\n }\n \n const faceWidthResult = safeParseNumber(face_width);\n const bendingResult = safeParseNumber(bending);\n const heightResult = safeParseNumber(height);\n \n if (![faceWidthResult, bendingResult, heightResult].every(r => r.isValid)) {\n return { value: 0, isValid: false, error: 'Failed to parse input values' };\n }\n \n const totalWidth = ((heightResult.value + bendingResult.value) * 2) + faceWidthResult.value;\n \n return { value: totalWidth, isValid: true };\n};\n\n/**\n * Calculates the weight of boards\n * Formula: (total_width * thickness * (length / 1000)) * 7.85\n */\nconst calculateBoardsWeight = (formValues: BaseFormValues): CalculationResult<number> => {\n const { total_width, boards_thickness, boards_length } = formValues;\n \n if (!validatePositiveNumbers(total_width, boards_thickness, boards_length)) {\n return { value: 0, isValid: false, error: 'Invalid input values for boards weight calculation' };\n }\n \n const totalWidthResult = safeParseNumber(total_width);\n const thicknessResult = safeParseNumber(boards_thickness);\n const lengthResult = safeParseNumber(boards_length);\n \n if (![totalWidthResult, thicknessResult, lengthResult].every(r => r.isValid)) {\n return { value: 0, isValid: false, error: 'Failed to parse input values' };\n }\n \n const weight = (totalWidthResult.value * thicknessResult.value * \n (lengthResult.value / MATERIAL_CONSTANTS.LENGTH_CONVERSION_FACTOR)) * \n MATERIAL_CONSTANTS.STEEL_DENSITY;\n \n return { value: weight, isValid: true };\n};\n\n/**\n * Calculates the weight of steel\n * Formula: (length * width * thickness * 7.85) / 1000\n */\nconst calculateSteelWeight = (formValues: BaseFormValues): CalculationResult<number> => {\n const { steel_length, steel_width, steel_thickness } = formValues;\n \n if (!validatePositiveNumbers(steel_length, steel_width, steel_thickness)) {\n return { value: 0, isValid: false, error: 'Invalid input values for steel weight calculation' };\n }\n \n const lengthResult = safeParseNumber(steel_length);\n const widthResult = safeParseNumber(steel_width);\n const thicknessResult = safeParseNumber(steel_thickness);\n \n if (![lengthResult, widthResult, thicknessResult].every(r => r.isValid)) {\n return { value: 0, isValid: false, error: 'Failed to parse input values' };\n }\n \n const weight = (lengthResult.value * widthResult.value * thicknessResult.value * \n MATERIAL_CONSTANTS.STEEL_DENSITY) / MATERIAL_CONSTANTS.LENGTH_CONVERSION_FACTOR;\n \n return { value: weight, isValid: true };\n};\n\n/**\n * Gets the material unit weight based on steel type\n */\nconst calculateMaterialUnit = (formValues: BaseFormValues): CalculationResult<number> => {\n const { steel_type } = formValues;\n \n if (!steel_type) {\n return { value: 0, isValid: false, error: 'Steel type not specified' };\n }\n \n if (!(steel_type in MATERIAL_CONSTANTS.COIL_WEIGHTS)) {\n return { value: 0, isValid: false, error: `Unsupported steel type: ${steel_type}` };\n }\n \n const weight = MATERIAL_CONSTANTS.COIL_WEIGHTS[steel_type];\n return { value: weight, isValid: true };\n};\n\n/**\n * Calculates material weight based on tube type and dimensions\n * Supports Round, Square, and Rectangle tube types\n */\nconst calculateTubeMaterialWeight = (formValues: BaseFormValues): CalculationResult<number> => {\n const { tube_type, tube_od, shape_width, shape_height, material_thickness, material_length } = formValues;\n \n if (!tube_type) {\n return { value: 0, isValid: false, error: 'Tube type not specified' };\n }\n \n const thicknessResult = safeParseNumber(material_thickness);\n const lengthResult = safeParseNumber(material_length);\n \n if (!thicknessResult.isValid || !lengthResult.isValid) {\n return { value: 0, isValid: false, error: 'Invalid thickness or length values' };\n }\n \n let weight = 0;\n \n switch (tube_type) {\n case 'Round': {\n const odResult = safeParseNumber(tube_od);\n if (!odResult.isValid || odResult.value <= thicknessResult.value) {\n return { value: 0, isValid: false, error: 'Invalid outer diameter for round tube' };\n }\n \n weight = (odResult.value - thicknessResult.value) * thicknessResult.value * \n MATERIAL_CONSTANTS.TUBE_CALCULATION_FACTOR * lengthResult.value;\n break;\n }\n \n case 'Square':\n case 'Rectangle': {\n const widthResult = safeParseNumber(shape_width);\n const heightResult = safeParseNumber(shape_height);\n \n if (!widthResult.isValid || !heightResult.isValid) {\n return { value: 0, isValid: false, error: 'Invalid width or height for rectangular tube' };\n }\n \n const perimeter = 2 * (widthResult.value + heightResult.value);\n weight = (((perimeter / Math.PI) - thicknessResult.value) * thicknessResult.value * \n MATERIAL_CONSTANTS.TUBE_CALCULATION_FACTOR) * lengthResult.value;\n break;\n }\n \n default:\n return { value: 0, isValid: false, error: `Unsupported tube type: ${tube_type}` };\n }\n \n return { value: Math.max(0, weight), isValid: true };\n};\n\n// ==================== MAIN HOOK ====================\n/**\n * Custom hook for optimized material calculations with comprehensive error handling\n * and performance optimization through memoization\n */\nexport const useMaterialCalculations = (formValues?: BaseFormValues): MaterialCalculations => {\n const calculations = useMemo(() => {\n if (!formValues) {\n return {\n totalWidth: 0,\n materialUnit: 0,\n boardsWeight: 0,\n steelWeight: 0,\n materialWeight: 0,\n };\n }\n \n // Calculate all values with error handling\n const totalWidthResult = calculateBoardsTotalWidth(formValues);\n const materialUnitResult = calculateMaterialUnit(formValues);\n const boardsWeightResult = calculateBoardsWeight(formValues);\n const steelWeightResult = calculateSteelWeight(formValues);\n const materialWeightResult = calculateTubeMaterialWeight(formValues);\n \n // Optional: Log errors in development\n if (process.env.NODE_ENV === 'development') {\n [totalWidthResult, materialUnitResult, boardsWeightResult, steelWeightResult, materialWeightResult]\n .filter(result => !result.isValid && result.error)\n .forEach(result => console.warn('Calculation warning:', result.error));\n }\n \n return {\n totalWidth: totalWidthResult.value,\n materialUnit: materialUnitResult.value,\n boardsWeight: boardsWeightResult.value,\n steelWeight: steelWeightResult.value,\n materialWeight: materialWeightResult.value,\n };\n }, [createMemoKey(formValues)]); // Optimized dependency to prevent unnecessary recalculations\n \n return calculations;\n};\n\n// ==================== ADDITIONAL UTILITIES ====================\n/**\n * Utility function to validate form values before calculations\n */\nexport const validateFormValues = (formValues: BaseFormValues): { isValid: boolean; errors: string[] } => {\n const errors: string[] = [];\n const { tube_type, steel_type } = formValues;\n \n // Validate steel type if provided\n if (steel_type && !(steel_type in MATERIAL_CONSTANTS.COIL_WEIGHTS)) {\n errors.push(`Invalid steel type: ${steel_type}`);\n }\n \n // Validate tube type if provided\n if (tube_type && !['Round', 'Square', 'Rectangle'].includes(tube_type)) {\n errors.push(`Invalid tube type: ${tube_type}`);\n }\n \n return { isValid: errors.length === 0, errors };\n};\n\n/**\n * Get available steel types for form validation\n */\nexport const getAvailableSteelTypes = (): SteelType[] => {\n return Object.keys(MATERIAL_CONSTANTS.COIL_WEIGHTS) as SteelType[];\n};\n\n/**\n * Get available tube types for form validation\n */\nexport const getAvailableTubeTypes = (): TubeType[] => {\n return ['Round', 'Square', 'Rectangle'];\n};\n\nexport default {\n useMaterialCalculations,\n validateFormValues,\n getAvailableSteelTypes,\n getAvailableTubeTypes,\n MATERIAL_CONSTANTS,\n};\nexport type {\n BaseFormValues,\n MaterialCalculations,\n SteelType,\n TubeType,\n CalculationResult,\n};","import { useCallback } from 'react';\nimport { checkSkuAndItemName } from '../utils/common';\n\nexport interface IUseNameSkuUniquenessCheckProps {\n fieldPrefix: string;\n formMethods: any;\n data?: any;\n}\n\nexport const useNameSkuUniquenessCheck = ({\n fieldPrefix,\n formMethods,\n data,\n}: IUseNameSkuUniquenessCheckProps) => {\n const { watch=()=>{}, setError=()=>{} } = formMethods||{};\n const formValues = watch(fieldPrefix);\n\n const namePrev = data?.name;\n const skuPrev= data?.sku\n const checkNameAndSkuUniqueness = useCallback(async () => {\n let isUnique=true; \n\n try {\n if(namePrev===formValues?.name && skuPrev===formValues?.sku) return true;\n const response = await checkSkuAndItemName({\n name: formValues?.name,\n sku: formValues?.sku,\n ...(data?.id && { id: data?.id }),\n });\n if (response.name) {\n setError(`${fieldPrefix}.name`, {\n message: 'Name already exists',\n type: 'manual',\n ref: `${fieldPrefix}.name`,\n });\n isUnique=false;\n }\n\n if (response.sku) {\n setError(`${fieldPrefix}.sku`, {\n message: 'SKU already exists',\n type: 'manual',\n ref: `${fieldPrefix}.sku`,\n });\n isUnique=false;\n }\n\n return isUnique;\n } catch (error) {\n console.error('Uniqueness check failed:', error);\n return isUnique;\n }\n //eslint-disable-next-line\n }, [formValues?.name, formValues?.sku, setError]);\n\n return { checkNameAndSkuUniqueness };\n};\n\nexport default useNameSkuUniquenessCheck;\n","import { useMemo } from 'react'\nimport { checkUniqueFields } from '../utils/common'\n\nexport default function useUniquenessCheck({ fieldPrefix, formMethods, data = {}, fields = [] }) {\n\tconst { watch = () => { }, setError = () => { }, formState = {} } = formMethods || {}\n\n\tconst formValues = watch(fieldPrefix)\n\n\t// Stable reference\n\tconst previous = useMemo(() => data || {}, [data])\n\n\tconst checkUniqueness = async () => {\n\t\tlet isUnique = true\n\n\t\ttry {\n\t\t\t// Skip check if no changes\n\t\t\tconst nothingChanged = fields.every((field) => previous[field] === formValues?.[field])\n\n\t\t\tif (nothingChanged) return true\n\n\t\t\t// Build payload\n\t\t\tconst payload = {}\n\t\t\tfields.forEach((field) => (payload[field] = formValues?.[field]))\n\n\t\t\tif (data?.id) payload.id = data.id\n\n\t\t\t// API call\n\t\t\tconst response = await checkUniqueFields(payload)\n\n\t\t\t// Loop through API response\n\t\t\tfor (const [field, exists] of Object.entries(response)) {\n\t\t\t\tif (exists) {\n\t\t\t\t\tconst errorPath = `${fieldPrefix}.${field}`\n\t\t\t\t\tsetError(errorPath, {\n\t\t\t\t\t\ttype: 'manual',\n\t\t\t\t\t\tmessage: `${field.replace(/_/g, ' ').toLowerCase()} already exists`,\n\t\t\t\t\t})\n\n\t\t\t\t\tisUnique = false\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconsole.log('Errors now:', formState.errors)\n\n\t\t\treturn isUnique\n\t\t} catch (error) {\n\t\t\tconsole.error('Uniqueness check failed:', error)\n\t\t\treturn isUnique\n\t\t}\n\t}\n\n\treturn { checkUniqueness }\n}\n","import { useState } from 'react';\nimport { DEFAULT_LANG } from '../constants/all-language';\n\ninterface ILanguage {\n label: string;\n code: string;\n direction: string;\n}\n\n// Configuration for fallback behavior\ninterface FallbackConfig {\n fallbackOrder?: string[];\n enableConsoleWarnings?: boolean;\n retryOnError?: boolean;\n maxRetries?: number;\n}\n\n// Updated fallback order with English first\nconst DEFAULT_FALLBACK_CONFIG: Required<FallbackConfig> = {\n fallbackOrder: ['en', 'en-US', DEFAULT_LANG], // English first\n enableConsoleWarnings: true,\n retryOnError: false,\n maxRetries: 3,\n};\n\nexport const useLanguageFallback = (config: FallbackConfig = {}) => {\n const finalConfig = { ...DEFAULT_FALLBACK_CONFIG, ...config };\n const [retryCount, setRetryCount] = useState(0);\n\n // Create English fallback language object\n const createEnglishFallback = (): ILanguage => ({\n code: 'en',\n label: 'English',\n direction: 'ltr'\n });\n\n // Find the best available language with fallback logic\n const findBestAvailableLanguage = (\n languages: ILanguage[], \n preferredCode?: string\n ): ILanguage | null => {\n if (!languages || languages.length === 0) {\n if (finalConfig.enableConsoleWarnings) {\n console.warn('No languages available for fallback selection, using English');\n }\n return createEnglishFallback();\n }\n\n // First try the preferred language if provided\n if (preferredCode) {\n const preferred = languages.find(lang => lang.code === preferredCode);\n if (preferred) return preferred;\n \n if (finalConfig.enableConsoleWarnings) {\n console.warn(`Preferred language \"${preferredCode}\" not found, trying fallbacks`);\n }\n }\n\n // Try fallback languages in order (English first)\n for (const fallbackCode of finalConfig.fallbackOrder) {\n const fallback = languages.find(lang => lang.code === fallbackCode);\n if (fallback) {\n if (finalConfig.enableConsoleWarnings && preferredCode && preferredCode !== fallbackCode) {\n console.warn(`Using fallback language: \"${fallbackCode}\" instead of \"${preferredCode}\"`);\n }\n return fallback;\n }\n }\n\n // If no fallbacks found, return English or first available language\n const englishLang = languages.find(lang => lang.code === 'en');\n if (englishLang) {\n if (finalConfig.enableConsoleWarnings) {\n console.warn('Using English as ultimate fallback');\n }\n return englishLang;\n }\n\n // Last resort - return first available language\n if (finalConfig.enableConsoleWarnings) {\n console.warn('No English fallback found, using first available language');\n }\n return languages[0] || createEnglishFallback();\n };\n\n // Create a fallback language object when API fails - always English\n const createEmergencyFallback = (): ILanguage => {\n return createEnglishFallback();\n };\n\n // Validate if a language code exists in the available languages\n const validateLanguageCode = (languages: ILanguage[], code: string): boolean => {\n return languages.some(lang => lang.code === code);\n };\n\n // Get saved language from localStorage with validation\n const getSavedLanguage = (languages: ILanguage[]): string | null => {\n const saved = localStorage.getItem('_language');\n if (!saved) return null;\n \n // Validate saved language exists in available languages\n if (validateLanguageCode(languages, saved)) {\n return saved;\n }\n \n if (finalConfig.enableConsoleWarnings) {\n console.warn(`Saved language \"${saved}\" is no longer available, will use English fallback`);\n }\n return null;\n };\n\n // Ensure English is always available in languages array\n const ensureEnglishAvailable = (languages: ILanguage[]): ILanguage[] => {\n const hasEnglish = languages.some(lang => lang.code === 'en');\n if (!hasEnglish) {\n return [createEnglishFallback(), ...languages];\n }\n return languages;\n };\n\n // Retry mechanism for failed language fetches\n const shouldRetry = (): boolean => {\n return finalConfig.retryOnError && retryCount < finalConfig.maxRetries;\n };\n\n const incrementRetry = () => {\n setRetryCount(prev => prev + 1);\n };\n\n const resetRetry = () => {\n setRetryCount(0);\n };\n\n return {\n findBestAvailableLanguage,\n createEmergencyFallback,\n createEnglishFallback,\n validateLanguageCode,\n getSavedLanguage,\n ensureEnglishAvailable,\n shouldRetry,\n incrementRetry,\n resetRetry,\n retryCount,\n config: finalConfig,\n };\n};\n\n// Additional utility hook for language state management\nexport const useLanguageState = () => {\n const [isInitialized, setIsInitialized] = useState(false);\n const [hasError, setHasError] = useState(false);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n\n const markInitialized = () => setIsInitialized(true);\n const setError = (error: string) => {\n setHasError(true);\n setErrorMessage(error);\n };\n const clearError = () => {\n setHasError(false);\n setErrorMessage(null);\n };\n\n return {\n isInitialized,\n hasError,\n errorMessage,\n markInitialized,\n setError,\n clearError,\n };\n};\n\nexport default {\n useLanguageFallback,\n useLanguageState,\n};\n\nexport type { ILanguage, FallbackConfig };\n\n","import { useERPUI } from '../components/providers/ERPUIProvider';\n\n/**\n * Hook to determine Redux integration status and provide conditional Redux usage\n */\nexport const useReduxIntegration = () => {\n const { useRedux, apiClient } = useERPUI();\n \n // Helper function to conditionally use Redux hooks\n const useConditionalRedux = <T>(\n reduxHook: () => T,\n fallbackValue: T\n ): T => {\n if (!useRedux) {\n return fallbackValue;\n }\n \n try {\n return reduxHook();\n } catch (error) {\n console.warn('Redux hook failed, falling back to default value:', error);\n return fallbackValue;\n }\n };\n \n // Helper function to conditionally dispatch Redux actions\n const conditionalDispatch = (action: any) => {\n if (!useRedux) {\n console.warn('Redux not enabled, cannot dispatch action:', action);\n return Promise.resolve();\n }\n \n try {\n const { useAppDispatch } = require('../redux/hooks');\n const dispatch = useAppDispatch();\n return dispatch(action);\n } catch (error) {\n console.error('Failed to dispatch Redux action:', error);\n return Promise.reject(error);\n }\n };\n \n return {\n useRedux,\n apiClient,\n useConditionalRedux,\n conditionalDispatch,\n };\n};"],"names":["useAuth","getCountries","useMemo","useCallback","checkSkuAndItemName","checkUniqueFields","DEFAULT_LANG","useState","useERPUI"],"mappings":"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"}
|
package/dist/chunks/{useReduxIntegration-CPPcf1p7.esm.js → useReduxIntegration-VgWJGErE.esm.js}
RENAMED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import moment from "moment";
|
|
2
|
-
import { u as useAuth } from "./useAuth-
|
|
2
|
+
import { u as useAuth } from "./useAuth-Tfx2guEJ.esm.js";
|
|
3
3
|
import _ from "lodash";
|
|
4
4
|
import { getCountries } from "libphonenumber-js";
|
|
5
5
|
import { useMemo, useCallback, useState } from "react";
|
|
6
|
-
import { o as checkSkuAndItemName, p as checkUniqueFields } from "./common-
|
|
6
|
+
import { o as checkSkuAndItemName, p as checkUniqueFields } from "./common-B6euWODJ.esm.js";
|
|
7
7
|
import { D as DEFAULT_LANG } from "./pathname.rental-VYOFVGX6.esm.js";
|
|
8
|
-
import { u as useERPUI } from "./apiHelper-
|
|
8
|
+
import { u as useERPUI } from "./apiHelper-Cv_qWaYo.esm.js";
|
|
9
9
|
const createStub = (name) => () => {
|
|
10
10
|
console.warn(`${name} is not implemented. This function should be provided by the consuming application.`);
|
|
11
11
|
return Promise.resolve([]);
|
|
@@ -611,4 +611,4 @@ export {
|
|
|
611
611
|
useLanguageFallback as u,
|
|
612
612
|
validateFormValues as v
|
|
613
613
|
};
|
|
614
|
-
//# sourceMappingURL=useReduxIntegration-
|
|
614
|
+
//# sourceMappingURL=useReduxIntegration-VgWJGErE.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReduxIntegration-CPPcf1p7.esm.js","sources":["../../src/hooks/common.ts","../../src/hooks/use-material-calculations.ts","../../src/hooks/useCheckSkuAndName.tsx","../../src/hooks/useUniquenessCheck.tsx","../../src/hooks/useLanguageFallback.ts","../../src/hooks/useReduxIntegration.ts"],"sourcesContent":["import moment from \"moment\";\nimport { useAuth } from \"./useAuth\";\nimport _ from \"lodash\";\n// Note: These action creators should be provided by the consuming application\n// Creating stubs for build compatibility\nconst createStub = (name: string) => () => {\n console.warn(`${name} is not implemented. This function should be provided by the consuming application.`);\n return Promise.resolve([]);\n};\n\nconst getAgreement = createStub('getAgreement');\nconst getBins = createStub('getBins');\nconst getCategoryItems = createStub('getCategoryItems');\nconst getChartOfAccounts = createStub('getChartOfAccounts');\nconst getCompanies = createStub('getCompanies');\nconst getCurrency = createStub('getCurrency');\nconst getCustomerSegments = createStub('getCustomerSegments');\nconst getDepartments = createStub('getDepartments');\nconst getDiscountedItems = createStub('getDiscountedItems');\nconst getIncoTerms = createStub('getIncoTerms');\nconst getItems = createStub('getItems');\nconst getLocation = createStub('getLocation');\nconst getParties = createStub('getParties');\nconst getPartiesIndustry = createStub('getPartiesIndustry');\nconst getPaymentTerm = createStub('getPaymentTerm');\nconst getPurchaseInvoices = createStub('getPurchaseInvoices');\nconst getPurchaseOrderReceipts = createStub('getPurchaseOrderReceipts');\nconst getPurchaseRepresentatives = createStub('getPurchaseRepresentatives');\nconst getSalesPerason = createStub('getSalesPerason');\nconst getShippingRules = createStub('getShippingRules');\nconst getTaxTemplate = createStub('getTaxTemplate');\nconst getUoms = createStub('getUoms');\nimport { getCountries } from \"libphonenumber-js\";\nexport const formatNumber = (\n num: number,\n defaultCurrencySymbol: string = \"$\"\n): string => {\n if (num >= 1_000_000) {\n return `${defaultCurrencySymbol} ${(num / 1_000_000).toFixed(1)} M`;\n } else if (num >= 100_000) {\n return `${defaultCurrencySymbol} ${(num / 100_000).toFixed(1)} L`; // L for Lakhs\n } else if (num >= 1_000) {\n return `${(num / 1_000).toFixed(1)} K`;\n } else {\n return `${defaultCurrencySymbol} ${num.toFixed(2)}`;\n }\n};\n\nexport function formateDate(date, format = \"DD-MM-YYYY\") {\n console.log(\"date\",date)\n if (!date) {\n return;\n }\n return moment(date).format(format);\n}\n\nexport function capitalizeWords(str) {\n return str\n ? str\n .split(\" \")\n .map(\n (word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()\n )\n .join(\" \")\n : \"\";\n}\n\nexport const defaultUserCurrency = () => {\n // eslint-disable-next-line\n const { user } = useAuth();\n return user?.currency_data?.symbol || \"\";\n};\nexport const valueWithCurrency = (value: any) => {\n // eslint-disable-next-line\n const { user } = useAuth();\n if (!value) {\n return;\n }\n return `${user?.currency_data?.symbol || \"\"} ${value}`;\n};\n\nexport const sortData = (data: any[], key: string, direction: string) => {\n const formatedData = _.orderBy(data, key, direction);\n return formatedData;\n};\nexport function recursiveSort(\n data: any[],\n nestedKeys: any[],\n header: string,\n direction: string\n) {\n console.log(data, nestedKeys, header, direction);\n if (!nestedKeys.length) return sortData(data, header, direction);\n const [currentKey, ...remainingKey] = nestedKeys;\n return data?.map((item) => {\n return {\n ...item,\n [currentKey]: recursiveSort(\n item[currentKey],\n remainingKey || [],\n header,\n direction\n ),\n };\n });\n}\n\nexport function formatTime(isoString: string, format: string = \"HH:mm:ss\") {\n if (!isoString) {\n return;\n }\n const date = new Date(isoString); // Parse the ISO string\n\n const padZero = (num: number) => (num < 10 ? \"0\" : \"\") + num;\n\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n\n if (format === \"HH:mm:ss\") {\n return `${padZero(hours)}:${padZero(minutes)}:${padZero(seconds)}`;\n }\n\n if (format === \"HH:mm\") {\n return `${padZero(hours)}:${padZero(minutes)}`;\n }\n\n if (format === \"hh:mm A\") {\n const period = hours >= 12 ? \"PM\" : \"AM\";\n const twelveHour = hours % 12 || 12;\n return `${padZero(twelveHour)}:${padZero(minutes)} ${period}`;\n }\n\n return date.toTimeString().slice(0, 8); // Default: HH:mm:ss\n}\n\ntype Nullable<T> = {\n [P in keyof T]: T[P] extends object ? Nullable<T[P]> : T[P] | null;\n};\n\nexport function convertEmptyToNull<T extends Record<string, any>>(\n obj: T\n): Nullable<T> {\n return Object.entries(obj).reduce((acc, [key, value]) => {\n if (\n value === \"\" ||\n (Array.isArray(value) && value.length === 0) ||\n (typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) && // Prevent arrays from being treated as objects\n Object.keys(value).length === 0)\n ) {\n acc[key as keyof T] = null;\n } else if (Array.isArray(value)) {\n acc[key as keyof T] = value.map((item) =>\n typeof item === \"object\" && item !== null\n ? convertEmptyToNull(item) // Recursively handle array elements\n : item\n );\n } else if (typeof value === \"object\" && value !== null) {\n acc[key as keyof T] = convertEmptyToNull(value);\n } else {\n acc[key as keyof T] = value;\n }\n return acc;\n }, {} as Nullable<T>);\n}\n\nfunction checkPattern(i: any, pattern: any[]) {\n return pattern.some((obj) => i.includes(obj));\n}\n\nexport function removeExtraKeys(data: any, extraKeys = []) {\n const pattern = [\n \"_at\",\n \"_by\",\n \"_data\",\n \"created_user\",\n \"updated_user\",\n ...extraKeys,\n ];\n for (const i in data) {\n if (checkPattern(i, pattern)) {\n delete data[i];\n } else if (typeof data[i] === \"object\" && !Array.isArray(data[i])) {\n removeExtraKeys(data[i], [\"_at\", \"_by\", \"_data\"]);\n }\n }\n\n return data;\n}\n\nexport const apiType = {\n company: getCompanies,\n items: getItems,\n currency: getCurrency,\n salesperson: getSalesPerason,\n party: getParties,\n department: getDepartments,\n location: getLocation,\n uom: getUoms,\n discountedItems: getDiscountedItems,\n taxTemplate: getTaxTemplate,\n paymentTerm: getPaymentTerm,\n incoTerms: getIncoTerms,\n shippingRules:getShippingRules,\n bins:getBins,\n agreement: getAgreement,\n accounts: getChartOfAccounts,\n invoices: getPurchaseInvoices,\n purchaseOrderReceipts: getPurchaseOrderReceipts,\n representatives: getPurchaseRepresentatives,\n industry:getPartiesIndustry,\n categoryItems:getCategoryItems,\n customerSegment:getCustomerSegments,\n countries:getCountries,\n};\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { useMemo } from 'react';\n\n// ==================== CONSTANTS ====================\nconst MATERIAL_CONSTANTS = {\n STEEL_DENSITY: 7.85,\n LENGTH_CONVERSION_FACTOR: 1000,\n TUBE_CALCULATION_FACTOR: 0.024662,\n COIL_WEIGHTS: {\n GI: 2879.95,\n HR: 2356.59,\n },\n} as const;\n\n// ==================== TYPES ====================\ntype SteelType = keyof typeof MATERIAL_CONSTANTS.COIL_WEIGHTS;\ntype TubeType = 'Round' | 'Square' | 'Rectangle';\n\ninterface BaseFormValues {\n // Board calculation fields\n face_width?: string | number;\n bending?: string | number;\n height?: string | number;\n total_width?: string | number;\n boards_thickness?: string | number;\n boards_length?: string | number;\n \n // Steel calculation fields\n steel_length?: string | number;\n steel_width?: string | number;\n steel_thickness?: string | number;\n steel_type?: SteelType;\n \n // Tube calculation fields\n tube_type?: TubeType;\n tube_od?: string | number;\n shape_width?: string | number;\n shape_height?: string | number;\n material_thickness?: string | number;\n material_length?: string | number;\n}\n\ninterface MaterialCalculations {\n totalWidth: number;\n materialUnit: number;\n boardsWeight: number;\n steelWeight: number;\n materialWeight: number;\n}\n\ninterface CalculationResult<T = number> {\n value: T;\n isValid: boolean;\n error?: string;\n}\n\n// ==================== UTILITY FUNCTIONS ====================\n/**\n * Safely parses a value to number with comprehensive validation\n */\nconst safeParseNumber = (value: string | number | undefined | null): CalculationResult<number> => {\n if (value === undefined || value === null || value === '') {\n return { value: 0, isValid: false, error: 'Empty value' };\n }\n \n const parsed = typeof value === 'string' ? parseFloat(value.trim()) : Number(value);\n \n if (isNaN(parsed)) {\n return { value: 0, isValid: false, error: 'Invalid number format' };\n }\n \n if (!isFinite(parsed)) {\n return { value: 0, isValid: false, error: 'Number is not finite' };\n }\n \n return { value: parsed, isValid: true };\n};\n\n/**\n * Validates that all provided values are positive numbers\n */\nconst validatePositiveNumbers = (...values: (string | number | undefined)[]): boolean => {\n return values.every(value => {\n const result = safeParseNumber(value);\n return result.isValid && result.value > 0;\n });\n};\n\n/**\n * Creates a memoization key from form values to optimize re-calculations\n */\nconst createMemoKey = (formValues: BaseFormValues | undefined): string => {\n if (!formValues) return 'empty';\n \n // Only include relevant fields to avoid unnecessary recalculations\n const relevantFields = [\n 'face_width', 'bending', 'height', 'total_width', 'boards_thickness', 'boards_length',\n 'steel_length', 'steel_width', 'steel_thickness', 'steel_type',\n 'tube_type', 'tube_od', 'shape_width', 'shape_height', 'material_thickness', 'material_length'\n ];\n \n return relevantFields\n .map(field => `${field}:${formValues[field as keyof BaseFormValues] ?? ''}`)\n .join('|');\n};\n\n// ==================== CALCULATION FUNCTIONS ====================\n/**\n * Calculates the total width for boards costing\n * Formula: ((height + bending) * 2) + face_width\n */\nconst calculateBoardsTotalWidth = (formValues: BaseFormValues): CalculationResult<number> => {\n const { face_width, bending, height } = formValues;\n \n if (!validatePositiveNumbers(face_width, bending, height)) {\n return { value: 0, isValid: false, error: 'Invalid input values for boards total width calculation' };\n }\n \n const faceWidthResult = safeParseNumber(face_width);\n const bendingResult = safeParseNumber(bending);\n const heightResult = safeParseNumber(height);\n \n if (![faceWidthResult, bendingResult, heightResult].every(r => r.isValid)) {\n return { value: 0, isValid: false, error: 'Failed to parse input values' };\n }\n \n const totalWidth = ((heightResult.value + bendingResult.value) * 2) + faceWidthResult.value;\n \n return { value: totalWidth, isValid: true };\n};\n\n/**\n * Calculates the weight of boards\n * Formula: (total_width * thickness * (length / 1000)) * 7.85\n */\nconst calculateBoardsWeight = (formValues: BaseFormValues): CalculationResult<number> => {\n const { total_width, boards_thickness, boards_length } = formValues;\n \n if (!validatePositiveNumbers(total_width, boards_thickness, boards_length)) {\n return { value: 0, isValid: false, error: 'Invalid input values for boards weight calculation' };\n }\n \n const totalWidthResult = safeParseNumber(total_width);\n const thicknessResult = safeParseNumber(boards_thickness);\n const lengthResult = safeParseNumber(boards_length);\n \n if (![totalWidthResult, thicknessResult, lengthResult].every(r => r.isValid)) {\n return { value: 0, isValid: false, error: 'Failed to parse input values' };\n }\n \n const weight = (totalWidthResult.value * thicknessResult.value * \n (lengthResult.value / MATERIAL_CONSTANTS.LENGTH_CONVERSION_FACTOR)) * \n MATERIAL_CONSTANTS.STEEL_DENSITY;\n \n return { value: weight, isValid: true };\n};\n\n/**\n * Calculates the weight of steel\n * Formula: (length * width * thickness * 7.85) / 1000\n */\nconst calculateSteelWeight = (formValues: BaseFormValues): CalculationResult<number> => {\n const { steel_length, steel_width, steel_thickness } = formValues;\n \n if (!validatePositiveNumbers(steel_length, steel_width, steel_thickness)) {\n return { value: 0, isValid: false, error: 'Invalid input values for steel weight calculation' };\n }\n \n const lengthResult = safeParseNumber(steel_length);\n const widthResult = safeParseNumber(steel_width);\n const thicknessResult = safeParseNumber(steel_thickness);\n \n if (![lengthResult, widthResult, thicknessResult].every(r => r.isValid)) {\n return { value: 0, isValid: false, error: 'Failed to parse input values' };\n }\n \n const weight = (lengthResult.value * widthResult.value * thicknessResult.value * \n MATERIAL_CONSTANTS.STEEL_DENSITY) / MATERIAL_CONSTANTS.LENGTH_CONVERSION_FACTOR;\n \n return { value: weight, isValid: true };\n};\n\n/**\n * Gets the material unit weight based on steel type\n */\nconst calculateMaterialUnit = (formValues: BaseFormValues): CalculationResult<number> => {\n const { steel_type } = formValues;\n \n if (!steel_type) {\n return { value: 0, isValid: false, error: 'Steel type not specified' };\n }\n \n if (!(steel_type in MATERIAL_CONSTANTS.COIL_WEIGHTS)) {\n return { value: 0, isValid: false, error: `Unsupported steel type: ${steel_type}` };\n }\n \n const weight = MATERIAL_CONSTANTS.COIL_WEIGHTS[steel_type];\n return { value: weight, isValid: true };\n};\n\n/**\n * Calculates material weight based on tube type and dimensions\n * Supports Round, Square, and Rectangle tube types\n */\nconst calculateTubeMaterialWeight = (formValues: BaseFormValues): CalculationResult<number> => {\n const { tube_type, tube_od, shape_width, shape_height, material_thickness, material_length } = formValues;\n \n if (!tube_type) {\n return { value: 0, isValid: false, error: 'Tube type not specified' };\n }\n \n const thicknessResult = safeParseNumber(material_thickness);\n const lengthResult = safeParseNumber(material_length);\n \n if (!thicknessResult.isValid || !lengthResult.isValid) {\n return { value: 0, isValid: false, error: 'Invalid thickness or length values' };\n }\n \n let weight = 0;\n \n switch (tube_type) {\n case 'Round': {\n const odResult = safeParseNumber(tube_od);\n if (!odResult.isValid || odResult.value <= thicknessResult.value) {\n return { value: 0, isValid: false, error: 'Invalid outer diameter for round tube' };\n }\n \n weight = (odResult.value - thicknessResult.value) * thicknessResult.value * \n MATERIAL_CONSTANTS.TUBE_CALCULATION_FACTOR * lengthResult.value;\n break;\n }\n \n case 'Square':\n case 'Rectangle': {\n const widthResult = safeParseNumber(shape_width);\n const heightResult = safeParseNumber(shape_height);\n \n if (!widthResult.isValid || !heightResult.isValid) {\n return { value: 0, isValid: false, error: 'Invalid width or height for rectangular tube' };\n }\n \n const perimeter = 2 * (widthResult.value + heightResult.value);\n weight = (((perimeter / Math.PI) - thicknessResult.value) * thicknessResult.value * \n MATERIAL_CONSTANTS.TUBE_CALCULATION_FACTOR) * lengthResult.value;\n break;\n }\n \n default:\n return { value: 0, isValid: false, error: `Unsupported tube type: ${tube_type}` };\n }\n \n return { value: Math.max(0, weight), isValid: true };\n};\n\n// ==================== MAIN HOOK ====================\n/**\n * Custom hook for optimized material calculations with comprehensive error handling\n * and performance optimization through memoization\n */\nexport const useMaterialCalculations = (formValues?: BaseFormValues): MaterialCalculations => {\n const calculations = useMemo(() => {\n if (!formValues) {\n return {\n totalWidth: 0,\n materialUnit: 0,\n boardsWeight: 0,\n steelWeight: 0,\n materialWeight: 0,\n };\n }\n \n // Calculate all values with error handling\n const totalWidthResult = calculateBoardsTotalWidth(formValues);\n const materialUnitResult = calculateMaterialUnit(formValues);\n const boardsWeightResult = calculateBoardsWeight(formValues);\n const steelWeightResult = calculateSteelWeight(formValues);\n const materialWeightResult = calculateTubeMaterialWeight(formValues);\n \n // Optional: Log errors in development\n if (process.env.NODE_ENV === 'development') {\n [totalWidthResult, materialUnitResult, boardsWeightResult, steelWeightResult, materialWeightResult]\n .filter(result => !result.isValid && result.error)\n .forEach(result => console.warn('Calculation warning:', result.error));\n }\n \n return {\n totalWidth: totalWidthResult.value,\n materialUnit: materialUnitResult.value,\n boardsWeight: boardsWeightResult.value,\n steelWeight: steelWeightResult.value,\n materialWeight: materialWeightResult.value,\n };\n }, [createMemoKey(formValues)]); // Optimized dependency to prevent unnecessary recalculations\n \n return calculations;\n};\n\n// ==================== ADDITIONAL UTILITIES ====================\n/**\n * Utility function to validate form values before calculations\n */\nexport const validateFormValues = (formValues: BaseFormValues): { isValid: boolean; errors: string[] } => {\n const errors: string[] = [];\n const { tube_type, steel_type } = formValues;\n \n // Validate steel type if provided\n if (steel_type && !(steel_type in MATERIAL_CONSTANTS.COIL_WEIGHTS)) {\n errors.push(`Invalid steel type: ${steel_type}`);\n }\n \n // Validate tube type if provided\n if (tube_type && !['Round', 'Square', 'Rectangle'].includes(tube_type)) {\n errors.push(`Invalid tube type: ${tube_type}`);\n }\n \n return { isValid: errors.length === 0, errors };\n};\n\n/**\n * Get available steel types for form validation\n */\nexport const getAvailableSteelTypes = (): SteelType[] => {\n return Object.keys(MATERIAL_CONSTANTS.COIL_WEIGHTS) as SteelType[];\n};\n\n/**\n * Get available tube types for form validation\n */\nexport const getAvailableTubeTypes = (): TubeType[] => {\n return ['Round', 'Square', 'Rectangle'];\n};\n\nexport default {\n useMaterialCalculations,\n validateFormValues,\n getAvailableSteelTypes,\n getAvailableTubeTypes,\n MATERIAL_CONSTANTS,\n};\nexport type {\n BaseFormValues,\n MaterialCalculations,\n SteelType,\n TubeType,\n CalculationResult,\n};","import { useCallback } from 'react';\nimport { checkSkuAndItemName } from '../utils/common';\n\nexport interface IUseNameSkuUniquenessCheckProps {\n fieldPrefix: string;\n formMethods: any;\n data?: any;\n}\n\nexport const useNameSkuUniquenessCheck = ({\n fieldPrefix,\n formMethods,\n data,\n}: IUseNameSkuUniquenessCheckProps) => {\n const { watch=()=>{}, setError=()=>{} } = formMethods||{};\n const formValues = watch(fieldPrefix);\n\n const namePrev = data?.name;\n const skuPrev= data?.sku\n const checkNameAndSkuUniqueness = useCallback(async () => {\n let isUnique=true; \n\n try {\n if(namePrev===formValues?.name && skuPrev===formValues?.sku) return true;\n const response = await checkSkuAndItemName({\n name: formValues?.name,\n sku: formValues?.sku,\n ...(data?.id && { id: data?.id }),\n });\n if (response.name) {\n setError(`${fieldPrefix}.name`, {\n message: 'Name already exists',\n type: 'manual',\n ref: `${fieldPrefix}.name`,\n });\n isUnique=false;\n }\n\n if (response.sku) {\n setError(`${fieldPrefix}.sku`, {\n message: 'SKU already exists',\n type: 'manual',\n ref: `${fieldPrefix}.sku`,\n });\n isUnique=false;\n }\n\n return isUnique;\n } catch (error) {\n console.error('Uniqueness check failed:', error);\n return isUnique;\n }\n //eslint-disable-next-line\n }, [formValues?.name, formValues?.sku, setError]);\n\n return { checkNameAndSkuUniqueness };\n};\n\nexport default useNameSkuUniquenessCheck;\n","import { useMemo } from 'react'\nimport { checkUniqueFields } from '../utils/common'\n\nexport default function useUniquenessCheck({ fieldPrefix, formMethods, data = {}, fields = [] }) {\n\tconst { watch = () => { }, setError = () => { }, formState = {} } = formMethods || {}\n\n\tconst formValues = watch(fieldPrefix)\n\n\t// Stable reference\n\tconst previous = useMemo(() => data || {}, [data])\n\n\tconst checkUniqueness = async () => {\n\t\tlet isUnique = true\n\n\t\ttry {\n\t\t\t// Skip check if no changes\n\t\t\tconst nothingChanged = fields.every((field) => previous[field] === formValues?.[field])\n\n\t\t\tif (nothingChanged) return true\n\n\t\t\t// Build payload\n\t\t\tconst payload = {}\n\t\t\tfields.forEach((field) => (payload[field] = formValues?.[field]))\n\n\t\t\tif (data?.id) payload.id = data.id\n\n\t\t\t// API call\n\t\t\tconst response = await checkUniqueFields(payload)\n\n\t\t\t// Loop through API response\n\t\t\tfor (const [field, exists] of Object.entries(response)) {\n\t\t\t\tif (exists) {\n\t\t\t\t\tconst errorPath = `${fieldPrefix}.${field}`\n\t\t\t\t\tsetError(errorPath, {\n\t\t\t\t\t\ttype: 'manual',\n\t\t\t\t\t\tmessage: `${field.replace(/_/g, ' ').toLowerCase()} already exists`,\n\t\t\t\t\t})\n\n\t\t\t\t\tisUnique = false\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconsole.log('Errors now:', formState.errors)\n\n\t\t\treturn isUnique\n\t\t} catch (error) {\n\t\t\tconsole.error('Uniqueness check failed:', error)\n\t\t\treturn isUnique\n\t\t}\n\t}\n\n\treturn { checkUniqueness }\n}\n","import { useState } from 'react';\nimport { DEFAULT_LANG } from '../constants/all-language';\n\ninterface ILanguage {\n label: string;\n code: string;\n direction: string;\n}\n\n// Configuration for fallback behavior\ninterface FallbackConfig {\n fallbackOrder?: string[];\n enableConsoleWarnings?: boolean;\n retryOnError?: boolean;\n maxRetries?: number;\n}\n\n// Updated fallback order with English first\nconst DEFAULT_FALLBACK_CONFIG: Required<FallbackConfig> = {\n fallbackOrder: ['en', 'en-US', DEFAULT_LANG], // English first\n enableConsoleWarnings: true,\n retryOnError: false,\n maxRetries: 3,\n};\n\nexport const useLanguageFallback = (config: FallbackConfig = {}) => {\n const finalConfig = { ...DEFAULT_FALLBACK_CONFIG, ...config };\n const [retryCount, setRetryCount] = useState(0);\n\n // Create English fallback language object\n const createEnglishFallback = (): ILanguage => ({\n code: 'en',\n label: 'English',\n direction: 'ltr'\n });\n\n // Find the best available language with fallback logic\n const findBestAvailableLanguage = (\n languages: ILanguage[], \n preferredCode?: string\n ): ILanguage | null => {\n if (!languages || languages.length === 0) {\n if (finalConfig.enableConsoleWarnings) {\n console.warn('No languages available for fallback selection, using English');\n }\n return createEnglishFallback();\n }\n\n // First try the preferred language if provided\n if (preferredCode) {\n const preferred = languages.find(lang => lang.code === preferredCode);\n if (preferred) return preferred;\n \n if (finalConfig.enableConsoleWarnings) {\n console.warn(`Preferred language \"${preferredCode}\" not found, trying fallbacks`);\n }\n }\n\n // Try fallback languages in order (English first)\n for (const fallbackCode of finalConfig.fallbackOrder) {\n const fallback = languages.find(lang => lang.code === fallbackCode);\n if (fallback) {\n if (finalConfig.enableConsoleWarnings && preferredCode && preferredCode !== fallbackCode) {\n console.warn(`Using fallback language: \"${fallbackCode}\" instead of \"${preferredCode}\"`);\n }\n return fallback;\n }\n }\n\n // If no fallbacks found, return English or first available language\n const englishLang = languages.find(lang => lang.code === 'en');\n if (englishLang) {\n if (finalConfig.enableConsoleWarnings) {\n console.warn('Using English as ultimate fallback');\n }\n return englishLang;\n }\n\n // Last resort - return first available language\n if (finalConfig.enableConsoleWarnings) {\n console.warn('No English fallback found, using first available language');\n }\n return languages[0] || createEnglishFallback();\n };\n\n // Create a fallback language object when API fails - always English\n const createEmergencyFallback = (): ILanguage => {\n return createEnglishFallback();\n };\n\n // Validate if a language code exists in the available languages\n const validateLanguageCode = (languages: ILanguage[], code: string): boolean => {\n return languages.some(lang => lang.code === code);\n };\n\n // Get saved language from localStorage with validation\n const getSavedLanguage = (languages: ILanguage[]): string | null => {\n const saved = localStorage.getItem('_language');\n if (!saved) return null;\n \n // Validate saved language exists in available languages\n if (validateLanguageCode(languages, saved)) {\n return saved;\n }\n \n if (finalConfig.enableConsoleWarnings) {\n console.warn(`Saved language \"${saved}\" is no longer available, will use English fallback`);\n }\n return null;\n };\n\n // Ensure English is always available in languages array\n const ensureEnglishAvailable = (languages: ILanguage[]): ILanguage[] => {\n const hasEnglish = languages.some(lang => lang.code === 'en');\n if (!hasEnglish) {\n return [createEnglishFallback(), ...languages];\n }\n return languages;\n };\n\n // Retry mechanism for failed language fetches\n const shouldRetry = (): boolean => {\n return finalConfig.retryOnError && retryCount < finalConfig.maxRetries;\n };\n\n const incrementRetry = () => {\n setRetryCount(prev => prev + 1);\n };\n\n const resetRetry = () => {\n setRetryCount(0);\n };\n\n return {\n findBestAvailableLanguage,\n createEmergencyFallback,\n createEnglishFallback,\n validateLanguageCode,\n getSavedLanguage,\n ensureEnglishAvailable,\n shouldRetry,\n incrementRetry,\n resetRetry,\n retryCount,\n config: finalConfig,\n };\n};\n\n// Additional utility hook for language state management\nexport const useLanguageState = () => {\n const [isInitialized, setIsInitialized] = useState(false);\n const [hasError, setHasError] = useState(false);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n\n const markInitialized = () => setIsInitialized(true);\n const setError = (error: string) => {\n setHasError(true);\n setErrorMessage(error);\n };\n const clearError = () => {\n setHasError(false);\n setErrorMessage(null);\n };\n\n return {\n isInitialized,\n hasError,\n errorMessage,\n markInitialized,\n setError,\n clearError,\n };\n};\n\nexport default {\n useLanguageFallback,\n useLanguageState,\n};\n\nexport type { ILanguage, FallbackConfig };\n\n","import { useERPUI } from '../components/providers/ERPUIProvider';\n\n/**\n * Hook to determine Redux integration status and provide conditional Redux usage\n */\nexport const useReduxIntegration = () => {\n const { useRedux, apiClient } = useERPUI();\n \n // Helper function to conditionally use Redux hooks\n const useConditionalRedux = <T>(\n reduxHook: () => T,\n fallbackValue: T\n ): T => {\n if (!useRedux) {\n return fallbackValue;\n }\n \n try {\n return reduxHook();\n } catch (error) {\n console.warn('Redux hook failed, falling back to default value:', error);\n return fallbackValue;\n }\n };\n \n // Helper function to conditionally dispatch Redux actions\n const conditionalDispatch = (action: any) => {\n if (!useRedux) {\n console.warn('Redux not enabled, cannot dispatch action:', action);\n return Promise.resolve();\n }\n \n try {\n const { useAppDispatch } = require('../redux/hooks');\n const dispatch = useAppDispatch();\n return dispatch(action);\n } catch (error) {\n console.error('Failed to dispatch Redux action:', error);\n return Promise.reject(error);\n }\n };\n \n return {\n useRedux,\n apiClient,\n useConditionalRedux,\n conditionalDispatch,\n };\n};"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useReduxIntegration-VgWJGErE.esm.js","sources":["../../src/hooks/common.ts","../../src/hooks/use-material-calculations.ts","../../src/hooks/useCheckSkuAndName.tsx","../../src/hooks/useUniquenessCheck.tsx","../../src/hooks/useLanguageFallback.ts","../../src/hooks/useReduxIntegration.ts"],"sourcesContent":["import moment from \"moment\";\nimport { useAuth } from \"./useAuth\";\nimport _ from \"lodash\";\n// Note: These action creators should be provided by the consuming application\n// Creating stubs for build compatibility\nconst createStub = (name: string) => () => {\n console.warn(`${name} is not implemented. This function should be provided by the consuming application.`);\n return Promise.resolve([]);\n};\n\nconst getAgreement = createStub('getAgreement');\nconst getBins = createStub('getBins');\nconst getCategoryItems = createStub('getCategoryItems');\nconst getChartOfAccounts = createStub('getChartOfAccounts');\nconst getCompanies = createStub('getCompanies');\nconst getCurrency = createStub('getCurrency');\nconst getCustomerSegments = createStub('getCustomerSegments');\nconst getDepartments = createStub('getDepartments');\nconst getDiscountedItems = createStub('getDiscountedItems');\nconst getIncoTerms = createStub('getIncoTerms');\nconst getItems = createStub('getItems');\nconst getLocation = createStub('getLocation');\nconst getParties = createStub('getParties');\nconst getPartiesIndustry = createStub('getPartiesIndustry');\nconst getPaymentTerm = createStub('getPaymentTerm');\nconst getPurchaseInvoices = createStub('getPurchaseInvoices');\nconst getPurchaseOrderReceipts = createStub('getPurchaseOrderReceipts');\nconst getPurchaseRepresentatives = createStub('getPurchaseRepresentatives');\nconst getSalesPerason = createStub('getSalesPerason');\nconst getShippingRules = createStub('getShippingRules');\nconst getTaxTemplate = createStub('getTaxTemplate');\nconst getUoms = createStub('getUoms');\nimport { getCountries } from \"libphonenumber-js\";\nexport const formatNumber = (\n num: number,\n defaultCurrencySymbol: string = \"$\"\n): string => {\n if (num >= 1_000_000) {\n return `${defaultCurrencySymbol} ${(num / 1_000_000).toFixed(1)} M`;\n } else if (num >= 100_000) {\n return `${defaultCurrencySymbol} ${(num / 100_000).toFixed(1)} L`; // L for Lakhs\n } else if (num >= 1_000) {\n return `${(num / 1_000).toFixed(1)} K`;\n } else {\n return `${defaultCurrencySymbol} ${num.toFixed(2)}`;\n }\n};\n\nexport function formateDate(date, format = \"DD-MM-YYYY\") {\n console.log(\"date\",date)\n if (!date) {\n return;\n }\n return moment(date).format(format);\n}\n\nexport function capitalizeWords(str) {\n return str\n ? str\n .split(\" \")\n .map(\n (word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()\n )\n .join(\" \")\n : \"\";\n}\n\nexport const defaultUserCurrency = () => {\n // eslint-disable-next-line\n const { user } = useAuth();\n return user?.currency_data?.symbol || \"\";\n};\nexport const valueWithCurrency = (value: any) => {\n // eslint-disable-next-line\n const { user } = useAuth();\n if (!value) {\n return;\n }\n return `${user?.currency_data?.symbol || \"\"} ${value}`;\n};\n\nexport const sortData = (data: any[], key: string, direction: string) => {\n const formatedData = _.orderBy(data, key, direction);\n return formatedData;\n};\nexport function recursiveSort(\n data: any[],\n nestedKeys: any[],\n header: string,\n direction: string\n) {\n console.log(data, nestedKeys, header, direction);\n if (!nestedKeys.length) return sortData(data, header, direction);\n const [currentKey, ...remainingKey] = nestedKeys;\n return data?.map((item) => {\n return {\n ...item,\n [currentKey]: recursiveSort(\n item[currentKey],\n remainingKey || [],\n header,\n direction\n ),\n };\n });\n}\n\nexport function formatTime(isoString: string, format: string = \"HH:mm:ss\") {\n if (!isoString) {\n return;\n }\n const date = new Date(isoString); // Parse the ISO string\n\n const padZero = (num: number) => (num < 10 ? \"0\" : \"\") + num;\n\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n\n if (format === \"HH:mm:ss\") {\n return `${padZero(hours)}:${padZero(minutes)}:${padZero(seconds)}`;\n }\n\n if (format === \"HH:mm\") {\n return `${padZero(hours)}:${padZero(minutes)}`;\n }\n\n if (format === \"hh:mm A\") {\n const period = hours >= 12 ? \"PM\" : \"AM\";\n const twelveHour = hours % 12 || 12;\n return `${padZero(twelveHour)}:${padZero(minutes)} ${period}`;\n }\n\n return date.toTimeString().slice(0, 8); // Default: HH:mm:ss\n}\n\ntype Nullable<T> = {\n [P in keyof T]: T[P] extends object ? Nullable<T[P]> : T[P] | null;\n};\n\nexport function convertEmptyToNull<T extends Record<string, any>>(\n obj: T\n): Nullable<T> {\n return Object.entries(obj).reduce((acc, [key, value]) => {\n if (\n value === \"\" ||\n (Array.isArray(value) && value.length === 0) ||\n (typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) && // Prevent arrays from being treated as objects\n Object.keys(value).length === 0)\n ) {\n acc[key as keyof T] = null;\n } else if (Array.isArray(value)) {\n acc[key as keyof T] = value.map((item) =>\n typeof item === \"object\" && item !== null\n ? convertEmptyToNull(item) // Recursively handle array elements\n : item\n );\n } else if (typeof value === \"object\" && value !== null) {\n acc[key as keyof T] = convertEmptyToNull(value);\n } else {\n acc[key as keyof T] = value;\n }\n return acc;\n }, {} as Nullable<T>);\n}\n\nfunction checkPattern(i: any, pattern: any[]) {\n return pattern.some((obj) => i.includes(obj));\n}\n\nexport function removeExtraKeys(data: any, extraKeys = []) {\n const pattern = [\n \"_at\",\n \"_by\",\n \"_data\",\n \"created_user\",\n \"updated_user\",\n ...extraKeys,\n ];\n for (const i in data) {\n if (checkPattern(i, pattern)) {\n delete data[i];\n } else if (typeof data[i] === \"object\" && !Array.isArray(data[i])) {\n removeExtraKeys(data[i], [\"_at\", \"_by\", \"_data\"]);\n }\n }\n\n return data;\n}\n\nexport const apiType = {\n company: getCompanies,\n items: getItems,\n currency: getCurrency,\n salesperson: getSalesPerason,\n party: getParties,\n department: getDepartments,\n location: getLocation,\n uom: getUoms,\n discountedItems: getDiscountedItems,\n taxTemplate: getTaxTemplate,\n paymentTerm: getPaymentTerm,\n incoTerms: getIncoTerms,\n shippingRules:getShippingRules,\n bins:getBins,\n agreement: getAgreement,\n accounts: getChartOfAccounts,\n invoices: getPurchaseInvoices,\n purchaseOrderReceipts: getPurchaseOrderReceipts,\n representatives: getPurchaseRepresentatives,\n industry:getPartiesIndustry,\n categoryItems:getCategoryItems,\n customerSegment:getCustomerSegments,\n countries:getCountries,\n};\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { useMemo } from 'react';\n\n// ==================== CONSTANTS ====================\nconst MATERIAL_CONSTANTS = {\n STEEL_DENSITY: 7.85,\n LENGTH_CONVERSION_FACTOR: 1000,\n TUBE_CALCULATION_FACTOR: 0.024662,\n COIL_WEIGHTS: {\n GI: 2879.95,\n HR: 2356.59,\n },\n} as const;\n\n// ==================== TYPES ====================\ntype SteelType = keyof typeof MATERIAL_CONSTANTS.COIL_WEIGHTS;\ntype TubeType = 'Round' | 'Square' | 'Rectangle';\n\ninterface BaseFormValues {\n // Board calculation fields\n face_width?: string | number;\n bending?: string | number;\n height?: string | number;\n total_width?: string | number;\n boards_thickness?: string | number;\n boards_length?: string | number;\n \n // Steel calculation fields\n steel_length?: string | number;\n steel_width?: string | number;\n steel_thickness?: string | number;\n steel_type?: SteelType;\n \n // Tube calculation fields\n tube_type?: TubeType;\n tube_od?: string | number;\n shape_width?: string | number;\n shape_height?: string | number;\n material_thickness?: string | number;\n material_length?: string | number;\n}\n\ninterface MaterialCalculations {\n totalWidth: number;\n materialUnit: number;\n boardsWeight: number;\n steelWeight: number;\n materialWeight: number;\n}\n\ninterface CalculationResult<T = number> {\n value: T;\n isValid: boolean;\n error?: string;\n}\n\n// ==================== UTILITY FUNCTIONS ====================\n/**\n * Safely parses a value to number with comprehensive validation\n */\nconst safeParseNumber = (value: string | number | undefined | null): CalculationResult<number> => {\n if (value === undefined || value === null || value === '') {\n return { value: 0, isValid: false, error: 'Empty value' };\n }\n \n const parsed = typeof value === 'string' ? parseFloat(value.trim()) : Number(value);\n \n if (isNaN(parsed)) {\n return { value: 0, isValid: false, error: 'Invalid number format' };\n }\n \n if (!isFinite(parsed)) {\n return { value: 0, isValid: false, error: 'Number is not finite' };\n }\n \n return { value: parsed, isValid: true };\n};\n\n/**\n * Validates that all provided values are positive numbers\n */\nconst validatePositiveNumbers = (...values: (string | number | undefined)[]): boolean => {\n return values.every(value => {\n const result = safeParseNumber(value);\n return result.isValid && result.value > 0;\n });\n};\n\n/**\n * Creates a memoization key from form values to optimize re-calculations\n */\nconst createMemoKey = (formValues: BaseFormValues | undefined): string => {\n if (!formValues) return 'empty';\n \n // Only include relevant fields to avoid unnecessary recalculations\n const relevantFields = [\n 'face_width', 'bending', 'height', 'total_width', 'boards_thickness', 'boards_length',\n 'steel_length', 'steel_width', 'steel_thickness', 'steel_type',\n 'tube_type', 'tube_od', 'shape_width', 'shape_height', 'material_thickness', 'material_length'\n ];\n \n return relevantFields\n .map(field => `${field}:${formValues[field as keyof BaseFormValues] ?? ''}`)\n .join('|');\n};\n\n// ==================== CALCULATION FUNCTIONS ====================\n/**\n * Calculates the total width for boards costing\n * Formula: ((height + bending) * 2) + face_width\n */\nconst calculateBoardsTotalWidth = (formValues: BaseFormValues): CalculationResult<number> => {\n const { face_width, bending, height } = formValues;\n \n if (!validatePositiveNumbers(face_width, bending, height)) {\n return { value: 0, isValid: false, error: 'Invalid input values for boards total width calculation' };\n }\n \n const faceWidthResult = safeParseNumber(face_width);\n const bendingResult = safeParseNumber(bending);\n const heightResult = safeParseNumber(height);\n \n if (![faceWidthResult, bendingResult, heightResult].every(r => r.isValid)) {\n return { value: 0, isValid: false, error: 'Failed to parse input values' };\n }\n \n const totalWidth = ((heightResult.value + bendingResult.value) * 2) + faceWidthResult.value;\n \n return { value: totalWidth, isValid: true };\n};\n\n/**\n * Calculates the weight of boards\n * Formula: (total_width * thickness * (length / 1000)) * 7.85\n */\nconst calculateBoardsWeight = (formValues: BaseFormValues): CalculationResult<number> => {\n const { total_width, boards_thickness, boards_length } = formValues;\n \n if (!validatePositiveNumbers(total_width, boards_thickness, boards_length)) {\n return { value: 0, isValid: false, error: 'Invalid input values for boards weight calculation' };\n }\n \n const totalWidthResult = safeParseNumber(total_width);\n const thicknessResult = safeParseNumber(boards_thickness);\n const lengthResult = safeParseNumber(boards_length);\n \n if (![totalWidthResult, thicknessResult, lengthResult].every(r => r.isValid)) {\n return { value: 0, isValid: false, error: 'Failed to parse input values' };\n }\n \n const weight = (totalWidthResult.value * thicknessResult.value * \n (lengthResult.value / MATERIAL_CONSTANTS.LENGTH_CONVERSION_FACTOR)) * \n MATERIAL_CONSTANTS.STEEL_DENSITY;\n \n return { value: weight, isValid: true };\n};\n\n/**\n * Calculates the weight of steel\n * Formula: (length * width * thickness * 7.85) / 1000\n */\nconst calculateSteelWeight = (formValues: BaseFormValues): CalculationResult<number> => {\n const { steel_length, steel_width, steel_thickness } = formValues;\n \n if (!validatePositiveNumbers(steel_length, steel_width, steel_thickness)) {\n return { value: 0, isValid: false, error: 'Invalid input values for steel weight calculation' };\n }\n \n const lengthResult = safeParseNumber(steel_length);\n const widthResult = safeParseNumber(steel_width);\n const thicknessResult = safeParseNumber(steel_thickness);\n \n if (![lengthResult, widthResult, thicknessResult].every(r => r.isValid)) {\n return { value: 0, isValid: false, error: 'Failed to parse input values' };\n }\n \n const weight = (lengthResult.value * widthResult.value * thicknessResult.value * \n MATERIAL_CONSTANTS.STEEL_DENSITY) / MATERIAL_CONSTANTS.LENGTH_CONVERSION_FACTOR;\n \n return { value: weight, isValid: true };\n};\n\n/**\n * Gets the material unit weight based on steel type\n */\nconst calculateMaterialUnit = (formValues: BaseFormValues): CalculationResult<number> => {\n const { steel_type } = formValues;\n \n if (!steel_type) {\n return { value: 0, isValid: false, error: 'Steel type not specified' };\n }\n \n if (!(steel_type in MATERIAL_CONSTANTS.COIL_WEIGHTS)) {\n return { value: 0, isValid: false, error: `Unsupported steel type: ${steel_type}` };\n }\n \n const weight = MATERIAL_CONSTANTS.COIL_WEIGHTS[steel_type];\n return { value: weight, isValid: true };\n};\n\n/**\n * Calculates material weight based on tube type and dimensions\n * Supports Round, Square, and Rectangle tube types\n */\nconst calculateTubeMaterialWeight = (formValues: BaseFormValues): CalculationResult<number> => {\n const { tube_type, tube_od, shape_width, shape_height, material_thickness, material_length } = formValues;\n \n if (!tube_type) {\n return { value: 0, isValid: false, error: 'Tube type not specified' };\n }\n \n const thicknessResult = safeParseNumber(material_thickness);\n const lengthResult = safeParseNumber(material_length);\n \n if (!thicknessResult.isValid || !lengthResult.isValid) {\n return { value: 0, isValid: false, error: 'Invalid thickness or length values' };\n }\n \n let weight = 0;\n \n switch (tube_type) {\n case 'Round': {\n const odResult = safeParseNumber(tube_od);\n if (!odResult.isValid || odResult.value <= thicknessResult.value) {\n return { value: 0, isValid: false, error: 'Invalid outer diameter for round tube' };\n }\n \n weight = (odResult.value - thicknessResult.value) * thicknessResult.value * \n MATERIAL_CONSTANTS.TUBE_CALCULATION_FACTOR * lengthResult.value;\n break;\n }\n \n case 'Square':\n case 'Rectangle': {\n const widthResult = safeParseNumber(shape_width);\n const heightResult = safeParseNumber(shape_height);\n \n if (!widthResult.isValid || !heightResult.isValid) {\n return { value: 0, isValid: false, error: 'Invalid width or height for rectangular tube' };\n }\n \n const perimeter = 2 * (widthResult.value + heightResult.value);\n weight = (((perimeter / Math.PI) - thicknessResult.value) * thicknessResult.value * \n MATERIAL_CONSTANTS.TUBE_CALCULATION_FACTOR) * lengthResult.value;\n break;\n }\n \n default:\n return { value: 0, isValid: false, error: `Unsupported tube type: ${tube_type}` };\n }\n \n return { value: Math.max(0, weight), isValid: true };\n};\n\n// ==================== MAIN HOOK ====================\n/**\n * Custom hook for optimized material calculations with comprehensive error handling\n * and performance optimization through memoization\n */\nexport const useMaterialCalculations = (formValues?: BaseFormValues): MaterialCalculations => {\n const calculations = useMemo(() => {\n if (!formValues) {\n return {\n totalWidth: 0,\n materialUnit: 0,\n boardsWeight: 0,\n steelWeight: 0,\n materialWeight: 0,\n };\n }\n \n // Calculate all values with error handling\n const totalWidthResult = calculateBoardsTotalWidth(formValues);\n const materialUnitResult = calculateMaterialUnit(formValues);\n const boardsWeightResult = calculateBoardsWeight(formValues);\n const steelWeightResult = calculateSteelWeight(formValues);\n const materialWeightResult = calculateTubeMaterialWeight(formValues);\n \n // Optional: Log errors in development\n if (process.env.NODE_ENV === 'development') {\n [totalWidthResult, materialUnitResult, boardsWeightResult, steelWeightResult, materialWeightResult]\n .filter(result => !result.isValid && result.error)\n .forEach(result => console.warn('Calculation warning:', result.error));\n }\n \n return {\n totalWidth: totalWidthResult.value,\n materialUnit: materialUnitResult.value,\n boardsWeight: boardsWeightResult.value,\n steelWeight: steelWeightResult.value,\n materialWeight: materialWeightResult.value,\n };\n }, [createMemoKey(formValues)]); // Optimized dependency to prevent unnecessary recalculations\n \n return calculations;\n};\n\n// ==================== ADDITIONAL UTILITIES ====================\n/**\n * Utility function to validate form values before calculations\n */\nexport const validateFormValues = (formValues: BaseFormValues): { isValid: boolean; errors: string[] } => {\n const errors: string[] = [];\n const { tube_type, steel_type } = formValues;\n \n // Validate steel type if provided\n if (steel_type && !(steel_type in MATERIAL_CONSTANTS.COIL_WEIGHTS)) {\n errors.push(`Invalid steel type: ${steel_type}`);\n }\n \n // Validate tube type if provided\n if (tube_type && !['Round', 'Square', 'Rectangle'].includes(tube_type)) {\n errors.push(`Invalid tube type: ${tube_type}`);\n }\n \n return { isValid: errors.length === 0, errors };\n};\n\n/**\n * Get available steel types for form validation\n */\nexport const getAvailableSteelTypes = (): SteelType[] => {\n return Object.keys(MATERIAL_CONSTANTS.COIL_WEIGHTS) as SteelType[];\n};\n\n/**\n * Get available tube types for form validation\n */\nexport const getAvailableTubeTypes = (): TubeType[] => {\n return ['Round', 'Square', 'Rectangle'];\n};\n\nexport default {\n useMaterialCalculations,\n validateFormValues,\n getAvailableSteelTypes,\n getAvailableTubeTypes,\n MATERIAL_CONSTANTS,\n};\nexport type {\n BaseFormValues,\n MaterialCalculations,\n SteelType,\n TubeType,\n CalculationResult,\n};","import { useCallback } from 'react';\nimport { checkSkuAndItemName } from '../utils/common';\n\nexport interface IUseNameSkuUniquenessCheckProps {\n fieldPrefix: string;\n formMethods: any;\n data?: any;\n}\n\nexport const useNameSkuUniquenessCheck = ({\n fieldPrefix,\n formMethods,\n data,\n}: IUseNameSkuUniquenessCheckProps) => {\n const { watch=()=>{}, setError=()=>{} } = formMethods||{};\n const formValues = watch(fieldPrefix);\n\n const namePrev = data?.name;\n const skuPrev= data?.sku\n const checkNameAndSkuUniqueness = useCallback(async () => {\n let isUnique=true; \n\n try {\n if(namePrev===formValues?.name && skuPrev===formValues?.sku) return true;\n const response = await checkSkuAndItemName({\n name: formValues?.name,\n sku: formValues?.sku,\n ...(data?.id && { id: data?.id }),\n });\n if (response.name) {\n setError(`${fieldPrefix}.name`, {\n message: 'Name already exists',\n type: 'manual',\n ref: `${fieldPrefix}.name`,\n });\n isUnique=false;\n }\n\n if (response.sku) {\n setError(`${fieldPrefix}.sku`, {\n message: 'SKU already exists',\n type: 'manual',\n ref: `${fieldPrefix}.sku`,\n });\n isUnique=false;\n }\n\n return isUnique;\n } catch (error) {\n console.error('Uniqueness check failed:', error);\n return isUnique;\n }\n //eslint-disable-next-line\n }, [formValues?.name, formValues?.sku, setError]);\n\n return { checkNameAndSkuUniqueness };\n};\n\nexport default useNameSkuUniquenessCheck;\n","import { useMemo } from 'react'\nimport { checkUniqueFields } from '../utils/common'\n\nexport default function useUniquenessCheck({ fieldPrefix, formMethods, data = {}, fields = [] }) {\n\tconst { watch = () => { }, setError = () => { }, formState = {} } = formMethods || {}\n\n\tconst formValues = watch(fieldPrefix)\n\n\t// Stable reference\n\tconst previous = useMemo(() => data || {}, [data])\n\n\tconst checkUniqueness = async () => {\n\t\tlet isUnique = true\n\n\t\ttry {\n\t\t\t// Skip check if no changes\n\t\t\tconst nothingChanged = fields.every((field) => previous[field] === formValues?.[field])\n\n\t\t\tif (nothingChanged) return true\n\n\t\t\t// Build payload\n\t\t\tconst payload = {}\n\t\t\tfields.forEach((field) => (payload[field] = formValues?.[field]))\n\n\t\t\tif (data?.id) payload.id = data.id\n\n\t\t\t// API call\n\t\t\tconst response = await checkUniqueFields(payload)\n\n\t\t\t// Loop through API response\n\t\t\tfor (const [field, exists] of Object.entries(response)) {\n\t\t\t\tif (exists) {\n\t\t\t\t\tconst errorPath = `${fieldPrefix}.${field}`\n\t\t\t\t\tsetError(errorPath, {\n\t\t\t\t\t\ttype: 'manual',\n\t\t\t\t\t\tmessage: `${field.replace(/_/g, ' ').toLowerCase()} already exists`,\n\t\t\t\t\t})\n\n\t\t\t\t\tisUnique = false\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconsole.log('Errors now:', formState.errors)\n\n\t\t\treturn isUnique\n\t\t} catch (error) {\n\t\t\tconsole.error('Uniqueness check failed:', error)\n\t\t\treturn isUnique\n\t\t}\n\t}\n\n\treturn { checkUniqueness }\n}\n","import { useState } from 'react';\nimport { DEFAULT_LANG } from '../constants/all-language';\n\ninterface ILanguage {\n label: string;\n code: string;\n direction: string;\n}\n\n// Configuration for fallback behavior\ninterface FallbackConfig {\n fallbackOrder?: string[];\n enableConsoleWarnings?: boolean;\n retryOnError?: boolean;\n maxRetries?: number;\n}\n\n// Updated fallback order with English first\nconst DEFAULT_FALLBACK_CONFIG: Required<FallbackConfig> = {\n fallbackOrder: ['en', 'en-US', DEFAULT_LANG], // English first\n enableConsoleWarnings: true,\n retryOnError: false,\n maxRetries: 3,\n};\n\nexport const useLanguageFallback = (config: FallbackConfig = {}) => {\n const finalConfig = { ...DEFAULT_FALLBACK_CONFIG, ...config };\n const [retryCount, setRetryCount] = useState(0);\n\n // Create English fallback language object\n const createEnglishFallback = (): ILanguage => ({\n code: 'en',\n label: 'English',\n direction: 'ltr'\n });\n\n // Find the best available language with fallback logic\n const findBestAvailableLanguage = (\n languages: ILanguage[], \n preferredCode?: string\n ): ILanguage | null => {\n if (!languages || languages.length === 0) {\n if (finalConfig.enableConsoleWarnings) {\n console.warn('No languages available for fallback selection, using English');\n }\n return createEnglishFallback();\n }\n\n // First try the preferred language if provided\n if (preferredCode) {\n const preferred = languages.find(lang => lang.code === preferredCode);\n if (preferred) return preferred;\n \n if (finalConfig.enableConsoleWarnings) {\n console.warn(`Preferred language \"${preferredCode}\" not found, trying fallbacks`);\n }\n }\n\n // Try fallback languages in order (English first)\n for (const fallbackCode of finalConfig.fallbackOrder) {\n const fallback = languages.find(lang => lang.code === fallbackCode);\n if (fallback) {\n if (finalConfig.enableConsoleWarnings && preferredCode && preferredCode !== fallbackCode) {\n console.warn(`Using fallback language: \"${fallbackCode}\" instead of \"${preferredCode}\"`);\n }\n return fallback;\n }\n }\n\n // If no fallbacks found, return English or first available language\n const englishLang = languages.find(lang => lang.code === 'en');\n if (englishLang) {\n if (finalConfig.enableConsoleWarnings) {\n console.warn('Using English as ultimate fallback');\n }\n return englishLang;\n }\n\n // Last resort - return first available language\n if (finalConfig.enableConsoleWarnings) {\n console.warn('No English fallback found, using first available language');\n }\n return languages[0] || createEnglishFallback();\n };\n\n // Create a fallback language object when API fails - always English\n const createEmergencyFallback = (): ILanguage => {\n return createEnglishFallback();\n };\n\n // Validate if a language code exists in the available languages\n const validateLanguageCode = (languages: ILanguage[], code: string): boolean => {\n return languages.some(lang => lang.code === code);\n };\n\n // Get saved language from localStorage with validation\n const getSavedLanguage = (languages: ILanguage[]): string | null => {\n const saved = localStorage.getItem('_language');\n if (!saved) return null;\n \n // Validate saved language exists in available languages\n if (validateLanguageCode(languages, saved)) {\n return saved;\n }\n \n if (finalConfig.enableConsoleWarnings) {\n console.warn(`Saved language \"${saved}\" is no longer available, will use English fallback`);\n }\n return null;\n };\n\n // Ensure English is always available in languages array\n const ensureEnglishAvailable = (languages: ILanguage[]): ILanguage[] => {\n const hasEnglish = languages.some(lang => lang.code === 'en');\n if (!hasEnglish) {\n return [createEnglishFallback(), ...languages];\n }\n return languages;\n };\n\n // Retry mechanism for failed language fetches\n const shouldRetry = (): boolean => {\n return finalConfig.retryOnError && retryCount < finalConfig.maxRetries;\n };\n\n const incrementRetry = () => {\n setRetryCount(prev => prev + 1);\n };\n\n const resetRetry = () => {\n setRetryCount(0);\n };\n\n return {\n findBestAvailableLanguage,\n createEmergencyFallback,\n createEnglishFallback,\n validateLanguageCode,\n getSavedLanguage,\n ensureEnglishAvailable,\n shouldRetry,\n incrementRetry,\n resetRetry,\n retryCount,\n config: finalConfig,\n };\n};\n\n// Additional utility hook for language state management\nexport const useLanguageState = () => {\n const [isInitialized, setIsInitialized] = useState(false);\n const [hasError, setHasError] = useState(false);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n\n const markInitialized = () => setIsInitialized(true);\n const setError = (error: string) => {\n setHasError(true);\n setErrorMessage(error);\n };\n const clearError = () => {\n setHasError(false);\n setErrorMessage(null);\n };\n\n return {\n isInitialized,\n hasError,\n errorMessage,\n markInitialized,\n setError,\n clearError,\n };\n};\n\nexport default {\n useLanguageFallback,\n useLanguageState,\n};\n\nexport type { ILanguage, FallbackConfig };\n\n","import { useERPUI } from '../components/providers/ERPUIProvider';\n\n/**\n * Hook to determine Redux integration status and provide conditional Redux usage\n */\nexport const useReduxIntegration = () => {\n const { useRedux, apiClient } = useERPUI();\n \n // Helper function to conditionally use Redux hooks\n const useConditionalRedux = <T>(\n reduxHook: () => T,\n fallbackValue: T\n ): T => {\n if (!useRedux) {\n return fallbackValue;\n }\n \n try {\n return reduxHook();\n } catch (error) {\n console.warn('Redux hook failed, falling back to default value:', error);\n return fallbackValue;\n }\n };\n \n // Helper function to conditionally dispatch Redux actions\n const conditionalDispatch = (action: any) => {\n if (!useRedux) {\n console.warn('Redux not enabled, cannot dispatch action:', action);\n return Promise.resolve();\n }\n \n try {\n const { useAppDispatch } = require('../redux/hooks');\n const dispatch = useAppDispatch();\n return dispatch(action);\n } catch (error) {\n console.error('Failed to dispatch Redux action:', error);\n return Promise.reject(error);\n }\n };\n \n return {\n useRedux,\n apiClient,\n useConditionalRedux,\n conditionalDispatch,\n };\n};"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { A, a, b, c, d, e, e as e2, B, C, f, g, h, D, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, E, F, G, H, I, J, K, O, R, L, V, M, N, P, Q, S, T, U, W, X, X as X2, Y, Z, _, _ as _2, $, a0, a1, a2, a3, a4, a5, a6, a7, a7 as a72, a8, a9, aa, ab, ab as ab2, ac, ad, ae, af, ag, ah, ai, aj, ak } from "../chunks/android-12-switch-
|
|
2
|
-
import { A as A2, a as a10, b as b2, B as B2, D as D2, c as c2, d as d2, e as e3, f as f2, g as g2, h as h2, i as i2, i as i3, C as C2, j as j2, j as j3, k as k2, l as l2, m as m2, n as n2, o as o2, p as p2, G as G2, q as q2, r as r2, s as s2, t as t2, s as s3, t as t3, u as u2, v as v2, w as w2, x as x2, y as y2, z as z2, E as E2, F as F2, H as H2, I as I2, J as J2, K as K2, L as L2, M as M2, M as M3, N as N2, O as O2, P as P2, Q as Q2, R as R2, S as S2, T as T2, U as U2, V as V2, W as W2, X as X3, Y as Y2, Y as Y3, Z as Z2, _ as _3, $ as $2, a0 as a02, _ as _4, a1 as a12, a2 as a22, a3 as a32, a4 as a42, a5 as a52, a6 as a62, U as U3, a7 as a73, a8 as a82, a9 as a92, aa as aa2, ab as ab3, ab as ab4, ac as ac2, ad as ad2, ae as ae2, af as af2, ag as ag2, ah as ah2, ai as ai2, aj as aj2, ak as ak2, M as M4, al, am } from "../chunks/uom-field-wrapper-
|
|
3
|
-
import { A as A3, a as a11, a as a13, b as b3, B as B3, C as C3, C as C4, D as D3, H as H3, M as M5, R as R3, S as S3, c as c3, T as T3, d as d3, e as e4 } from "../chunks/appbar-
|
|
4
|
-
import { C as C5, D as D4, M as M6, V as V3 } from "../chunks/form-builder-deconversion-
|
|
5
|
-
import { C as C6, T as T4 } from "../chunks/useAuth-
|
|
6
|
-
import { CustomEditor, CustomEditor as CustomEditor2 } from "../chunks/custom-editor-
|
|
7
|
-
import { S as S4 } from "../chunks/sidebar-
|
|
1
|
+
import { A, a, b, c, d, e, e as e2, B, C, f, g, h, D, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, E, F, G, H, I, J, K, O, R, L, V, M, N, P, Q, S, T, U, W, X, X as X2, Y, Z, _, _ as _2, $, a0, a1, a2, a3, a4, a5, a6, a7, a7 as a72, a8, a9, aa, ab, ab as ab2, ac, ad, ae, af, ag, ah, ai, aj, ak } from "../chunks/android-12-switch-DSBIf4t0.esm.js";
|
|
2
|
+
import { A as A2, a as a10, b as b2, B as B2, D as D2, c as c2, d as d2, e as e3, f as f2, g as g2, h as h2, i as i2, i as i3, C as C2, j as j2, j as j3, k as k2, l as l2, m as m2, n as n2, o as o2, p as p2, G as G2, q as q2, r as r2, s as s2, t as t2, s as s3, t as t3, u as u2, v as v2, w as w2, x as x2, y as y2, z as z2, E as E2, F as F2, H as H2, I as I2, J as J2, K as K2, L as L2, M as M2, M as M3, N as N2, O as O2, P as P2, Q as Q2, R as R2, S as S2, T as T2, U as U2, V as V2, W as W2, X as X3, Y as Y2, Y as Y3, Z as Z2, _ as _3, $ as $2, a0 as a02, _ as _4, a1 as a12, a2 as a22, a3 as a32, a4 as a42, a5 as a52, a6 as a62, U as U3, a7 as a73, a8 as a82, a9 as a92, aa as aa2, ab as ab3, ab as ab4, ac as ac2, ad as ad2, ae as ae2, af as af2, ag as ag2, ah as ah2, ai as ai2, aj as aj2, ak as ak2, M as M4, al, am } from "../chunks/uom-field-wrapper-Ckop1JTE.esm.js";
|
|
3
|
+
import { A as A3, a as a11, a as a13, b as b3, B as B3, C as C3, C as C4, D as D3, H as H3, M as M5, R as R3, S as S3, c as c3, T as T3, d as d3, e as e4 } from "../chunks/appbar-DM2iBqb4.esm.js";
|
|
4
|
+
import { C as C5, D as D4, M as M6, V as V3 } from "../chunks/form-builder-deconversion-CUwBfP4C.esm.js";
|
|
5
|
+
import { C as C6, T as T4 } from "../chunks/useAuth-Tfx2guEJ.esm.js";
|
|
6
|
+
import { CustomEditor, CustomEditor as CustomEditor2 } from "../chunks/custom-editor-DnfTs5-j.esm.js";
|
|
7
|
+
import { S as S4 } from "../chunks/sidebar-l49eLo8p.esm.js";
|
|
8
8
|
import { A as A4, a as a14, b as b4, c as c4, d as d4, e as e5, f as f3, g as g3, B as B4, C as C7, h as h3, i as i4, j as j4, k as k3, l as l3, m as m3, n as n3, D as D5, E as E3, I as I3, L as L3, o as o3, p as p3, O as O3, q as q3, P as P3, r as r3, s as s4, t as t4, R as R4, u as u3, v as v3, w as w3, x as x3, y as y3, S as S5, z as z3, F as F3, G as G3, H as H4, J as J3, T as T5, K as K3, M as M7, W as W3, N as N3 } from "../chunks/arrow-up-Cz4A_O0J.esm.js";
|
|
9
9
|
import { A as A5, a as a15, b as b5, B as B5, C as C8, c as c5, d as d5, e as e6, D as D6, f as f4, E as E4, g as g4, h as h4, F as F4, i as i5, j as j5, G as G4, H as H5, I as I4, k as k4, l as l4, L as L4, m as m4, n as n4, M as M8, P as P4, o as o4, p as p4, R as R5, q as q4, S as S6, T as T6 } from "../chunks/trash-jodcm4T5.esm.js";
|
|
10
10
|
import { A as A6, E as E5, a as a16, S as S7, b as b6, T as T7 } from "../chunks/tick-CRp4S9uN.esm.js";
|
|
11
11
|
import { N as N4, S as S8 } from "../chunks/notification-Dr_nE2Dc.esm.js";
|
|
12
12
|
import { D as D7 } from "../chunks/dashboard-CmeL1xk8.esm.js";
|
|
13
13
|
import { D as D8 } from "../chunks/document-DKQMhgnk.esm.js";
|
|
14
|
-
import { E as E6, u as u4 } from "../chunks/apiHelper-
|
|
15
|
-
import { E as E7 } from "../chunks/page-context-
|
|
14
|
+
import { E as E6, u as u4 } from "../chunks/apiHelper-Cv_qWaYo.esm.js";
|
|
15
|
+
import { E as E7 } from "../chunks/page-context-B_wK6kLR.esm.js";
|
|
16
16
|
export {
|
|
17
17
|
A2 as AISummaryPanel,
|
|
18
18
|
A as Accordion,
|
package/dist/components/index.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const android12Switch = require("../chunks/android-12-switch-
|
|
4
|
-
const uomFieldWrapper = require("../chunks/uom-field-wrapper-
|
|
5
|
-
const appbar = require("../chunks/appbar-
|
|
6
|
-
const formBuilderDeconversion = require("../chunks/form-builder-deconversion-
|
|
7
|
-
const useAuth = require("../chunks/useAuth-
|
|
8
|
-
const customEditor = require("../chunks/custom-editor-
|
|
9
|
-
const sidebar = require("../chunks/sidebar-
|
|
3
|
+
const android12Switch = require("../chunks/android-12-switch-DvCF0gyx.js");
|
|
4
|
+
const uomFieldWrapper = require("../chunks/uom-field-wrapper-l8HA79k1.js");
|
|
5
|
+
const appbar = require("../chunks/appbar-rfkAYQdQ.js");
|
|
6
|
+
const formBuilderDeconversion = require("../chunks/form-builder-deconversion-v5GvXDZ9.js");
|
|
7
|
+
const useAuth = require("../chunks/useAuth-HvZ6U960.js");
|
|
8
|
+
const customEditor = require("../chunks/custom-editor-DIQqk_yI.js");
|
|
9
|
+
const sidebar = require("../chunks/sidebar-C2zkLZyA.js");
|
|
10
10
|
const arrowUp = require("../chunks/arrow-up-BC9MfTDu.js");
|
|
11
11
|
const trash = require("../chunks/trash-CUP1jXNo.js");
|
|
12
12
|
const tick = require("../chunks/tick-By8O3yMK.js");
|
|
13
13
|
const notification = require("../chunks/notification-lAbbtOBF.js");
|
|
14
14
|
const dashboard = require("../chunks/dashboard-DZujrViq.js");
|
|
15
15
|
const document = require("../chunks/document-D7m0P_S2.js");
|
|
16
|
-
const apiHelper = require("../chunks/apiHelper-
|
|
17
|
-
const pageContext = require("../chunks/page-context-
|
|
16
|
+
const apiHelper = require("../chunks/apiHelper-5tNsUtSY.js");
|
|
17
|
+
const pageContext = require("../chunks/page-context-h7LEMAG0.js");
|
|
18
18
|
exports.Accordion = android12Switch.Accordion;
|
|
19
19
|
exports.ActionBar = android12Switch.ActionBar;
|
|
20
20
|
exports.AddPage = android12Switch.AddPage;
|
|
@@ -39,6 +39,7 @@ interface ERPUIProviderProps {
|
|
|
39
39
|
};
|
|
40
40
|
apiConfig?: ApiConfig;
|
|
41
41
|
additionalApiConfigurations?: Record<string, any>;
|
|
42
|
+
moduleRoutes?: Record<string, string[]>;
|
|
42
43
|
routeToColumnsMap?: Record<string, any>;
|
|
43
44
|
routeToResourceMap?: Record<string, any>;
|
|
44
45
|
publicRoutes?: string[];
|
|
@@ -2,10 +2,10 @@ import { v } from "../chunks/action-bar-BsXTcYpL.esm.js";
|
|
|
2
2
|
import { D, L, P, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v as v2, w, x, y, z, A, B, C, E, F, G, H, I, J, K, M, N, O, Q, R, S, T, U, V, W, X, Y, Z, _, $, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, aA, aB, aC, aD, aE, aF, aG } from "../chunks/pathname.rental-VYOFVGX6.esm.js";
|
|
3
3
|
import { a as a10 } from "../chunks/api-config-GOys-syK.esm.js";
|
|
4
4
|
import { P as P2, a as a11, b as b2, S as S2, c as c2, d as d2, e as e2, f as f2, r as r2 } from "../chunks/pathname.quotes-BJy0IzWu.esm.js";
|
|
5
|
-
import { a as a12, b as b3, c as c3, d as d3, e as e3, f as f3, g as g2, h as h2, i as i2, j as j2, k as k2, l as l2, m as m2, n as n2, o as o2, p as p2, q as q2, r as r3, s as s2, t as t2, u as u2, v as v3, w as w2, x as x2, y as y2, z as z2, A as A2, B as B2, C as C2, D as D2, E as E2, F as F2, G as G2, H as H2, I as I2, J as J2, K as K2, L as L2, M as M2, N as N2, O as O2, P as P3, Q as Q2, R as R2, S as S3, T as T2, U as U2, V as V2, W as W2, X as X2, Y as Y2, Z as Z2, _ as _2, $ as $2, a0 as a02, a1 as a13, a2 as a22, a3 as a32, a4 as a42, a5 as a52, a6 as a62, a7 as a72, a8 as a82, a9 as a92, aa as aa2, ab as ab2, ac as ac2, ad as ad2, ae as ae2, af as af2, ag as ag2, ah as ah2, ai as ai2, aj as aj2, ak as ak2, al as al2, am as am2, an as an2, ao as ao2, ap as ap2, aq as aq2, ar as ar2, as as as2, at as at2, au as au2, av as av2, aw as aw2, ax as ax2, ay as ay2, az as az2, aA as aA2, aB as aB2, aC as aC2, aD as aD2, aE as aE2, aF as aF2, aG as aG2, aH, aI, aJ, aK, aL, aM, aN, aO, aP, aQ, aR, aS, aT, aU, aV, aW, aX, aY, aZ, a_, a$, b0, b1, b2 as b22, b3 as b32, b4, b5, b6, b7, b8, b9, ba, bb, bc, bd, be, bf, bg, bh, bi, bj, bk, bl, bm, bn, bo, bp, bq, br, bs, bt, bu, bv, bw, bx, by, bz } from "../chunks/route-page-map-
|
|
6
|
-
import { P as P4, m as m3 } from "../chunks/modules-
|
|
5
|
+
import { a as a12, b as b3, c as c3, d as d3, e as e3, f as f3, g as g2, h as h2, i as i2, j as j2, k as k2, l as l2, m as m2, n as n2, o as o2, p as p2, q as q2, r as r3, s as s2, t as t2, u as u2, v as v3, w as w2, x as x2, y as y2, z as z2, A as A2, B as B2, C as C2, D as D2, E as E2, F as F2, G as G2, H as H2, I as I2, J as J2, K as K2, L as L2, M as M2, N as N2, O as O2, P as P3, Q as Q2, R as R2, S as S3, T as T2, U as U2, V as V2, W as W2, X as X2, Y as Y2, Z as Z2, _ as _2, $ as $2, a0 as a02, a1 as a13, a2 as a22, a3 as a32, a4 as a42, a5 as a52, a6 as a62, a7 as a72, a8 as a82, a9 as a92, aa as aa2, ab as ab2, ac as ac2, ad as ad2, ae as ae2, af as af2, ag as ag2, ah as ah2, ai as ai2, aj as aj2, ak as ak2, al as al2, am as am2, an as an2, ao as ao2, ap as ap2, aq as aq2, ar as ar2, as as as2, at as at2, au as au2, av as av2, aw as aw2, ax as ax2, ay as ay2, az as az2, aA as aA2, aB as aB2, aC as aC2, aD as aD2, aE as aE2, aF as aF2, aG as aG2, aH, aI, aJ, aK, aL, aM, aN, aO, aP, aQ, aR, aS, aT, aU, aV, aW, aX, aY, aZ, a_, a$, b0, b1, b2 as b22, b3 as b32, b4, b5, b6, b7, b8, b9, ba, bb, bc, bd, be, bf, bg, bh, bi, bj, bk, bl, bm, bn, bo, bp, bq, br, bs, bt, bu, bv, bw, bx, by, bz } from "../chunks/route-page-map-C4wM0M4A.esm.js";
|
|
6
|
+
import { P as P4, m as m3 } from "../chunks/modules-D5_hDIg9.esm.js";
|
|
7
7
|
import { d as d4 } from "../chunks/mui.constants-BFBzxaiA.esm.js";
|
|
8
|
-
import { P as P5, a as a14 } from "../chunks/pathname.hrms-
|
|
8
|
+
import { P as P5, a as a14 } from "../chunks/pathname.hrms-C5ojsho0.esm.js";
|
|
9
9
|
export {
|
|
10
10
|
D as DEFAULT_LANG,
|
|
11
11
|
L as LANGUAGES,
|
package/dist/constants/index.js
CHANGED
|
@@ -4,10 +4,10 @@ const actionBar = require("../chunks/action-bar-DMv6sqDP.js");
|
|
|
4
4
|
const pathname_rental = require("../chunks/pathname.rental-C9fm1WTq.js");
|
|
5
5
|
const apiConfig = require("../chunks/api-config-DXwDMFn-.js");
|
|
6
6
|
const pathname_quotes = require("../chunks/pathname.quotes-B-KBD2nK.js");
|
|
7
|
-
const routePageMap = require("../chunks/route-page-map-
|
|
8
|
-
const modules = require("../chunks/modules-
|
|
7
|
+
const routePageMap = require("../chunks/route-page-map-CJLyl6P1.js");
|
|
8
|
+
const modules = require("../chunks/modules-C3T2Pnwc.js");
|
|
9
9
|
const mui_constants = require("../chunks/mui.constants-CJEIUmWO.js");
|
|
10
|
-
const pathname_hrms = require("../chunks/pathname.hrms-
|
|
10
|
+
const pathname_hrms = require("../chunks/pathname.hrms-2_BEXO_r.js");
|
|
11
11
|
exports.viewTypes = actionBar.viewTypes;
|
|
12
12
|
exports.DEFAULT_LANG = pathname_rental.DEFAULT_LANG;
|
|
13
13
|
exports.LANGUAGES = pathname_rental.LANGUAGES;
|