@erpsquad/common 1.9.98 → 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.
Files changed (119) hide show
  1. package/dist/chunks/{actionCreator-DmP63jZz.esm.js → actionCreator-C-u8gtV-.esm.js} +2 -2
  2. package/dist/chunks/{actionCreator-DmP63jZz.esm.js.map → actionCreator-C-u8gtV-.esm.js.map} +1 -1
  3. package/dist/chunks/{actionCreator-DwRQnQNP.js → actionCreator-DSrKE0hh.js} +2 -2
  4. package/dist/chunks/{actionCreator-DwRQnQNP.js.map → actionCreator-DSrKE0hh.js.map} +1 -1
  5. package/dist/chunks/{android-12-switch-C3WlgdKQ.esm.js → android-12-switch-DSBIf4t0.esm.js} +39 -33
  6. package/dist/chunks/android-12-switch-DSBIf4t0.esm.js.map +1 -0
  7. package/dist/chunks/{android-12-switch-CVH-tc4s.js → android-12-switch-DvCF0gyx.js} +39 -33
  8. package/dist/chunks/android-12-switch-DvCF0gyx.js.map +1 -0
  9. package/dist/chunks/{apiHelper-DSbRnRC1.js → apiHelper-5tNsUtSY.js} +12 -9
  10. package/dist/chunks/apiHelper-5tNsUtSY.js.map +1 -0
  11. package/dist/chunks/{apiHelper-DOCeCGD-.esm.js → apiHelper-Cv_qWaYo.esm.js} +12 -9
  12. package/dist/chunks/apiHelper-Cv_qWaYo.esm.js.map +1 -0
  13. package/dist/chunks/{appbar-CrH_SjSo.esm.js → appbar-DM2iBqb4.esm.js} +4 -4
  14. package/dist/chunks/{appbar-CrH_SjSo.esm.js.map → appbar-DM2iBqb4.esm.js.map} +1 -1
  15. package/dist/chunks/{appbar-D6bWAv8x.js → appbar-rfkAYQdQ.js} +4 -4
  16. package/dist/chunks/{appbar-D6bWAv8x.js.map → appbar-rfkAYQdQ.js.map} +1 -1
  17. package/dist/chunks/{common-QvMCr1xx.js → common-6VUrYJDq.js} +10 -1
  18. package/dist/chunks/{common-QvMCr1xx.js.map → common-6VUrYJDq.js.map} +1 -1
  19. package/dist/chunks/{common-B-nmtH5r.esm.js → common-B6euWODJ.esm.js} +10 -1
  20. package/dist/chunks/{common-B-nmtH5r.esm.js.map → common-B6euWODJ.esm.js.map} +1 -1
  21. package/dist/chunks/{custom-editor-BvMlZ1Oc.js → custom-editor-DIQqk_yI.js} +2 -2
  22. package/dist/chunks/{custom-editor-BvMlZ1Oc.js.map → custom-editor-DIQqk_yI.js.map} +1 -1
  23. package/dist/chunks/{custom-editor-OrxKsIQY.esm.js → custom-editor-DnfTs5-j.esm.js} +2 -2
  24. package/dist/chunks/{custom-editor-OrxKsIQY.esm.js.map → custom-editor-DnfTs5-j.esm.js.map} +1 -1
  25. package/dist/chunks/{default-data-D1f8nbl6.esm.js → default-data-BV_r59U9.esm.js} +12 -12
  26. package/dist/chunks/{default-data-D1f8nbl6.esm.js.map → default-data-BV_r59U9.esm.js.map} +1 -1
  27. package/dist/chunks/{default-data-9-BQ_0wq.js → default-data-DQ7VPUoj.js} +12 -12
  28. package/dist/chunks/{default-data-9-BQ_0wq.js.map → default-data-DQ7VPUoj.js.map} +1 -1
  29. package/dist/chunks/{form-builder-conversion-Var45CEx.esm.js → form-builder-conversion-BdWASNEo.esm.js} +2 -2
  30. package/dist/chunks/{form-builder-conversion-Var45CEx.esm.js.map → form-builder-conversion-BdWASNEo.esm.js.map} +1 -1
  31. package/dist/chunks/{form-builder-conversion-nTpiw7Q2.js → form-builder-conversion-D69EGO5g.js} +2 -2
  32. package/dist/chunks/{form-builder-conversion-nTpiw7Q2.js.map → form-builder-conversion-D69EGO5g.js.map} +1 -1
  33. package/dist/chunks/{form-builder-deconversion-BjiEAt-i.esm.js → form-builder-deconversion-CUwBfP4C.esm.js} +3 -3
  34. package/dist/chunks/{form-builder-deconversion-BjiEAt-i.esm.js.map → form-builder-deconversion-CUwBfP4C.esm.js.map} +1 -1
  35. package/dist/chunks/{form-builder-deconversion-CFTqjOTb.js → form-builder-deconversion-v5GvXDZ9.js} +3 -3
  36. package/dist/chunks/{form-builder-deconversion-CFTqjOTb.js.map → form-builder-deconversion-v5GvXDZ9.js.map} +1 -1
  37. package/dist/chunks/{fullScreen-DSPrY2tY.esm.js → fullScreen-BO0UA3Zr.esm.js} +2 -2
  38. package/dist/chunks/{fullScreen-DSPrY2tY.esm.js.map → fullScreen-BO0UA3Zr.esm.js.map} +1 -1
  39. package/dist/chunks/{fullScreen-BtbOZq50.js → fullScreen-Bfrr-bT2.js} +2 -2
  40. package/dist/chunks/{fullScreen-BtbOZq50.js.map → fullScreen-Bfrr-bT2.js.map} +1 -1
  41. package/dist/chunks/{languageContext-s_EUKz_A.js → languageContext-BP7EvzMv.js} +3 -3
  42. package/dist/chunks/{languageContext-s_EUKz_A.js.map → languageContext-BP7EvzMv.js.map} +1 -1
  43. package/dist/chunks/{languageContext-CbCRCTbP.esm.js → languageContext-DM_LTp53.esm.js} +3 -3
  44. package/dist/chunks/{languageContext-CbCRCTbP.esm.js.map → languageContext-DM_LTp53.esm.js.map} +1 -1
  45. package/dist/chunks/{migration-utils-Bn35YUJM.esm.js → migration-utils-D9TSOBR0.esm.js} +2 -2
  46. package/dist/chunks/{migration-utils-Bn35YUJM.esm.js.map → migration-utils-D9TSOBR0.esm.js.map} +1 -1
  47. package/dist/chunks/{migration-utils-CmzV1tw3.js → migration-utils-DwLXzWtr.js} +2 -2
  48. package/dist/chunks/{migration-utils-CmzV1tw3.js.map → migration-utils-DwLXzWtr.js.map} +1 -1
  49. package/dist/chunks/{page-context-DATjzley.esm.js → page-context-B_wK6kLR.esm.js} +3 -3
  50. package/dist/chunks/{page-context-DATjzley.esm.js.map → page-context-B_wK6kLR.esm.js.map} +1 -1
  51. package/dist/chunks/{page-context-BKgBvHxw.js → page-context-h7LEMAG0.js} +3 -3
  52. package/dist/chunks/{page-context-BKgBvHxw.js.map → page-context-h7LEMAG0.js.map} +1 -1
  53. package/dist/chunks/{reducer-Gajha1Kz.esm.js → reducer-Bpuo5eq1.esm.js} +2 -2
  54. package/dist/chunks/{reducer-Gajha1Kz.esm.js.map → reducer-Bpuo5eq1.esm.js.map} +1 -1
  55. package/dist/chunks/{reducer-DGvVphqy.js → reducer-t-U331ho.js} +2 -2
  56. package/dist/chunks/{reducer-DGvVphqy.js.map → reducer-t-U331ho.js.map} +1 -1
  57. package/dist/chunks/{shareSlice-Cn2PGA6m.js → shareSlice-Br9IsR9k.js} +2 -2
  58. package/dist/chunks/{shareSlice-Cn2PGA6m.js.map → shareSlice-Br9IsR9k.js.map} +1 -1
  59. package/dist/chunks/{shareSlice-DGme6jBu.esm.js → shareSlice-CbG_VJcW.esm.js} +2 -2
  60. package/dist/chunks/{shareSlice-DGme6jBu.esm.js.map → shareSlice-CbG_VJcW.esm.js.map} +1 -1
  61. package/dist/chunks/{sidebar-D2Q9rQrz.js → sidebar-C2zkLZyA.js} +4 -4
  62. package/dist/chunks/{sidebar-D2Q9rQrz.js.map → sidebar-C2zkLZyA.js.map} +1 -1
  63. package/dist/chunks/{sidebar-gl6ML9FB.esm.js → sidebar-l49eLo8p.esm.js} +4 -4
  64. package/dist/chunks/{sidebar-gl6ML9FB.esm.js.map → sidebar-l49eLo8p.esm.js.map} +1 -1
  65. package/dist/chunks/{sidebarScreen-57BCIH9V.esm.js → sidebarScreen-BQN2N8jx.esm.js} +5 -5
  66. package/dist/chunks/{sidebarScreen-57BCIH9V.esm.js.map → sidebarScreen-BQN2N8jx.esm.js.map} +1 -1
  67. package/dist/chunks/{sidebarScreen-CnsblLHN.js → sidebarScreen-PoYXto7E.js} +5 -5
  68. package/dist/chunks/{sidebarScreen-CnsblLHN.js.map → sidebarScreen-PoYXto7E.js.map} +1 -1
  69. package/dist/chunks/{store-DEoLcgbp.js → store-BdrUnJ3G.js} +3 -3
  70. package/dist/chunks/{store-DEoLcgbp.js.map → store-BdrUnJ3G.js.map} +1 -1
  71. package/dist/chunks/{store-zDGOGRDm.esm.js → store-ksRZPIIc.esm.js} +3 -3
  72. package/dist/chunks/{store-zDGOGRDm.esm.js.map → store-ksRZPIIc.esm.js.map} +1 -1
  73. package/dist/chunks/{translations-BVvsrCTo.js → translations-1vp9srMj.js} +2 -2
  74. package/dist/chunks/{translations-BVvsrCTo.js.map → translations-1vp9srMj.js.map} +1 -1
  75. package/dist/chunks/{translations-DJFxXzIm.esm.js → translations-B5t-KZNN.esm.js} +2 -2
  76. package/dist/chunks/{translations-DJFxXzIm.esm.js.map → translations-B5t-KZNN.esm.js.map} +1 -1
  77. package/dist/chunks/{uom-field-wrapper-CzXOP8fb.esm.js → uom-field-wrapper-Ckop1JTE.esm.js} +13 -13
  78. package/dist/chunks/{uom-field-wrapper-CzXOP8fb.esm.js.map → uom-field-wrapper-Ckop1JTE.esm.js.map} +1 -1
  79. package/dist/chunks/{uom-field-wrapper-CjqCwlbR.js → uom-field-wrapper-l8HA79k1.js} +13 -13
  80. package/dist/chunks/{uom-field-wrapper-CjqCwlbR.js.map → uom-field-wrapper-l8HA79k1.js.map} +1 -1
  81. package/dist/chunks/{useAccountSetting-nBdUAbgS.esm.js → useAccountSetting-D6Hhq1Pz.esm.js} +3 -3
  82. package/dist/chunks/{useAccountSetting-nBdUAbgS.esm.js.map → useAccountSetting-D6Hhq1Pz.esm.js.map} +1 -1
  83. package/dist/chunks/{useAccountSetting-ChWinjqQ.js → useAccountSetting-ngzko7sX.js} +3 -3
  84. package/dist/chunks/{useAccountSetting-ChWinjqQ.js.map → useAccountSetting-ngzko7sX.js.map} +1 -1
  85. package/dist/chunks/{useAuth-BhsPEB2T.js → useAuth-HvZ6U960.js} +2 -2
  86. package/dist/chunks/{useAuth-BhsPEB2T.js.map → useAuth-HvZ6U960.js.map} +1 -1
  87. package/dist/chunks/{useAuth-C4WcddEE.esm.js → useAuth-Tfx2guEJ.esm.js} +2 -2
  88. package/dist/chunks/{useAuth-C4WcddEE.esm.js.map → useAuth-Tfx2guEJ.esm.js.map} +1 -1
  89. package/dist/chunks/{useLangauge-Bie5anLS.esm.js → useLangauge-BU_fP3ZM.esm.js} +2 -2
  90. package/dist/chunks/{useLangauge-Bie5anLS.esm.js.map → useLangauge-BU_fP3ZM.esm.js.map} +1 -1
  91. package/dist/chunks/{useLangauge-BtG3kyRv.js → useLangauge-DwsR1jcv.js} +2 -2
  92. package/dist/chunks/{useLangauge-BtG3kyRv.js.map → useLangauge-DwsR1jcv.js.map} +1 -1
  93. package/dist/chunks/{useReduxIntegration-D6MZKdkS.js → useReduxIntegration-JMVTp0lq.js} +4 -4
  94. package/dist/chunks/{useReduxIntegration-D6MZKdkS.js.map → useReduxIntegration-JMVTp0lq.js.map} +1 -1
  95. package/dist/chunks/{useReduxIntegration--sS2yQ4F.esm.js → useReduxIntegration-VgWJGErE.esm.js} +4 -4
  96. package/dist/chunks/{useReduxIntegration--sS2yQ4F.esm.js.map → useReduxIntegration-VgWJGErE.esm.js.map} +1 -1
  97. package/dist/components/index.esm.js +9 -9
  98. package/dist/components/index.js +9 -9
  99. package/dist/contexts/index.esm.js +3 -3
  100. package/dist/contexts/index.js +3 -3
  101. package/dist/hooks/index.esm.js +5 -5
  102. package/dist/hooks/index.js +5 -5
  103. package/dist/index.esm.js +24 -24
  104. package/dist/index.js +24 -24
  105. package/dist/layout/index.esm.js +2 -2
  106. package/dist/layout/index.js +2 -2
  107. package/dist/redux/index.esm.js +4 -4
  108. package/dist/redux/index.js +4 -4
  109. package/dist/src/utils/api.d.ts +10 -0
  110. package/dist/utils/api.d.ts +10 -0
  111. package/dist/utils/index.esm.js +7 -7
  112. package/dist/utils/index.js +6 -6
  113. package/dist/views/index.esm.js +8 -8
  114. package/dist/views/index.js +7 -7
  115. package/package.json +1 -1
  116. package/dist/chunks/android-12-switch-C3WlgdKQ.esm.js.map +0 -1
  117. package/dist/chunks/android-12-switch-CVH-tc4s.js.map +0 -1
  118. package/dist/chunks/apiHelper-DOCeCGD-.esm.js.map +0 -1
  119. package/dist/chunks/apiHelper-DSbRnRC1.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useAuth-C4WcddEE.esm.js","sources":["../../node_modules/@mui/utils/esm/createChainedFunction/createChainedFunction.js","../../node_modules/@mui/utils/esm/debounce/debounce.js","../../node_modules/@mui/utils/esm/deprecatedPropType/deprecatedPropType.js","../../node_modules/@mui/utils/esm/isMuiElement/isMuiElement.js","../../node_modules/@mui/utils/esm/ownerDocument/ownerDocument.js","../../node_modules/@mui/utils/esm/ownerWindow/ownerWindow.js","../../node_modules/@mui/utils/esm/requirePropFactory/requirePropFactory.js","../../node_modules/@mui/utils/esm/setRef/setRef.js","../../node_modules/@mui/utils/esm/useEnhancedEffect/useEnhancedEffect.js","../../node_modules/@mui/utils/esm/useId/useId.js","../../node_modules/@mui/utils/esm/unsupportedProp/unsupportedProp.js","../../node_modules/@mui/utils/esm/useControlled/useControlled.js","../../node_modules/@mui/utils/esm/useEventCallback/useEventCallback.js","../../node_modules/@mui/utils/esm/useForkRef/useForkRef.js","../../node_modules/@mui/utils/esm/useLazyRef/useLazyRef.js","../../node_modules/@mui/utils/esm/useOnMount/useOnMount.js","../../node_modules/@mui/utils/esm/useTimeout/useTimeout.js","../../node_modules/@mui/utils/esm/useIsFocusVisible/useIsFocusVisible.js","../../node_modules/@mui/material/utils/index.js","../../node_modules/@mui/icons-material/utils/createSvgIcon.js","../../src/components/typography/typography.tsx","../../node_modules/@mui/icons-material/Close.js","../../src/utils/route-utils.ts","../../src/components/custom-snackbar/custom-snackbar.tsx","../../src/contexts/AuthContext.tsx","../../src/hooks/useAuth.ts"],"sourcesContent":["/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func, wait = 166) {\n let timeout;\n function debounced(...args) {\n const later = () => {\n // @ts-ignore\n func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n debounced.clear = () => {\n clearTimeout(timeout);\n };\n return debounced;\n}","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<<anonymous>>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n var _muiName, _element$type;\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n // eslint-disable-next-line no-underscore-dangle\n (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import ownerDocument from '../ownerDocument';\nexport default function ownerWindow(node) {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\n\n// downstream bundlers may remove unnecessary concatenation, but won't remove toString call -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseId = React['useId'.toString()];\n/**\n *\n * @example <div id={useId()} />\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride != null ? idOverride : reactId;\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride);\n}","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled({\n controlled,\n default: defaultProp,\n name,\n state = 'value'\n}) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const {\n current: isControlled\n } = React.useRef(controlled !== undefined);\n const [valueState, setValue] = React.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(() => {\n if (isControlled !== (controlled !== undefined)) {\n console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [state, name, controlled]);\n const {\n current: defaultValue\n } = React.useRef(defaultProp);\n React.useEffect(() => {\n if (!isControlled && !Object.is(defaultValue, defaultProp)) {\n console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n const setValueIfUncontrolled = React.useCallback(newValue => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '../useEnhancedEffect';\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useRef((...args) =>\n // @ts-expect-error hide `this`\n (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\nimport * as React from 'react';\nimport setRef from '../setRef';\nexport default function useForkRef(...refs) {\n /**\n * This will create a new function if the refs passed to this hook change and are all defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return instance => {\n refs.forEach(ref => {\n setRef(ref, instance);\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized lazily with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n * const ref = useLazyRef(sortColumns, columns)\n */\nexport default function useLazyRef(init, initArg) {\n const ref = React.useRef(UNINITIALIZED);\n if (ref.current === UNINITIALIZED) {\n ref.current = init(initArg);\n }\n return ref;\n}","'use client';\n\nimport * as React from 'react';\nconst EMPTY = [];\n\n/**\n * A React.useEffect equivalent that runs once, when the component is mounted.\n */\nexport default function useOnMount(fn) {\n /* eslint-disable react-hooks/exhaustive-deps */\n React.useEffect(fn, EMPTY);\n /* eslint-enable react-hooks/exhaustive-deps */\n}","'use client';\n\nimport useLazyRef from '../useLazyRef/useLazyRef';\nimport useOnMount from '../useOnMount/useOnMount';\nexport class Timeout {\n constructor() {\n this.currentId = null;\n this.clear = () => {\n if (this.currentId !== null) {\n clearTimeout(this.currentId);\n this.currentId = null;\n }\n };\n this.disposeEffect = () => {\n return this.clear;\n };\n }\n static create() {\n return new Timeout();\n }\n /**\n * Executes `fn` after `delay`, clearing any previously scheduled call.\n */\n start(delay, fn) {\n this.clear();\n this.currentId = setTimeout(() => {\n this.currentId = null;\n fn();\n }, delay);\n }\n}\nexport default function useTimeout() {\n const timeout = useLazyRef(Timeout.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}","'use client';\n\n// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport { Timeout } from '../useTimeout/useTimeout';\nlet hadKeyboardEvent = true;\nlet hadFocusVisibleRecently = false;\nconst hadFocusVisibleRecentlyTimeout = new Timeout();\nconst inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @returns {boolean}\n */\nfunction focusTriggersKeyboardModality(node) {\n const {\n type,\n tagName\n } = node;\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n if (node.isContentEditable) {\n return true;\n }\n return false;\n}\n\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n hadKeyboardEvent = true;\n}\n\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\nfunction isFocusVisible(event) {\n const {\n target\n } = event;\n try {\n return target.matches(':focus-visible');\n } catch (error) {\n // Browsers not implementing :focus-visible will throw a SyntaxError.\n // We use our own heuristic for those browsers.\n // Rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n }\n\n // No need for validFocusTarget check. The user does that by attaching it to\n // focusable events only.\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\nexport default function useIsFocusVisible() {\n const ref = React.useCallback(node => {\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n const isFocusVisibleRef = React.useRef(false);\n\n /**\n * Should be called if a blur event is fired\n */\n function handleBlurVisible() {\n // checking against potential state variable does not suffice if we focus and blur synchronously.\n // React wouldn't have time to trigger a re-render so `focusVisible` would be stale.\n // Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.\n // This doesn't work in IE11 due to https://github.com/facebook/react/issues/3751\n // TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).\n if (isFocusVisibleRef.current) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n hadFocusVisibleRecentlyTimeout.start(100, () => {\n hadFocusVisibleRecently = false;\n });\n isFocusVisibleRef.current = false;\n return true;\n }\n return false;\n }\n\n /**\n * Should be called if a blur event is fired\n */\n function handleFocusVisible(event) {\n if (isFocusVisible(event)) {\n isFocusVisibleRef.current = true;\n return true;\n }\n return false;\n }\n return {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref\n };\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/utils';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import {\n Typography as MUITypography,\n TypographyProps,\n styled,\n} from \"@mui/material\";\n\nexport interface ITypography extends TypographyProps {\n type?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"s1\" | \"s2\" | \"s3\" | \"s4\" | \"s5\";\n weight?: \"normal\" | \"medium\" | \"bold\";\n}\n\nconst StyledTypography = styled(MUITypography)<ITypography>(\n ({ theme: { palette }, color }) => ({\n color: color || palette.theme?.primary[800],\n }),\n);\n\nexport function Typography(props: ITypography) {\n const {\n children,\n type = \"h5\",\n weight = \"normal\",\n className,\n ...rest\n } = props;\n\n return (\n <StyledTypography className={`${type} ${weight} ${className}`} {...rest}>\n {children}\n </StyledTypography>\n );\n}\n\nexport default Typography;\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');","\nexport const convertRoutesToUseIdParams = (routes: Record<string, string>): Record<string, string> => {\n const updatedRoutes: Record<string, string> = { ...routes };\n \n // Identify patterns for view/edit/detail routes\n Object.keys(updatedRoutes).forEach(key => {\n // Common patterns for detail views\n if (\n key.startsWith('VIEW_') || \n key.startsWith('EDIT_') || \n key.startsWith('DETAIL_') ||\n key.includes('_VIEW_') || \n key.includes('_EDIT_') || \n key.includes('_DETAIL_')\n ) {\n if (!updatedRoutes[key].includes(':')) {\n updatedRoutes[key] = `${updatedRoutes[key]}/:id`;\n }\n }\n });\n \n return updatedRoutes;\n};\n\n\nexport const generateRouteWithId = (basePath: string, id: string | number | Record<string, any>): string => {\n if(id && typeof id === 'object') {\n Object.entries(id).map(([key, value]) => {\n basePath = basePath.replace(`:${key}`, value?.toString());\n })\n } else if (basePath.includes(':id')) {\n return basePath.replace(':id', id?.toString());\n }\n \n // If the path doesn't have an :id parameter, append it\n return `${basePath}`;\n};\n\n\nexport const updatePathnameWithIdParams = <T extends Record<string, string>>(pathnameObject: T): T => {\n return convertRoutesToUseIdParams(pathnameObject) as T;\n}; \n\n// Added utility for navigating to views with id parameter\nexport const navigateToRouteWithId = (\n navigate: any,\n route: string, \n id: string | number,\n state?: any\n) => {\n const path = generateRouteWithId(route, id);\n navigate(path, { state });\n}; ","import React from 'react';\nimport { SnackbarContent, useSnackbar } from 'notistack';\nimport { Avatar, Box, IconButton } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { useNavigate } from 'react-router-dom';\nimport { Notification } from '../icons';\nimport Typography from '../typography/typography';\nimport images from '../../assets/images';\nimport \"./custom-snackbar.scss\"\n\ninterface CustomSnackbarProps {\n message: string;\n variant?: 'default' | 'error' | 'success' | 'warning' | 'info';\n linkUrl?: string;\n snackbarKey: string | number;\n}\n\nconst mainModuleIcons = {\n rbac: images.user,\n document: images.document,\n 'accounts-and-finance': images.accounting,\n inventory: images.inventory,\n manufacturing: images.manufacturing,\n sales: images.crm,\n rental: images.rental,\n user: images.user,\n purchase: images.procurement,\n hrms: images.hrms\n}\nconst mainModuleBgColors = {\n rbac: '#F3E5F5',\n document: '#FFF8E1',\n 'accounts-and-finance': '#E8F5E8',\n inventory: '#E3F2FD',\n manufacturing: '#FFF3E0',\n sales: '#F3E5F5',\n rental: '#E8F5E8',\n user: '#F3E5F5',\n purchase: '#FCE4EC',\n hrms: '#fcfcfc'\n}\n\nconst CustomSnackbar = React.forwardRef<HTMLDivElement, CustomSnackbarProps>(\n ({ message, variant = 'default', linkUrl, snackbarKey, data }, ref) => {\n const { closeSnackbar } = useSnackbar();\n const navigate = useNavigate();\n\n const backgroundColorMap: Record<string, string> = {\n success: '#f0fdf4',\n error: '#fef2f2',\n warning: '#fff7ed',\n info: '#eff6ff',\n default: '#fff',\n };\n\n const textColorMap: Record<string, string> = {\n success: '#166534',\n error: '#991b1b',\n warning: '#92400e',\n info: '#1e40af',\n default: '#27272a',\n };\n\n const handleClick = () => {\n if (linkUrl) navigate(linkUrl);\n closeSnackbar(snackbarKey);\n };\n\n const handleCloseClick = (e: React.MouseEvent) => {\n e.stopPropagation(); // Prevent triggering link\n closeSnackbar(snackbarKey);\n };\n\n return (\n <SnackbarContent\n ref={ref}\n style={{\n backgroundColor: backgroundColorMap[variant],\n color: textColorMap[variant],\n }}\n className='SnackBar'\n onClick={handleClick}\n >\n <Box display=\"flex\" alignItems=\"center\" p={2} position=\"relative\" gap={2} width='100%'>\n {mainModuleIcons?.[data.module] ?\n <Avatar sx={{ \n width: 45, \n height: 45, \n fontSize: '0.875rem',\n bgcolor: mainModuleBgColors[data.module] || 'primary.main',\n color: 'white',\n borderRadius: '8px',\n '& img': { \n width: '35px', \n height: '35px', \n objectFit: 'contain'\n }\n }} src={mainModuleIcons?.[data.module]} /> :\n <Notification\n style={{\n color: textColorMap[variant],\n marginTop: 2,\n }}\n />\n }\n <Box display=\"flex\" alignItems=\"center\" width='100%'>\n <Box flex=\"1\">\n <Typography type='h5' color={'inherit'} weight='bold'>\n New Notification\n </Typography>\n <Typography type='s3' mt={0.5} color={'inherit'}>\n {message}\n </Typography>\n </Box>\n\n <IconButton\n size=\"small\"\n onClick={handleCloseClick}\n // style={{\n // position: 'absolute',\n // top: 4,\n // right: 4,\n // color: textColorMap[variant],\n // }}\n >\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n </Box>\n </SnackbarContent>\n );\n }\n);\n\nexport { CustomSnackbar };\nexport default CustomSnackbar;\n","import React, { createContext, useEffect, useRef, useState } from 'react';\nimport {\n\tpostV1AuthChangePassword,\n\tpostV1AuthForgotPassword,\n\tpostV1AuthChangeUserPassword,\n\t// getV1UserId,\n\tpostV1AuthLogin,\n\tpostV1AuthResetPassword,\n\tsetBaseUrl,\n\tpostV1AuthChangeUserPasswordByAdmin\n} from '../api-client/api.rbac/api';\nimport { auth } from '../constants/auth';\nimport { useLocation, matchRoutes, useNavigate } from 'react-router-dom';\nimport { Pathname } from '../constants/pathnames/pathname'; // Removed - should be passed as props or configured by consuming app\nimport { getToken } from '../utils/common';\nimport { enqueueSnackbar } from 'notistack';\nimport { Socket, io } from 'socket.io-client';\nimport { generateRouteWithId } from '../utils/route-utils';\nimport { getApiConfig } from '../utils/api-config';\nimport {\n\tPathnameAccounting,\n\tPathnameGenerator\n} from '../constants/pathnames/pathname.accounting';\n\nimport {\n\tPathnameInventory,\n\tPathnameGenerator as PathnameGeneratorInventory\n} from '../constants/pathnames/pathname.inventory';\n\nimport {\n\tPathnameManufacturing,\n\tPathnameGenerator as PathnameGeneratorManufacuring\n} from '../constants/pathnames/pathname.manufacturing';\n\nimport {\n\tPathnamePurchase,\n\tPathnameGenerator as PathnameGeneratorPurchase\n} from '../constants/pathnames/pathname.procurement';\n\nimport {\n\tPathnameCrm,\n\tPathnameGenerator as PathnameGeneratorCrm\n} from '../constants/pathnames/pathname.crm';\n\nimport {\n\tPathnameRental,\n\tPathnameGenerator as PathnameGeneratorRental\n} from '../constants/pathnames/pathname.rental';\n\nimport { ROUTES as RENTALROUTES } from '../constants/pathnames/pathname.rental';\n\nimport CustomSnackbar from '../components/custom-snackbar/custom-snackbar.tsx';\nimport { RbacApi } from '@/api-client/index.ts';\nexport interface LoginFormValues {\n\temail: string;\n\tpassword: string;\n}\n\nexport interface resetFormValues {\n\temail: string;\n}\n\nexport interface resetPasswordValues {\n\ttoken: string;\n}\n\nexport interface changePasswordValues {\n\tpassword: string;\n}\n\nexport interface changeUserPasswordValues {\n\tpassword: string;\n}\n\ninterface ERPApiUser {\n\tid: string | number;\n\tfirst_name: string;\n\tlast_name: string;\n\tmiddle_name: string;\n\tcountry_code: string;\n\temail: string;\n\tcreated_by: any;\n\tupdated_by: any;\n\tcreated_at: string;\n\tupdated_at: string;\n\trole_id: string;\n\tdepartment_id: number;\n\tis_deleted: number;\n\tdeleted_at: string | null;\n\tdeleted_by: any;\n\ttoken: string;\n\tprofile_image: string;\n\tcompany_id: number | string;\n\tcurrency_data?: {\n\t\tid: number;\n\t\tsymbol: string;\n\t\tcurrency_name: string;\n\t\tnumber_format: string;\n\t\tposition: string | null;\n\t\tfraction_unit: string | null\n\t};\n\taccessCompanies?: any[]\n}\ninterface ERPUser extends Omit<ERPApiUser, 'token'> {\n\tfull_name: string;\n}\n\nexport interface DefaultProviderProps {\n\tuser: ERPUser | null;\n\tloading: boolean;\n\tauthToken: string;\n\tsetUser: React.Dispatch<React.SetStateAction<ERPUser | null>>;\n\tsetLoading: React.Dispatch<React.SetStateAction<boolean>>;\n\tlogin: (\n\t\tparams: LoginFormValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tlogout: () => Promise<void>;\n\tforgotPassword: (\n\t\tparams: resetFormValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tresetPassword: (\n\t\tparams: resetPasswordValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tchangePassword: (\n\t\tparams: changePasswordValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tchangeUserPassword: (\n\t\tparams: changeUserPasswordValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n}\n\nconst defaultProvider: DefaultProviderProps = {\n\tuser: null,\n\tloading: true,\n\tauthToken: '',\n\tsetUser: () => null,\n\tsetLoading: () => Boolean,\n\tlogin: () => Promise.resolve(),\n\tlogout: () => Promise.resolve(),\n\tforgotPassword: () => Promise.resolve(),\n\tresetPassword: () => Promise.resolve(),\n\tchangePassword: () => Promise.resolve(),\n\tchangeUserPassword: () => Promise.resolve()\n};\n\nconst AuthContext = createContext<DefaultProviderProps>(defaultProvider);\n\ninterface AuthProviderProps {\n\tchildren: React.ReactNode;\n\tpublicRoutes?: string[]; // Optional prop to allow customization of public routes\n}\n\n// Base URL will be set at runtime via ERPUIProvider\n\nconst AuthProvider: React.FC<AuthProviderProps> = ({ children, publicRoutes = [] }) => {\n\t// ** States\n\tconst [user, setUser] = useState(defaultProvider.user);\n\tconst [authToken, setAuthToken] = useState<string>('');\n\tconst [loading, setLoading] = useState(defaultProvider.loading);\n\tconst socketRef = useRef<Socket | null>(null);\n\n\t// ** Hooks\n\tconst navigate = useNavigate();\n\tconst location = useLocation();\n\tconst isJsonParse = (string?: string | null) => {\n\t\tif (!string) return false;\n\n\t\ttry {\n\t\t\treturn JSON.parse(string);\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tconst getNotificationUrl = (data: any) => {\n\t\tconst { moduleName = '', moduleId = '', notificationData = {} } = data;\n\t\tconst key = moduleName.toLowerCase();\n\n\t\tconst routeMap: Record<string, () => string> = {\n\t\t\t'sales invoice': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_SALES_INVOICES), moduleId.toString()),\n\n\t\t\t'asset transfers': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_ASSET_TRANSFER), moduleId.toString()),\n\n\t\t\t'budgets': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_BUDGET), moduleId.toString()),\n\n\t\t\t'cash expense': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CASH_EXPENSE), moduleId.toString()),\n\n\t\t\t'credit notes': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CREDIT_NOTE), moduleId.toString()),\n\n\t\t\t'debit notes': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_DEBIT_NOTE), moduleId.toString()),\n\n\t\t\t'expense reimbursement': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_EXPENSE_REIMBURSEMENT), moduleId.toString()),\n\n\t\t\t'journal entries': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_JOURNAL_ENTRY), moduleId.toString()),\n\n\t\t\t'payment entries': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PAYMENT_ENTRY), moduleId.toString()),\n\n\t\t\t'purchase invoice': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PURCHASE_INVOICE), moduleId.toString()),\n\n\t\t\t'stock transfer': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_STOCK_TRANSFER), moduleId.toString()),\n\n\t\t\t'bills of materials': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorManufacuring(PathnameManufacturing.VIEW_BILL_OF_MATERIAL), moduleId.toString()),\n\n\t\t\t'purchase agreement': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_AGREEMENT), moduleId.toString()),\n\n\t\t\t'purchase orders': () =>\n\t\t\t\tgenerateRouteWithId(notificationData?.data?.is_rental == 1 ? RENTALROUTES.VIEW : PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), moduleId.toString()),\n\n\t\t\t'purchase request': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), moduleId.toString()),\n\n\t\t\t'vra': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_VENDOR_RETURNS), moduleId.toString()),\n\n\t\t\t'sl customer returns': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_CUSTOMER_RETURNS), moduleId.toString()),\n\n\t\t\t'sales order': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_SALES_ORDER), moduleId.toString()),\n\n\t\t\t'rental order': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\n\n\t\t\t'replacement order': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\n\n\t\t\t'rental agreement': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_AGREEMENT), moduleId.toString()),\n\n\t\t\t'cross hire order': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_ORDER), moduleId.toString()),\n\n\t\t\t'cross hire request': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_REQUEST), moduleId.toString()),\n\t\t};\n\n\t\treturn routeMap[key]?.() || '/dashboard';\n\t};\n\n\tuseEffect(() => {\n\t\tsetLoading(true);\n\t\t// initAuth()\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t\tconst storedUser =\n\t\t\tisJsonParse(window.localStorage.getItem(auth.storageUserKeyName)) ?? null;\n\t\tconst allPublicRoutes = [Pathname.LOGIN, Pathname.FORGOT_PASSWORD, Pathname.RESET_PASSWORD, Pathname.CHANGE_PASSWORD, ...publicRoutes];\n\t\tconst currentPath = window.location.pathname;\n\t\tif (!storedToken && !storedUser) {\n\t\t\tconsole.log('allPublicRoutes..', allPublicRoutes, 'currentPath..', currentPath)\n\t\t\t// if (!allPublicRoutes.includes(currentPath)) {\n\t\t\tif (Boolean(!matchRoutes(allPublicRoutes.map((route) => ({ path: route })), location))) {\n\t\t\t\tnavigate(Pathname.LOGIN);\n\t\t\t}\n\t\t\tsetLoading(false);\n\t\t} else {\n\t\t\tsetUser(storedUser);\n\t\t\tsetAuthToken(storedToken || '');\n\t\t\tsetLoading(false);\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (!authToken) {\n\t\t\tif (socketRef.current) {\n\t\t\t\tsocketRef.current?.disconnect();\n\t\t\t\tsocketRef.current = null\n\t\t\t}\n\t\t\tconsole.warn(\"No auth token found, not connecting to socket.\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst config = getApiConfig();\n\t\tconst socket = io(config.socketBaseUrl, {\n\t\t\ttransports: [\"websocket\"],\n\t\t\tauth: { token: authToken },\n\t\t\tpath: \"/socket.io/\",\n\n\t\t});\n\t\tsocketRef.current = socket;\n\n\t\tsocket.on(\"connect\", () => {\n\t\t\tconsole.log(\"Socket connected:\", socket.id);\n\t\t\tsocket.onAny((event, ...args) => {\n\t\t\t\tconsole.log(`Received event: ${event}`, args);\n\t\t\t});\n\t\t});\n\n\t\t// socket event handler\n\t\tsocket.on('notification', (data) => {\n\t\t\tconst { message, notificationData } = data || {};\n\t\t\tlet notificationContent: React.ReactNode = message;\n\t\t\tconst url = getNotificationUrl(data);\n\n\t\t\tif (notificationData) {\n\t\t\t\tconst { notification_type } = notificationData;\n\n\t\t\t\tswitch (notification_type) {\n\t\t\t\t\tcase 'addApprovers': {\n\n\t\t\t\t\t\tnotificationContent = message;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase 'change_approval_status': {\n\t\t\t\t\t\tnotificationContent = message;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\tnotificationContent = message;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tenqueueSnackbar(String(message), {\n\t\t\t\tvariant: 'default',\n\t\t\t\tanchorOrigin: { vertical: 'top', horizontal: 'center' },\n\t\t\t\tautoHideDuration: 5000,\n\t\t\t\tcontent: (key) => (\n\t\t\t\t\t<CustomSnackbar snackbarKey={key} message={notificationContent} data={notificationData} variant=\"default\" linkUrl={url} />\n\t\t\t\t),\n\t\t\t});\n\t\t});\n\n\n\t\tsocket.on(\"sales_invoice_viewed\", (data) => {\n\t\t\tconsole.log(\"Invoice viewed:\", data.invoiceId, \"by user:\", data.userId);\n\t\t});\n\n\t\tsocket.on(\"error\", (errMsg) => {\n\t\t\tenqueueSnackbar(`Socket error: ${errMsg}`, { variant: \"error\" });\n\t\t\tconsole.error(\"Socket error:\", errMsg);\n\t\t});\n\n\t\t// Clean up on unmount\n\t\treturn () => {\n\t\t\tif (socketRef.current) {\n\t\t\t\tsocketRef.current.disconnect();\n\t\t\t\tsocketRef.current = null\n\t\t\t}\n\t\t};\n\t}, [authToken]);\n\n\tconst fetchRolesByUserId = async (userId: number | string, token: string) => {\n\t\tconst response = await RbacApi.getV1RoleUserId({ id: userId, ...getToken(token) } as any);\n\t\tconst perm = response?.data?.role || [];\n\t\treturn JSON.stringify(perm);\n\t}\n\n\tconst handleLogin = async (\n\t\tparams: LoginFormValues,\n\t\tcallback: (err: string) => void,\n\t\tshoudRedirect: boolean = true,\n\t\tredirectPath: string = Pathname.DASHBOARD\n\t) => {\n\t\tsetLoading(true);\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t\tif (storedToken && user) {\n\t\t\treturn navigate(Pathname.DASHBOARD);\n\t\t}\n\n\t\ttry {\n\t\t\tconst loginUser = await postV1AuthLogin({ ...params, ...getToken() });\n\t\t\tif (loginUser.success) {\n\t\t\t\tconst data: ERPApiUser | null = loginUser?.data?.login || null;\n\t\t\t\tif (data) {\n\t\t\t\t\tconst userData: ERPUser = {\n\t\t\t\t\t\t...data,\n\t\t\t\t\t\tfull_name: `${data.first_name} ${data.last_name}`\n\t\t\t\t\t};\n\t\t\t\t\tconst rolePermission = await fetchRolesByUserId(userData.id, data.token);\n\t\t\t\t\t\n\t\t\t\t\tglobalThis.localStorage.setItem(auth.storageTokenKeyName, data.token);\n\t\t\t\t\twindow.localStorage.setItem(auth.storageUserKeyName, JSON.stringify(userData));\n\t\t\t\t\twindow.localStorage.setItem(auth.storageRolePermissionKeyName, rolePermission);\n\n\t\t\t\t\tsetUser(userData);\n\t\t\t\t\tsetAuthToken(data.token);\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tshoudRedirect && navigate(redirectPath);\n\t\t\t\t\t\tsetLoading(false);\n\t\t\t\t\t\tdelete data.token;\n\t\t\t\t\t}, 1000);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t}\n\t\t\tsetLoading(false);\n\t\t\tcallback(message);\n\t\t}\n\t};\n\n\tconst handleLogout = async () => {\n\t\twindow.localStorage.removeItem(auth.storageTokenKeyName);\n\t\twindow.localStorage.removeItem(auth.storageUserKeyName);\n\t\twindow.localStorage.removeItem(auth.storageRolePermissionKeyName);\n\t\tsetUser(null);\n\t\tsetAuthToken('');\n\t\tnavigate(Pathname.LOGIN);\n\t};\n\n\tconst handleForgotPassword = async (params: resetFormValues,\n\t\tcallback: (type: boolean, err: string) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthForgotPassword({ ...params, ...getToken() });\n\t\t\tcallback(true, \"Reset Link sent to your email\");\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t}\n\n\t\t\tcallback(false, message);\n\t\t}\n\t};\n\n\tconst handleResetPassword = async (params: resetPasswordValues,\n\t\tcallback: (err: string) => void) => {\n\t\ttry {\n\t\t\tconst response = await postV1AuthResetPassword({ ...params, ...getToken() });\n\t\t\tcallback(response);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tconsole.log(\"Error \", error)\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst handleChangePassword = async (params: resetPasswordValues,\n\t\tcallback: (err: string) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthChangePassword({ ...params, ...getToken() });\n\t\t\tcallback(null);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tconsole.log(\"Error \", error)\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message);\n\t\t\t}\n\t\t}\n\t\tcallback(\"reset\");\n\t}\n\n\tconst handleChangeUserPassword = async (params: resetPasswordValues,\n\t\tcallback: (err: string, resType: boolean) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthChangeUserPassword({ ...params, ...getToken() });\n\t\t\tcallback('Password Changed Successfully', true);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message, false);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst handleChangeUserPasswordByAdmin = async (params: changePasswordValues,\n\t\tcallback: (err: string, resType: boolean) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthChangeUserPasswordByAdmin({ ...params, ...getToken() });\n\t\t\tcallback('Password Changed Successfully', true);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message, false);\n\t\t\t}\n\t\t}\n\t}\n\n\n\tconst values = {\n\t\tuser,\n\t\tauthToken,\n\t\tloading,\n\t\tsetUser,\n\t\tsetLoading,\n\t\tlogin: handleLogin,\n\t\tlogout: handleLogout,\n\t\tforgotPassword: handleForgotPassword,\n\t\tresetPassword: handleResetPassword,\n\t\tchangePassword: handleChangePassword,\n\t\tchangeUserPassword: handleChangeUserPassword,\n\t\tchangeUserPasswordByAdmin: handleChangeUserPasswordByAdmin\n\t};\n\n\treturn <AuthContext.Provider value={values}>{children}</AuthContext.Provider>;\n};\n\nexport { AuthContext, AuthProvider };\n","import { useContext } from \"react\";\nimport { AuthContext, DefaultProviderProps } from \"../contexts/AuthContext\";\n\nexport const useAuth = (): DefaultProviderProps => useContext(AuthContext);\n"],"names":["MUITypography","jsx","require$$0","require$$1","require$$2","React","jsxs","CloseIcon","PathnameGenerator","PathnameGeneratorInventory","PathnameGeneratorManufacuring","PathnameGeneratorPurchase","_a","RENTALROUTES","PathnameGeneratorCrm","PathnameGeneratorRental","RbacApi.getV1RoleUserId"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,21]}
1
+ {"version":3,"file":"useAuth-Tfx2guEJ.esm.js","sources":["../../node_modules/@mui/utils/esm/createChainedFunction/createChainedFunction.js","../../node_modules/@mui/utils/esm/debounce/debounce.js","../../node_modules/@mui/utils/esm/deprecatedPropType/deprecatedPropType.js","../../node_modules/@mui/utils/esm/isMuiElement/isMuiElement.js","../../node_modules/@mui/utils/esm/ownerDocument/ownerDocument.js","../../node_modules/@mui/utils/esm/ownerWindow/ownerWindow.js","../../node_modules/@mui/utils/esm/requirePropFactory/requirePropFactory.js","../../node_modules/@mui/utils/esm/setRef/setRef.js","../../node_modules/@mui/utils/esm/useEnhancedEffect/useEnhancedEffect.js","../../node_modules/@mui/utils/esm/useId/useId.js","../../node_modules/@mui/utils/esm/unsupportedProp/unsupportedProp.js","../../node_modules/@mui/utils/esm/useControlled/useControlled.js","../../node_modules/@mui/utils/esm/useEventCallback/useEventCallback.js","../../node_modules/@mui/utils/esm/useForkRef/useForkRef.js","../../node_modules/@mui/utils/esm/useLazyRef/useLazyRef.js","../../node_modules/@mui/utils/esm/useOnMount/useOnMount.js","../../node_modules/@mui/utils/esm/useTimeout/useTimeout.js","../../node_modules/@mui/utils/esm/useIsFocusVisible/useIsFocusVisible.js","../../node_modules/@mui/material/utils/index.js","../../node_modules/@mui/icons-material/utils/createSvgIcon.js","../../src/components/typography/typography.tsx","../../node_modules/@mui/icons-material/Close.js","../../src/utils/route-utils.ts","../../src/components/custom-snackbar/custom-snackbar.tsx","../../src/contexts/AuthContext.tsx","../../src/hooks/useAuth.ts"],"sourcesContent":["/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func, wait = 166) {\n let timeout;\n function debounced(...args) {\n const later = () => {\n // @ts-ignore\n func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n debounced.clear = () => {\n clearTimeout(timeout);\n };\n return debounced;\n}","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<<anonymous>>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n var _muiName, _element$type;\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n // eslint-disable-next-line no-underscore-dangle\n (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import ownerDocument from '../ownerDocument';\nexport default function ownerWindow(node) {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\n\n// downstream bundlers may remove unnecessary concatenation, but won't remove toString call -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseId = React['useId'.toString()];\n/**\n *\n * @example <div id={useId()} />\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride != null ? idOverride : reactId;\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride);\n}","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled({\n controlled,\n default: defaultProp,\n name,\n state = 'value'\n}) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const {\n current: isControlled\n } = React.useRef(controlled !== undefined);\n const [valueState, setValue] = React.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(() => {\n if (isControlled !== (controlled !== undefined)) {\n console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [state, name, controlled]);\n const {\n current: defaultValue\n } = React.useRef(defaultProp);\n React.useEffect(() => {\n if (!isControlled && !Object.is(defaultValue, defaultProp)) {\n console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n const setValueIfUncontrolled = React.useCallback(newValue => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '../useEnhancedEffect';\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useRef((...args) =>\n // @ts-expect-error hide `this`\n (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\nimport * as React from 'react';\nimport setRef from '../setRef';\nexport default function useForkRef(...refs) {\n /**\n * This will create a new function if the refs passed to this hook change and are all defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return instance => {\n refs.forEach(ref => {\n setRef(ref, instance);\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized lazily with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n * const ref = useLazyRef(sortColumns, columns)\n */\nexport default function useLazyRef(init, initArg) {\n const ref = React.useRef(UNINITIALIZED);\n if (ref.current === UNINITIALIZED) {\n ref.current = init(initArg);\n }\n return ref;\n}","'use client';\n\nimport * as React from 'react';\nconst EMPTY = [];\n\n/**\n * A React.useEffect equivalent that runs once, when the component is mounted.\n */\nexport default function useOnMount(fn) {\n /* eslint-disable react-hooks/exhaustive-deps */\n React.useEffect(fn, EMPTY);\n /* eslint-enable react-hooks/exhaustive-deps */\n}","'use client';\n\nimport useLazyRef from '../useLazyRef/useLazyRef';\nimport useOnMount from '../useOnMount/useOnMount';\nexport class Timeout {\n constructor() {\n this.currentId = null;\n this.clear = () => {\n if (this.currentId !== null) {\n clearTimeout(this.currentId);\n this.currentId = null;\n }\n };\n this.disposeEffect = () => {\n return this.clear;\n };\n }\n static create() {\n return new Timeout();\n }\n /**\n * Executes `fn` after `delay`, clearing any previously scheduled call.\n */\n start(delay, fn) {\n this.clear();\n this.currentId = setTimeout(() => {\n this.currentId = null;\n fn();\n }, delay);\n }\n}\nexport default function useTimeout() {\n const timeout = useLazyRef(Timeout.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}","'use client';\n\n// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport { Timeout } from '../useTimeout/useTimeout';\nlet hadKeyboardEvent = true;\nlet hadFocusVisibleRecently = false;\nconst hadFocusVisibleRecentlyTimeout = new Timeout();\nconst inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @returns {boolean}\n */\nfunction focusTriggersKeyboardModality(node) {\n const {\n type,\n tagName\n } = node;\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n if (node.isContentEditable) {\n return true;\n }\n return false;\n}\n\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n hadKeyboardEvent = true;\n}\n\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\nfunction isFocusVisible(event) {\n const {\n target\n } = event;\n try {\n return target.matches(':focus-visible');\n } catch (error) {\n // Browsers not implementing :focus-visible will throw a SyntaxError.\n // We use our own heuristic for those browsers.\n // Rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n }\n\n // No need for validFocusTarget check. The user does that by attaching it to\n // focusable events only.\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\nexport default function useIsFocusVisible() {\n const ref = React.useCallback(node => {\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n const isFocusVisibleRef = React.useRef(false);\n\n /**\n * Should be called if a blur event is fired\n */\n function handleBlurVisible() {\n // checking against potential state variable does not suffice if we focus and blur synchronously.\n // React wouldn't have time to trigger a re-render so `focusVisible` would be stale.\n // Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.\n // This doesn't work in IE11 due to https://github.com/facebook/react/issues/3751\n // TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).\n if (isFocusVisibleRef.current) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n hadFocusVisibleRecentlyTimeout.start(100, () => {\n hadFocusVisibleRecently = false;\n });\n isFocusVisibleRef.current = false;\n return true;\n }\n return false;\n }\n\n /**\n * Should be called if a blur event is fired\n */\n function handleFocusVisible(event) {\n if (isFocusVisible(event)) {\n isFocusVisibleRef.current = true;\n return true;\n }\n return false;\n }\n return {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref\n };\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/utils';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import {\n Typography as MUITypography,\n TypographyProps,\n styled,\n} from \"@mui/material\";\n\nexport interface ITypography extends TypographyProps {\n type?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"s1\" | \"s2\" | \"s3\" | \"s4\" | \"s5\";\n weight?: \"normal\" | \"medium\" | \"bold\";\n}\n\nconst StyledTypography = styled(MUITypography)<ITypography>(\n ({ theme: { palette }, color }) => ({\n color: color || palette.theme?.primary[800],\n }),\n);\n\nexport function Typography(props: ITypography) {\n const {\n children,\n type = \"h5\",\n weight = \"normal\",\n className,\n ...rest\n } = props;\n\n return (\n <StyledTypography className={`${type} ${weight} ${className}`} {...rest}>\n {children}\n </StyledTypography>\n );\n}\n\nexport default Typography;\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');","\nexport const convertRoutesToUseIdParams = (routes: Record<string, string>): Record<string, string> => {\n const updatedRoutes: Record<string, string> = { ...routes };\n \n // Identify patterns for view/edit/detail routes\n Object.keys(updatedRoutes).forEach(key => {\n // Common patterns for detail views\n if (\n key.startsWith('VIEW_') || \n key.startsWith('EDIT_') || \n key.startsWith('DETAIL_') ||\n key.includes('_VIEW_') || \n key.includes('_EDIT_') || \n key.includes('_DETAIL_')\n ) {\n if (!updatedRoutes[key].includes(':')) {\n updatedRoutes[key] = `${updatedRoutes[key]}/:id`;\n }\n }\n });\n \n return updatedRoutes;\n};\n\n\nexport const generateRouteWithId = (basePath: string, id: string | number | Record<string, any>): string => {\n if(id && typeof id === 'object') {\n Object.entries(id).map(([key, value]) => {\n basePath = basePath.replace(`:${key}`, value?.toString());\n })\n } else if (basePath.includes(':id')) {\n return basePath.replace(':id', id?.toString());\n }\n \n // If the path doesn't have an :id parameter, append it\n return `${basePath}`;\n};\n\n\nexport const updatePathnameWithIdParams = <T extends Record<string, string>>(pathnameObject: T): T => {\n return convertRoutesToUseIdParams(pathnameObject) as T;\n}; \n\n// Added utility for navigating to views with id parameter\nexport const navigateToRouteWithId = (\n navigate: any,\n route: string, \n id: string | number,\n state?: any\n) => {\n const path = generateRouteWithId(route, id);\n navigate(path, { state });\n}; ","import React from 'react';\nimport { SnackbarContent, useSnackbar } from 'notistack';\nimport { Avatar, Box, IconButton } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { useNavigate } from 'react-router-dom';\nimport { Notification } from '../icons';\nimport Typography from '../typography/typography';\nimport images from '../../assets/images';\nimport \"./custom-snackbar.scss\"\n\ninterface CustomSnackbarProps {\n message: string;\n variant?: 'default' | 'error' | 'success' | 'warning' | 'info';\n linkUrl?: string;\n snackbarKey: string | number;\n}\n\nconst mainModuleIcons = {\n rbac: images.user,\n document: images.document,\n 'accounts-and-finance': images.accounting,\n inventory: images.inventory,\n manufacturing: images.manufacturing,\n sales: images.crm,\n rental: images.rental,\n user: images.user,\n purchase: images.procurement,\n hrms: images.hrms\n}\nconst mainModuleBgColors = {\n rbac: '#F3E5F5',\n document: '#FFF8E1',\n 'accounts-and-finance': '#E8F5E8',\n inventory: '#E3F2FD',\n manufacturing: '#FFF3E0',\n sales: '#F3E5F5',\n rental: '#E8F5E8',\n user: '#F3E5F5',\n purchase: '#FCE4EC',\n hrms: '#fcfcfc'\n}\n\nconst CustomSnackbar = React.forwardRef<HTMLDivElement, CustomSnackbarProps>(\n ({ message, variant = 'default', linkUrl, snackbarKey, data }, ref) => {\n const { closeSnackbar } = useSnackbar();\n const navigate = useNavigate();\n\n const backgroundColorMap: Record<string, string> = {\n success: '#f0fdf4',\n error: '#fef2f2',\n warning: '#fff7ed',\n info: '#eff6ff',\n default: '#fff',\n };\n\n const textColorMap: Record<string, string> = {\n success: '#166534',\n error: '#991b1b',\n warning: '#92400e',\n info: '#1e40af',\n default: '#27272a',\n };\n\n const handleClick = () => {\n if (linkUrl) navigate(linkUrl);\n closeSnackbar(snackbarKey);\n };\n\n const handleCloseClick = (e: React.MouseEvent) => {\n e.stopPropagation(); // Prevent triggering link\n closeSnackbar(snackbarKey);\n };\n\n return (\n <SnackbarContent\n ref={ref}\n style={{\n backgroundColor: backgroundColorMap[variant],\n color: textColorMap[variant],\n }}\n className='SnackBar'\n onClick={handleClick}\n >\n <Box display=\"flex\" alignItems=\"center\" p={2} position=\"relative\" gap={2} width='100%'>\n {mainModuleIcons?.[data.module] ?\n <Avatar sx={{ \n width: 45, \n height: 45, \n fontSize: '0.875rem',\n bgcolor: mainModuleBgColors[data.module] || 'primary.main',\n color: 'white',\n borderRadius: '8px',\n '& img': { \n width: '35px', \n height: '35px', \n objectFit: 'contain'\n }\n }} src={mainModuleIcons?.[data.module]} /> :\n <Notification\n style={{\n color: textColorMap[variant],\n marginTop: 2,\n }}\n />\n }\n <Box display=\"flex\" alignItems=\"center\" width='100%'>\n <Box flex=\"1\">\n <Typography type='h5' color={'inherit'} weight='bold'>\n New Notification\n </Typography>\n <Typography type='s3' mt={0.5} color={'inherit'}>\n {message}\n </Typography>\n </Box>\n\n <IconButton\n size=\"small\"\n onClick={handleCloseClick}\n // style={{\n // position: 'absolute',\n // top: 4,\n // right: 4,\n // color: textColorMap[variant],\n // }}\n >\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n </Box>\n </SnackbarContent>\n );\n }\n);\n\nexport { CustomSnackbar };\nexport default CustomSnackbar;\n","import React, { createContext, useEffect, useRef, useState } from 'react';\nimport {\n\tpostV1AuthChangePassword,\n\tpostV1AuthForgotPassword,\n\tpostV1AuthChangeUserPassword,\n\t// getV1UserId,\n\tpostV1AuthLogin,\n\tpostV1AuthResetPassword,\n\tsetBaseUrl,\n\tpostV1AuthChangeUserPasswordByAdmin\n} from '../api-client/api.rbac/api';\nimport { auth } from '../constants/auth';\nimport { useLocation, matchRoutes, useNavigate } from 'react-router-dom';\nimport { Pathname } from '../constants/pathnames/pathname'; // Removed - should be passed as props or configured by consuming app\nimport { getToken } from '../utils/common';\nimport { enqueueSnackbar } from 'notistack';\nimport { Socket, io } from 'socket.io-client';\nimport { generateRouteWithId } from '../utils/route-utils';\nimport { getApiConfig } from '../utils/api-config';\nimport {\n\tPathnameAccounting,\n\tPathnameGenerator\n} from '../constants/pathnames/pathname.accounting';\n\nimport {\n\tPathnameInventory,\n\tPathnameGenerator as PathnameGeneratorInventory\n} from '../constants/pathnames/pathname.inventory';\n\nimport {\n\tPathnameManufacturing,\n\tPathnameGenerator as PathnameGeneratorManufacuring\n} from '../constants/pathnames/pathname.manufacturing';\n\nimport {\n\tPathnamePurchase,\n\tPathnameGenerator as PathnameGeneratorPurchase\n} from '../constants/pathnames/pathname.procurement';\n\nimport {\n\tPathnameCrm,\n\tPathnameGenerator as PathnameGeneratorCrm\n} from '../constants/pathnames/pathname.crm';\n\nimport {\n\tPathnameRental,\n\tPathnameGenerator as PathnameGeneratorRental\n} from '../constants/pathnames/pathname.rental';\n\nimport { ROUTES as RENTALROUTES } from '../constants/pathnames/pathname.rental';\n\nimport CustomSnackbar from '../components/custom-snackbar/custom-snackbar.tsx';\nimport { RbacApi } from '@/api-client/index.ts';\nexport interface LoginFormValues {\n\temail: string;\n\tpassword: string;\n}\n\nexport interface resetFormValues {\n\temail: string;\n}\n\nexport interface resetPasswordValues {\n\ttoken: string;\n}\n\nexport interface changePasswordValues {\n\tpassword: string;\n}\n\nexport interface changeUserPasswordValues {\n\tpassword: string;\n}\n\ninterface ERPApiUser {\n\tid: string | number;\n\tfirst_name: string;\n\tlast_name: string;\n\tmiddle_name: string;\n\tcountry_code: string;\n\temail: string;\n\tcreated_by: any;\n\tupdated_by: any;\n\tcreated_at: string;\n\tupdated_at: string;\n\trole_id: string;\n\tdepartment_id: number;\n\tis_deleted: number;\n\tdeleted_at: string | null;\n\tdeleted_by: any;\n\ttoken: string;\n\tprofile_image: string;\n\tcompany_id: number | string;\n\tcurrency_data?: {\n\t\tid: number;\n\t\tsymbol: string;\n\t\tcurrency_name: string;\n\t\tnumber_format: string;\n\t\tposition: string | null;\n\t\tfraction_unit: string | null\n\t};\n\taccessCompanies?: any[]\n}\ninterface ERPUser extends Omit<ERPApiUser, 'token'> {\n\tfull_name: string;\n}\n\nexport interface DefaultProviderProps {\n\tuser: ERPUser | null;\n\tloading: boolean;\n\tauthToken: string;\n\tsetUser: React.Dispatch<React.SetStateAction<ERPUser | null>>;\n\tsetLoading: React.Dispatch<React.SetStateAction<boolean>>;\n\tlogin: (\n\t\tparams: LoginFormValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tlogout: () => Promise<void>;\n\tforgotPassword: (\n\t\tparams: resetFormValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tresetPassword: (\n\t\tparams: resetPasswordValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tchangePassword: (\n\t\tparams: changePasswordValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tchangeUserPassword: (\n\t\tparams: changeUserPasswordValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n}\n\nconst defaultProvider: DefaultProviderProps = {\n\tuser: null,\n\tloading: true,\n\tauthToken: '',\n\tsetUser: () => null,\n\tsetLoading: () => Boolean,\n\tlogin: () => Promise.resolve(),\n\tlogout: () => Promise.resolve(),\n\tforgotPassword: () => Promise.resolve(),\n\tresetPassword: () => Promise.resolve(),\n\tchangePassword: () => Promise.resolve(),\n\tchangeUserPassword: () => Promise.resolve()\n};\n\nconst AuthContext = createContext<DefaultProviderProps>(defaultProvider);\n\ninterface AuthProviderProps {\n\tchildren: React.ReactNode;\n\tpublicRoutes?: string[]; // Optional prop to allow customization of public routes\n}\n\n// Base URL will be set at runtime via ERPUIProvider\n\nconst AuthProvider: React.FC<AuthProviderProps> = ({ children, publicRoutes = [] }) => {\n\t// ** States\n\tconst [user, setUser] = useState(defaultProvider.user);\n\tconst [authToken, setAuthToken] = useState<string>('');\n\tconst [loading, setLoading] = useState(defaultProvider.loading);\n\tconst socketRef = useRef<Socket | null>(null);\n\n\t// ** Hooks\n\tconst navigate = useNavigate();\n\tconst location = useLocation();\n\tconst isJsonParse = (string?: string | null) => {\n\t\tif (!string) return false;\n\n\t\ttry {\n\t\t\treturn JSON.parse(string);\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tconst getNotificationUrl = (data: any) => {\n\t\tconst { moduleName = '', moduleId = '', notificationData = {} } = data;\n\t\tconst key = moduleName.toLowerCase();\n\n\t\tconst routeMap: Record<string, () => string> = {\n\t\t\t'sales invoice': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_SALES_INVOICES), moduleId.toString()),\n\n\t\t\t'asset transfers': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_ASSET_TRANSFER), moduleId.toString()),\n\n\t\t\t'budgets': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_BUDGET), moduleId.toString()),\n\n\t\t\t'cash expense': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CASH_EXPENSE), moduleId.toString()),\n\n\t\t\t'credit notes': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CREDIT_NOTE), moduleId.toString()),\n\n\t\t\t'debit notes': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_DEBIT_NOTE), moduleId.toString()),\n\n\t\t\t'expense reimbursement': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_EXPENSE_REIMBURSEMENT), moduleId.toString()),\n\n\t\t\t'journal entries': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_JOURNAL_ENTRY), moduleId.toString()),\n\n\t\t\t'payment entries': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PAYMENT_ENTRY), moduleId.toString()),\n\n\t\t\t'purchase invoice': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PURCHASE_INVOICE), moduleId.toString()),\n\n\t\t\t'stock transfer': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_STOCK_TRANSFER), moduleId.toString()),\n\n\t\t\t'bills of materials': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorManufacuring(PathnameManufacturing.VIEW_BILL_OF_MATERIAL), moduleId.toString()),\n\n\t\t\t'purchase agreement': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_AGREEMENT), moduleId.toString()),\n\n\t\t\t'purchase orders': () =>\n\t\t\t\tgenerateRouteWithId(notificationData?.data?.is_rental == 1 ? RENTALROUTES.VIEW : PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), moduleId.toString()),\n\n\t\t\t'purchase request': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), moduleId.toString()),\n\n\t\t\t'vra': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_VENDOR_RETURNS), moduleId.toString()),\n\n\t\t\t'sl customer returns': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_CUSTOMER_RETURNS), moduleId.toString()),\n\n\t\t\t'sales order': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_SALES_ORDER), moduleId.toString()),\n\n\t\t\t'rental order': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\n\n\t\t\t'replacement order': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\n\n\t\t\t'rental agreement': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_AGREEMENT), moduleId.toString()),\n\n\t\t\t'cross hire order': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_ORDER), moduleId.toString()),\n\n\t\t\t'cross hire request': () =>\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_REQUEST), moduleId.toString()),\n\t\t};\n\n\t\treturn routeMap[key]?.() || '/dashboard';\n\t};\n\n\tuseEffect(() => {\n\t\tsetLoading(true);\n\t\t// initAuth()\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t\tconst storedUser =\n\t\t\tisJsonParse(window.localStorage.getItem(auth.storageUserKeyName)) ?? null;\n\t\tconst allPublicRoutes = [Pathname.LOGIN, Pathname.FORGOT_PASSWORD, Pathname.RESET_PASSWORD, Pathname.CHANGE_PASSWORD, ...publicRoutes];\n\t\tconst currentPath = window.location.pathname;\n\t\tif (!storedToken && !storedUser) {\n\t\t\tconsole.log('allPublicRoutes..', allPublicRoutes, 'currentPath..', currentPath)\n\t\t\t// if (!allPublicRoutes.includes(currentPath)) {\n\t\t\tif (Boolean(!matchRoutes(allPublicRoutes.map((route) => ({ path: route })), location))) {\n\t\t\t\tnavigate(Pathname.LOGIN);\n\t\t\t}\n\t\t\tsetLoading(false);\n\t\t} else {\n\t\t\tsetUser(storedUser);\n\t\t\tsetAuthToken(storedToken || '');\n\t\t\tsetLoading(false);\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (!authToken) {\n\t\t\tif (socketRef.current) {\n\t\t\t\tsocketRef.current?.disconnect();\n\t\t\t\tsocketRef.current = null\n\t\t\t}\n\t\t\tconsole.warn(\"No auth token found, not connecting to socket.\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst config = getApiConfig();\n\t\tconst socket = io(config.socketBaseUrl, {\n\t\t\ttransports: [\"websocket\"],\n\t\t\tauth: { token: authToken },\n\t\t\tpath: \"/socket.io/\",\n\n\t\t});\n\t\tsocketRef.current = socket;\n\n\t\tsocket.on(\"connect\", () => {\n\t\t\tconsole.log(\"Socket connected:\", socket.id);\n\t\t\tsocket.onAny((event, ...args) => {\n\t\t\t\tconsole.log(`Received event: ${event}`, args);\n\t\t\t});\n\t\t});\n\n\t\t// socket event handler\n\t\tsocket.on('notification', (data) => {\n\t\t\tconst { message, notificationData } = data || {};\n\t\t\tlet notificationContent: React.ReactNode = message;\n\t\t\tconst url = getNotificationUrl(data);\n\n\t\t\tif (notificationData) {\n\t\t\t\tconst { notification_type } = notificationData;\n\n\t\t\t\tswitch (notification_type) {\n\t\t\t\t\tcase 'addApprovers': {\n\n\t\t\t\t\t\tnotificationContent = message;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase 'change_approval_status': {\n\t\t\t\t\t\tnotificationContent = message;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\tnotificationContent = message;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tenqueueSnackbar(String(message), {\n\t\t\t\tvariant: 'default',\n\t\t\t\tanchorOrigin: { vertical: 'top', horizontal: 'center' },\n\t\t\t\tautoHideDuration: 5000,\n\t\t\t\tcontent: (key) => (\n\t\t\t\t\t<CustomSnackbar snackbarKey={key} message={notificationContent} data={notificationData} variant=\"default\" linkUrl={url} />\n\t\t\t\t),\n\t\t\t});\n\t\t});\n\n\n\t\tsocket.on(\"sales_invoice_viewed\", (data) => {\n\t\t\tconsole.log(\"Invoice viewed:\", data.invoiceId, \"by user:\", data.userId);\n\t\t});\n\n\t\tsocket.on(\"error\", (errMsg) => {\n\t\t\tenqueueSnackbar(`Socket error: ${errMsg}`, { variant: \"error\" });\n\t\t\tconsole.error(\"Socket error:\", errMsg);\n\t\t});\n\n\t\t// Clean up on unmount\n\t\treturn () => {\n\t\t\tif (socketRef.current) {\n\t\t\t\tsocketRef.current.disconnect();\n\t\t\t\tsocketRef.current = null\n\t\t\t}\n\t\t};\n\t}, [authToken]);\n\n\tconst fetchRolesByUserId = async (userId: number | string, token: string) => {\n\t\tconst response = await RbacApi.getV1RoleUserId({ id: userId, ...getToken(token) } as any);\n\t\tconst perm = response?.data?.role || [];\n\t\treturn JSON.stringify(perm);\n\t}\n\n\tconst handleLogin = async (\n\t\tparams: LoginFormValues,\n\t\tcallback: (err: string) => void,\n\t\tshoudRedirect: boolean = true,\n\t\tredirectPath: string = Pathname.DASHBOARD\n\t) => {\n\t\tsetLoading(true);\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t\tif (storedToken && user) {\n\t\t\treturn navigate(Pathname.DASHBOARD);\n\t\t}\n\n\t\ttry {\n\t\t\tconst loginUser = await postV1AuthLogin({ ...params, ...getToken() });\n\t\t\tif (loginUser.success) {\n\t\t\t\tconst data: ERPApiUser | null = loginUser?.data?.login || null;\n\t\t\t\tif (data) {\n\t\t\t\t\tconst userData: ERPUser = {\n\t\t\t\t\t\t...data,\n\t\t\t\t\t\tfull_name: `${data.first_name} ${data.last_name}`\n\t\t\t\t\t};\n\t\t\t\t\tconst rolePermission = await fetchRolesByUserId(userData.id, data.token);\n\t\t\t\t\t\n\t\t\t\t\tglobalThis.localStorage.setItem(auth.storageTokenKeyName, data.token);\n\t\t\t\t\twindow.localStorage.setItem(auth.storageUserKeyName, JSON.stringify(userData));\n\t\t\t\t\twindow.localStorage.setItem(auth.storageRolePermissionKeyName, rolePermission);\n\n\t\t\t\t\tsetUser(userData);\n\t\t\t\t\tsetAuthToken(data.token);\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tshoudRedirect && navigate(redirectPath);\n\t\t\t\t\t\tsetLoading(false);\n\t\t\t\t\t\tdelete data.token;\n\t\t\t\t\t}, 1000);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t}\n\t\t\tsetLoading(false);\n\t\t\tcallback(message);\n\t\t}\n\t};\n\n\tconst handleLogout = async () => {\n\t\twindow.localStorage.removeItem(auth.storageTokenKeyName);\n\t\twindow.localStorage.removeItem(auth.storageUserKeyName);\n\t\twindow.localStorage.removeItem(auth.storageRolePermissionKeyName);\n\t\tsetUser(null);\n\t\tsetAuthToken('');\n\t\tnavigate(Pathname.LOGIN);\n\t};\n\n\tconst handleForgotPassword = async (params: resetFormValues,\n\t\tcallback: (type: boolean, err: string) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthForgotPassword({ ...params, ...getToken() });\n\t\t\tcallback(true, \"Reset Link sent to your email\");\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t}\n\n\t\t\tcallback(false, message);\n\t\t}\n\t};\n\n\tconst handleResetPassword = async (params: resetPasswordValues,\n\t\tcallback: (err: string) => void) => {\n\t\ttry {\n\t\t\tconst response = await postV1AuthResetPassword({ ...params, ...getToken() });\n\t\t\tcallback(response);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tconsole.log(\"Error \", error)\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst handleChangePassword = async (params: resetPasswordValues,\n\t\tcallback: (err: string) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthChangePassword({ ...params, ...getToken() });\n\t\t\tcallback(null);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tconsole.log(\"Error \", error)\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message);\n\t\t\t}\n\t\t}\n\t\tcallback(\"reset\");\n\t}\n\n\tconst handleChangeUserPassword = async (params: resetPasswordValues,\n\t\tcallback: (err: string, resType: boolean) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthChangeUserPassword({ ...params, ...getToken() });\n\t\t\tcallback('Password Changed Successfully', true);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message, false);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst handleChangeUserPasswordByAdmin = async (params: changePasswordValues,\n\t\tcallback: (err: string, resType: boolean) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthChangeUserPasswordByAdmin({ ...params, ...getToken() });\n\t\t\tcallback('Password Changed Successfully', true);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message, false);\n\t\t\t}\n\t\t}\n\t}\n\n\n\tconst values = {\n\t\tuser,\n\t\tauthToken,\n\t\tloading,\n\t\tsetUser,\n\t\tsetLoading,\n\t\tlogin: handleLogin,\n\t\tlogout: handleLogout,\n\t\tforgotPassword: handleForgotPassword,\n\t\tresetPassword: handleResetPassword,\n\t\tchangePassword: handleChangePassword,\n\t\tchangeUserPassword: handleChangeUserPassword,\n\t\tchangeUserPasswordByAdmin: handleChangeUserPasswordByAdmin\n\t};\n\n\treturn <AuthContext.Provider value={values}>{children}</AuthContext.Provider>;\n};\n\nexport { AuthContext, AuthProvider };\n","import { useContext } from \"react\";\nimport { AuthContext, DefaultProviderProps } from \"../contexts/AuthContext\";\n\nexport const useAuth = (): DefaultProviderProps => useContext(AuthContext);\n"],"names":["MUITypography","jsx","require$$0","require$$1","require$$2","React","jsxs","CloseIcon","PathnameGenerator","PathnameGeneratorInventory","PathnameGeneratorManufacuring","PathnameGeneratorPurchase","_a","RENTALROUTES","PathnameGeneratorCrm","PathnameGeneratorRental","RbacApi.getV1RoleUserId"],"mappings":";;;;;;;;;;;;;;;;;AAMe,SAAS,yBAAyB,OAAO;AACtD,SAAO,MAAM,OAAO,CAAC,KAAK,SAAS;AACjC,QAAI,QAAQ,MAAM;AAChB,aAAO;AAAA,IACT;AACA,WAAO,SAAS,mBAAmB,MAAM;AACvC,UAAI,MAAM,MAAM,IAAI;AACpB,WAAK,MAAM,MAAM,IAAI;AAAA,IACvB;AAAA,EACF,GAAG,MAAM;AAAA,EAAC,CAAC;AACb;ACde,SAAS,SAAS,MAAM,OAAO,KAAK;AACjD,MAAI;AACJ,WAAS,aAAa,MAAM;AAC1B,UAAM,QAAQ,MAAM;AAElB,WAAK,MAAM,MAAM,IAAI;AAAA,IACvB;AACA,iBAAa,OAAO;AACpB,cAAU,WAAW,OAAO,IAAI;AAAA,EAClC;AACA,YAAU,QAAQ,MAAM;AACtB,iBAAa,OAAO;AAAA,EACtB;AACA,SAAO;AACT;AChBe,SAAS,mBAAmB,WAAW,QAAQ;AAC5D,MAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,WAAO,MAAM;AAAA,EACf;AACA,SAAO,CAAC,OAAO,UAAU,eAAe,UAAU,iBAAiB;AACjE,UAAM,oBAAoB,iBAAiB;AAC3C,UAAM,mBAAmB,gBAAgB;AACzC,QAAI,OAAO,MAAM,QAAQ,MAAM,aAAa;AAC1C,aAAO,IAAI,MAAM,OAAO,QAAQ,MAAM,gBAAgB,WAAgB,iBAAiB,qBAAqB,MAAM,EAAE;AAAA,IACtH;AACA,WAAO;AAAA,EACT;AACF;ACXe,SAAS,aAAa,SAAS,UAAU;AACtD,MAAI,UAAU;AACd,SAAoB,sBAAM,eAAe,OAAO,KAAK,SAAS;AAAA;AAAA;AAAA;AAAA,KAG7D,WAAW,QAAQ,KAAK,YAAY,OAAO,YAAY,gBAAgB,QAAQ,SAAS,SAAS,gBAAgB,cAAc,aAAa,SAAS,gBAAgB,cAAc,UAAU,OAAO,SAAS,cAAc;AAAA,EAAO,MAAM;AAC3O;ACPe,SAAS,cAAc,MAAM;AAC1C,SAAO,QAAQ,KAAK,iBAAiB;AACvC;ACDe,SAAS,YAAY,MAAM;AACxC,QAAM,MAAM,cAAc,IAAI;AAC9B,SAAO,IAAI,eAAe;AAC5B;ACHe,SAAS,mBAAmB,sBAAsB,WAAW;AAC1E,MAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,WAAO,MAAM;AAAA,EACf;AAGA,QAAM,gBAAgB,YAAY,SAAS,CAAA,GAAI,UAAU,SAAS,IAAI;AACtE,QAAM,cAAc,kBAAgB,CAAC,OAAO,UAAU,eAAe,UAAU,iBAAiB,SAAS;AACvG,UAAM,mBAAmB,gBAAgB;AACzC,UAAM,qBAAqB,iBAAiB,OAAO,SAAS,cAAc,gBAAgB;AAC1F,QAAI,oBAAoB;AACtB,YAAM,oBAAoB,mBAAmB,OAAO,UAAU,eAAe,UAAU,cAAc,GAAG,IAAI;AAC5G,UAAI,mBAAmB;AACrB,eAAO;AAAA,MACT;AAAA,IACF;AACA,QAAI,OAAO,MAAM,QAAQ,MAAM,eAAe,CAAC,MAAM,YAAY,GAAG;AAClE,aAAO,IAAI,MAAM,cAAc,gBAAgB,WAAgB,oBAAoB,2CAA2C,YAAY,UAAU;AAAA,IACtJ;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;ACVe,SAAS,OAAO,KAAK,OAAO;AACzC,MAAI,OAAO,QAAQ,YAAY;AAC7B,QAAI,KAAK;AAAA,EACX,WAAW,KAAK;AACd,QAAI,UAAU;AAAA,EAChB;AACF;ACRK,MAAC,oBAAoB,OAAO,WAAW,cAAc,MAAM,kBAAkB,MAAM;ACRxF,IAAI,WAAW;AACf,SAAS,YAAY,YAAY;AAC/B,QAAM,CAAC,WAAW,YAAY,IAAI,MAAM,SAAS,UAAU;AAC3D,QAAM,KAAK,cAAc;AACzB,QAAM,UAAU,MAAM;AACpB,QAAI,aAAa,MAAM;AAKrB,kBAAY;AACZ,mBAAa,OAAO,QAAQ,EAAE;AAAA,IAChC;AAAA,EACF,GAAG,CAAC,SAAS,CAAC;AACd,SAAO;AACT;AAGA,MAAM,kBAAkB,MAAM,QAAQ,UAAU;AAOjC,SAAS,MAAM,YAAY;AACxC,MAAI,oBAAoB,QAAW;AACjC,UAAM,UAAU,gBAAe;AAC/B,WAAO,cAAc,OAAO,aAAa;AAAA,EAC3C;AAEA,SAAO,YAAY,UAAU;AAC/B;ACnCe,SAAS,gBAAgB,OAAO,UAAU,eAAe,UAAU,cAAc;AAC9F,MAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,WAAO;AAAA,EACT;AACA,QAAM,mBAAmB,gBAAgB;AACzC,MAAI,OAAO,MAAM,QAAQ,MAAM,aAAa;AAC1C,WAAO,IAAI,MAAM,cAAc,gBAAgB,wCAAwC;AAAA,EACzF;AACA,SAAO;AACT;ACLe,SAAS,cAAc;AAAA,EACpC;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA,QAAQ;AACV,GAAG;AAED,QAAM;AAAA,IACJ,SAAS;AAAA,EACb,IAAM,MAAM,OAAO,eAAe,MAAS;AACzC,QAAM,CAAC,YAAY,QAAQ,IAAI,MAAM,SAAS,WAAW;AACzD,QAAM,QAAQ,eAAe,aAAa;AAC1C,MAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,UAAM,UAAU,MAAM;AACpB,UAAI,kBAAkB,eAAe,SAAY;AAC/C,gBAAQ,MAAM,CAAC,oCAAoC,eAAe,KAAK,IAAI,cAAc,KAAK,aAAa,IAAI,UAAU,eAAe,OAAO,EAAE,eAAe,+EAA+E,qDAAqD,IAAI,+CAAoD,8HAA8H,sDAAsD,EAAE,KAAK,IAAI,CAAC;AAAA,MAC9hB;AAAA,IACF,GAAG,CAAC,OAAO,MAAM,UAAU,CAAC;AAC5B,UAAM;AAAA,MACJ,SAAS;AAAA,IACf,IAAQ,MAAM,OAAO,WAAW;AAC5B,UAAM,UAAU,MAAM;AACpB,UAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,cAAc,WAAW,GAAG;AAC1D,gBAAQ,MAAM,CAAC,4CAA4C,KAAK,6BAA6B,IAAI,8EAAmF,IAAI,GAAG,EAAE,KAAK,IAAI,CAAC;AAAA,MACzM;AAAA,IACF,GAAG,CAAC,KAAK,UAAU,WAAW,CAAC,CAAC;AAAA,EAClC;AACA,QAAM,yBAAyB,MAAM,YAAY,cAAY;AAC3D,QAAI,CAAC,cAAc;AACjB,eAAS,QAAQ;AAAA,IACnB;AAAA,EACF,GAAG,CAAA,CAAE;AACL,SAAO,CAAC,OAAO,sBAAsB;AACvC;AC3BA,SAAS,iBAAiB,IAAI;AAC5B,QAAM,MAAM,MAAM,OAAO,EAAE;AAC3B,oBAAkB,MAAM;AACtB,QAAI,UAAU;AAAA,EAChB,CAAC;AACD,SAAO,MAAM,OAAO,IAAI;AAAA;AAAA,KAExB,GAAI,IAAI,SAAS,GAAG,IAAI;AAAA,GAAC,EAAE;AAC7B;ACde,SAAS,cAAc,MAAM;AAM1C,SAAO,MAAM,QAAQ,MAAM;AACzB,QAAI,KAAK,MAAM,SAAO,OAAO,IAAI,GAAG;AAClC,aAAO;AAAA,IACT;AACA,WAAO,cAAY;AACjB,WAAK,QAAQ,SAAO;AAClB,eAAO,KAAK,QAAQ;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,EAEF,GAAG,IAAI;AACT;AClBA,MAAM,gBAAgB,CAAA;AASP,SAAS,WAAW,MAAM,SAAS;AAChD,QAAM,MAAM,MAAM,OAAO,aAAa;AACtC,MAAI,IAAI,YAAY,eAAe;AACjC,QAAI,UAAU,KAAK,OAAO;AAAA,EAC5B;AACA,SAAO;AACT;ACfA,MAAM,QAAQ,CAAA;AAKC,SAAS,WAAW,IAAI;AAErC,QAAM,UAAU,IAAI,KAAK;AAE3B;ACRO,MAAM,QAAQ;AAAA,EACnB,cAAc;AACZ,SAAK,YAAY;AACjB,SAAK,QAAQ,MAAM;AACjB,UAAI,KAAK,cAAc,MAAM;AAC3B,qBAAa,KAAK,SAAS;AAC3B,aAAK,YAAY;AAAA,MACnB;AAAA,IACF;AACA,SAAK,gBAAgB,MAAM;AACzB,aAAO,KAAK;AAAA,IACd;AAAA,EACF;AAAA,EACA,OAAO,SAAS;AACd,WAAO,IAAI,QAAO;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,OAAO,IAAI;AACf,SAAK,MAAK;AACV,SAAK,YAAY,WAAW,MAAM;AAChC,WAAK,YAAY;AACjB,SAAE;AAAA,IACJ,GAAG,KAAK;AAAA,EACV;AACF;AACe,SAAS,aAAa;AACnC,QAAM,UAAU,WAAW,QAAQ,MAAM,EAAE;AAC3C,aAAW,QAAQ,aAAa;AAChC,SAAO;AACT;AC9BA,IAAI,mBAAmB;AACvB,IAAI,0BAA0B;AAC9B,MAAM,iCAAiC,IAAI,QAAO;AAClD,MAAM,sBAAsB;AAAA,EAC1B,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,KAAK;AAAA,EACL,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,UAAU;AAAA,EACV,kBAAkB;AACpB;AASA,SAAS,8BAA8B,MAAM;AAC3C,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACJ,IAAM;AACJ,MAAI,YAAY,WAAW,oBAAoB,IAAI,KAAK,CAAC,KAAK,UAAU;AACtE,WAAO;AAAA,EACT;AACA,MAAI,YAAY,cAAc,CAAC,KAAK,UAAU;AAC5C,WAAO;AAAA,EACT;AACA,MAAI,KAAK,mBAAmB;AAC1B,WAAO;AAAA,EACT;AACA,SAAO;AACT;AASA,SAAS,cAAc,OAAO;AAC5B,MAAI,MAAM,WAAW,MAAM,UAAU,MAAM,SAAS;AAClD;AAAA,EACF;AACA,qBAAmB;AACrB;AASA,SAAS,oBAAoB;AAC3B,qBAAmB;AACrB;AACA,SAAS,yBAAyB;AAChC,MAAI,KAAK,oBAAoB,UAAU;AAKrC,QAAI,yBAAyB;AAC3B,yBAAmB;AAAA,IACrB;AAAA,EACF;AACF;AACA,SAAS,QAAQ,KAAK;AACpB,MAAI,iBAAiB,WAAW,eAAe,IAAI;AACnD,MAAI,iBAAiB,aAAa,mBAAmB,IAAI;AACzD,MAAI,iBAAiB,eAAe,mBAAmB,IAAI;AAC3D,MAAI,iBAAiB,cAAc,mBAAmB,IAAI;AAC1D,MAAI,iBAAiB,oBAAoB,wBAAwB,IAAI;AACvE;AAQA,SAAS,eAAe,OAAO;AAC7B,QAAM;AAAA,IACJ;AAAA,EACJ,IAAM;AACJ,MAAI;AACF,WAAO,OAAO,QAAQ,gBAAgB;AAAA,EACxC,SAAS,OAAO;AAAA,EAKhB;AAIA,SAAO,oBAAoB,8BAA8B,MAAM;AACjE;AACe,SAAS,oBAAoB;AAC1C,QAAM,MAAM,MAAM,YAAY,UAAQ;AACpC,QAAI,QAAQ,MAAM;AAChB,cAAQ,KAAK,aAAa;AAAA,IAC5B;AAAA,EACF,GAAG,CAAA,CAAE;AACL,QAAM,oBAAoB,MAAM,OAAO,KAAK;AAK5C,WAAS,oBAAoB;AAM3B,QAAI,kBAAkB,SAAS;AAK7B,gCAA0B;AAC1B,qCAA+B,MAAM,KAAK,MAAM;AAC9C,kCAA0B;AAAA,MAC5B,CAAC;AACD,wBAAkB,UAAU;AAC5B,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAKA,WAAS,mBAAmB,OAAO;AACjC,QAAI,eAAe,KAAK,GAAG;AACzB,wBAAkB,UAAU;AAC5B,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL;AAAA,IACA,SAAS;AAAA,IACT,QAAQ;AAAA,IACR;AAAA,EACJ;AACA;AC5IO,MAAM,8BAA8B;AAAA,EACzC,WAAW,eAAa;AACtB,QAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,cAAQ,KAAK,CAAC,8GAA8G,IAAI,kGAAkG,IAAI,oGAAoG,IAAI,wEAAwE,EAAE,KAAK,IAAI,CAAC;AAAA,IACpa;AACA,uBAAmB,UAAU,SAAS;AAAA,EACxC;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5BA;AAEA,WAAO,eAAc,SAAU,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,WAAO,eAAe,SAAS,WAAW;AAAA,MACxC,YAAY;AAAA,MACZ,KAAK,WAAY;AACf,eAAO,OAAO;AAAA,MAClB;AAAA,IACA,CAAC;AACD,QAAI,SAAS;AAAA;;;ACDb,MAAM,mBAAmB,OAAOA,YAAa;AAAA,EAC3C,CAAC,EAAE,OAAO,EAAE,QAAA,GAAW,YAAM;;AAAO;AAAA,MAClC,OAAO,WAAS,aAAQ,UAAR,mBAAe,QAAQ;AAAA,IAAG;AAAA;AAE9C;AAEO,SAAS,WAAW,OAAoB;AAC7C,QAAM;AAAA,IACJ;AAAA,IACA,OAAO;AAAA,IACP,SAAS;AAAA,IACT;AAAA,IACA,GAAG;AAAA,EAAA,IACD;AAEJ,SACEC,kCAAAA,IAAC,kBAAA,EAAiB,WAAW,GAAG,IAAI,IAAI,MAAM,IAAI,SAAS,IAAK,GAAG,MAChE,SAAA,CACH;AAEJ;;AC5BA,IAAI,yBAAyBC;AAC7B,OAAO,eAAe,OAAS,cAAc;AAAA,EAC3C,OAAO;AACT,CAAC;AACD,IAAA,YAAA,MAAA,UAAkB;AAClB,IAAI,iBAAiB,uBAAuBC,sBAAgC;AAC5E,IAAI,cAAcC;AACH,YAAA,MAAA,cAAsB,eAAe,6BAA2B,YAAY,KAAK,QAAQ;AAAA,EACtG,GAAG;AACL,CAAC,GAAG,OAAO;ACXJ,MAAM,6BAA6B,CAAC,WAA2D;AACpG,QAAM,gBAAwC,EAAE,GAAG,OAAA;AAGnD,SAAO,KAAK,aAAa,EAAE,QAAQ,CAAA,QAAO;AAExC,QACE,IAAI,WAAW,OAAO,KACtB,IAAI,WAAW,OAAO,KACtB,IAAI,WAAW,SAAS,KACxB,IAAI,SAAS,QAAQ,KACrB,IAAI,SAAS,QAAQ,KACrB,IAAI,SAAS,UAAU,GACvB;AACA,UAAI,CAAC,cAAc,GAAG,EAAE,SAAS,GAAG,GAAG;AACrC,sBAAc,GAAG,IAAI,GAAG,cAAc,GAAG,CAAC;AAAA,MAC5C;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAGO,MAAM,sBAAsB,CAAC,UAAkB,OAAsD;AAC1G,MAAG,MAAM,OAAO,OAAO,UAAU;AAC/B,WAAO,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AACvC,iBAAW,SAAS,QAAQ,IAAI,GAAG,IAAI,+BAAO,UAAU;AAAA,IAC1D,CAAC;AAAA,EACH,WAAW,SAAS,SAAS,KAAK,GAAG;AACnC,WAAO,SAAS,QAAQ,OAAO,yBAAI,UAAU;AAAA,EAC/C;AAGA,SAAO,GAAG,QAAQ;AACpB;AAGO,MAAM,6BAA6B,CAAmC,mBAAyB;AACpG,SAAO,2BAA2B,cAAc;AAClD;AAGO,MAAM,wBAAwB,CACnC,UACA,OACA,IACA,UACG;AACH,QAAM,OAAO,oBAAoB,OAAO,EAAE;AAC1C,WAAS,MAAM,EAAE,OAAO;AAC1B;ACnCA,MAAM,kBAAkB;AAAA,EACtB,MAAM,OAAO;AAAA,EACb,UAAU,OAAO;AAAA,EACjB,wBAAwB,OAAO;AAAA,EAC/B,WAAW,OAAO;AAAA,EAClB,eAAe,OAAO;AAAA,EACtB,OAAO,OAAO;AAAA,EACd,QAAQ,OAAO;AAAA,EACf,MAAM,OAAO;AAAA,EACb,UAAU,OAAO;AAAA,EACjB,MAAM,OAAO;AACf;AACA,MAAM,qBAAqB;AAAA,EACzB,MAAM;AAAA,EACN,UAAU;AAAA,EACV,wBAAwB;AAAA,EACxB,WAAW;AAAA,EACX,eAAe;AAAA,EACf,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AACR;AAEA,MAAM,iBAAiBC,eAAM;AAAA,EAC3B,CAAC,EAAE,SAAS,UAAU,WAAW,SAAS,aAAa,KAAA,GAAQ,QAAQ;AACrE,UAAM,EAAE,cAAA,IAAkB,YAAA;AAC1B,UAAM,WAAW,YAAA;AAEjB,UAAM,qBAA6C;AAAA,MACjD,SAAS;AAAA,MACT,OAAO;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAGX,UAAM,eAAuC;AAAA,MAC3C,SAAS;AAAA,MACT,OAAO;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAGX,UAAM,cAAc,MAAM;AACxB,UAAI,kBAAkB,OAAO;AAC7B,oBAAc,WAAW;AAAA,IAC3B;AAEA,UAAM,mBAAmB,CAAC,MAAwB;AAChD,QAAE,gBAAA;AACF,oBAAc,WAAW;AAAA,IAC3B;AAEA,WACEJ,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,OAAO;AAAA,UACL,iBAAiB,mBAAmB,OAAO;AAAA,UAC3C,OAAO,aAAa,OAAO;AAAA,QAAA;AAAA,QAE7B,WAAU;AAAA,QACV,SAAS;AAAA,QAET,UAAAK,kCAAAA,KAAC,KAAA,EAAI,SAAQ,QAAO,YAAW,UAAS,GAAG,GAAG,UAAS,YAAW,KAAK,GAAG,OAAM,QAC/E,UAAA;AAAA,WAAA,mDAAkB,KAAK,WACtBL,kCAAAA,IAAC,UAAO,IAAI;AAAA,YACV,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,UAAU;AAAA,YACV,SAAS,mBAAmB,KAAK,MAAM,KAAK;AAAA,YAC5C,OAAO;AAAA,YACP,cAAc;AAAA,YACd,SAAS;AAAA,cACP,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,WAAW;AAAA,YAAA;AAAA,UACb,GACC,KAAK,mDAAkB,KAAK,SAAS,IACxCA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL,OAAO,aAAa,OAAO;AAAA,gBAC3B,WAAW;AAAA,cAAA;AAAA,YACb;AAAA,UAAA;AAAA,iDAGD,KAAA,EAAI,SAAQ,QAAO,YAAW,UAAS,OAAM,QAC5C,UAAA;AAAA,YAAAK,kCAAAA,KAAC,KAAA,EAAI,MAAK,KACR,UAAA;AAAA,cAAAL,kCAAAA,IAAC,cAAW,MAAK,MAAK,OAAO,WAAW,QAAO,QAAO,UAAA,mBAAA,CAEtD;AAAA,cACAA,kCAAAA,IAAC,cAAW,MAAK,MAAK,IAAI,KAAK,OAAO,WACnC,UAAA,QAAA,CACH;AAAA,YAAA,GACF;AAAA,YAEAA,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,SAAS;AAAA,gBAQT,UAAAA,kCAAAA,IAACM,WAAA,EAAU,UAAS,QAAA,CAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,UAC9B,EAAA,CACF;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;ACIA,MAAM,kBAAwC;AAAA,EAC7C,MAAM;AAAA,EACN,SAAS;AAAA,EACT,WAAW;AAAA,EACX,SAAS,MAAM;AAAA,EACf,YAAY,MAAM;AAAA,EAClB,OAAO,MAAM,QAAQ,QAAA;AAAA,EACrB,QAAQ,MAAM,QAAQ,QAAA;AAAA,EACtB,gBAAgB,MAAM,QAAQ,QAAA;AAAA,EAC9B,eAAe,MAAM,QAAQ,QAAA;AAAA,EAC7B,gBAAgB,MAAM,QAAQ,QAAA;AAAA,EAC9B,oBAAoB,MAAM,QAAQ,QAAA;AACnC;AAEA,MAAM,cAAc,cAAoC,eAAe;AASvE,MAAM,eAA4C,CAAC,EAAE,UAAU,eAAe,CAAA,QAAS;AAEtF,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,gBAAgB,IAAI;AACrD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAiB,EAAE;AACrD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,gBAAgB,OAAO;AAC9D,QAAM,YAAY,OAAsB,IAAI;AAG5C,QAAM,WAAW,YAAA;AACjB,QAAM,WAAW,YAAA;AACjB,QAAM,cAAc,CAAC,WAA2B;AAC/C,QAAI,CAAC,OAAQ,QAAO;AAEpB,QAAI;AACH,aAAO,KAAK,MAAM,MAAM;AAAA,IACzB,SAAS,OAAO;AACf,aAAO;AAAA,IACR;AAAA,EACD;AAEA,QAAM,qBAAqB,CAAC,SAAc;;AACzC,UAAM,EAAE,aAAa,IAAI,WAAW,IAAI,mBAAmB,CAAA,MAAO;AAClE,UAAM,MAAM,WAAW,YAAA;AAEvB,UAAM,WAAyC;AAAA,MAC9C,iBAAiB,MAChB,oBAAoBC,oBAAkB,mBAAmB,mBAAmB,GAAG,SAAS,UAAU;AAAA,MAEnG,mBAAmB,MAClB,oBAAoBA,oBAAkB,mBAAmB,mBAAmB,GAAG,SAAS,UAAU;AAAA,MAEnG,WAAW,MACV,oBAAoBA,oBAAkB,mBAAmB,WAAW,GAAG,SAAS,UAAU;AAAA,MAE3F,gBAAgB,MACf,oBAAoBA,oBAAkB,mBAAmB,iBAAiB,GAAG,SAAS,UAAU;AAAA,MAEjG,gBAAgB,MACf,oBAAoBA,oBAAkB,mBAAmB,gBAAgB,GAAG,SAAS,UAAU;AAAA,MAEhG,eAAe,MACd,oBAAoBA,oBAAkB,mBAAmB,eAAe,GAAG,SAAS,UAAU;AAAA,MAE/F,yBAAyB,MACxB,oBAAoBA,oBAAkB,mBAAmB,0BAA0B,GAAG,SAAS,UAAU;AAAA,MAE1G,mBAAmB,MAClB,oBAAoBA,oBAAkB,mBAAmB,kBAAkB,GAAG,SAAS,UAAU;AAAA,MAElG,mBAAmB,MAClB,oBAAoBA,oBAAkB,mBAAmB,kBAAkB,GAAG,SAAS,UAAU;AAAA,MAElG,oBAAoB,MACnB,oBAAoBA,oBAAkB,mBAAmB,qBAAqB,GAAG,SAAS,UAAU;AAAA,MAErG,kBAAkB,MACjB,oBAAoBC,oBAA2B,kBAAkB,mBAAmB,GAAG,SAAS,UAAU;AAAA,MAE3G,sBAAsB,MACrB,oBAAoBC,oBAA8B,sBAAsB,qBAAqB,GAAG,SAAS,UAAU;AAAA,MAEpH,sBAAsB,MACrB,oBAAoBC,oBAA0B,iBAAiB,uBAAuB,GAAG,SAAS,UAAU;AAAA,MAE7G,mBAAmB,MAAA;;AAClB,qCAAoBC,MAAA,qDAAkB,SAAlB,gBAAAA,IAAwB,cAAa,IAAIC,OAAa,OAAOF,oBAA0B,iBAAiB,mBAAmB,GAAG,SAAS,UAAU;AAAA;AAAA,MAEtK,oBAAoB,MACnB,oBAAoBA,oBAA0B,iBAAiB,mBAAmB,GAAG,SAAS,UAAU;AAAA,MAEzG,OAAO,MACN,oBAAoBA,oBAA0B,iBAAiB,mBAAmB,GAAG,SAAS,UAAU;AAAA,MAEzG,uBAAuB,MACtB,oBAAoBG,oBAAqB,YAAY,qBAAqB,GAAG,SAAS,UAAU;AAAA,MAEjG,eAAe,MACd,oBAAoBA,oBAAqB,YAAY,gBAAgB,GAAG,SAAS,UAAU;AAAA,MAE5F,gBAAgB,MACf,oBAAoBC,kBAAwB,eAAe,iBAAiB,GAAG,SAAS,UAAU;AAAA,MAEnG,qBAAqB,MACpB,oBAAoBA,kBAAwB,eAAe,iBAAiB,GAAG,SAAS,UAAU;AAAA,MAEnG,oBAAoB,MACnB,oBAAoBA,kBAAwB,eAAe,cAAc,GAAG,SAAS,UAAU;AAAA,MAEhG,oBAAoB,MACnB,oBAAoBA,kBAAwB,eAAe,qBAAqB,GAAG,SAAS,UAAU;AAAA,MAEvG,sBAAsB,MACrB,oBAAoBA,kBAAwB,eAAe,uBAAuB,GAAG,SAAS,SAAA,CAAU;AAAA,IAAA;AAG1G,aAAO,cAAS,SAAT,sCAAqB;AAAA,EAC7B;AAEA,YAAU,MAAM;AACf,eAAW,IAAI;AAEf,UAAM,cAAc,OAAO,aAAa,QAAQ,KAAK,mBAAmB;AACxE,UAAM,aACL,YAAY,OAAO,aAAa,QAAQ,KAAK,kBAAkB,CAAC,KAAK;AACtE,UAAM,kBAAkB,CAAC,SAAS,OAAO,SAAS,iBAAiB,SAAS,gBAAgB,SAAS,iBAAiB,GAAG,YAAY;AACrI,UAAM,cAAc,OAAO,SAAS;AACpC,QAAI,CAAC,eAAe,CAAC,YAAY;AAChC,cAAQ,IAAI,qBAAqB,iBAAiB,iBAAiB,WAAW;AAE9E,UAAI,QAAQ,CAAC,YAAY,gBAAgB,IAAI,CAAC,WAAW,EAAE,MAAM,MAAA,EAAQ,GAAG,QAAQ,CAAC,GAAG;AACvF,iBAAS,SAAS,KAAK;AAAA,MACxB;AACA,iBAAW,KAAK;AAAA,IACjB,OAAO;AACN,cAAQ,UAAU;AAClB,mBAAa,eAAe,EAAE;AAC9B,iBAAW,KAAK;AAAA,IACjB;AAAA,EAED,GAAG,CAAA,CAAE;AAEL,YAAU,MAAM;;AACf,QAAI,CAAC,WAAW;AACf,UAAI,UAAU,SAAS;AACtB,wBAAU,YAAV,mBAAmB;AACnB,kBAAU,UAAU;AAAA,MACrB;AACA,cAAQ,KAAK,gDAAgD;AAC7D;AAAA,IACD;AAEA,UAAM,SAAS,aAAA;AACf,UAAM,SAAS,GAAG,OAAO,eAAe;AAAA,MACvC,YAAY,CAAC,WAAW;AAAA,MACxB,MAAM,EAAE,OAAO,UAAA;AAAA,MACf,MAAM;AAAA,IAAA,CAEN;AACD,cAAU,UAAU;AAEpB,WAAO,GAAG,WAAW,MAAM;AAC1B,cAAQ,IAAI,qBAAqB,OAAO,EAAE;AAC1C,aAAO,MAAM,CAAC,UAAU,SAAS;AAChC,gBAAQ,IAAI,mBAAmB,KAAK,IAAI,IAAI;AAAA,MAC7C,CAAC;AAAA,IACF,CAAC;AAGD,WAAO,GAAG,gBAAgB,CAAC,SAAS;AACnC,YAAM,EAAE,SAAS,iBAAA,IAAqB,QAAQ,CAAA;AAC9C,UAAI,sBAAuC;AAC3C,YAAM,MAAM,mBAAmB,IAAI;AAEnC,UAAI,kBAAkB;AACrB,cAAM,EAAE,sBAAsB;AAE9B,gBAAQ,mBAAA;AAAA,UACP,KAAK,gBAAgB;AAEpB,kCAAsB;AACtB;AAAA,UACD;AAAA,UAEA,KAAK,0BAA0B;AAC9B,kCAAsB;AACtB;AAAA,UACD;AAAA,UAEA,SAAS;AACR,kCAAsB;AACtB;AAAA,UACD;AAAA,QAAA;AAAA,MAEF;AAEA,sBAAgB,OAAO,OAAO,GAAG;AAAA,QAChC,SAAS;AAAA,QACT,cAAc,EAAE,UAAU,OAAO,YAAY,SAAA;AAAA,QAC7C,kBAAkB;AAAA,QAClB,SAAS,CAAC,QACTd,kCAAAA,IAAC,kBAAe,aAAa,KAAK,SAAS,qBAAqB,MAAM,kBAAkB,SAAQ,WAAU,SAAS,IAAA,CAAK;AAAA,MAAA,CAEzH;AAAA,IACF,CAAC;AAGD,WAAO,GAAG,wBAAwB,CAAC,SAAS;AAC3C,cAAQ,IAAI,mBAAmB,KAAK,WAAW,YAAY,KAAK,MAAM;AAAA,IACvE,CAAC;AAED,WAAO,GAAG,SAAS,CAAC,WAAW;AAC9B,sBAAgB,iBAAiB,MAAM,IAAI,EAAE,SAAS,SAAS;AAC/D,cAAQ,MAAM,iBAAiB,MAAM;AAAA,IACtC,CAAC;AAGD,WAAO,MAAM;AACZ,UAAI,UAAU,SAAS;AACtB,kBAAU,QAAQ,WAAA;AAClB,kBAAU,UAAU;AAAA,MACrB;AAAA,IACD;AAAA,EACD,GAAG,CAAC,SAAS,CAAC;AAEd,QAAM,qBAAqB,OAAO,QAAyB,UAAkB;;AAC5E,UAAM,WAAW,MAAMe,gBAAwB,EAAE,IAAI,QAAQ,GAAG,SAAS,KAAK,GAAU;AACxF,UAAM,SAAO,0CAAU,SAAV,mBAAgB,SAAQ,CAAA;AACrC,WAAO,KAAK,UAAU,IAAI;AAAA,EAC3B;AAEA,QAAM,cAAc,OACnB,QACA,UACA,gBAAyB,MACzB,eAAuB,SAAS,cAC5B;;AACJ,eAAW,IAAI;AACf,UAAM,cAAc,OAAO,aAAa,QAAQ,KAAK,mBAAmB;AACxE,QAAI,eAAe,MAAM;AACxB,aAAO,SAAS,SAAS,SAAS;AAAA,IACnC;AAEA,QAAI;AACH,YAAM,YAAY,MAAM,gBAAgB,EAAE,GAAG,QAAQ,GAAG,SAAA,GAAY;AACpE,UAAI,UAAU,SAAS;AACtB,cAAM,SAA0B,4CAAW,SAAX,mBAAiB,UAAS;AAC1D,YAAI,MAAM;AACT,gBAAM,WAAoB;AAAA,YACzB,GAAG;AAAA,YACH,WAAW,GAAG,KAAK,UAAU,IAAI,KAAK,SAAS;AAAA,UAAA;AAEhD,gBAAM,iBAAiB,MAAM,mBAAmB,SAAS,IAAI,KAAK,KAAK;AAEvE,qBAAW,aAAa,QAAQ,KAAK,qBAAqB,KAAK,KAAK;AACpE,iBAAO,aAAa,QAAQ,KAAK,oBAAoB,KAAK,UAAU,QAAQ,CAAC;AAC7E,iBAAO,aAAa,QAAQ,KAAK,8BAA8B,cAAc;AAE7E,kBAAQ,QAAQ;AAChB,uBAAa,KAAK,KAAK;AACvB,qBAAW,MAAM;AAChB,6BAAiB,SAAS,YAAY;AACtC,uBAAW,KAAK;AAChB,mBAAO,KAAK;AAAA,UACb,GAAG,GAAI;AAAA,QACR;AAAA,MACD;AAAA,IACD,SAAS,OAAO;AACf,UAAI,UAAkB;AACtB,UAAI,iBAAiB,OAAO;AAC3B,kBAAU,YAAY,MAAM,OAAO,EAAE,WAAW,MAAM;AAAA,MACvD;AACA,iBAAW,KAAK;AAChB,eAAS,OAAO;AAAA,IACjB;AAAA,EACD;AAEA,QAAM,eAAe,YAAY;AAChC,WAAO,aAAa,WAAW,KAAK,mBAAmB;AACvD,WAAO,aAAa,WAAW,KAAK,kBAAkB;AACtD,WAAO,aAAa,WAAW,KAAK,4BAA4B;AAChE,YAAQ,IAAI;AACZ,iBAAa,EAAE;AACf,aAAS,SAAS,KAAK;AAAA,EACxB;AAEA,QAAM,uBAAuB,OAAO,QACnC,aAAmD;AACnD,QAAI;AACH,YAAM,yBAAyB,EAAE,GAAG,QAAQ,GAAG,SAAA,GAAY;AAC3D,eAAS,MAAM,+BAA+B;AAAA,IAC/C,SAAS,OAAO;AACf,UAAI,UAAkB;AACtB,UAAI,iBAAiB,OAAO;AAC3B,kBAAU,YAAY,MAAM,OAAO,EAAE,WAAW,MAAM;AAAA,MACvD;AAEA,eAAS,OAAO,OAAO;AAAA,IACxB;AAAA,EACD;AAEA,QAAM,sBAAsB,OAAO,QAClC,aAAoC;AACpC,QAAI;AACH,YAAM,WAAW,MAAM,wBAAwB,EAAE,GAAG,QAAQ,GAAG,SAAA,GAAY;AAC3E,eAAS,QAAQ;AAAA,IAClB,SAAS,OAAO;AACf,UAAI,UAAkB;AACtB,cAAQ,IAAI,UAAU,KAAK;AAC3B,UAAI,iBAAiB,OAAO;AAC3B,kBAAU,YAAY,MAAM,OAAO,EAAE,WAAW,MAAM;AACtD,iBAAS,OAAO;AAAA,MACjB;AAAA,IACD;AAAA,EACD;AAEA,QAAM,uBAAuB,OAAO,QACnC,aAAoC;AACpC,QAAI;AACH,YAAM,yBAAyB,EAAE,GAAG,QAAQ,GAAG,SAAA,GAAY;AAC3D,eAAS,IAAI;AAAA,IACd,SAAS,OAAO;AACf,UAAI,UAAkB;AACtB,cAAQ,IAAI,UAAU,KAAK;AAC3B,UAAI,iBAAiB,OAAO;AAC3B,kBAAU,YAAY,MAAM,OAAO,EAAE,WAAW,MAAM;AACtD,iBAAS,OAAO;AAAA,MACjB;AAAA,IACD;AACA,aAAS,OAAO;AAAA,EACjB;AAEA,QAAM,2BAA2B,OAAO,QACvC,aAAsD;AACtD,QAAI;AACH,YAAM,6BAA6B,EAAE,GAAG,QAAQ,GAAG,SAAA,GAAY;AAC/D,eAAS,iCAAiC,IAAI;AAAA,IAC/C,SAAS,OAAO;AACf,UAAI,UAAkB;AACtB,UAAI,iBAAiB,OAAO;AAC3B,kBAAU,YAAY,MAAM,OAAO,EAAE,WAAW,MAAM;AACtD,iBAAS,SAAS,KAAK;AAAA,MACxB;AAAA,IACD;AAAA,EACD;AAEA,QAAM,kCAAkC,OAAO,QAC9C,aAAsD;AACtD,QAAI;AACH,YAAM,oCAAoC,EAAE,GAAG,QAAQ,GAAG,SAAA,GAAY;AACtE,eAAS,iCAAiC,IAAI;AAAA,IAC/C,SAAS,OAAO;AACf,UAAI,UAAkB;AACtB,UAAI,iBAAiB,OAAO;AAC3B,kBAAU,YAAY,MAAM,OAAO,EAAE,WAAW,MAAM;AACtD,iBAAS,SAAS,KAAK;AAAA,MACxB;AAAA,IACD;AAAA,EACD;AAGA,QAAM,SAAS;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,oBAAoB;AAAA,IACpB,2BAA2B;AAAA,EAAA;AAG5B,+CAAQ,YAAY,UAAZ,EAAqB,OAAO,QAAS,UAAS;AACvD;AChgBO,MAAM,UAAU,MAA4B,WAAW,WAAW;","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,21]}
@@ -1,5 +1,5 @@
1
1
  import { useContext, useMemo } from "react";
2
- import { L as LanguageContext } from "./languageContext-CbCRCTbP.esm.js";
2
+ import { L as LanguageContext } from "./languageContext-DM_LTp53.esm.js";
3
3
  const createFallbackLanguage = () => ({
4
4
  code: "en",
5
5
  label: "English",
@@ -46,4 +46,4 @@ const useLanguage = () => {
46
46
  export {
47
47
  useLanguage as u
48
48
  };
49
- //# sourceMappingURL=useLangauge-Bie5anLS.esm.js.map
49
+ //# sourceMappingURL=useLangauge-BU_fP3ZM.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLangauge-Bie5anLS.esm.js","sources":["../../src/hooks/useLangauge.ts"],"sourcesContent":["// hooks/useLanguage.ts\nimport { useContext, useMemo } from \"react\";\nimport LanguageContext, { LanguageContextType } from \"../contexts/languageContext\";\n\n// Fallback language object\nconst createFallbackLanguage = () => ({\n code: 'en',\n label: 'English',\n direction: 'ltr' as const,\n});\n\n// Fallback context value when provider is not available\nconst fallbackContextValue = {\n languages: [createFallbackLanguage()],\n currentLanguage: createFallbackLanguage(),\n isLoading: false,\n error: null,\n isFallbackActive: true,\n changeLanguage: (langCode: string) => {\n console.warn(`useLanguage: changeLanguage called but LanguageProvider is not available. Language code: ${langCode}`);\n },\n fetchLanguages: async () => {\n console.warn('useLanguage: fetchLanguages called but LanguageProvider is not available.');\n },\n direction: 'ltr' as const,\n isRtl: false,\n isLtr: true,\n};\n\nexport const useLanguage = (): LanguageContextType => {\n const context = useContext(LanguageContext);\n \n // If context is undefined, provider is not available - use fallback\n if (context === undefined) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'useLanguage: LanguageProvider is not available. Using fallback values. ' +\n 'To enable full language functionality, wrap your app with <ERPUIProvider> or <LanguageProvider>.'\n );\n }\n \n return fallbackContextValue;\n }\n \n const computedValues = useMemo(() => {\n const direction = context.currentLanguage?.direction || 'ltr';\n const isRtl = direction === 'rtl';\n const isLtr = direction === 'ltr';\n \n return { direction, isRtl, isLtr };\n }, [context.currentLanguage]);\n \n return {\n ...context,\n ...computedValues,\n };\n};\n// const withLanguage = <P extends object>(\n// Component: React.ComponentType<P>\n// ) => {\n// return (props: P) => {\n// const languageContext = useLanguage();\n// return <Component {...props} languageContext={languageContext} />;\n// };\n// };\n\n"],"names":[],"mappings":";;AAKA,MAAM,yBAAyB,OAAO;AAAA,EACpC,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AACb;AAGA,MAAM,uBAAuB;AAAA,EAC3B,WAAW,CAAC,wBAAwB;AAAA,EACpC,iBAAiB,uBAAA;AAAA,EACjB,WAAW;AAAA,EACX,OAAO;AAAA,EACP,kBAAkB;AAAA,EAClB,gBAAgB,CAAC,aAAqB;AACpC,YAAQ,KAAK,4FAA4F,QAAQ,EAAE;AAAA,EACrH;AAAA,EACA,gBAAgB,YAAY;AAC1B,YAAQ,KAAK,2EAA2E;AAAA,EAC1F;AAAA,EACA,WAAW;AAAA,EACX,OAAO;AAAA,EACP,OAAO;AACT;AAEO,MAAM,cAAc,MAA2B;AACpD,QAAM,UAAU,WAAW,eAAe;AAG1C,MAAI,YAAY,QAAW;AACzB,QAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,cAAQ;AAAA,QACN;AAAA,MAAA;AAAA,IAGJ;AAEA,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiB,QAAQ,MAAM;;AACnC,UAAM,cAAY,aAAQ,oBAAR,mBAAyB,cAAa;AACxD,UAAM,QAAQ,cAAc;AAC5B,UAAM,QAAQ,cAAc;AAE5B,WAAO,EAAE,WAAW,OAAO,MAAA;AAAA,EAC7B,GAAG,CAAC,QAAQ,eAAe,CAAC;AAE5B,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,EAAA;AAEP;"}
1
+ {"version":3,"file":"useLangauge-BU_fP3ZM.esm.js","sources":["../../src/hooks/useLangauge.ts"],"sourcesContent":["// hooks/useLanguage.ts\nimport { useContext, useMemo } from \"react\";\nimport LanguageContext, { LanguageContextType } from \"../contexts/languageContext\";\n\n// Fallback language object\nconst createFallbackLanguage = () => ({\n code: 'en',\n label: 'English',\n direction: 'ltr' as const,\n});\n\n// Fallback context value when provider is not available\nconst fallbackContextValue = {\n languages: [createFallbackLanguage()],\n currentLanguage: createFallbackLanguage(),\n isLoading: false,\n error: null,\n isFallbackActive: true,\n changeLanguage: (langCode: string) => {\n console.warn(`useLanguage: changeLanguage called but LanguageProvider is not available. Language code: ${langCode}`);\n },\n fetchLanguages: async () => {\n console.warn('useLanguage: fetchLanguages called but LanguageProvider is not available.');\n },\n direction: 'ltr' as const,\n isRtl: false,\n isLtr: true,\n};\n\nexport const useLanguage = (): LanguageContextType => {\n const context = useContext(LanguageContext);\n \n // If context is undefined, provider is not available - use fallback\n if (context === undefined) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'useLanguage: LanguageProvider is not available. Using fallback values. ' +\n 'To enable full language functionality, wrap your app with <ERPUIProvider> or <LanguageProvider>.'\n );\n }\n \n return fallbackContextValue;\n }\n \n const computedValues = useMemo(() => {\n const direction = context.currentLanguage?.direction || 'ltr';\n const isRtl = direction === 'rtl';\n const isLtr = direction === 'ltr';\n \n return { direction, isRtl, isLtr };\n }, [context.currentLanguage]);\n \n return {\n ...context,\n ...computedValues,\n };\n};\n// const withLanguage = <P extends object>(\n// Component: React.ComponentType<P>\n// ) => {\n// return (props: P) => {\n// const languageContext = useLanguage();\n// return <Component {...props} languageContext={languageContext} />;\n// };\n// };\n\n"],"names":[],"mappings":";;AAKA,MAAM,yBAAyB,OAAO;AAAA,EACpC,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AACb;AAGA,MAAM,uBAAuB;AAAA,EAC3B,WAAW,CAAC,wBAAwB;AAAA,EACpC,iBAAiB,uBAAA;AAAA,EACjB,WAAW;AAAA,EACX,OAAO;AAAA,EACP,kBAAkB;AAAA,EAClB,gBAAgB,CAAC,aAAqB;AACpC,YAAQ,KAAK,4FAA4F,QAAQ,EAAE;AAAA,EACrH;AAAA,EACA,gBAAgB,YAAY;AAC1B,YAAQ,KAAK,2EAA2E;AAAA,EAC1F;AAAA,EACA,WAAW;AAAA,EACX,OAAO;AAAA,EACP,OAAO;AACT;AAEO,MAAM,cAAc,MAA2B;AACpD,QAAM,UAAU,WAAW,eAAe;AAG1C,MAAI,YAAY,QAAW;AACzB,QAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,cAAQ;AAAA,QACN;AAAA,MAAA;AAAA,IAGJ;AAEA,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiB,QAAQ,MAAM;;AACnC,UAAM,cAAY,aAAQ,oBAAR,mBAAyB,cAAa;AACxD,UAAM,QAAQ,cAAc;AAC5B,UAAM,QAAQ,cAAc;AAE5B,WAAO,EAAE,WAAW,OAAO,MAAA;AAAA,EAC7B,GAAG,CAAC,QAAQ,eAAe,CAAC;AAE5B,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,EAAA;AAEP;"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  const React = require("react");
3
- const languageContext = require("./languageContext-s_EUKz_A.js");
3
+ const languageContext = require("./languageContext-BP7EvzMv.js");
4
4
  const createFallbackLanguage = () => ({
5
5
  code: "en",
6
6
  label: "English",
@@ -45,4 +45,4 @@ const useLanguage = () => {
45
45
  };
46
46
  };
47
47
  exports.useLanguage = useLanguage;
48
- //# sourceMappingURL=useLangauge-BtG3kyRv.js.map
48
+ //# sourceMappingURL=useLangauge-DwsR1jcv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLangauge-BtG3kyRv.js","sources":["../../src/hooks/useLangauge.ts"],"sourcesContent":["// hooks/useLanguage.ts\nimport { useContext, useMemo } from \"react\";\nimport LanguageContext, { LanguageContextType } from \"../contexts/languageContext\";\n\n// Fallback language object\nconst createFallbackLanguage = () => ({\n code: 'en',\n label: 'English',\n direction: 'ltr' as const,\n});\n\n// Fallback context value when provider is not available\nconst fallbackContextValue = {\n languages: [createFallbackLanguage()],\n currentLanguage: createFallbackLanguage(),\n isLoading: false,\n error: null,\n isFallbackActive: true,\n changeLanguage: (langCode: string) => {\n console.warn(`useLanguage: changeLanguage called but LanguageProvider is not available. Language code: ${langCode}`);\n },\n fetchLanguages: async () => {\n console.warn('useLanguage: fetchLanguages called but LanguageProvider is not available.');\n },\n direction: 'ltr' as const,\n isRtl: false,\n isLtr: true,\n};\n\nexport const useLanguage = (): LanguageContextType => {\n const context = useContext(LanguageContext);\n \n // If context is undefined, provider is not available - use fallback\n if (context === undefined) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'useLanguage: LanguageProvider is not available. Using fallback values. ' +\n 'To enable full language functionality, wrap your app with <ERPUIProvider> or <LanguageProvider>.'\n );\n }\n \n return fallbackContextValue;\n }\n \n const computedValues = useMemo(() => {\n const direction = context.currentLanguage?.direction || 'ltr';\n const isRtl = direction === 'rtl';\n const isLtr = direction === 'ltr';\n \n return { direction, isRtl, isLtr };\n }, [context.currentLanguage]);\n \n return {\n ...context,\n ...computedValues,\n };\n};\n// const withLanguage = <P extends object>(\n// Component: React.ComponentType<P>\n// ) => {\n// return (props: P) => {\n// const languageContext = useLanguage();\n// return <Component {...props} languageContext={languageContext} />;\n// };\n// };\n\n"],"names":["useContext","LanguageContext","useMemo"],"mappings":";;;AAKA,MAAM,yBAAyB,OAAO;AAAA,EACpC,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AACb;AAGA,MAAM,uBAAuB;AAAA,EAC3B,WAAW,CAAC,wBAAwB;AAAA,EACpC,iBAAiB,uBAAA;AAAA,EACjB,WAAW;AAAA,EACX,OAAO;AAAA,EACP,kBAAkB;AAAA,EAClB,gBAAgB,CAAC,aAAqB;AACpC,YAAQ,KAAK,4FAA4F,QAAQ,EAAE;AAAA,EACrH;AAAA,EACA,gBAAgB,YAAY;AAC1B,YAAQ,KAAK,2EAA2E;AAAA,EAC1F;AAAA,EACA,WAAW;AAAA,EACX,OAAO;AAAA,EACP,OAAO;AACT;AAEO,MAAM,cAAc,MAA2B;AACpD,QAAM,UAAUA,MAAAA,WAAWC,+BAAe;AAG1C,MAAI,YAAY,QAAW;AACzB,QAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,cAAQ;AAAA,QACN;AAAA,MAAA;AAAA,IAGJ;AAEA,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiBC,MAAAA,QAAQ,MAAM;;AACnC,UAAM,cAAY,aAAQ,oBAAR,mBAAyB,cAAa;AACxD,UAAM,QAAQ,cAAc;AAC5B,UAAM,QAAQ,cAAc;AAE5B,WAAO,EAAE,WAAW,OAAO,MAAA;AAAA,EAC7B,GAAG,CAAC,QAAQ,eAAe,CAAC;AAE5B,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,EAAA;AAEP;;"}
1
+ {"version":3,"file":"useLangauge-DwsR1jcv.js","sources":["../../src/hooks/useLangauge.ts"],"sourcesContent":["// hooks/useLanguage.ts\nimport { useContext, useMemo } from \"react\";\nimport LanguageContext, { LanguageContextType } from \"../contexts/languageContext\";\n\n// Fallback language object\nconst createFallbackLanguage = () => ({\n code: 'en',\n label: 'English',\n direction: 'ltr' as const,\n});\n\n// Fallback context value when provider is not available\nconst fallbackContextValue = {\n languages: [createFallbackLanguage()],\n currentLanguage: createFallbackLanguage(),\n isLoading: false,\n error: null,\n isFallbackActive: true,\n changeLanguage: (langCode: string) => {\n console.warn(`useLanguage: changeLanguage called but LanguageProvider is not available. Language code: ${langCode}`);\n },\n fetchLanguages: async () => {\n console.warn('useLanguage: fetchLanguages called but LanguageProvider is not available.');\n },\n direction: 'ltr' as const,\n isRtl: false,\n isLtr: true,\n};\n\nexport const useLanguage = (): LanguageContextType => {\n const context = useContext(LanguageContext);\n \n // If context is undefined, provider is not available - use fallback\n if (context === undefined) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'useLanguage: LanguageProvider is not available. Using fallback values. ' +\n 'To enable full language functionality, wrap your app with <ERPUIProvider> or <LanguageProvider>.'\n );\n }\n \n return fallbackContextValue;\n }\n \n const computedValues = useMemo(() => {\n const direction = context.currentLanguage?.direction || 'ltr';\n const isRtl = direction === 'rtl';\n const isLtr = direction === 'ltr';\n \n return { direction, isRtl, isLtr };\n }, [context.currentLanguage]);\n \n return {\n ...context,\n ...computedValues,\n };\n};\n// const withLanguage = <P extends object>(\n// Component: React.ComponentType<P>\n// ) => {\n// return (props: P) => {\n// const languageContext = useLanguage();\n// return <Component {...props} languageContext={languageContext} />;\n// };\n// };\n\n"],"names":["useContext","LanguageContext","useMemo"],"mappings":";;;AAKA,MAAM,yBAAyB,OAAO;AAAA,EACpC,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AACb;AAGA,MAAM,uBAAuB;AAAA,EAC3B,WAAW,CAAC,wBAAwB;AAAA,EACpC,iBAAiB,uBAAA;AAAA,EACjB,WAAW;AAAA,EACX,OAAO;AAAA,EACP,kBAAkB;AAAA,EAClB,gBAAgB,CAAC,aAAqB;AACpC,YAAQ,KAAK,4FAA4F,QAAQ,EAAE;AAAA,EACrH;AAAA,EACA,gBAAgB,YAAY;AAC1B,YAAQ,KAAK,2EAA2E;AAAA,EAC1F;AAAA,EACA,WAAW;AAAA,EACX,OAAO;AAAA,EACP,OAAO;AACT;AAEO,MAAM,cAAc,MAA2B;AACpD,QAAM,UAAUA,MAAAA,WAAWC,+BAAe;AAG1C,MAAI,YAAY,QAAW;AACzB,QAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,cAAQ;AAAA,QACN;AAAA,MAAA;AAAA,IAGJ;AAEA,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiBC,MAAAA,QAAQ,MAAM;;AACnC,UAAM,cAAY,aAAQ,oBAAR,mBAAyB,cAAa;AACxD,UAAM,QAAQ,cAAc;AAC5B,UAAM,QAAQ,cAAc;AAE5B,WAAO,EAAE,WAAW,OAAO,MAAA;AAAA,EAC7B,GAAG,CAAC,QAAQ,eAAe,CAAC;AAE5B,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,EAAA;AAEP;;"}
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  const moment = require("moment");
3
- const useAuth = require("./useAuth-BhsPEB2T.js");
3
+ const useAuth = require("./useAuth-HvZ6U960.js");
4
4
  const _ = require("lodash");
5
5
  const parsePhoneNumberFromString = require("libphonenumber-js");
6
6
  const React = require("react");
7
- const common = require("./common-QvMCr1xx.js");
7
+ const common = require("./common-6VUrYJDq.js");
8
8
  const pathname_rental = require("./pathname.rental-C9fm1WTq.js");
9
- const apiHelper = require("./apiHelper-DSbRnRC1.js");
9
+ const apiHelper = require("./apiHelper-5tNsUtSY.js");
10
10
  const createStub = (name) => () => {
11
11
  console.warn(`${name} is not implemented. This function should be provided by the consuming application.`);
12
12
  return Promise.resolve([]);
@@ -610,4 +610,4 @@ exports.useReduxIntegration = useReduxIntegration;
610
610
  exports.useUniquenessCheck = useUniquenessCheck;
611
611
  exports.validateFormValues = validateFormValues;
612
612
  exports.valueWithCurrency = valueWithCurrency;
613
- //# sourceMappingURL=useReduxIntegration-D6MZKdkS.js.map
613
+ //# sourceMappingURL=useReduxIntegration-JMVTp0lq.js.map