@erpsquad/common 1.8.127 → 1.8.128

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.
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("./common-DIFlz2tP.js"),r=require("react"),t=require("react-redux"),i=require("./use-permissions-BvWyxCIi.js"),n=require("react-router-dom"),l=require("react/jsx-runtime"),o=require("./useAuth-BRuhTz68.js"),s=require("./contexts/index.js"),a=require("./theme-impl-CqsuVVLc.js"),u=require("./store-BBYCCy51.js");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=/* @__PURE__ */c(r);const h=r.createContext({useRedux:!1,themeMode:"light",direction:"ltr"});exports.ERPUIProvider=({children:r,useRedux:i=!1,reduxStore:c,apiClient:v,additionalReducers:m={},theme:p,themeMode:g="light",primaryColor:f,direction:x="ltr",enableAuth:b=!0,enableLanguage:j=!0,enablePages:y=!0,enablePermissions:S=!0,enableRouter:P=!1,enableSnackbar:C=!0,enableCssBaseline:k=!0,snackbarConfig:q={maxSnack:3,anchorOrigin:{vertical:"top",horizontal:"right"},autoHideDuration:5e3},apiConfig:R,routeToColumnsMap:$,routeToResourceMap:M})=>{const A=d.default.useRef(!1);if(R&&!A.current)try{e.initializeApiConfig(R),e.initializeApiBaseUrls(),A.current=!0}catch(B){}const T=d.default.useMemo(()=>i?c||u.createLibraryStore(m,v):null,[i,c,m,v]),E=d.default.useMemo(()=>{if(p)return p;const e="dark"===g?a.createDarkTheme:a.createLightTheme,{theme:r}=e(f,x);return r},[p,g,f,x]),w={useRedux:i,apiClient:v,theme:E,themeMode:g,direction:x,primaryColor:f};let L=/* @__PURE__ */l.jsx(h.Provider,{value:w,children:/* @__PURE__ */l.jsx(a.MUIThemeWrapper,{theme:E,enableCssBaseline:k,children:r})});return C&&(L=/* @__PURE__ */l.jsx(e.SnackbarProvider,{...q,children:L})),y&&(L=/* @__PURE__ */l.jsx(s.PageProvider,{routeToColumnsMap:$,routeToResourceMap:M,children:L})),S&&(L=/* @__PURE__ */l.jsx(s.PermissionsProvider,{children:L})),j&&(L=/* @__PURE__ */l.jsx(o.LanguageProvider,{children:L})),b&&(L=/* @__PURE__ */l.jsx(o.AuthProvider,{children:L})),P&&(L=/* @__PURE__ */l.jsx(n.BrowserRouter,{children:L})),i&&T&&(L=/* @__PURE__ */l.jsx(t.Provider,{store:T,children:L})),L},exports.apiHelper=function(r,t){var i,n;if("rejected"===(null==(i=null==r?void 0:r.meta)?void 0:i.requestStatus)){const t=(()=>{var e;try{return(null==(e=r.error)?void 0:e.message)?JSON.parse(r.error.message):null}catch{return{message:"Something went wrong"}}})(),i=(null==(n=null==t?void 0:t.message)?void 0:n.replace("Error:","").trim())||"Something went wrong";return void e.enqueueSnackbar(i,{variant:"error"})}t&&"function"==typeof t&&t()},exports.useERPUI=()=>r.useContext(h),exports.useGenericDataFetcher=(e,l,o,s="",a,u=!0,c=[])=>{const{activePage:d}=i.usePages(),h=t.useDispatch(),v=n.useLocation(),m=Array.isArray(e)?e:null==d?void 0:d.visible_columns,[p,g]=r.useState(null),[f,x]=r.useState([]);r.useEffect(()=>{p!==(null==v?void 0:v.pathname)&&(g(null==v?void 0:v.pathname),x([]))},[null==v?void 0:v.pathname,p]),r.useEffect(()=>{p===(null==v?void 0:v.pathname)&&(null==m?void 0:m.length)>0&&JSON.stringify(f)!==JSON.stringify(m)&&x(m)},[null==v?void 0:v.pathname,p,m]);const b=r.useCallback(()=>{const{filterQueryString:e}=d||{},r=(null==e?void 0:e.replaceAll(/[()]/g,""))||"",t=r.length?`&${r}`:"";let i=s;return t?i=i?`(${i}${t})`:`(${t})`:i&&(i=`(${i})`),i||void 0},[d.filterQueryString,s]);return r.useCallback(()=>{if(!o)return;const{sort:e=null,search:r}=d;if(!f||0===f.length)return;const t=b(),i=null==f?void 0:f.filter(e=>e.visible),n=(null==i?void 0:i.length)>0?`[${null==i?void 0:i.map(e=>{var r;return(null==(r=e.accessorKey)?void 0:r.includes("."))?e.accessorKey.split(".")[0]:e.accessorKey})}${u?",created_at,created_by_data":""}${(null==c?void 0:c.length)?`,${null==c?void 0:c.join(",")}`:""}]`:void 0,s={skip:(null==d?void 0:d.skip)||(null==l?void 0:l.skip),limit:l.limit,search:r,select:n,...e&&{order:`${e.id}:${e.desc?-1:1}`},...t&&{filters:t}};h(o(s))},[null==f?void 0:f.length,d.sort,d.filterQueryString,d.search,null==d?void 0:d.skip,null==l?void 0:l.limit,h,...a||[]])};
2
+ //# sourceMappingURL=ERPUIProvider-D65Lr3z2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ERPUIProvider-D65Lr3z2.js","sources":["../src/hooks/useDataFetcher.tsx","../src/components/providers/ERPUIProvider.tsx","../src/hooks/apiHelper.ts"],"sourcesContent":["import { useCallback, useState, useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { usePages } from './use-pages';\nimport { useLocation } from 'react-router-dom';\ninterface FilterParams {\n\tskip: number;\n\tlimit: number;\n\tsearch?: string;\n\tselect?: string;\n\torder?: string;\n\tfilters?: string;\n}\n\ninterface ActivePage {\n\tsort?: { id: string; desc: boolean };\n\tfilterQueryString?: string;\n\tsearch?: string;\n\tvisible_columns?: { visible: boolean; accessorKey: string }[];\n}\n\nconst useGenericDataFetcher = (\n\tcols?: ActivePage,\n\tpagination: { skip: number; limit: number },\n\tfetchAction: (filters: FilterParams) => void,\n\tcustomeFilter: any = '',\n\tcustomDeps?: any[],\n\tshowCreatedBy: boolean = true,\n\tcustomFields?: any = []\n) => {\n\tconst { activePage } = usePages();\n\tconst dispatch = useDispatch();\n\tconst location = useLocation();\n\n\t// Determine the source columns - either from cols param (if array) or from activePage\n\tconst sourceColumns = Array.isArray(cols) ? cols : activePage?.visible_columns;\n\n\t// Use state to track path and columns - this ensures re-renders when values change\n\tconst [trackedPath, setTrackedPath] = useState<string | null>(null);\n\tconst [trackedColumns, setTrackedColumns] = useState<any[]>([]);\n\n\tuseEffect(() => {\n\t\t// If path has changed, reset columns to avoid stale columns from previous page\n\t\tif (trackedPath !== location?.pathname) {\n\t\t\tsetTrackedPath(location?.pathname);\n\t\t\tsetTrackedColumns([]); // Reset columns when path changes\n\t\t}\n\t}, [location?.pathname, trackedPath]);\n\n\tuseEffect(() => {\n\t\t// Only update columns if we're on the correct path and columns are available\n\t\tif (trackedPath === location?.pathname && sourceColumns?.length > 0) {\n\t\t\tif (JSON.stringify(trackedColumns) !== JSON.stringify(sourceColumns)) {\n\t\t\t\tsetTrackedColumns(sourceColumns);\n\t\t\t}\n\t\t}\n\t}, [location?.pathname, trackedPath, sourceColumns]);\n\n\tconst getProcessedFilters = useCallback(() => {\n\t\tconst { filterQueryString } = activePage || {};\n\t\tconst queryString = filterQueryString?.replaceAll(/[()]/g, \"\") || '';\n\t\tconst extraQueryString = queryString.length ? `&${queryString}` : '';\n\t\tlet filters = customeFilter;\n\n\t\tif (extraQueryString) {\n\t\t\tfilters = filters ? `(${filters}${extraQueryString})` : `(${extraQueryString})`;\n\t\t} else if (filters) {\n\t\t\tfilters = `(${filters})`;\n\t\t}\n\n\t\treturn filters || undefined;\n\t\t//eslint-disable-next-line\n\t}, [activePage.filterQueryString, customeFilter]);\n\n\tconst fetchData = useCallback(() => {\n\t\tif (!fetchAction) {\n\t\t\treturn;\n\t\t}\n\t\tconst { sort = null, search } = activePage;\n\n\t\t// Don't fetch if trackedColumns are empty (path just changed and columns not yet loaded)\n\t\tif (!trackedColumns || trackedColumns.length === 0) return;\n\n\t\tconst filters = getProcessedFilters();\n\t\tconst visibleColumns = trackedColumns?.filter((vc) => vc.visible)\n\n\t\tconst selectPayload = visibleColumns?.length > 0 ? `[${visibleColumns\n\t\t\t?.map((item) =>\n\t\t\t\titem.accessorKey?.includes(\".\")\n\t\t\t\t\t? item.accessorKey.split(\".\")[0]\n\t\t\t\t\t: item.accessorKey\n\t\t\t)}${showCreatedBy ? ',created_at,created_by_data' : ''}${customFields?.length ? `,${customFields?.join(',')}` : ''}]` : undefined\n\t\tconst payload: FilterParams = {\n\t\t\tskip: activePage?.skip || pagination?.skip,\n\t\t\tlimit: pagination.limit,\n\t\t\tsearch,\n\t\t\tselect: selectPayload,\n\t\t\t...(sort && { order: `${sort.id}:${sort.desc ? -1 : 1}` }),\n\t\t\t...(filters && { filters }),\n\t\t};\n\n\t\tdispatch(fetchAction(payload));\n\t\t//eslint-disable-next-line\n\t}, [\n\t\ttrackedColumns?.length,\n\t\tactivePage.sort,\n\t\tactivePage.filterQueryString,\n\t\tactivePage.search,\n\t\t// pagination?.skip,\n\t\tactivePage?.skip,\n\t\tpagination?.limit,\n\t\tdispatch,\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t...(customDeps || []),\n\t]);\n\n\n\n\treturn fetchData;\n};\n\nexport default useGenericDataFetcher;\n","import React, { createContext, useContext, ReactNode, Suspense } from 'react';\nimport { Provider as ReduxProvider } from 'react-redux';\nimport { ThemeProvider } from '@mui/material/styles';\nimport CssBaseline from '@mui/material/CssBaseline';\nimport { SnackbarProvider } from 'notistack';\nimport { BrowserRouter } from 'react-router-dom';\nimport { createLibraryStore, ApiClientConfig } from '../../redux';\nimport { createLightTheme, createDarkTheme, Color } from '../../theme';\nimport { AuthProvider } from '../../contexts/AuthContext';\nimport { LanguageProvider } from '../../contexts/languageContext';\nimport { PageProvider } from '../../contexts/page-context';\nimport { PermissionsProvider } from '../../contexts/permission-context';\nimport MUIThemeWrapper from '../../theme/themeWrapper';\nimport Loader from '../loader';\nimport useAppTranslations from '../../hooks/use-translations';\nimport '../../utils/i18n';\nimport { initializeApiConfig, ApiConfig } from '../../utils/api-config';\nimport { initializeApiBaseUrls } from '../../utils/api';\n\n// Context for library configuration\ninterface ERPUIContextValue {\n useRedux: boolean;\n apiClient?: ApiClientConfig;\n theme?: any;\n themeMode: 'light' | 'dark';\n direction: 'ltr' | 'rtl';\n primaryColor?: Color;\n}\n\nconst ERPUIContext = createContext<ERPUIContextValue>({\n useRedux: false,\n themeMode: 'light',\n direction: 'ltr',\n});\n\nexport const useERPUI = () => useContext(ERPUIContext);\n\n// Provider props interface\ninterface ERPUIProviderProps {\n children: ReactNode;\n\n // Redux configuration\n useRedux?: boolean;\n reduxStore?: any;\n apiClient?: ApiClientConfig;\n additionalReducers?: Record<string, any>;\n\n // Theme configuration\n theme?: any;\n themeMode?: 'light' | 'dark';\n primaryColor?: Color;\n direction?: 'ltr' | 'rtl';\n\n // Context providers configuration\n enableAuth?: boolean;\n enableLanguage?: boolean;\n enablePages?: boolean;\n enablePermissions?: boolean;\n enableRouter?: boolean;\n enableSnackbar?: boolean;\n\n // Other configuration\n enableCssBaseline?: boolean;\n snackbarConfig?: {\n maxSnack?: number;\n anchorOrigin?: {\n vertical: 'top' | 'bottom';\n horizontal: 'left' | 'center' | 'right';\n };\n autoHideDuration?: number;\n };\n\n // API configuration\n apiConfig?: ApiConfig;\n\n // Route maps\n routeToColumnsMap?: Record<string, any>;\n routeToResourceMap?: Record<string, any>;\n}\n\nexport const ERPUIProvider: React.FC<ERPUIProviderProps> = ({\n children,\n\n // Redux props\n useRedux = false,\n reduxStore,\n apiClient,\n additionalReducers = {},\n\n // Theme props\n theme: customTheme,\n themeMode = 'light',\n primaryColor,\n direction = 'ltr',\n\n // Context providers configuration\n enableAuth = true,\n enableLanguage = true,\n enablePages = true,\n enablePermissions = true,\n enableRouter = false, // Default false since consuming app usually provides router\n enableSnackbar = true,\n\n // Other props\n enableCssBaseline = true,\n snackbarConfig = {\n maxSnack: 3,\n anchorOrigin: { vertical: 'top', horizontal: 'right' },\n autoHideDuration: 5000,\n },\n\n // API configuration\n apiConfig: providedApiConfig,\n routeToColumnsMap,\n routeToResourceMap\n}) => {\n\n // Initialize API configuration synchronously before first render\n // This prevents \"API configuration not initialized\" errors when components\n // try to use the API during initial render\n const isInitialized = React.useRef(false);\n\n if (providedApiConfig && !isInitialized.current) {\n try {\n initializeApiConfig(providedApiConfig);\n initializeApiBaseUrls();\n isInitialized.current = true;\n } catch (error) {\n console.error('Failed to initialize API configuration:', error);\n }\n }\n // const { isLoading } = useAppTranslations();\n // if (isLoading) {\n // return <Loader />;\n // }\n // Create or use provided Redux store\n const store = React.useMemo(() => {\n if (!useRedux) return null;\n\n if (reduxStore) {\n return reduxStore;\n }\n\n return createLibraryStore(additionalReducers, apiClient);\n }, [useRedux, reduxStore, additionalReducers, apiClient]);\n\n // Create theme\n const theme = React.useMemo(() => {\n if (customTheme) {\n return customTheme;\n }\n\n const themeCreator = themeMode === 'dark' ? createDarkTheme : createLightTheme;\n const { theme: generatedTheme } = themeCreator(primaryColor, direction);\n return generatedTheme;\n }, [customTheme, themeMode, primaryColor, direction]);\n\n // Context value\n const contextValue: ERPUIContextValue = {\n useRedux,\n apiClient,\n theme,\n themeMode,\n direction,\n primaryColor,\n };\n\n // Build provider tree from inside out\n let content = (\n <ERPUIContext.Provider value={contextValue}>\n {/* <ThemeProvider theme={theme}>\n {enableCssBaseline && <CssBaseline />} */}\n {/* <Suspense fallback={<Loader />}> */}\n <MUIThemeWrapper theme={theme} enableCssBaseline={enableCssBaseline}>\n {children}\n </MUIThemeWrapper>\n {/* </Suspense> */}\n {/* </ThemeProvider> */}\n </ERPUIContext.Provider>\n );\n\n // Wrap with snackbar provider if enabled\n if (enableSnackbar) {\n content = (\n <SnackbarProvider {...snackbarConfig}>\n {content}\n </SnackbarProvider>\n );\n }\n\n // Wrap with page provider if enabled\n if (enablePages) {\n content = (\n <PageProvider routeToColumnsMap={routeToColumnsMap} routeToResourceMap={routeToResourceMap}>\n {content}\n </PageProvider>\n );\n }\n\n // Wrap with permissions provider if enabled\n if (enablePermissions) {\n content = (\n <PermissionsProvider>\n {content}\n </PermissionsProvider>\n );\n }\n\n // Wrap with language provider if enabled\n if (enableLanguage) {\n content = (\n <LanguageProvider>\n {content}\n </LanguageProvider>\n );\n }\n\n // Wrap with auth provider if enabled\n if (enableAuth) {\n content = (\n <AuthProvider>\n {content}\n </AuthProvider>\n );\n }\n\n // Wrap with router if enabled\n if (enableRouter) {\n content = (\n <BrowserRouter>\n {content}\n </BrowserRouter>\n );\n }\n\n // Wrap with Redux provider if enabled\n if (useRedux && store) {\n content = (\n <ReduxProvider store={store}>\n {content}\n </ReduxProvider>\n );\n }\n\n return content;\n};\n\nexport default ERPUIProvider;","import { enqueueSnackbar } from \"notistack\";\n\ntype ApiResponse = {\n meta?: {\n requestStatus?: string;\n };\n error?: {\n message?: string;\n };\n payload?:any\n};\n\ntype Callback = () => void;\n\nexport function apiHelper(res: ApiResponse, callBack?: Callback): void {\n if (res?.meta?.requestStatus === \"rejected\") {\n const errorMessage = (() => {\n try {\n return res.error?.message ? JSON.parse(res.error.message) : null;\n } catch {\n return { message: \"Something went wrong\" };\n }\n })();\n\n const message = errorMessage?.message?.replace(\"Error:\", \"\").trim() || \"Something went wrong\";\n\n enqueueSnackbar(message, {\n variant: \"error\",\n });\n return\n }\n\n if (callBack && typeof callBack === \"function\") {\n callBack();\n } else if (callBack) {\n console.warn(\"Provided callBack is not a function.\");\n }\n}\n"],"names":["ERPUIContext","createContext","useRedux","themeMode","direction","children","reduxStore","apiClient","additionalReducers","theme","customTheme","primaryColor","enableAuth","enableLanguage","enablePages","enablePermissions","enableRouter","enableSnackbar","enableCssBaseline","snackbarConfig","maxSnack","anchorOrigin","vertical","horizontal","autoHideDuration","apiConfig","providedApiConfig","routeToColumnsMap","routeToResourceMap","isInitialized","React","useRef","current","initializeApiConfig","initializeApiBaseUrls","error","store","useMemo","createLibraryStore","themeCreator","createDarkTheme","createLightTheme","generatedTheme","contextValue","content","jsx","Provider","value","MUIThemeWrapper","SnackbarProvider","PageProvider","PermissionsProvider","LanguageProvider","AuthProvider","BrowserRouter","ReduxProvider","res","callBack","_a","meta","requestStatus","errorMessage","message","JSON","parse","_b","replace","trim","enqueueSnackbar","variant","useContext","cols","pagination","fetchAction","customeFilter","customDeps","showCreatedBy","customFields","activePage","usePages","dispatch","useDispatch","location","useLocation","sourceColumns","Array","isArray","visible_columns","trackedPath","setTrackedPath","useState","trackedColumns","setTrackedColumns","useEffect","pathname","length","stringify","getProcessedFilters","useCallback","filterQueryString","queryString","replaceAll","extraQueryString","filters","sort","search","visibleColumns","filter","vc","visible","selectPayload","map","item","accessorKey","includes","split","join","payload","skip","limit","select","order","id","desc"],"mappings":"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"}
@@ -35,7 +35,7 @@ const useGenericDataFetcher = (cols, pagination, fetchAction, customeFilter = ""
35
35
  const { activePage } = usePages();
36
36
  const dispatch = useDispatch();
37
37
  const location = useLocation();
38
- const updatedCols = Array.isArray(cols) ? cols : activePage == null ? void 0 : activePage.visible_columns;
38
+ const sourceColumns = Array.isArray(cols) ? cols : activePage == null ? void 0 : activePage.visible_columns;
39
39
  const [trackedPath, setTrackedPath] = useState(null);
40
40
  const [trackedColumns, setTrackedColumns] = useState([]);
41
41
  useEffect(() => {
@@ -45,12 +45,12 @@ const useGenericDataFetcher = (cols, pagination, fetchAction, customeFilter = ""
45
45
  }
46
46
  }, [location == null ? void 0 : location.pathname, trackedPath]);
47
47
  useEffect(() => {
48
- if (trackedPath === (location == null ? void 0 : location.pathname) && (updatedCols == null ? void 0 : updatedCols.length) > 0) {
49
- if (JSON.stringify(trackedColumns) !== JSON.stringify(updatedCols)) {
50
- setTrackedColumns(updatedCols);
48
+ if (trackedPath === (location == null ? void 0 : location.pathname) && (sourceColumns == null ? void 0 : sourceColumns.length) > 0) {
49
+ if (JSON.stringify(trackedColumns) !== JSON.stringify(sourceColumns)) {
50
+ setTrackedColumns(sourceColumns);
51
51
  }
52
52
  }
53
- }, [location == null ? void 0 : location.pathname, trackedPath, updatedCols]);
53
+ }, [location == null ? void 0 : location.pathname, trackedPath, sourceColumns]);
54
54
  const getProcessedFilters = useCallback(() => {
55
55
  const { filterQueryString } = activePage || {};
56
56
  const queryString = (filterQueryString == null ? void 0 : filterQueryString.replaceAll(/[()]/g, "")) || "";
@@ -64,19 +64,17 @@ const useGenericDataFetcher = (cols, pagination, fetchAction, customeFilter = ""
64
64
  return filters || void 0;
65
65
  }, [activePage.filterQueryString, customeFilter]);
66
66
  const fetchData = useCallback(() => {
67
- var _a;
68
67
  if (!fetchAction) {
69
68
  return;
70
69
  }
71
70
  const { sort = null, search } = activePage;
72
- const currentColumns = trackedColumns;
73
- if (!Array.isArray(cols) && (!currentColumns || currentColumns.length === 0)) return;
71
+ if (!trackedColumns || trackedColumns.length === 0) return;
74
72
  const filters = getProcessedFilters();
75
- const visibleColumns = (_a = Array.isArray(cols) ? cols : currentColumns) == null ? void 0 : _a.filter((vc) => vc.visible);
73
+ const visibleColumns = trackedColumns == null ? void 0 : trackedColumns.filter((vc) => vc.visible);
76
74
  const selectPayload = (visibleColumns == null ? void 0 : visibleColumns.length) > 0 ? `[${visibleColumns == null ? void 0 : visibleColumns.map(
77
75
  (item) => {
78
- var _a2;
79
- return ((_a2 = item.accessorKey) == null ? void 0 : _a2.includes(".")) ? item.accessorKey.split(".")[0] : item.accessorKey;
76
+ var _a;
77
+ return ((_a = item.accessorKey) == null ? void 0 : _a.includes(".")) ? item.accessorKey.split(".")[0] : item.accessorKey;
80
78
  }
81
79
  )}${showCreatedBy ? ",created_at,created_by_data" : ""}${(customFields == null ? void 0 : customFields.length) ? `,${customFields == null ? void 0 : customFields.join(",")}` : ""}]` : void 0;
82
80
  const payload = {
@@ -203,4 +201,4 @@ export {
203
201
  apiHelper as b,
204
202
  useERPUI as u
205
203
  };
206
- //# sourceMappingURL=ERPUIProvider-yIbNefmg.esm.js.map
204
+ //# sourceMappingURL=ERPUIProvider-QCBk_IlP.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ERPUIProvider-QCBk_IlP.esm.js","sources":["../src/hooks/apiHelper.ts","../src/hooks/useDataFetcher.tsx","../src/components/providers/ERPUIProvider.tsx"],"sourcesContent":["import { enqueueSnackbar } from \"notistack\";\n\ntype ApiResponse = {\n meta?: {\n requestStatus?: string;\n };\n error?: {\n message?: string;\n };\n payload?:any\n};\n\ntype Callback = () => void;\n\nexport function apiHelper(res: ApiResponse, callBack?: Callback): void {\n if (res?.meta?.requestStatus === \"rejected\") {\n const errorMessage = (() => {\n try {\n return res.error?.message ? JSON.parse(res.error.message) : null;\n } catch {\n return { message: \"Something went wrong\" };\n }\n })();\n\n const message = errorMessage?.message?.replace(\"Error:\", \"\").trim() || \"Something went wrong\";\n\n enqueueSnackbar(message, {\n variant: \"error\",\n });\n return\n }\n\n if (callBack && typeof callBack === \"function\") {\n callBack();\n } else if (callBack) {\n console.warn(\"Provided callBack is not a function.\");\n }\n}\n","import { useCallback, useState, useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { usePages } from './use-pages';\nimport { useLocation } from 'react-router-dom';\ninterface FilterParams {\n\tskip: number;\n\tlimit: number;\n\tsearch?: string;\n\tselect?: string;\n\torder?: string;\n\tfilters?: string;\n}\n\ninterface ActivePage {\n\tsort?: { id: string; desc: boolean };\n\tfilterQueryString?: string;\n\tsearch?: string;\n\tvisible_columns?: { visible: boolean; accessorKey: string }[];\n}\n\nconst useGenericDataFetcher = (\n\tcols?: ActivePage,\n\tpagination: { skip: number; limit: number },\n\tfetchAction: (filters: FilterParams) => void,\n\tcustomeFilter: any = '',\n\tcustomDeps?: any[],\n\tshowCreatedBy: boolean = true,\n\tcustomFields?: any = []\n) => {\n\tconst { activePage } = usePages();\n\tconst dispatch = useDispatch();\n\tconst location = useLocation();\n\n\t// Determine the source columns - either from cols param (if array) or from activePage\n\tconst sourceColumns = Array.isArray(cols) ? cols : activePage?.visible_columns;\n\n\t// Use state to track path and columns - this ensures re-renders when values change\n\tconst [trackedPath, setTrackedPath] = useState<string | null>(null);\n\tconst [trackedColumns, setTrackedColumns] = useState<any[]>([]);\n\n\tuseEffect(() => {\n\t\t// If path has changed, reset columns to avoid stale columns from previous page\n\t\tif (trackedPath !== location?.pathname) {\n\t\t\tsetTrackedPath(location?.pathname);\n\t\t\tsetTrackedColumns([]); // Reset columns when path changes\n\t\t}\n\t}, [location?.pathname, trackedPath]);\n\n\tuseEffect(() => {\n\t\t// Only update columns if we're on the correct path and columns are available\n\t\tif (trackedPath === location?.pathname && sourceColumns?.length > 0) {\n\t\t\tif (JSON.stringify(trackedColumns) !== JSON.stringify(sourceColumns)) {\n\t\t\t\tsetTrackedColumns(sourceColumns);\n\t\t\t}\n\t\t}\n\t}, [location?.pathname, trackedPath, sourceColumns]);\n\n\tconst getProcessedFilters = useCallback(() => {\n\t\tconst { filterQueryString } = activePage || {};\n\t\tconst queryString = filterQueryString?.replaceAll(/[()]/g, \"\") || '';\n\t\tconst extraQueryString = queryString.length ? `&${queryString}` : '';\n\t\tlet filters = customeFilter;\n\n\t\tif (extraQueryString) {\n\t\t\tfilters = filters ? `(${filters}${extraQueryString})` : `(${extraQueryString})`;\n\t\t} else if (filters) {\n\t\t\tfilters = `(${filters})`;\n\t\t}\n\n\t\treturn filters || undefined;\n\t\t//eslint-disable-next-line\n\t}, [activePage.filterQueryString, customeFilter]);\n\n\tconst fetchData = useCallback(() => {\n\t\tif (!fetchAction) {\n\t\t\treturn;\n\t\t}\n\t\tconst { sort = null, search } = activePage;\n\n\t\t// Don't fetch if trackedColumns are empty (path just changed and columns not yet loaded)\n\t\tif (!trackedColumns || trackedColumns.length === 0) return;\n\n\t\tconst filters = getProcessedFilters();\n\t\tconst visibleColumns = trackedColumns?.filter((vc) => vc.visible)\n\n\t\tconst selectPayload = visibleColumns?.length > 0 ? `[${visibleColumns\n\t\t\t?.map((item) =>\n\t\t\t\titem.accessorKey?.includes(\".\")\n\t\t\t\t\t? item.accessorKey.split(\".\")[0]\n\t\t\t\t\t: item.accessorKey\n\t\t\t)}${showCreatedBy ? ',created_at,created_by_data' : ''}${customFields?.length ? `,${customFields?.join(',')}` : ''}]` : undefined\n\t\tconst payload: FilterParams = {\n\t\t\tskip: activePage?.skip || pagination?.skip,\n\t\t\tlimit: pagination.limit,\n\t\t\tsearch,\n\t\t\tselect: selectPayload,\n\t\t\t...(sort && { order: `${sort.id}:${sort.desc ? -1 : 1}` }),\n\t\t\t...(filters && { filters }),\n\t\t};\n\n\t\tdispatch(fetchAction(payload));\n\t\t//eslint-disable-next-line\n\t}, [\n\t\ttrackedColumns?.length,\n\t\tactivePage.sort,\n\t\tactivePage.filterQueryString,\n\t\tactivePage.search,\n\t\t// pagination?.skip,\n\t\tactivePage?.skip,\n\t\tpagination?.limit,\n\t\tdispatch,\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t...(customDeps || []),\n\t]);\n\n\n\n\treturn fetchData;\n};\n\nexport default useGenericDataFetcher;\n","import React, { createContext, useContext, ReactNode, Suspense } from 'react';\nimport { Provider as ReduxProvider } from 'react-redux';\nimport { ThemeProvider } from '@mui/material/styles';\nimport CssBaseline from '@mui/material/CssBaseline';\nimport { SnackbarProvider } from 'notistack';\nimport { BrowserRouter } from 'react-router-dom';\nimport { createLibraryStore, ApiClientConfig } from '../../redux';\nimport { createLightTheme, createDarkTheme, Color } from '../../theme';\nimport { AuthProvider } from '../../contexts/AuthContext';\nimport { LanguageProvider } from '../../contexts/languageContext';\nimport { PageProvider } from '../../contexts/page-context';\nimport { PermissionsProvider } from '../../contexts/permission-context';\nimport MUIThemeWrapper from '../../theme/themeWrapper';\nimport Loader from '../loader';\nimport useAppTranslations from '../../hooks/use-translations';\nimport '../../utils/i18n';\nimport { initializeApiConfig, ApiConfig } from '../../utils/api-config';\nimport { initializeApiBaseUrls } from '../../utils/api';\n\n// Context for library configuration\ninterface ERPUIContextValue {\n useRedux: boolean;\n apiClient?: ApiClientConfig;\n theme?: any;\n themeMode: 'light' | 'dark';\n direction: 'ltr' | 'rtl';\n primaryColor?: Color;\n}\n\nconst ERPUIContext = createContext<ERPUIContextValue>({\n useRedux: false,\n themeMode: 'light',\n direction: 'ltr',\n});\n\nexport const useERPUI = () => useContext(ERPUIContext);\n\n// Provider props interface\ninterface ERPUIProviderProps {\n children: ReactNode;\n\n // Redux configuration\n useRedux?: boolean;\n reduxStore?: any;\n apiClient?: ApiClientConfig;\n additionalReducers?: Record<string, any>;\n\n // Theme configuration\n theme?: any;\n themeMode?: 'light' | 'dark';\n primaryColor?: Color;\n direction?: 'ltr' | 'rtl';\n\n // Context providers configuration\n enableAuth?: boolean;\n enableLanguage?: boolean;\n enablePages?: boolean;\n enablePermissions?: boolean;\n enableRouter?: boolean;\n enableSnackbar?: boolean;\n\n // Other configuration\n enableCssBaseline?: boolean;\n snackbarConfig?: {\n maxSnack?: number;\n anchorOrigin?: {\n vertical: 'top' | 'bottom';\n horizontal: 'left' | 'center' | 'right';\n };\n autoHideDuration?: number;\n };\n\n // API configuration\n apiConfig?: ApiConfig;\n\n // Route maps\n routeToColumnsMap?: Record<string, any>;\n routeToResourceMap?: Record<string, any>;\n}\n\nexport const ERPUIProvider: React.FC<ERPUIProviderProps> = ({\n children,\n\n // Redux props\n useRedux = false,\n reduxStore,\n apiClient,\n additionalReducers = {},\n\n // Theme props\n theme: customTheme,\n themeMode = 'light',\n primaryColor,\n direction = 'ltr',\n\n // Context providers configuration\n enableAuth = true,\n enableLanguage = true,\n enablePages = true,\n enablePermissions = true,\n enableRouter = false, // Default false since consuming app usually provides router\n enableSnackbar = true,\n\n // Other props\n enableCssBaseline = true,\n snackbarConfig = {\n maxSnack: 3,\n anchorOrigin: { vertical: 'top', horizontal: 'right' },\n autoHideDuration: 5000,\n },\n\n // API configuration\n apiConfig: providedApiConfig,\n routeToColumnsMap,\n routeToResourceMap\n}) => {\n\n // Initialize API configuration synchronously before first render\n // This prevents \"API configuration not initialized\" errors when components\n // try to use the API during initial render\n const isInitialized = React.useRef(false);\n\n if (providedApiConfig && !isInitialized.current) {\n try {\n initializeApiConfig(providedApiConfig);\n initializeApiBaseUrls();\n isInitialized.current = true;\n } catch (error) {\n console.error('Failed to initialize API configuration:', error);\n }\n }\n // const { isLoading } = useAppTranslations();\n // if (isLoading) {\n // return <Loader />;\n // }\n // Create or use provided Redux store\n const store = React.useMemo(() => {\n if (!useRedux) return null;\n\n if (reduxStore) {\n return reduxStore;\n }\n\n return createLibraryStore(additionalReducers, apiClient);\n }, [useRedux, reduxStore, additionalReducers, apiClient]);\n\n // Create theme\n const theme = React.useMemo(() => {\n if (customTheme) {\n return customTheme;\n }\n\n const themeCreator = themeMode === 'dark' ? createDarkTheme : createLightTheme;\n const { theme: generatedTheme } = themeCreator(primaryColor, direction);\n return generatedTheme;\n }, [customTheme, themeMode, primaryColor, direction]);\n\n // Context value\n const contextValue: ERPUIContextValue = {\n useRedux,\n apiClient,\n theme,\n themeMode,\n direction,\n primaryColor,\n };\n\n // Build provider tree from inside out\n let content = (\n <ERPUIContext.Provider value={contextValue}>\n {/* <ThemeProvider theme={theme}>\n {enableCssBaseline && <CssBaseline />} */}\n {/* <Suspense fallback={<Loader />}> */}\n <MUIThemeWrapper theme={theme} enableCssBaseline={enableCssBaseline}>\n {children}\n </MUIThemeWrapper>\n {/* </Suspense> */}\n {/* </ThemeProvider> */}\n </ERPUIContext.Provider>\n );\n\n // Wrap with snackbar provider if enabled\n if (enableSnackbar) {\n content = (\n <SnackbarProvider {...snackbarConfig}>\n {content}\n </SnackbarProvider>\n );\n }\n\n // Wrap with page provider if enabled\n if (enablePages) {\n content = (\n <PageProvider routeToColumnsMap={routeToColumnsMap} routeToResourceMap={routeToResourceMap}>\n {content}\n </PageProvider>\n );\n }\n\n // Wrap with permissions provider if enabled\n if (enablePermissions) {\n content = (\n <PermissionsProvider>\n {content}\n </PermissionsProvider>\n );\n }\n\n // Wrap with language provider if enabled\n if (enableLanguage) {\n content = (\n <LanguageProvider>\n {content}\n </LanguageProvider>\n );\n }\n\n // Wrap with auth provider if enabled\n if (enableAuth) {\n content = (\n <AuthProvider>\n {content}\n </AuthProvider>\n );\n }\n\n // Wrap with router if enabled\n if (enableRouter) {\n content = (\n <BrowserRouter>\n {content}\n </BrowserRouter>\n );\n }\n\n // Wrap with Redux provider if enabled\n if (useRedux && store) {\n content = (\n <ReduxProvider store={store}>\n {content}\n </ReduxProvider>\n );\n }\n\n return content;\n};\n\nexport default ERPUIProvider;"],"names":["_a","React","ReduxProvider"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { aP as styled_default } from "./uom-field-wrapper-qA7n6dD5.esm.js";
1
+ import { aP as styled_default } from "./uom-field-wrapper-BwLTz-Lw.esm.js";
2
2
  import * as React from "react";
3
3
  import React__default from "react";
4
4
  import { q as getAugmentedNamespace, r as getDefaultExportFromCjs } from "./DefaultPropsProvider-B-lZfBe1.esm.js";
@@ -46093,4 +46093,4 @@ var article_cell_editor_default = ArticleCellEditor;
46093
46093
  export {
46094
46094
  article_cell_editor_default as default
46095
46095
  };
46096
- //# sourceMappingURL=article-cell-editor-JDI676YI-DpxCtF8M.esm.js.map
46096
+ //# sourceMappingURL=article-cell-editor-JDI676YI-BZcaqafu.esm.js.map