@erpsquad/common 1.8.108 → 1.8.109

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 (242) hide show
  1. package/dist/_virtual/index/index.esm10.js +4 -2
  2. package/dist/_virtual/index/index.esm10.js.map +1 -1
  3. package/dist/_virtual/index/index.esm11.js +2 -4
  4. package/dist/_virtual/index/index.esm11.js.map +1 -1
  5. package/dist/_virtual/index/index10.js +1 -1
  6. package/dist/_virtual/index/index11.js +1 -1
  7. package/dist/components/accordion/accordion.d.ts +1 -1
  8. package/dist/components/action-bar/action-bar.d.ts +1 -1
  9. package/dist/components/checkbox/checkbox.d.ts +1 -1
  10. package/dist/components/date-picker/date-picker.d.ts +1 -1
  11. package/dist/components/footer/footer.d.ts +1 -1
  12. package/dist/components/form-control/form-builder/form-builder-element/media.d.ts +1 -1
  13. package/dist/components/form-control/form-builder/form-builder-element/phone.d.ts +1 -1
  14. package/dist/components/form-control/form-builder/form-builder-element/select.d.ts +1 -1
  15. package/dist/components/form-control/form-builder/form-builder-element/text.d.ts +1 -1
  16. package/dist/components/form-control/form-builder/form-builder-element/time.d.ts +1 -1
  17. package/dist/components/form-control/form-parser/form-section/index.esm.js +4 -5
  18. package/dist/components/form-control/form-parser/form-section/index.esm.js.map +1 -1
  19. package/dist/components/form-control/form-parser/form-section/index.js +22 -22
  20. package/dist/components/form-control/form-parser/form-section/index.js.map +1 -1
  21. package/dist/components/form-control/form-parser/form-switcher.d.ts +1 -1
  22. package/dist/components/icons/action-arrow.d.ts +3 -3
  23. package/dist/components/icons/add-circle.d.ts +3 -3
  24. package/dist/components/icons/arrow-bidirectional.d.ts +3 -3
  25. package/dist/components/icons/arrow-circle-down.d.ts +3 -3
  26. package/dist/components/icons/arrow-down-three.d.ts +3 -3
  27. package/dist/components/icons/arrow-down-two.d.ts +3 -3
  28. package/dist/components/icons/arrow-down.d.ts +3 -3
  29. package/dist/components/icons/arrow-up-down.d.ts +3 -3
  30. package/dist/components/icons/arrow-up-two.d.ts +3 -3
  31. package/dist/components/icons/assignments.d.ts +3 -3
  32. package/dist/components/icons/blank-circle.d.ts +3 -3
  33. package/dist/components/icons/block-filled.d.ts +3 -3
  34. package/dist/components/icons/calendar-add.d.ts +3 -3
  35. package/dist/components/icons/calendar.d.ts +3 -3
  36. package/dist/components/icons/checkbox-square.d.ts +3 -3
  37. package/dist/components/icons/circular-arrow-setting.d.ts +3 -3
  38. package/dist/components/icons/clock.d.ts +3 -3
  39. package/dist/components/icons/close.d.ts +3 -3
  40. package/dist/components/icons/coin-outline.d.ts +3 -3
  41. package/dist/components/icons/copy.d.ts +3 -3
  42. package/dist/components/icons/coupon.d.ts +3 -3
  43. package/dist/components/icons/cross-hire.d.ts +3 -3
  44. package/dist/components/icons/custom-styled-icon.d.ts +3 -3
  45. package/dist/components/icons/dashboard.d.ts +3 -3
  46. package/dist/components/icons/document-download.d.ts +3 -3
  47. package/dist/components/icons/document.d.ts +3 -3
  48. package/dist/components/icons/dollar-circle-filled.d.ts +3 -3
  49. package/dist/components/icons/dollar-circle.d.ts +3 -3
  50. package/dist/components/icons/edit.d.ts +3 -3
  51. package/dist/components/icons/email.d.ts +3 -3
  52. package/dist/components/icons/export.d.ts +3 -3
  53. package/dist/components/icons/eye-off.d.ts +3 -3
  54. package/dist/components/icons/eye-plus-circle.d.ts +3 -3
  55. package/dist/components/icons/eye.d.ts +3 -3
  56. package/dist/components/icons/filled-circle.d.ts +3 -3
  57. package/dist/components/icons/filter-remove.d.ts +3 -3
  58. package/dist/components/icons/filter.d.ts +3 -3
  59. package/dist/components/icons/folder-save.d.ts +3 -3
  60. package/dist/components/icons/grid.d.ts +3 -3
  61. package/dist/components/icons/hashtag.d.ts +3 -3
  62. package/dist/components/icons/image.d.ts +3 -3
  63. package/dist/components/icons/import.d.ts +3 -3
  64. package/dist/components/icons/info-circle.d.ts +3 -3
  65. package/dist/components/icons/info.d.ts +3 -3
  66. package/dist/components/icons/link-horizontal.d.ts +3 -3
  67. package/dist/components/icons/link.d.ts +3 -3
  68. package/dist/components/icons/location.d.ts +3 -3
  69. package/dist/components/icons/lowest-lead-time.d.ts +3 -3
  70. package/dist/components/icons/lowest-min-qty.d.ts +3 -3
  71. package/dist/components/icons/lowest-price.d.ts +3 -3
  72. package/dist/components/icons/more.d.ts +3 -3
  73. package/dist/components/icons/notification.d.ts +3 -3
  74. package/dist/components/icons/paper-clip.d.ts +3 -3
  75. package/dist/components/icons/paragraph.d.ts +3 -3
  76. package/dist/components/icons/payment-request.d.ts +3 -3
  77. package/dist/components/icons/phone.d.ts +3 -3
  78. package/dist/components/icons/printer.d.ts +3 -3
  79. package/dist/components/icons/process-calendar.d.ts +3 -3
  80. package/dist/components/icons/promotion.d.ts +3 -3
  81. package/dist/components/icons/radio-button.d.ts +3 -3
  82. package/dist/components/icons/receipt-filled.d.ts +3 -3
  83. package/dist/components/icons/receipt-outline.d.ts +3 -3
  84. package/dist/components/icons/receipt.d.ts +3 -3
  85. package/dist/components/icons/refresh-icon.d.ts +3 -3
  86. package/dist/components/icons/replace.d.ts +3 -3
  87. package/dist/components/icons/save.d.ts +3 -3
  88. package/dist/components/icons/search-status.d.ts +3 -3
  89. package/dist/components/icons/search.d.ts +3 -3
  90. package/dist/components/icons/settings-fallback.d.ts +3 -3
  91. package/dist/components/icons/sort-arrow-icon.d.ts +3 -3
  92. package/dist/components/icons/stacked-layer.d.ts +3 -3
  93. package/dist/components/icons/start-filled.d.ts +3 -3
  94. package/dist/components/icons/three-dot-icon.d.ts +3 -3
  95. package/dist/components/icons/tick-circle-filled.d.ts +3 -3
  96. package/dist/components/icons/tick-circle.d.ts +3 -3
  97. package/dist/components/icons/tick-octagon.d.ts +3 -3
  98. package/dist/components/icons/tick.d.ts +3 -3
  99. package/dist/components/icons/toggle-switch.d.ts +3 -3
  100. package/dist/components/icons/trash.d.ts +3 -3
  101. package/dist/components/icons/wave.d.ts +3 -3
  102. package/dist/components/icons/with-out-tick-octagon.d.ts +3 -3
  103. package/dist/components/icons/work-centre.d.ts +3 -3
  104. package/dist/components/location-select.d.ts +1 -1
  105. package/dist/components/material-editable-table/material-editable-table/index.esm.js +51 -27
  106. package/dist/components/material-editable-table/material-editable-table/index.esm.js.map +1 -1
  107. package/dist/components/material-editable-table/material-editable-table/index.js +17 -17
  108. package/dist/components/material-editable-table/material-editable-table/index.js.map +1 -1
  109. package/dist/components/material-editable-table/material-editable-table.d.ts +2 -1
  110. package/dist/components/material-table/material-table.d.ts +1 -1
  111. package/dist/components/phone-input/phone-input.d.ts +1 -1
  112. package/dist/components/providers/ERPUIProvider/index.esm.js +2 -4
  113. package/dist/components/providers/ERPUIProvider/index.esm.js.map +1 -1
  114. package/dist/components/providers/ERPUIProvider/index.js +1 -1
  115. package/dist/components/providers/ERPUIProvider/index.js.map +1 -1
  116. package/dist/components/providers/ERPUIProvider.d.ts +0 -2
  117. package/dist/components/radio/radio.d.ts +1 -1
  118. package/dist/components/select/select.d.ts +1 -1
  119. package/dist/components/switches/android-12-switch.d.ts +1 -3
  120. package/dist/components/text-field/text-field.d.ts +1 -1
  121. package/dist/components/time-picker/time-picker.d.ts +1 -1
  122. package/dist/components/upload-media/upload-media.d.ts +1 -1
  123. package/dist/contexts/page-context/index.esm.js +5 -5
  124. package/dist/contexts/page-context/index.esm.js.map +1 -1
  125. package/dist/contexts/page-context/index.js +1 -1
  126. package/dist/contexts/page-context/index.js.map +1 -1
  127. package/dist/contexts/page-context.d.ts +0 -2
  128. package/dist/hooks/apiHelper/index.esm.js.map +1 -1
  129. package/dist/hooks/apiHelper/index.js.map +1 -1
  130. package/dist/node_modules/@asseinfo/react-kanban/dist/index/index.esm.js +1 -1
  131. package/dist/node_modules/@asseinfo/react-kanban/dist/index/index.js +1 -1
  132. package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.esm.js +1 -1
  133. package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.js +1 -1
  134. package/dist/src/components/accordion/accordion.d.ts +1 -1
  135. package/dist/src/components/action-bar/action-bar.d.ts +1 -1
  136. package/dist/src/components/checkbox/checkbox.d.ts +1 -1
  137. package/dist/src/components/date-picker/date-picker.d.ts +1 -1
  138. package/dist/src/components/footer/footer.d.ts +1 -1
  139. package/dist/src/components/form-control/form-builder/form-builder-element/media.d.ts +1 -1
  140. package/dist/src/components/form-control/form-builder/form-builder-element/phone.d.ts +1 -1
  141. package/dist/src/components/form-control/form-builder/form-builder-element/select.d.ts +1 -1
  142. package/dist/src/components/form-control/form-builder/form-builder-element/text.d.ts +1 -1
  143. package/dist/src/components/form-control/form-builder/form-builder-element/time.d.ts +1 -1
  144. package/dist/src/components/form-control/form-parser/form-switcher.d.ts +1 -1
  145. package/dist/src/components/icons/action-arrow.d.ts +3 -3
  146. package/dist/src/components/icons/add-circle.d.ts +3 -3
  147. package/dist/src/components/icons/arrow-bidirectional.d.ts +3 -3
  148. package/dist/src/components/icons/arrow-circle-down.d.ts +3 -3
  149. package/dist/src/components/icons/arrow-down-three.d.ts +3 -3
  150. package/dist/src/components/icons/arrow-down-two.d.ts +3 -3
  151. package/dist/src/components/icons/arrow-down.d.ts +3 -3
  152. package/dist/src/components/icons/arrow-up-down.d.ts +3 -3
  153. package/dist/src/components/icons/arrow-up-two.d.ts +3 -3
  154. package/dist/src/components/icons/assignments.d.ts +3 -3
  155. package/dist/src/components/icons/blank-circle.d.ts +3 -3
  156. package/dist/src/components/icons/block-filled.d.ts +3 -3
  157. package/dist/src/components/icons/calendar-add.d.ts +3 -3
  158. package/dist/src/components/icons/calendar.d.ts +3 -3
  159. package/dist/src/components/icons/checkbox-square.d.ts +3 -3
  160. package/dist/src/components/icons/circular-arrow-setting.d.ts +3 -3
  161. package/dist/src/components/icons/clock.d.ts +3 -3
  162. package/dist/src/components/icons/close.d.ts +3 -3
  163. package/dist/src/components/icons/coin-outline.d.ts +3 -3
  164. package/dist/src/components/icons/copy.d.ts +3 -3
  165. package/dist/src/components/icons/coupon.d.ts +3 -3
  166. package/dist/src/components/icons/cross-hire.d.ts +3 -3
  167. package/dist/src/components/icons/custom-styled-icon.d.ts +3 -3
  168. package/dist/src/components/icons/dashboard.d.ts +3 -3
  169. package/dist/src/components/icons/document-download.d.ts +3 -3
  170. package/dist/src/components/icons/document.d.ts +3 -3
  171. package/dist/src/components/icons/dollar-circle-filled.d.ts +3 -3
  172. package/dist/src/components/icons/dollar-circle.d.ts +3 -3
  173. package/dist/src/components/icons/edit.d.ts +3 -3
  174. package/dist/src/components/icons/email.d.ts +3 -3
  175. package/dist/src/components/icons/export.d.ts +3 -3
  176. package/dist/src/components/icons/eye-off.d.ts +3 -3
  177. package/dist/src/components/icons/eye-plus-circle.d.ts +3 -3
  178. package/dist/src/components/icons/eye.d.ts +3 -3
  179. package/dist/src/components/icons/filled-circle.d.ts +3 -3
  180. package/dist/src/components/icons/filter-remove.d.ts +3 -3
  181. package/dist/src/components/icons/filter.d.ts +3 -3
  182. package/dist/src/components/icons/folder-save.d.ts +3 -3
  183. package/dist/src/components/icons/grid.d.ts +3 -3
  184. package/dist/src/components/icons/hashtag.d.ts +3 -3
  185. package/dist/src/components/icons/image.d.ts +3 -3
  186. package/dist/src/components/icons/import.d.ts +3 -3
  187. package/dist/src/components/icons/info-circle.d.ts +3 -3
  188. package/dist/src/components/icons/info.d.ts +3 -3
  189. package/dist/src/components/icons/link-horizontal.d.ts +3 -3
  190. package/dist/src/components/icons/link.d.ts +3 -3
  191. package/dist/src/components/icons/location.d.ts +3 -3
  192. package/dist/src/components/icons/lowest-lead-time.d.ts +3 -3
  193. package/dist/src/components/icons/lowest-min-qty.d.ts +3 -3
  194. package/dist/src/components/icons/lowest-price.d.ts +3 -3
  195. package/dist/src/components/icons/more.d.ts +3 -3
  196. package/dist/src/components/icons/notification.d.ts +3 -3
  197. package/dist/src/components/icons/paper-clip.d.ts +3 -3
  198. package/dist/src/components/icons/paragraph.d.ts +3 -3
  199. package/dist/src/components/icons/payment-request.d.ts +3 -3
  200. package/dist/src/components/icons/phone.d.ts +3 -3
  201. package/dist/src/components/icons/printer.d.ts +3 -3
  202. package/dist/src/components/icons/process-calendar.d.ts +3 -3
  203. package/dist/src/components/icons/promotion.d.ts +3 -3
  204. package/dist/src/components/icons/radio-button.d.ts +3 -3
  205. package/dist/src/components/icons/receipt-filled.d.ts +3 -3
  206. package/dist/src/components/icons/receipt-outline.d.ts +3 -3
  207. package/dist/src/components/icons/receipt.d.ts +3 -3
  208. package/dist/src/components/icons/refresh-icon.d.ts +3 -3
  209. package/dist/src/components/icons/replace.d.ts +3 -3
  210. package/dist/src/components/icons/save.d.ts +3 -3
  211. package/dist/src/components/icons/search-status.d.ts +3 -3
  212. package/dist/src/components/icons/search.d.ts +3 -3
  213. package/dist/src/components/icons/settings-fallback.d.ts +3 -3
  214. package/dist/src/components/icons/sort-arrow-icon.d.ts +3 -3
  215. package/dist/src/components/icons/stacked-layer.d.ts +3 -3
  216. package/dist/src/components/icons/start-filled.d.ts +3 -3
  217. package/dist/src/components/icons/three-dot-icon.d.ts +3 -3
  218. package/dist/src/components/icons/tick-circle-filled.d.ts +3 -3
  219. package/dist/src/components/icons/tick-circle.d.ts +3 -3
  220. package/dist/src/components/icons/tick-octagon.d.ts +3 -3
  221. package/dist/src/components/icons/tick.d.ts +3 -3
  222. package/dist/src/components/icons/toggle-switch.d.ts +3 -3
  223. package/dist/src/components/icons/trash.d.ts +3 -3
  224. package/dist/src/components/icons/wave.d.ts +3 -3
  225. package/dist/src/components/icons/with-out-tick-octagon.d.ts +3 -3
  226. package/dist/src/components/icons/work-centre.d.ts +3 -3
  227. package/dist/src/components/location-select.d.ts +1 -1
  228. package/dist/src/components/material-editable-table/material-editable-table.d.ts +2 -1
  229. package/dist/src/components/material-table/material-table.d.ts +1 -1
  230. package/dist/src/components/phone-input/phone-input.d.ts +1 -1
  231. package/dist/src/components/providers/ERPUIProvider.d.ts +0 -2
  232. package/dist/src/components/radio/radio.d.ts +1 -1
  233. package/dist/src/components/select/select.d.ts +1 -1
  234. package/dist/src/components/switches/android-12-switch.d.ts +1 -3
  235. package/dist/src/components/text-field/text-field.d.ts +1 -1
  236. package/dist/src/components/time-picker/time-picker.d.ts +1 -1
  237. package/dist/src/components/upload-media/upload-media.d.ts +1 -1
  238. package/dist/src/contexts/page-context.d.ts +0 -2
  239. package/dist/src/utils/common-utility.d.ts +1 -1
  240. package/dist/style.css +60 -60
  241. package/dist/utils/common-utility.d.ts +1 -1
  242. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/providers/ERPUIProvider.tsx"],"sourcesContent":["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":["ERPUIContext","createContext","useRedux","themeMode","direction","ERPUIProvider","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","useContext"],"mappings":"yxBA6BA,MAAMA,EAAeC,EAAAA,cAAiC,CACpDC,UAAU,EACVC,UAAW,QACXC,UAAW,QAgDAC,EAA8C,EACzDC,WAGAJ,YAAW,EACXK,aACAC,YACAC,qBAAqB,CAAA,EAGrBC,MAAOC,EACPR,YAAY,QACZS,eACAR,YAAY,MAGZS,cAAa,EACbC,kBAAiB,EACjBC,eAAc,EACdC,qBAAoB,EACpBC,gBAAe,EACfC,kBAAiB,EAGjBC,qBAAoB,EACpBC,iBAAiB,CACfC,SAAU,EACVC,aAAc,CAAEC,SAAU,MAAOC,WAAY,SAC7CC,iBAAkB,KAIpBC,UAAWC,EACXC,oBACAC,yBAMA,MAAMC,EAAgBC,EAAAA,QAAMC,QAAO,GAEnC,GAAIL,IAAsBG,EAAcG,QACtC,IACEC,EAAAA,oBAAoBP,GACpBQ,0BACAL,EAAcG,SAAU,CAC1B,OAASG,GAET,CAOF,MAAMC,EAAQN,UAAMO,QAAQ,IACrBpC,EAEDK,GAIGgC,EAAAA,mBAAmB9B,EAAoBD,GANxB,KAOrB,CAACN,EAAUK,EAAYE,EAAoBD,IAGxCE,EAAQqB,UAAMO,QAAQ,KAC1B,GAAI3B,EACF,OAAOA,EAGT,MAAM6B,EAA6B,SAAdrC,EAAuBsC,EAAAA,gBAAkBC,EAAAA,kBACtDhC,MAAOiC,GAAmBH,EAAa5B,EAAcR,GAC7D,OAAOuC,GACN,CAAChC,EAAaR,EAAWS,EAAcR,IAGpCwC,EAAkC,CACtC1C,WACAM,YACAE,QACAP,YACAC,YACAQ,gBAIF,IAAIiC,iBACFC,EAAAA,IAAC9C,EAAa+C,SAAb,CAAsBC,MAAOJ,EAI5BtC,0BAAAwC,IAACG,EAAAA,QAAA,CAAgBvC,QAAcS,oBAC5Bb,eAsEP,OA9DIY,IACF2B,iBACEC,EAAAA,IAACI,mBAAA,IAAqB9B,EACnBd,SAAAuC,KAMH9B,IACF8B,iBACEC,EAAAA,IAACK,eAAA,CAAavB,oBAAsCC,qBACjDvB,SAAAuC,KAMH7B,IACF6B,mBACEC,IAACM,EAAAA,qBACE9C,SAAAuC,KAMH/B,IACF+B,mBACEC,IAACO,EAAAA,kBACE/C,SAAAuC,KAMHhC,IACFgC,mBACEC,IAACQ,EAAAA,cACEhD,SAAAuC,KAMH5B,IACF4B,mBACEC,IAACS,EAAAA,eACEjD,SAAAuC,KAMH3C,GAAYmC,IACdQ,iBACEC,EAAAA,IAACU,EAAAA,SAAA,CAAAnB,MAAcA,EACZ/B,SAAAuC,KAKAA,8DAjNe,IAAMY,EAAAA,WAAWzD"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/providers/ERPUIProvider.tsx"],"sourcesContent":["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\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}) => {\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>\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":["ERPUIContext","createContext","useRedux","themeMode","direction","ERPUIProvider","children","reduxStore","apiClient","additionalReducers","theme","customTheme","primaryColor","enableAuth","enableLanguage","enablePages","enablePermissions","enableRouter","enableSnackbar","enableCssBaseline","snackbarConfig","maxSnack","anchorOrigin","vertical","horizontal","autoHideDuration","apiConfig","providedApiConfig","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","useContext"],"mappings":"yxBA6BA,MAAMA,EAAeC,EAAAA,cAAiC,CACpDC,UAAU,EACVC,UAAW,QACXC,UAAW,QA4CAC,EAA8C,EACzDC,WAGAJ,YAAW,EACXK,aACAC,YACAC,qBAAqB,CAAA,EAGrBC,MAAOC,EACPR,YAAY,QACZS,eACAR,YAAY,MAGZS,cAAa,EACbC,kBAAiB,EACjBC,eAAc,EACdC,qBAAoB,EACpBC,gBAAe,EACfC,kBAAiB,EAGjBC,qBAAoB,EACpBC,iBAAiB,CACfC,SAAU,EACVC,aAAc,CAAEC,SAAU,MAAOC,WAAY,SAC7CC,iBAAkB,KAIpBC,UAAWC,MAMX,MAAMC,EAAgBC,EAAAA,QAAMC,QAAO,GAEnC,GAAIH,IAAsBC,EAAcG,QACtC,IACEC,EAAAA,oBAAoBL,GACpBM,0BACAL,EAAcG,SAAU,CAC1B,OAASG,GAET,CAOF,MAAMC,EAAQN,UAAMO,QAAQ,IACrBlC,EAEDK,GAIG8B,EAAAA,mBAAmB5B,EAAoBD,GANxB,KAOrB,CAACN,EAAUK,EAAYE,EAAoBD,IAGxCE,EAAQmB,UAAMO,QAAQ,KAC1B,GAAIzB,EACF,OAAOA,EAGT,MAAM2B,EAA6B,SAAdnC,EAAuBoC,EAAAA,gBAAkBC,EAAAA,kBACtD9B,MAAO+B,GAAmBH,EAAa1B,EAAcR,GAC7D,OAAOqC,GACN,CAAC9B,EAAaR,EAAWS,EAAcR,IAGpCsC,EAAkC,CACtCxC,WACAM,YACAE,QACAP,YACAC,YACAQ,gBAIF,IAAI+B,iBACFC,EAAAA,IAAC5C,EAAa6C,SAAb,CAAsBC,MAAOJ,EAI5BpC,0BAAAsC,IAACG,EAAAA,QAAA,CAAgBrC,QAAcS,oBAC5Bb,eAsEP,OA9DIY,IACFyB,iBACEC,EAAAA,IAACI,mBAAA,IAAqB5B,EACnBd,SAAAqC,KAMH5B,IACF4B,mBACEC,IAACK,EAAAA,cACE3C,SAAAqC,KAMH3B,IACF2B,mBACEC,IAACM,EAAAA,qBACE5C,SAAAqC,KAMH7B,IACF6B,mBACEC,IAACO,EAAAA,kBACE7C,SAAAqC,KAMH9B,IACF8B,mBACEC,IAACQ,EAAAA,cACE9C,SAAAqC,KAMH1B,IACF0B,mBACEC,IAACS,EAAAA,eACE/C,SAAAqC,KAMHzC,GAAYiC,IACdQ,iBACEC,EAAAA,IAACU,EAAAA,SAAA,CAAAnB,MAAcA,EACZ7B,SAAAqC,KAKAA,8DA3Me,IAAMY,EAAAA,WAAWvD"}
@@ -38,8 +38,6 @@ interface ERPUIProviderProps {
38
38
  autoHideDuration?: number;
39
39
  };
40
40
  apiConfig?: ApiConfig;
41
- routeToColumnsMap?: Record<string, any>;
42
- routeToResourceMap?: Record<string, any>;
43
41
  }
44
42
  export declare const ERPUIProvider: React.FC<ERPUIProviderProps>;
45
43
  export default ERPUIProvider;
@@ -1,5 +1,5 @@
1
1
  import { RadioProps } from '@mui/material';
2
2
 
3
- declare const Radio: import('react').NamedExoticComponent<RadioProps>;
3
+ declare const Radio: import('react').MemoExoticComponent<(props: RadioProps) => import("react/jsx-runtime").JSX.Element>;
4
4
  export { Radio };
5
5
  export default Radio;
@@ -1,4 +1,4 @@
1
1
 
2
- declare const Select: import('react').NamedExoticComponent<any>;
2
+ declare const Select: import('react').MemoExoticComponent<(props: any) => import("react/jsx-runtime").JSX.Element>;
3
3
  export { Select };
4
4
  export default Select;
@@ -1,5 +1,3 @@
1
- declare const Android12Switch: import('@emotion/styled').StyledComponent<Pick<{}, never> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {
2
- ref?: import('react').Ref<import('react').Component<{}, any, any>>;
3
- }>;
1
+ declare const Android12Switch: import('@emotion/styled').StyledComponent<import('@mui/material').SwitchProps & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
4
2
  export { Android12Switch };
5
3
  export default Android12Switch;
@@ -1,4 +1,4 @@
1
1
 
2
- declare const TextField: import('react').NamedExoticComponent<any>;
2
+ declare const TextField: import('react').MemoExoticComponent<(props: any) => import("react/jsx-runtime").JSX.Element>;
3
3
  export { TextField };
4
4
  export default TextField;
@@ -12,6 +12,6 @@ export interface TimePickerProps {
12
12
  placeholder?: string;
13
13
  required?: boolean;
14
14
  }
15
- declare const TimePicker: import('react').NamedExoticComponent<TimePickerProps>;
15
+ declare const TimePicker: import('react').MemoExoticComponent<(props: TimePickerProps) => import("react/jsx-runtime").JSX.Element>;
16
16
  export { TimePicker };
17
17
  export default TimePicker;
@@ -12,6 +12,6 @@ export interface UploadImageProps {
12
12
  onChange: (e: any) => any;
13
13
  multiple: boolean;
14
14
  }
15
- declare const UploadMedia: import('react').NamedExoticComponent<UploadImageProps>;
15
+ declare const UploadMedia: import('react').MemoExoticComponent<(props: UploadImageProps) => import("react/jsx-runtime").JSX.Element>;
16
16
  export { UploadMedia };
17
17
  export default UploadMedia;
@@ -120,7 +120,7 @@ const generateColumnSchema = (defaultColumns, schemaFields, columnOrders, dColum
120
120
  };
121
121
  }
122
122
  };
123
- const PageProvider = ({ children, routeToColumnsMap: customRouteToColumnsMap, routeToResourceMap: customRouteToResourceMap }) => {
123
+ const PageProvider = ({ children }) => {
124
124
  const location = useLocation();
125
125
  const [activePage, setActivePageData] = useState(defaultPageState);
126
126
  const [schemaFields, setSchemaFields] = useState([]);
@@ -140,13 +140,13 @@ const PageProvider = ({ children, routeToColumnsMap: customRouteToColumnsMap, ro
140
140
  const curPathName = useMemo(() => location.pathname, [location.pathname]);
141
141
  const defaultColumns = useMemo(() => {
142
142
  var _a;
143
- const columns = ((_a = (customRouteToColumnsMap == null ? void 0 : customRouteToColumnsMap[curPathName]) || routeToColumnsMap[curPathName]) == null ? void 0 : _a.defaultColumns) || [];
143
+ const columns = ((_a = routeToColumnsMap[curPathName]) == null ? void 0 : _a.defaultColumns) || [];
144
144
  return columns;
145
- }, [curPathName, customRouteToColumnsMap]);
145
+ }, [curPathName]);
146
146
  const resources = useMemo(() => {
147
- const resource = (customRouteToResourceMap == null ? void 0 : customRouteToResourceMap[curPathName]) || routeToResourceMap[curPathName] || null;
147
+ const resource = routeToResourceMap[curPathName] || null;
148
148
  return resource;
149
- }, [curPathName, customRouteToResourceMap]);
149
+ }, [curPathName]);
150
150
  const { t } = useTranslation();
151
151
  const initializeColumns = (columns) => {
152
152
  //! Remove the function if not needed
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../src/contexts/page-context.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\n/* eslint-disable no-mixed-spaces-and-tabs */\n\nimport React, { createContext, useCallback, useEffect, useMemo, useState, useRef } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport {\n\tgetV1FilterResource,\n\tgetV1FormBuilder,\n\tgetV1FormBuilderSchemaFieldsName,\n\tgetV1PagesResource,\n\tpatchV1PagesPageId\n} from '../api-client/api.system-feature/api';\nimport { IResources, routeToColumnsMap, routeToResourceMap } from '../constants/route-page-map'; // Removed - should be passed as props or configured by consuming app\nimport { getToken } from '../utils/common';\nimport { removeIdStaticIdsFromMongoObject } from '../utils/common';\nimport { RuleGroupType } from 'react-querybuilder';\nimport { MaterialTableColumnProps } from '../components/material-table/material-table';\nimport _ from 'lodash';\nimport { formatLabel } from '../utils/format-text';\nimport ErpLoader from '../components/loaders/erp-loader';\nimport { enqueueSnackbar } from 'notistack';\nimport { useTranslation } from 'react-i18next';\nimport { useAuth } from '../hooks/useAuth';\n// import { usePermissions } from '../hooks/use-permissions';\n\n/* Interfaces and types */\nexport type ViewType = 'Table' | 'Grid' | 'Kanban' | 'Calendar' | 'Gantt' | '';\n\ninterface SchemaFields {\n\tselect: string;\n\talias: string;\n\ttype: string;\n\tfilter_type?: string;\n\tfilter_name?: string;\n\trequired?: boolean;\n\tisOrderAllowed?: boolean;\n\tisDefault?: boolean;\n\tisFilterAllowed?: boolean;\n\tlabel?: string;\n\tkey: string;\n\taccessorKey?: string;\n\tjoinKey?: string;\n\tenum?: string | string[];\n}\nexport interface SavedViewType {\n\tlabel: ViewType;\n\tposition: number;\n}\nexport interface PageState {\n\t_id: string | number;\n\tname: string;\n\tpage_size: number;\n\tcolumn_order: string[];\n\tvisible_columns: MaterialTableColumnProps[];\n\tviews: SavedViewType[];\n\tactive_view: ViewType;\n\tfilters: RuleGroupType;\n\tfilterQueryString: string;\n\tsort: Record<any, any> | null;\n\tsearch: string;\n\tenabled_views: ViewType[];\n\tisShared: boolean;\n\tcolumn_sizes: Record<string, number>;\n}\n\nexport interface GeneratedColumnsState {\n\tcolumns: MaterialTableColumnProps[];\n\torderKeys: string[];\n}\n\nexport const initialFilter: RuleGroupType = { combinator: 'and', rules: [] };\n\ninterface PageContextValue {\n\tpageTemplateId: string;\n\tactivePage: PageState;\n\tupdatePageInfo: (updates: Partial<PageState>) => void;\n\tloading: boolean;\n\tisSaving: boolean;\n\terror: string | null;\n\tpages: any[];\n\tsavePages: () => void;\n\tsetActivePage: (data: any) => void;\n\tsetPages: React.Dispatch<any>;\n\tschemaFields: SchemaFields[];\n\tinitializeColumns: (columns: MaterialTableColumnProps[]) => void;\n\tgeneratedColumns: GeneratedColumnsState;\n\tsharedPages: any[];\n\tupdateGeneratedColumns: (updates: Partial<GeneratedColumnsState>) => void;\n\tformData: Record<string, any>\n\tsetFormData: (data: Record<string, any>) => void\n}\n\nexport const defaultPageState: PageState = {\n\t_id: '',\n\tname: '',\n\tpage_size: 10,\n\tcolumn_order: ['id'],\n\tvisible_columns: [],\n\tviews: [],\n\tactive_view: '',\n\tfilters: initialFilter,\n\tfilterQueryString: '',\n\tsort: null,\n\tsearch: '',\n\tenabled_views: ['Table', 'Grid', 'Kanban', 'Calendar', 'Gantt'],\n\tisShared: false,\n\tcolumn_sizes: {}\n};\ninterface PageProviderProps {\n\tchildren: React.ReactNode;\n\trouteToColumnsMap?: Record<string, any>;\n\trouteToResourceMap?: Record<string, any>;\n}\n\nconst UpdatePageInfo = () => { };\nconst UpdateGeneratedColumns = () => { };\n\nexport const PageContext = createContext<PageContextValue>({\n\tpageTemplateId: '',\n\tactivePage: defaultPageState,\n\tupdatePageInfo: UpdatePageInfo,\n\tloading: false,\n\tisSaving: false,\n\terror: null,\n\tpages: [],\n\tsharedPages: [],\n\tsavePages: () => { },\n\tsetActivePage: () => { },\n\tsetPages: () => { },\n\tschemaFields: [],\n\tinitializeColumns: () => { },\n\tgeneratedColumns: { columns: [], orderKeys: [] },\n\tupdateGeneratedColumns: UpdateGeneratedColumns,\n});\n\nfunction mergeArraysKeepingOrder(array1: string[], array2: string[]): string[] {\n\t// Create a Set from the first array for efficient lookups\n\tconst array1Set = new Set(array1);\n\n\t// Filter the second array to find elements not in the first array\n\tconst elementsToAdd = array2.filter((item) => !array1Set.has(item));\n\n\t// Combine the original first array with the new elements\n\treturn [...array1, ...elementsToAdd];\n}\n\nconst generateColumnSchema = (\n\tdefaultColumns: MaterialTableColumnProps[],\n\tschemaFields: SchemaFields[],\n\tcolumnOrders: string[],\n\tdColumns?: any[],\n\tt?: any\n): { columns: MaterialTableColumnProps[]; orderKeys: string[] } => {\n\ttry {\n\t\tif (dColumns && dColumns?.length) {\n\t\t\tdefaultColumns = defaultColumns.map((column) => {\n\t\t\t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\n\t\t\t\treturn f || column\n\t\t\t})\n\t\t}\n\t\tlet orderKeys = columnOrders.length\n\t\t\t? columnOrders\n\t\t\t: (defaultColumns.map((column) => column.accessorKey) as string[]);\n\t\tconst getAccesorKeyViaField = (field: SchemaFields) =>\n\t\t\t(field.type === 'object' || field?.join) ? `${field.alias}.${field.accessorKey}` : field.key;\n\n\t\t// Clean up schema fields by removing \"__replaceKey\" from the keys\n\t\tconst updatedFields = schemaFields.map((field) => ({\n\t\t\t...field,\n\t\t\tkey: field.key.replace('__replaceKey', '')\n\t\t})).filter((field) => !field.is_inner_join);\n\n\t\tconst uniqueFields = _.differenceWith(\n\t\t\tupdatedFields,\n\t\t\tupdatedFields,\n\t\t\t(fieldA, fieldB) => fieldA.key === fieldB?.joinKey\n\t\t);\n\n\t\t// Find fields in schemaFields but not in defaultColumns based on accessorKey\n\t\tconst unmatchedFields = _.differenceWith(\n\t\t\tuniqueFields,\n\t\t\tdefaultColumns,\n\t\t\t(field, column) => getAccesorKeyViaField(field) === column.accessorKey\n\t\t);\n\n\t\t// Map unique fields to MaterialTableColumn structure\n\t\tconst additionalColumns: MaterialTableColumnProps[] = unmatchedFields.map(\n\t\t\t(field) => ({\n\t\t\t\theader: t ? formatLabel(t(field?.label)?.replace('_data', '') || '') : formatLabel(field?.label?.replace('_data', '') || ''),\n\t\t\t\taccessorKey: getAccesorKeyViaField(field),\n\t\t\t\tvisible: false,\n\t\t\t\ttype: field?.enum ? 'status' : field.type,\n\t\t\t\t...(field.type === 'array' && { typeArrayAccessorKey: field.accessorKey || '' }),\n\t\t\t\tenableSorting: (field.type === 'array' || field.type === 'object' || field?.join) ? false : true,\n\t\t\t\t...(field?.type === 'boolean' ? {\n\t\t\t\t\ttypeBooleanLabels: field?.values?.length ? _.mapValues(_.keyBy(\n\t\t\t\t\t\tfield?.values.map(item => ({\n\t\t\t\t\t\t\tkey: item.name,\n\t\t\t\t\t\t\tvalue: item.label\n\t\t\t\t\t\t})),\n\t\t\t\t\t\t'key'\n\t\t\t\t\t), 'value') : { 0: \"Inactive\", 1: \"Active\", false: \"Inactive\", true: \"Active\" }\n\t\t\t\t} : {})\n\t\t\t})\n\t\t);\n\n\t\tconst updatedDefaultColumns = defaultColumns?.map((column) => {\n\t\t\tconst field = schemaFields.find((field) => getAccesorKeyViaField(field) === column.accessorKey);\n\t\t\treturn {\n\t\t\t\t...column,\n\t\t\t\t...((field?.type === 'object' || field?.joinKey || column.enableSorting === false) ? { enableSorting: false } : {})\n\t\t\t};\n\t\t});\n\n\t\t// Combine default columns and additional columns\n\t\tconst columns = [...updatedDefaultColumns, ...additionalColumns];\n\n\t\t// Generate an array of column keys for ordering\n\t\tconst nOrderKeys = columns.map((column) => column.accessorKey) as string[];\n\n\t\torderKeys = mergeArraysKeepingOrder(orderKeys, nOrderKeys);\n\n\t\treturn { columns, orderKeys };\n\t} catch (error) {\n\t\treturn {\n\t\t\tcolumns: defaultColumns,\n\t\t\torderKeys: defaultColumns.map((column) => column.accessorKey) as string[]\n\t\t};\n\t}\n};\n\nexport const PageProvider: React.FC<PageProviderProps> = ({ children, routeToColumnsMap: customRouteToColumnsMap, routeToResourceMap: customRouteToResourceMap }) => {\n\tconst location = useLocation();\n\tconst [activePage, setActivePageData] = useState<PageState>(defaultPageState);\n\t// const permissions=usePermissions();\n\tconst [schemaFields, setSchemaFields] = useState<SchemaFields[]>([]);\n\tconst [loading, setLoading] = useState<boolean>(true);\n\tconst [isSaving, setIsSaving] = useState<boolean>(false);\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [pages, setPages] = useState<any>([]);\n\tconst [sharedPages, setSharedPages] = useState<any>([]);\n\tconst [isChanged, setIsChanged] = useState<boolean>(false);\n\tconst [pageTemplateId, setPageTemplateId] = useState<string>('');\n\tconst [isInitialLoad, setIsInitialLoad] = useState<boolean>(true);\n\tconst [isCreatePage, setIsCreatePage] = useState<boolean>(false);\n\tconst [formData, setFormData] = useState<any>({});\n\tconst [generatedColumns, setGeneratedColumns] = useState<{\n\t\tcolumns: MaterialTableColumnProps[];\n\t\torderKeys: string[];\n\t}>({ columns: [], orderKeys: [] });\n\tconst { user } = useAuth()\n\t// Add ref to track current pathname for race condition prevention\n\tconst currentPathnameRef = useRef<string>(location.pathname);\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\n\n\t// Get current page's default columns and resources\n\tconst defaultColumns: any[] = useMemo(() => {\n\t\tconst columns = (customRouteToColumnsMap?.[curPathName] || routeToColumnsMap[curPathName])?.defaultColumns || [];\n\t\treturn columns;\n\t}, [curPathName, customRouteToColumnsMap]);\n\n\tconst resources: IResources = useMemo(() => {\n\t\tconst resource = customRouteToResourceMap?.[curPathName] || routeToResourceMap[curPathName] || null;\n\t\treturn resource;\n\t}, [curPathName, customRouteToResourceMap]);\n\n\t//Translation\n\tconst { t } = useTranslation()\n\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n\tconst initializeColumns = (columns: MaterialTableColumnProps[]) => {\n\t\t//! Remove the function if not needed\n\t};\n\n\t// Fetch page-related information from API\n\tconst fetchPageData = useCallback(\n\t\tasync (currentPath: string, currentDefaultColumns: any[], currentResources: IResources) => {\n\n\t\t\t// Check if this request is still valid (pathname hasn't changed)\n\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetLoading(true);\n\t\t\tsetError(null);\n\n\t\t\ttry {\n\t\t\t\tif (currentDefaultColumns.length && currentResources) {\n\t\t\t\t\tconst { pageResource = '', fieldResource = '', formResource = '' } = currentResources;\n\n\t\t\t\t\t// Double-check pathname hasn't changed before making API calls\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst [pageResponse, fieldResponse, formResponse] = await Promise.all([\n\t\t\t\t\t\tpageResource ? getV1PagesResource({ ...getToken(), resource: pageResource }) : Promise.resolve(null),\n\n\t\t\t\t\t\tgetV1FormBuilderSchemaFieldsName({\n\t\t\t\t\t\t\tname: fieldResource,\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tskip: 0,\n\t\t\t\t\t\t\tlimit: 999\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tgetV1FormBuilder({\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tfilters: `(resource.eq=${formResource}&company_id.eq=${user?.company_id})`,\n\t\t\t\t\t\t})\n\t\t\t\t\t]);\n\n\t\t\t\t\t// Final check - ensure pathname still matches\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed after API call');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst fields = fieldResponse?.data?.fields?.map(f => ({ ...f, label: !f?.label?.trim() ? formatLabel(f.key) : f.label }));\n\n\t\t\t\t\tconst gColumns = generateColumnSchema(currentDefaultColumns, fields, [], [], t);\n\n\t\t\t\t\tconst pages =\n\t\t\t\t\t\tpageResponse?.data?.pages?.map((p) => ({\n\t\t\t\t\t\t\t...defaultPageState,\n\t\t\t\t\t\t\t...p,\n\t\t\t\t\t\t\tvisible_columns: generateColumnSchema(\n\t\t\t\t\t\t\t\tp.visible_columns?.length ? p.visible_columns : currentDefaultColumns,\n\t\t\t\t\t\t\t\tfields,\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\tcurrentDefaultColumns,\n\t\t\t\t\t\t\t\tt\n\t\t\t\t\t\t\t).columns,\n\t\t\t\t\t\t\tcolumn_order: mergeArraysKeepingOrder(\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\t_.uniq(gColumns.orderKeys)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})) || [];\n\t\t\t\t\tconst sharedPages =\n\t\t\t\t\t\tpageResponse?.data?.shared_pages?.map((sPages) => ({\n\t\t\t\t\t\t\t...sPages.details,\n\t\t\t\t\t\t\tisShared: true,\n\t\t\t\t\t\t\towner: sPages.owner,\n\t\t\t\t\t\t\t_id: sPages.id\n\t\t\t\t\t\t})) || [];\n\n\t\t\t\t\tconst uPages = [...pages, ...sharedPages];\n\n\t\t\t\t\t// Only update state if we're still on the same path\n\t\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\t\tawait Promise.all([\n\t\t\t\t\t\t\tsetSchemaFields(fields),\n\t\t\t\t\t\t\tsetGeneratedColumns(gColumns),\n\t\t\t\t\t\t\tsetPageTemplateId(pageResponse?.data?._id),\n\t\t\t\t\t\t\tsetSharedPages(sharedPages),\n\t\t\t\t\t\t\tsetPages(uPages || []),\n\t\t\t\t\t\t\tsetFormData(formResponse?.data?.form?.[0] || {}),\n\t\t\t\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t\t...(pages?.[0] || {}) // Merge API response with current state\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t// Only set error if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetError('Failed to load page data');\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\t// Only update loading state if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tsetLoading(false);\n\t\t\t\t\t}, 1000);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[] // Remove dependencies to prevent stale closures\n\t);\n\n\t// Update page state dynamically\n\tconst updatePageInfo = (updates: Partial<PageState>) => {\n\t\tsetActivePageData((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t\t!isInitialLoad && setIsChanged(true)\n\t\tsetIsInitialLoad(false)\n\t};\n\n\t// Update columns state dynamically\n\tconst updateGeneratedColumns = (updates: Partial<GeneratedColumnsState>) => {\n\t\tsetGeneratedColumns((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t};\n\n\tconst setActivePage = (page: PageState) => {\n\t\tconst uPages = pages.map((p) =>\n\t\t\tp._id == activePage?._id ? activePage : p\n\t\t);\n\t\tsetPages(uPages);\n\t\tsetActivePageData(page);\n\t};\n\n\tconst savePages = async () => {\n\t\tsetError(null);\n\t\tsetIsSaving(true);\n\t\tawait addOrDeletePage()\n\t\tsetTimeout(() => {\n\t\t\tsetIsSaving(false);\n\t\t}, 1000);\n\t};\n\tconst fetchSavedFilters = async (): Promise<void> => {\n\n\t\tawait getV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\n\n\t};\n\n\tconst addOrDeletePage = async (restPages?: any[]) => {\n\t\ttry {\n\t\t\tconst filteredPages = restPages?.length ? restPages : pages.filter((page) => !page.isShared);\n\t\t\tconst uPages = filteredPages.map((p) =>\n\t\t\t\t(p._id == activePage?._id && activePage.name == p.name) ? activePage : p\n\t\t\t);\n\t\t\tconst sanitizedPages = removeIdStaticIdsFromMongoObject(uPages);\n\n\t\t\tconst response = await patchV1PagesPageId({\n\t\t\t\t...getToken(),\n\t\t\t\t...{ page_id: pageTemplateId, pages: sanitizedPages }\n\t\t\t});\n\t\t\tif (response.status_code === 200) {\n\t\t\t\tconst updatedPages = response?.data?.pages || [];\n\t\t\t\tsetPages(updatedPages);\n\t\t\t\tfetchSavedFilters();\n\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\t...(updatedPages.find((p) => p.name == prev.name) || {})\n\t\t\t\t}));\n\t\t\t\tsetIsChanged(false);\n\t\t\t\tsetIsCreatePage(false);\n\t\t\t\tsetFormData(response?.data?.form?.[0] || {});\n\t\t\t\tconst msg = restPages?.length ? t('pages.msg.delete') : t('pages.msg.save')\n\t\t\t\tenqueueSnackbar(msg);\n\t\t\t}\n\t\t\treturn response\n\t\t} catch (err) {\n\t\t\tsetError('Failed to save page data');\n\t\t}\n\t}\n\n\tconst deletePage = async (pages: string) => {\n\t\taddOrDeletePage(pages);\n\t}\n\n\t// Handle pathname changes\n\tuseEffect(() => {\n\t\t// Update the ref immediately\n\t\tcurrentPathnameRef.current = curPathName;\n\n\t\t// Reset state for new page\n\t\tsetLoading(true);\n\t\tsetIsSaving(false);\n\t\tsetActivePageData(defaultPageState);\n\t\tsetIsChanged(false);\n\t\tsetIsInitialLoad(true);\n\n\t\t// Clear previous data to prevent showing stale data\n\t\tsetSchemaFields([]);\n\t\tsetGeneratedColumns({ columns: [], orderKeys: [] });\n\t\tsetPages([]);\n\t\tsetSharedPages([]);\n\t\tsetPageTemplateId('');\n\t\tsetError(null);\n\n\t\t// Fetch data for new page with current values\n\t\tfetchPageData(curPathName, defaultColumns, resources);\n\n\t\treturn () => { setLoading(true) }\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [curPathName, JSON.stringify(defaultColumns), JSON.stringify(resources)]); // Remove other dependencies to prevent issues\n\n\n\t// Removed loading check to prevent blank page during loading\n\n\treturn (\n\t\t<PageContext.Provider\n\t\t\tvalue={{\n\t\t\t\tpageTemplateId,\n\t\t\t\tactivePage,\n\t\t\t\tpages,\n\t\t\t\tsharedPages,\n\t\t\t\tschemaFields,\n\t\t\t\tsetPages,\n\t\t\t\tupdatePageInfo,\n\t\t\t\tsavePages,\n\t\t\t\tsetActivePage,\n\t\t\t\tisSaving,\n\t\t\t\tloading,\n\t\t\t\terror,\n\t\t\t\tinitializeColumns,\n\t\t\t\tgeneratedColumns,\n\t\t\t\tupdateGeneratedColumns,\n\t\t\t\tisChanged,\n\t\t\t\tdeletePage,\n\t\t\t\tisCreatePage,\n\t\t\t\tsetIsCreatePage,\n\t\t\t\taddOrDeletePage,\n\t\t\t\tsetIsChanged,\n\t\t\t\tformData\n\t\t\t}}>\n\t\t\t{children}\n\t\t</PageContext.Provider>\n\t);\n};\n"],"names":["field","_a","pages","sharedPages"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../../src/contexts/page-context.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\n/* eslint-disable no-mixed-spaces-and-tabs */\n\nimport React, { createContext, useCallback, useEffect, useMemo, useState, useRef } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport {\n\tgetV1FilterResource,\n\tgetV1FormBuilder,\n\tgetV1FormBuilderSchemaFieldsName,\n\tgetV1PagesResource,\n\tpatchV1PagesPageId\n} from '../api-client/api.system-feature/api';\nimport { IResources, routeToColumnsMap, routeToResourceMap } from '../constants/route-page-map'; // Removed - should be passed as props or configured by consuming app\nimport { getToken } from '../utils/common';\nimport { removeIdStaticIdsFromMongoObject } from '../utils/common';\nimport { RuleGroupType } from 'react-querybuilder';\nimport { MaterialTableColumnProps } from '../components/material-table/material-table';\nimport _ from 'lodash';\nimport { formatLabel } from '../utils/format-text';\nimport ErpLoader from '../components/loaders/erp-loader';\nimport { enqueueSnackbar } from 'notistack';\nimport { useTranslation } from 'react-i18next';\nimport { useAuth } from '../hooks/useAuth';\n// import { usePermissions } from '../hooks/use-permissions';\n\n/* Interfaces and types */\nexport type ViewType = 'Table' | 'Grid' | 'Kanban' | 'Calendar' | 'Gantt' | '';\n\ninterface SchemaFields {\n\tselect: string;\n\talias: string;\n\ttype: string;\n\tfilter_type?: string;\n\tfilter_name?: string;\n\trequired?: boolean;\n\tisOrderAllowed?: boolean;\n\tisDefault?: boolean;\n\tisFilterAllowed?: boolean;\n\tlabel?: string;\n\tkey: string;\n\taccessorKey?: string;\n\tjoinKey?: string;\n\tenum?: string | string[];\n}\nexport interface SavedViewType {\n\tlabel: ViewType;\n\tposition: number;\n}\nexport interface PageState {\n\t_id: string | number;\n\tname: string;\n\tpage_size: number;\n\tcolumn_order: string[];\n\tvisible_columns: MaterialTableColumnProps[];\n\tviews: SavedViewType[];\n\tactive_view: ViewType;\n\tfilters: RuleGroupType;\n\tfilterQueryString: string;\n\tsort: Record<any, any> | null;\n\tsearch: string;\n\tenabled_views: ViewType[];\n\tisShared: boolean;\n\tcolumn_sizes: Record<string, number>;\n}\n\nexport interface GeneratedColumnsState {\n\tcolumns: MaterialTableColumnProps[];\n\torderKeys: string[];\n}\n\nexport const initialFilter: RuleGroupType = { combinator: 'and', rules: [] };\n\ninterface PageContextValue {\n\tpageTemplateId: string;\n\tactivePage: PageState;\n\tupdatePageInfo: (updates: Partial<PageState>) => void;\n\tloading: boolean;\n\tisSaving: boolean;\n\terror: string | null;\n\tpages: any[];\n\tsavePages: () => void;\n\tsetActivePage: (data: any) => void;\n\tsetPages: React.Dispatch<any>;\n\tschemaFields: SchemaFields[];\n\tinitializeColumns: (columns: MaterialTableColumnProps[]) => void;\n\tgeneratedColumns: GeneratedColumnsState;\n\tsharedPages: any[];\n\tupdateGeneratedColumns: (updates: Partial<GeneratedColumnsState>) => void;\n\tformData:Record<string, any>\n\tsetFormData:(data:Record<string, any>) => void\n}\n\nexport const defaultPageState: PageState = {\n\t_id: '',\n\tname: '',\n\tpage_size: 10,\n\tcolumn_order: ['id'],\n\tvisible_columns: [],\n\tviews: [],\n\tactive_view: '',\n\tfilters: initialFilter,\n\tfilterQueryString: '',\n\tsort: null,\n\tsearch: '',\n\tenabled_views: ['Table', 'Grid', 'Kanban', 'Calendar', 'Gantt'],\n\tisShared: false,\n\tcolumn_sizes: {}\n};\ninterface PageProviderProps {\n\tchildren: React.ReactNode;\n}\n\nconst UpdatePageInfo = () => {};\nconst UpdateGeneratedColumns = () => {};\n\nexport const PageContext = createContext<PageContextValue>({\n\tpageTemplateId: '',\n\tactivePage: defaultPageState,\n\tupdatePageInfo: UpdatePageInfo,\n\tloading: false,\n\tisSaving: false,\n\terror: null,\n\tpages: [],\n\tsharedPages: [],\n\tsavePages: () => {},\n\tsetActivePage: () => {},\n\tsetPages: () => {},\n\tschemaFields: [],\n\tinitializeColumns: () => {},\n\tgeneratedColumns: { columns: [], orderKeys: [] },\n\tupdateGeneratedColumns: UpdateGeneratedColumns,\n});\n\nfunction mergeArraysKeepingOrder(array1: string[], array2: string[]): string[] {\n\t// Create a Set from the first array for efficient lookups\n\tconst array1Set = new Set(array1);\n\n\t// Filter the second array to find elements not in the first array\n\tconst elementsToAdd = array2.filter((item) => !array1Set.has(item));\n\n\t// Combine the original first array with the new elements\n\treturn [...array1, ...elementsToAdd];\n}\n\nconst generateColumnSchema = (\n\tdefaultColumns: MaterialTableColumnProps[],\n\tschemaFields: SchemaFields[],\n\tcolumnOrders: string[],\n\tdColumns?: any[],\n\tt?: any\n): { columns: MaterialTableColumnProps[]; orderKeys: string[] } => {\n\ttry {\n\t\tif(dColumns && dColumns?.length) {\n\t\t\tdefaultColumns = defaultColumns.map((column) => {\n\t\t\t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\n\t\t\t\treturn f || column\n\t\t\t})\n\t\t}\n\t\tlet orderKeys = columnOrders.length\n\t\t\t? columnOrders\n\t\t\t: (defaultColumns.map((column) => column.accessorKey) as string[]);\n\t\tconst getAccesorKeyViaField = (field: SchemaFields) =>\n\t\t\t\t(field.type === 'object' || field?.join) ? `${field.alias}.${field.accessorKey}` : field.key;\n\t\t\t\n\t\t// Clean up schema fields by removing \"__replaceKey\" from the keys\n\t\tconst updatedFields = schemaFields.map((field) => ({\n\t\t\t...field,\n\t\t\tkey: field.key.replace('__replaceKey', '')\n\t\t})).filter((field)=>!field.is_inner_join);\n\n\t\tconst uniqueFields = _.differenceWith(\n\t\t\tupdatedFields,\n\t\t\tupdatedFields,\n\t\t\t(fieldA, fieldB) => fieldA.key === fieldB?.joinKey\n\t\t);\n\n\t\t// Find fields in schemaFields but not in defaultColumns based on accessorKey\n\t\tconst unmatchedFields = _.differenceWith(\n\t\t\tuniqueFields,\n\t\t\tdefaultColumns,\n\t\t\t(field, column) => getAccesorKeyViaField(field) === column.accessorKey\n\t\t);\n\n\t\t// Map unique fields to MaterialTableColumn structure\n\t\tconst additionalColumns: MaterialTableColumnProps[] = unmatchedFields.map(\n\t\t\t(field) => ({\n\t\t\t\theader: t ? formatLabel(t(field?.label)?.replace('_data', '') || '') : formatLabel(field?.label?.replace('_data', '') || ''),\n\t\t\t\taccessorKey: getAccesorKeyViaField(field),\n\t\t\t\tvisible: false,\n\t\t\t\ttype: field?.enum ? 'status' : field.type,\n\t\t\t\t...(field.type === 'array' && {typeArrayAccessorKey: field.accessorKey || ''}),\n\t\t\t\tenableSorting: (field.type === 'array' || field.type === 'object' || field?.join) ? false: true,\n\t\t\t\t...(field?.type === 'boolean' ? {\n\t\t\t\t\ttypeBooleanLabels: field?.values?.length ? _.mapValues( _.keyBy(\n\t\t\t\t\t\tfield?.values.map(item => ({\n\t\t\t\t\t\t\tkey: item.name,\n\t\t\t\t\t\t\tvalue: item.label\n\t\t\t\t\t\t})),\n\t\t\t\t\t\t'key'\n\t\t\t\t\t), 'value') : { 0: \"Inactive\", 1: \"Active\", false: \"Inactive\", true: \"Active\" }\n\t\t\t\t} : {})\n\t\t\t})\n\t\t);\n\n\t\tconst updatedDefaultColumns = defaultColumns?.map((column) => {\n\t\t\tconst field = schemaFields.find((field) => getAccesorKeyViaField(field) === column.accessorKey);\n\t\t\treturn {\n\t\t\t\t...column,\n\t\t\t\t...((field?.type === 'object' || field?.joinKey||column.enableSorting===false) ? { enableSorting: false } : {})\n\t\t\t};\n\t\t});\n\n\t\t// Combine default columns and additional columns\n\t\tconst columns = [...updatedDefaultColumns, ...additionalColumns];\n\n\t\t// Generate an array of column keys for ordering\n\t\tconst nOrderKeys = columns.map((column) => column.accessorKey) as string[];\n\n\t\torderKeys = mergeArraysKeepingOrder(orderKeys, nOrderKeys);\n\n\t\treturn { columns, orderKeys };\n\t} catch (error) {\n\t\treturn {\n\t\t\tcolumns: defaultColumns,\n\t\t\torderKeys: defaultColumns.map((column) => column.accessorKey) as string[]\n\t\t};\n\t}\n};\n\nexport const PageProvider: React.FC<PageProviderProps> = ({ children }) => {\n\tconst location = useLocation();\n\tconst [activePage, setActivePageData] = useState<PageState>(defaultPageState);\n\t// const permissions=usePermissions();\n\tconst [schemaFields, setSchemaFields] = useState<SchemaFields[]>([]);\n\tconst [loading, setLoading] = useState<boolean>(true);\n\tconst [isSaving, setIsSaving] = useState<boolean>(false);\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [pages, setPages] = useState<any>([]);\n\tconst [sharedPages, setSharedPages] = useState<any>([]);\n\tconst [isChanged, setIsChanged] = useState<boolean>(false);\n\tconst [pageTemplateId, setPageTemplateId] = useState<string>('');\n\tconst [isInitialLoad, setIsInitialLoad] = useState<boolean>(true);\n\tconst [isCreatePage, setIsCreatePage] = useState<boolean>(false);\n\tconst [formData, setFormData] = useState<any>({});\n\tconst [generatedColumns, setGeneratedColumns] = useState<{\n\t\tcolumns: MaterialTableColumnProps[];\n\t\torderKeys: string[];\n\t}>({ columns: [], orderKeys: [] });\n\tconst {user} = useAuth()\n\t// Add ref to track current pathname for race condition prevention\n\tconst currentPathnameRef = useRef<string>(location.pathname);\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\n\t\n\t// Get current page's default columns and resources\n\tconst defaultColumns: any[] = useMemo(() => {\n\t\tconst columns = routeToColumnsMap[curPathName]?.defaultColumns || [];\n\t\treturn columns;\n\t}, [curPathName]);\n\t\n\tconst resources: IResources = useMemo(() => {\n\t\tconst resource = routeToResourceMap[curPathName] || null;\n\t\treturn resource;\n\t}, [curPathName]);\n\n\t//Translation\n\tconst {t}=useTranslation()\n\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n\tconst initializeColumns = (columns: MaterialTableColumnProps[]) => {\n\t\t//! Remove the function if not needed\n\t};\n\n\t// Fetch page-related information from API\n\tconst fetchPageData = useCallback(\n\t\tasync (currentPath: string, currentDefaultColumns: any[], currentResources: IResources) => {\n\t\t\n\t\t\t// Check if this request is still valid (pathname hasn't changed)\n\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetLoading(true);\n\t\t\tsetError(null);\n\t\t\t\n\t\t\ttry {\n\t\t\t\tif (currentDefaultColumns.length && currentResources) {\n\t\t\t\t\tconst { pageResource = '', fieldResource = '',formResource='' } = currentResources;\n\t\t\t\t\t\n\t\t\t\t\t// Double-check pathname hasn't changed before making API calls\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tconst [pageResponse, fieldResponse,formResponse] = await Promise.all([\n\t\t\t\t\t\tpageResource ? getV1PagesResource({ ...getToken(), resource: pageResource }): Promise.resolve(null),\n\n\t\t\t\t\t\tgetV1FormBuilderSchemaFieldsName({\n\t\t\t\t\t\t\tname: fieldResource,\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tskip: 0,\n\t\t\t\t\t\t\tlimit: 999\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tgetV1FormBuilder({\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tfilters:`(resource.eq=${formResource}&company_id.eq=${user?.company_id})`,\n\t\t\t\t\t\t})\n\t\t\t\t\t]);\n\n\t\t\t\t\t// Final check - ensure pathname still matches\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed after API call');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst fields = fieldResponse?.data?.fields?.map(f => ({...f, label: !f?.label?.trim() ? formatLabel(f.key) : f.label}));\n\n\t\t\t\t\tconst gColumns = generateColumnSchema(currentDefaultColumns, fields, [], [], t);\n \n\t\t\t\t\tconst pages =\n\t\t\t\t\t\tpageResponse?.data?.pages?.map((p) => ({\n\t\t\t\t\t\t\t...defaultPageState,\n\t\t\t\t\t\t\t...p,\n\t\t\t\t\t\t\tvisible_columns: generateColumnSchema(\n\t\t\t\t\t\t\t\tp.visible_columns?.length ? p.visible_columns : currentDefaultColumns,\n\t\t\t\t\t\t\t\tfields,\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\tcurrentDefaultColumns,\n\t\t\t\t\t\t\t\tt\n\t\t\t\t\t\t\t).columns,\n\t\t\t\t\t\t\tcolumn_order: mergeArraysKeepingOrder(\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\t_.uniq(gColumns.orderKeys)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})) || [];\n\t\t\t\t\tconst sharedPages =\n\t\t\t\t\t\tpageResponse?.data?.shared_pages?.map((sPages) => ({\n\t\t\t\t\t\t\t...sPages.details,\n\t\t\t\t\t\t\tisShared: true,\n\t\t\t\t\t\t\towner: sPages.owner,\n\t\t\t\t\t\t\t_id: sPages.id\n\t\t\t\t\t\t})) || [];\n\n\t\t\t\t\tconst uPages = [...pages, ...sharedPages];\n\n\t\t\t\t\t// Only update state if we're still on the same path\n\t\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\t\tawait Promise.all([\n\t\t\t\t\t\t\tsetSchemaFields(fields),\n\t\t\t\t\t\t\tsetGeneratedColumns(gColumns),\n\t\t\t\t\t\t\tsetPageTemplateId(pageResponse?.data?._id),\n\t\t\t\t\t\t\tsetSharedPages(sharedPages),\n\t\t\t\t\t\t\tsetPages(uPages || []),\n\t\t\t\t\t\t\tsetFormData(formResponse?.data?.form?.[0] || {}),\n\t\t\t\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t\t...(pages?.[0] || {}) // Merge API response with current state\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t// Only set error if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetError('Failed to load page data');\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\t// Only update loading state if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tsetLoading(false);\n\t\t\t\t\t}, 1000);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[] // Remove dependencies to prevent stale closures\n\t);\n\n\t// Update page state dynamically\n\tconst updatePageInfo = (updates: Partial<PageState>) => {\n\t\tsetActivePageData((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t\t!isInitialLoad && setIsChanged(true)\n\t\tsetIsInitialLoad(false)\n\t};\n\n\t// Update columns state dynamically\n\tconst updateGeneratedColumns = (updates: Partial<GeneratedColumnsState>) => {\n\t\tsetGeneratedColumns((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t};\n\n\tconst setActivePage = (page: PageState) => {\n\t\tconst uPages = pages.map((p) =>\n\t\t\tp._id == activePage?._id ? activePage : p\n\t\t);\n\t\tsetPages(uPages);\n\t\tsetActivePageData(page);\n\t};\n\n\tconst savePages = async () => {\n\t\tsetError(null);\n\t\tsetIsSaving(true);\n\t\tawait addOrDeletePage()\n\t\tsetTimeout(() => {\n\t\t\tsetIsSaving(false);\n\t\t}, 1000);\n\t};\n\tconst fetchSavedFilters = async (): Promise<void> => {\n\n\t\tawait\tgetV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\n\t\t\t\n\t};\n\n\tconst addOrDeletePage=async(restPages?:any[])=>{\n\t\ttry {\n\t\t\tconst filteredPages =restPages?.length ? restPages : pages.filter((page) => !page.isShared);\n\t\t\tconst uPages = filteredPages.map((p) =>\n\t\t\t\t(p._id == activePage?._id && activePage.name==p.name) ? activePage : p\n\t\t\t);\n\t\t\tconst sanitizedPages = removeIdStaticIdsFromMongoObject(uPages);\n\n\t\t\tconst response = await patchV1PagesPageId({\n\t\t\t\t...getToken(),\n\t\t\t\t...{ page_id: pageTemplateId, pages: sanitizedPages }\n\t\t\t});\n\t\t\tif (response.status_code === 200) {\n\t\t\t\tconst updatedPages = response?.data?.pages || [];\n\t\t\t\tsetPages(updatedPages);\n \t\tfetchSavedFilters();\n\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\t...(updatedPages.find((p) => p.name == prev.name) || {})\n\t\t\t\t}));\n\t\t\t\tsetIsChanged(false);\n\t\t\t\tsetIsCreatePage(false);\n\t\t\t\tsetFormData(response?.data?.form?.[0] || {});\n\t\t\t\tconst msg=restPages?.length ? t('pages.msg.delete') : t('pages.msg.save')\n\t\t\t\tenqueueSnackbar(msg);\n\t\t\t}\n\t\t\treturn response\n\t\t} catch (err) {\n\t\t\tsetError('Failed to save page data');\n\t\t} \n\t}\n\t\n\tconst deletePage=async(pages:string)=>{\n\t\taddOrDeletePage(pages);\n\t}\n\n\t// Handle pathname changes\n\tuseEffect(() => {\n\t\t// Update the ref immediately\n\t\tcurrentPathnameRef.current = curPathName;\n\t\t\n\t\t// Reset state for new page\n\t\tsetLoading(true);\n\t\tsetIsSaving(false);\n\t\tsetActivePageData(defaultPageState);\n\t\tsetIsChanged(false);\n\t\tsetIsInitialLoad(true);\n\t\t\n\t\t// Clear previous data to prevent showing stale data\n\t\tsetSchemaFields([]);\n\t\tsetGeneratedColumns({ columns: [], orderKeys: [] });\n\t\tsetPages([]);\n\t\tsetSharedPages([]);\n\t\tsetPageTemplateId('');\n\t\tsetError(null);\n\t\t\n\t\t// Fetch data for new page with current values\n\t\tfetchPageData(curPathName, defaultColumns, resources);\n\n\t\treturn () => { setLoading(true) }\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [curPathName, JSON.stringify(defaultColumns), JSON.stringify(resources)]); // Remove other dependencies to prevent issues\n\n\n\t// Removed loading check to prevent blank page during loading\n\n\treturn (\n\t\t<PageContext.Provider\n\t\t\tvalue={{\n\t\t\t\tpageTemplateId,\n\t\t\t\tactivePage,\n\t\t\t\tpages,\n\t\t\t\tsharedPages,\n\t\t\t\tschemaFields,\n\t\t\t\tsetPages,\n\t\t\t\tupdatePageInfo,\n\t\t\t\tsavePages,\n\t\t\t\tsetActivePage,\n\t\t\t\tisSaving,\n\t\t\t\tloading,\n\t\t\t\terror,\n\t\t\t\tinitializeColumns,\n\t\t\t\tgeneratedColumns,\n\t\t\t\tupdateGeneratedColumns,\n\t\t\t\tisChanged,\n\t\t\t\tdeletePage,\n\t\t\t\tisCreatePage,\n\t\t\t\tsetIsCreatePage,\n\t\t\t\taddOrDeletePage,\n\t\t\t\tsetIsChanged,\n\t\t\t\tformData\n\t\t\t}}>\n\t\t\t{children}\n\t\t</PageContext.Provider>\n\t);\n};\n"],"names":["field","_a","pages","sharedPages"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),a=require("react"),t=require("react-router-dom"),l=require("../../api-client/api.system-feature/api/index.js"),n=require("../../constants/route-page-map/index.js"),r=require("../../utils/common/index.js"),o=require("lodash"),s=require("../../utils/format-text/index.js"),i=require("../../node_modules/notistack/notistack.esm/index.js"),u=require("react-i18next"),d=require("../../hooks/useAuth/index.js");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var v=/* @__PURE__ */c(o);const m={combinator:"and",rules:[]},g={_id:"",name:"",page_size:10,column_order:["id"],visible_columns:[],views:[],active_view:"",filters:m,filterQueryString:"",sort:null,search:"",enabled_views:["Table","Grid","Kanban","Calendar","Gantt"],isShared:!1,column_sizes:{}},p=a.createContext({pageTemplateId:"",activePage:g,updatePageInfo:()=>{},loading:!1,isSaving:!1,error:null,pages:[],sharedPages:[],savePages:()=>{},setActivePage:()=>{},setPages:()=>{},schemaFields:[],initializeColumns:()=>{},generatedColumns:{columns:[],orderKeys:[]},updateGeneratedColumns:()=>{}});function y(e,a){const t=new Set(e),l=a.filter(e=>!t.has(e));return[...e,...l]}const f=(e,a,t,l,n)=>{try{l&&(null==l?void 0:l.length)&&(e=e.map(e=>l.find(a=>a.accessorKey==e.accessorKey)||e));let r=t.length?t:e.map(e=>e.accessorKey);const o=e=>"object"===e.type||(null==e?void 0:e.join)?`${e.alias}.${e.accessorKey}`:e.key,i=a.map(e=>({...e,key:e.key.replace("__replaceKey","")})).filter(e=>!e.is_inner_join),u=v.default.differenceWith(i,i,(e,a)=>e.key===(null==a?void 0:a.joinKey)),d=v.default.differenceWith(u,e,(e,a)=>o(e)===a.accessorKey).map(e=>{var a,t,l;return{header:n?s.formatLabel((null==(a=n(null==e?void 0:e.label))?void 0:a.replace("_data",""))||""):s.formatLabel((null==(t=null==e?void 0:e.label)?void 0:t.replace("_data",""))||""),accessorKey:o(e),visible:!1,type:(null==e?void 0:e.enum)?"status":e.type,..."array"===e.type&&{typeArrayAccessorKey:e.accessorKey||""},enableSorting:"array"!==e.type&&"object"!==e.type&&!(null==e?void 0:e.join),..."boolean"===(null==e?void 0:e.type)?{typeBooleanLabels:(null==(l=null==e?void 0:e.values)?void 0:l.length)?v.default.mapValues(v.default.keyBy(null==e?void 0:e.values.map(e=>({key:e.name,value:e.label})),"key"),"value"):{0:"Inactive",1:"Active",false:"Inactive",true:"Active"}}:{}}}),c=[...null==e?void 0:e.map(e=>{const t=a.find(a=>o(a)===e.accessorKey);return{...e,..."object"===(null==t?void 0:t.type)||(null==t?void 0:t.joinKey)||!1===e.enableSorting?{enableSorting:!1}:{}}}),...d];return r=y(r,c.map(e=>e.accessorKey)),{columns:c,orderKeys:r}}catch(r){return{columns:e,orderKeys:e.map(e=>e.accessorKey)}}};exports.PageContext=p,exports.PageProvider=({children:o,routeToColumnsMap:c,routeToResourceMap:m})=>{const h=t.useLocation(),[_,b]=a.useState(g),[S,P]=a.useState([]),[K,j]=a.useState(!0),[k,x]=a.useState(!1),[C,q]=a.useState(null),[T,w]=a.useState([]),[I,F]=a.useState([]),[R,M]=a.useState(!1),[A,V]=a.useState(""),[L,O]=a.useState(!0),[z,B]=a.useState(!1),[G,$]=a.useState({}),[N,D]=a.useState({columns:[],orderKeys:[]}),{user:J}=d.useAuth(),W=a.useRef(h.pathname),E=a.useMemo(()=>h.pathname,[h.pathname]),Q=a.useMemo(()=>{var e;return(null==(e=(null==c?void 0:c[E])||n.routeToColumnsMap[E])?void 0:e.defaultColumns)||[]},[E,c]),H=a.useMemo(()=>(null==m?void 0:m[E])||n.routeToResourceMap[E]||null,[E,m]),{t:U}=u.useTranslation(),X=a.useCallback(async(e,a,t)=>{var n,o,i,u,d,c,m,p,h;if(W.current===e){j(!0),q(null);try{if(a.length&&t){const{pageResource:_="",fieldResource:S="",formResource:K=""}=t;if(W.current!==e)return;const[j,k,x]=await Promise.all([_?l.getV1PagesResource({...r.getToken(),resource:_}):Promise.resolve(null),l.getV1FormBuilderSchemaFieldsName({name:S,...r.getToken()}),l.getV1FormBuilder({...r.getToken(),filters:`(resource.eq=${K}&company_id.eq=${null==J?void 0:J.company_id})`})]);if(W.current!==e)return;const C=null==(o=null==(n=null==k?void 0:k.data)?void 0:n.fields)?void 0:o.map(e=>{var a;return{...e,label:(null==(a=null==e?void 0:e.label)?void 0:a.trim())?e.label:s.formatLabel(e.key)}}),q=f(a,C,[],[],U),T=(null==(u=null==(i=null==j?void 0:j.data)?void 0:i.pages)?void 0:u.map(e=>{var t;return{...g,...e,visible_columns:f((null==(t=e.visible_columns)?void 0:t.length)?e.visible_columns:a,C,e.column_order||[],a,U).columns,column_order:y(e.column_order||[],v.default.uniq(q.orderKeys))}}))||[],I=(null==(c=null==(d=null==j?void 0:j.data)?void 0:d.shared_pages)?void 0:c.map(e=>({...e.details,isShared:!0,owner:e.owner,_id:e.id})))||[],R=[...T,...I];W.current===e&&await Promise.all([P(C),D(q),V(null==(m=null==j?void 0:j.data)?void 0:m._id),F(I),w(R||[]),$((null==(h=null==(p=null==x?void 0:x.data)?void 0:p.form)?void 0:h[0])||{}),b(e=>({...e,...(null==T?void 0:T[0])||{}}))])}}catch(_){W.current===e&&q("Failed to load page data")}finally{W.current===e&&setTimeout(()=>{j(!1)},1e3)}}},[]),Y=async e=>{var a,t,n;try{const o=((null==e?void 0:e.length)?e:T.filter(e=>!e.isShared)).map(e=>e._id==(null==_?void 0:_._id)&&_.name==e.name?_:e),s=r.removeIdStaticIdsFromMongoObject(o),u=await l.patchV1PagesPageId({...r.getToken(),page_id:A,pages:s});if(200===u.status_code){const o=(null==(a=null==u?void 0:u.data)?void 0:a.pages)||[];w(o),(async()=>{await l.getV1FilterResource({...r.getToken(),resource:(null==H?void 0:H.pageResource)||(null==H?void 0:H.fieldResource)})})(),b(e=>({...e,...o.find(a=>a.name==e.name)||{}})),M(!1),B(!1),$((null==(n=null==(t=null==u?void 0:u.data)?void 0:t.form)?void 0:n[0])||{});const s=(null==e?void 0:e.length)?U("pages.msg.delete"):U("pages.msg.save");i.enqueueSnackbar(s)}return u}catch(o){q("Failed to save page data")}};return a.useEffect(()=>(W.current=E,j(!0),x(!1),b(g),M(!1),O(!0),P([]),D({columns:[],orderKeys:[]}),w([]),F([]),V(""),q(null),X(E,Q,H),()=>{j(!0)}),[E,JSON.stringify(Q),JSON.stringify(H)]),/* @__PURE__ */e.jsx(p.Provider,{value:{pageTemplateId:A,activePage:_,pages:T,sharedPages:I,schemaFields:S,setPages:w,updatePageInfo:e=>{b(a=>({...a,...e})),!L&&M(!0),O(!1)},savePages:async()=>{q(null),x(!0),await Y(),setTimeout(()=>{x(!1)},1e3)},setActivePage:e=>{const a=T.map(e=>e._id==(null==_?void 0:_._id)?_:e);w(a),b(e)},isSaving:k,loading:K,error:C,initializeColumns:e=>{},generatedColumns:N,updateGeneratedColumns:e=>{D(a=>({...a,...e}))},isChanged:R,deletePage:async e=>{Y(e)},isCreatePage:z,setIsCreatePage:B,addOrDeletePage:Y,setIsChanged:M,formData:G},children:o})},exports.defaultPageState=g,exports.initialFilter=m;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),a=require("react"),t=require("react-router-dom"),l=require("../../api-client/api.system-feature/api/index.js"),n=require("../../constants/route-page-map/index.js"),r=require("../../utils/common/index.js"),s=require("lodash"),o=require("../../utils/format-text/index.js"),i=require("../../node_modules/notistack/notistack.esm/index.js"),u=require("react-i18next"),d=require("../../hooks/useAuth/index.js");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var m=/* @__PURE__ */c(s);const v={combinator:"and",rules:[]},g={_id:"",name:"",page_size:10,column_order:["id"],visible_columns:[],views:[],active_view:"",filters:v,filterQueryString:"",sort:null,search:"",enabled_views:["Table","Grid","Kanban","Calendar","Gantt"],isShared:!1,column_sizes:{}},p=a.createContext({pageTemplateId:"",activePage:g,updatePageInfo:()=>{},loading:!1,isSaving:!1,error:null,pages:[],sharedPages:[],savePages:()=>{},setActivePage:()=>{},setPages:()=>{},schemaFields:[],initializeColumns:()=>{},generatedColumns:{columns:[],orderKeys:[]},updateGeneratedColumns:()=>{}});function y(e,a){const t=new Set(e),l=a.filter(e=>!t.has(e));return[...e,...l]}const f=(e,a,t,l,n)=>{try{l&&(null==l?void 0:l.length)&&(e=e.map(e=>l.find(a=>a.accessorKey==e.accessorKey)||e));let r=t.length?t:e.map(e=>e.accessorKey);const s=e=>"object"===e.type||(null==e?void 0:e.join)?`${e.alias}.${e.accessorKey}`:e.key,i=a.map(e=>({...e,key:e.key.replace("__replaceKey","")})).filter(e=>!e.is_inner_join),u=m.default.differenceWith(i,i,(e,a)=>e.key===(null==a?void 0:a.joinKey)),d=m.default.differenceWith(u,e,(e,a)=>s(e)===a.accessorKey).map(e=>{var a,t,l;return{header:n?o.formatLabel((null==(a=n(null==e?void 0:e.label))?void 0:a.replace("_data",""))||""):o.formatLabel((null==(t=null==e?void 0:e.label)?void 0:t.replace("_data",""))||""),accessorKey:s(e),visible:!1,type:(null==e?void 0:e.enum)?"status":e.type,..."array"===e.type&&{typeArrayAccessorKey:e.accessorKey||""},enableSorting:"array"!==e.type&&"object"!==e.type&&!(null==e?void 0:e.join),..."boolean"===(null==e?void 0:e.type)?{typeBooleanLabels:(null==(l=null==e?void 0:e.values)?void 0:l.length)?m.default.mapValues(m.default.keyBy(null==e?void 0:e.values.map(e=>({key:e.name,value:e.label})),"key"),"value"):{0:"Inactive",1:"Active",false:"Inactive",true:"Active"}}:{}}}),c=[...null==e?void 0:e.map(e=>{const t=a.find(a=>s(a)===e.accessorKey);return{...e,..."object"===(null==t?void 0:t.type)||(null==t?void 0:t.joinKey)||!1===e.enableSorting?{enableSorting:!1}:{}}}),...d];return r=y(r,c.map(e=>e.accessorKey)),{columns:c,orderKeys:r}}catch(r){return{columns:e,orderKeys:e.map(e=>e.accessorKey)}}};exports.PageContext=p,exports.PageProvider=({children:s})=>{const c=t.useLocation(),[v,h]=a.useState(g),[_,b]=a.useState([]),[S,P]=a.useState(!0),[K,j]=a.useState(!1),[k,x]=a.useState(null),[C,q]=a.useState([]),[T,w]=a.useState([]),[I,F]=a.useState(!1),[R,A]=a.useState(""),[M,V]=a.useState(!0),[L,O]=a.useState(!1),[z,B]=a.useState({}),[G,$]=a.useState({columns:[],orderKeys:[]}),{user:N}=d.useAuth(),D=a.useRef(c.pathname),J=a.useMemo(()=>c.pathname,[c.pathname]),W=a.useMemo(()=>{var e;return(null==(e=n.routeToColumnsMap[J])?void 0:e.defaultColumns)||[]},[J]),E=a.useMemo(()=>n.routeToResourceMap[J]||null,[J]),{t:Q}=u.useTranslation(),H=a.useCallback(async(e,a,t)=>{var n,s,i,u,d,c,v,p,_;if(D.current===e){P(!0),x(null);try{if(a.length&&t){const{pageResource:S="",fieldResource:P="",formResource:K=""}=t;if(D.current!==e)return;const[j,k,x]=await Promise.all([S?l.getV1PagesResource({...r.getToken(),resource:S}):Promise.resolve(null),l.getV1FormBuilderSchemaFieldsName({name:P,...r.getToken()}),l.getV1FormBuilder({...r.getToken(),filters:`(resource.eq=${K}&company_id.eq=${null==N?void 0:N.company_id})`})]);if(D.current!==e)return;const C=null==(s=null==(n=null==k?void 0:k.data)?void 0:n.fields)?void 0:s.map(e=>{var a;return{...e,label:(null==(a=null==e?void 0:e.label)?void 0:a.trim())?e.label:o.formatLabel(e.key)}}),T=f(a,C,[],[],Q),I=(null==(u=null==(i=null==j?void 0:j.data)?void 0:i.pages)?void 0:u.map(e=>{var t;return{...g,...e,visible_columns:f((null==(t=e.visible_columns)?void 0:t.length)?e.visible_columns:a,C,e.column_order||[],a,Q).columns,column_order:y(e.column_order||[],m.default.uniq(T.orderKeys))}}))||[],F=(null==(c=null==(d=null==j?void 0:j.data)?void 0:d.shared_pages)?void 0:c.map(e=>({...e.details,isShared:!0,owner:e.owner,_id:e.id})))||[],R=[...I,...F];D.current===e&&await Promise.all([b(C),$(T),A(null==(v=null==j?void 0:j.data)?void 0:v._id),w(F),q(R||[]),B((null==(_=null==(p=null==x?void 0:x.data)?void 0:p.form)?void 0:_[0])||{}),h(e=>({...e,...(null==I?void 0:I[0])||{}}))])}}catch(S){D.current===e&&x("Failed to load page data")}finally{D.current===e&&setTimeout(()=>{P(!1)},1e3)}}},[]),U=async e=>{var a,t,n;try{const s=((null==e?void 0:e.length)?e:C.filter(e=>!e.isShared)).map(e=>e._id==(null==v?void 0:v._id)&&v.name==e.name?v:e),o=r.removeIdStaticIdsFromMongoObject(s),u=await l.patchV1PagesPageId({...r.getToken(),page_id:R,pages:o});if(200===u.status_code){const s=(null==(a=null==u?void 0:u.data)?void 0:a.pages)||[];q(s),(async()=>{await l.getV1FilterResource({...r.getToken(),resource:(null==E?void 0:E.pageResource)||(null==E?void 0:E.fieldResource)})})(),h(e=>({...e,...s.find(a=>a.name==e.name)||{}})),F(!1),O(!1),B((null==(n=null==(t=null==u?void 0:u.data)?void 0:t.form)?void 0:n[0])||{});const o=(null==e?void 0:e.length)?Q("pages.msg.delete"):Q("pages.msg.save");i.enqueueSnackbar(o)}return u}catch(s){x("Failed to save page data")}};return a.useEffect(()=>(D.current=J,P(!0),j(!1),h(g),F(!1),V(!0),b([]),$({columns:[],orderKeys:[]}),q([]),w([]),A(""),x(null),H(J,W,E),()=>{P(!0)}),[J,JSON.stringify(W),JSON.stringify(E)]),/* @__PURE__ */e.jsx(p.Provider,{value:{pageTemplateId:R,activePage:v,pages:C,sharedPages:T,schemaFields:_,setPages:q,updatePageInfo:e=>{h(a=>({...a,...e})),!M&&F(!0),V(!1)},savePages:async()=>{x(null),j(!0),await U(),setTimeout(()=>{j(!1)},1e3)},setActivePage:e=>{const a=C.map(e=>e._id==(null==v?void 0:v._id)?v:e);q(a),h(e)},isSaving:K,loading:S,error:k,initializeColumns:e=>{},generatedColumns:G,updateGeneratedColumns:e=>{$(a=>({...a,...e}))},isChanged:I,deletePage:async e=>{U(e)},isCreatePage:L,setIsCreatePage:O,addOrDeletePage:U,setIsChanged:F,formData:z},children:s})},exports.defaultPageState=g,exports.initialFilter=v;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/contexts/page-context.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\n/* eslint-disable no-mixed-spaces-and-tabs */\n\nimport React, { createContext, useCallback, useEffect, useMemo, useState, useRef } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport {\n\tgetV1FilterResource,\n\tgetV1FormBuilder,\n\tgetV1FormBuilderSchemaFieldsName,\n\tgetV1PagesResource,\n\tpatchV1PagesPageId\n} from '../api-client/api.system-feature/api';\nimport { IResources, routeToColumnsMap, routeToResourceMap } from '../constants/route-page-map'; // Removed - should be passed as props or configured by consuming app\nimport { getToken } from '../utils/common';\nimport { removeIdStaticIdsFromMongoObject } from '../utils/common';\nimport { RuleGroupType } from 'react-querybuilder';\nimport { MaterialTableColumnProps } from '../components/material-table/material-table';\nimport _ from 'lodash';\nimport { formatLabel } from '../utils/format-text';\nimport ErpLoader from '../components/loaders/erp-loader';\nimport { enqueueSnackbar } from 'notistack';\nimport { useTranslation } from 'react-i18next';\nimport { useAuth } from '../hooks/useAuth';\n// import { usePermissions } from '../hooks/use-permissions';\n\n/* Interfaces and types */\nexport type ViewType = 'Table' | 'Grid' | 'Kanban' | 'Calendar' | 'Gantt' | '';\n\ninterface SchemaFields {\n\tselect: string;\n\talias: string;\n\ttype: string;\n\tfilter_type?: string;\n\tfilter_name?: string;\n\trequired?: boolean;\n\tisOrderAllowed?: boolean;\n\tisDefault?: boolean;\n\tisFilterAllowed?: boolean;\n\tlabel?: string;\n\tkey: string;\n\taccessorKey?: string;\n\tjoinKey?: string;\n\tenum?: string | string[];\n}\nexport interface SavedViewType {\n\tlabel: ViewType;\n\tposition: number;\n}\nexport interface PageState {\n\t_id: string | number;\n\tname: string;\n\tpage_size: number;\n\tcolumn_order: string[];\n\tvisible_columns: MaterialTableColumnProps[];\n\tviews: SavedViewType[];\n\tactive_view: ViewType;\n\tfilters: RuleGroupType;\n\tfilterQueryString: string;\n\tsort: Record<any, any> | null;\n\tsearch: string;\n\tenabled_views: ViewType[];\n\tisShared: boolean;\n\tcolumn_sizes: Record<string, number>;\n}\n\nexport interface GeneratedColumnsState {\n\tcolumns: MaterialTableColumnProps[];\n\torderKeys: string[];\n}\n\nexport const initialFilter: RuleGroupType = { combinator: 'and', rules: [] };\n\ninterface PageContextValue {\n\tpageTemplateId: string;\n\tactivePage: PageState;\n\tupdatePageInfo: (updates: Partial<PageState>) => void;\n\tloading: boolean;\n\tisSaving: boolean;\n\terror: string | null;\n\tpages: any[];\n\tsavePages: () => void;\n\tsetActivePage: (data: any) => void;\n\tsetPages: React.Dispatch<any>;\n\tschemaFields: SchemaFields[];\n\tinitializeColumns: (columns: MaterialTableColumnProps[]) => void;\n\tgeneratedColumns: GeneratedColumnsState;\n\tsharedPages: any[];\n\tupdateGeneratedColumns: (updates: Partial<GeneratedColumnsState>) => void;\n\tformData: Record<string, any>\n\tsetFormData: (data: Record<string, any>) => void\n}\n\nexport const defaultPageState: PageState = {\n\t_id: '',\n\tname: '',\n\tpage_size: 10,\n\tcolumn_order: ['id'],\n\tvisible_columns: [],\n\tviews: [],\n\tactive_view: '',\n\tfilters: initialFilter,\n\tfilterQueryString: '',\n\tsort: null,\n\tsearch: '',\n\tenabled_views: ['Table', 'Grid', 'Kanban', 'Calendar', 'Gantt'],\n\tisShared: false,\n\tcolumn_sizes: {}\n};\ninterface PageProviderProps {\n\tchildren: React.ReactNode;\n\trouteToColumnsMap?: Record<string, any>;\n\trouteToResourceMap?: Record<string, any>;\n}\n\nconst UpdatePageInfo = () => { };\nconst UpdateGeneratedColumns = () => { };\n\nexport const PageContext = createContext<PageContextValue>({\n\tpageTemplateId: '',\n\tactivePage: defaultPageState,\n\tupdatePageInfo: UpdatePageInfo,\n\tloading: false,\n\tisSaving: false,\n\terror: null,\n\tpages: [],\n\tsharedPages: [],\n\tsavePages: () => { },\n\tsetActivePage: () => { },\n\tsetPages: () => { },\n\tschemaFields: [],\n\tinitializeColumns: () => { },\n\tgeneratedColumns: { columns: [], orderKeys: [] },\n\tupdateGeneratedColumns: UpdateGeneratedColumns,\n});\n\nfunction mergeArraysKeepingOrder(array1: string[], array2: string[]): string[] {\n\t// Create a Set from the first array for efficient lookups\n\tconst array1Set = new Set(array1);\n\n\t// Filter the second array to find elements not in the first array\n\tconst elementsToAdd = array2.filter((item) => !array1Set.has(item));\n\n\t// Combine the original first array with the new elements\n\treturn [...array1, ...elementsToAdd];\n}\n\nconst generateColumnSchema = (\n\tdefaultColumns: MaterialTableColumnProps[],\n\tschemaFields: SchemaFields[],\n\tcolumnOrders: string[],\n\tdColumns?: any[],\n\tt?: any\n): { columns: MaterialTableColumnProps[]; orderKeys: string[] } => {\n\ttry {\n\t\tif (dColumns && dColumns?.length) {\n\t\t\tdefaultColumns = defaultColumns.map((column) => {\n\t\t\t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\n\t\t\t\treturn f || column\n\t\t\t})\n\t\t}\n\t\tlet orderKeys = columnOrders.length\n\t\t\t? columnOrders\n\t\t\t: (defaultColumns.map((column) => column.accessorKey) as string[]);\n\t\tconst getAccesorKeyViaField = (field: SchemaFields) =>\n\t\t\t(field.type === 'object' || field?.join) ? `${field.alias}.${field.accessorKey}` : field.key;\n\n\t\t// Clean up schema fields by removing \"__replaceKey\" from the keys\n\t\tconst updatedFields = schemaFields.map((field) => ({\n\t\t\t...field,\n\t\t\tkey: field.key.replace('__replaceKey', '')\n\t\t})).filter((field) => !field.is_inner_join);\n\n\t\tconst uniqueFields = _.differenceWith(\n\t\t\tupdatedFields,\n\t\t\tupdatedFields,\n\t\t\t(fieldA, fieldB) => fieldA.key === fieldB?.joinKey\n\t\t);\n\n\t\t// Find fields in schemaFields but not in defaultColumns based on accessorKey\n\t\tconst unmatchedFields = _.differenceWith(\n\t\t\tuniqueFields,\n\t\t\tdefaultColumns,\n\t\t\t(field, column) => getAccesorKeyViaField(field) === column.accessorKey\n\t\t);\n\n\t\t// Map unique fields to MaterialTableColumn structure\n\t\tconst additionalColumns: MaterialTableColumnProps[] = unmatchedFields.map(\n\t\t\t(field) => ({\n\t\t\t\theader: t ? formatLabel(t(field?.label)?.replace('_data', '') || '') : formatLabel(field?.label?.replace('_data', '') || ''),\n\t\t\t\taccessorKey: getAccesorKeyViaField(field),\n\t\t\t\tvisible: false,\n\t\t\t\ttype: field?.enum ? 'status' : field.type,\n\t\t\t\t...(field.type === 'array' && { typeArrayAccessorKey: field.accessorKey || '' }),\n\t\t\t\tenableSorting: (field.type === 'array' || field.type === 'object' || field?.join) ? false : true,\n\t\t\t\t...(field?.type === 'boolean' ? {\n\t\t\t\t\ttypeBooleanLabels: field?.values?.length ? _.mapValues(_.keyBy(\n\t\t\t\t\t\tfield?.values.map(item => ({\n\t\t\t\t\t\t\tkey: item.name,\n\t\t\t\t\t\t\tvalue: item.label\n\t\t\t\t\t\t})),\n\t\t\t\t\t\t'key'\n\t\t\t\t\t), 'value') : { 0: \"Inactive\", 1: \"Active\", false: \"Inactive\", true: \"Active\" }\n\t\t\t\t} : {})\n\t\t\t})\n\t\t);\n\n\t\tconst updatedDefaultColumns = defaultColumns?.map((column) => {\n\t\t\tconst field = schemaFields.find((field) => getAccesorKeyViaField(field) === column.accessorKey);\n\t\t\treturn {\n\t\t\t\t...column,\n\t\t\t\t...((field?.type === 'object' || field?.joinKey || column.enableSorting === false) ? { enableSorting: false } : {})\n\t\t\t};\n\t\t});\n\n\t\t// Combine default columns and additional columns\n\t\tconst columns = [...updatedDefaultColumns, ...additionalColumns];\n\n\t\t// Generate an array of column keys for ordering\n\t\tconst nOrderKeys = columns.map((column) => column.accessorKey) as string[];\n\n\t\torderKeys = mergeArraysKeepingOrder(orderKeys, nOrderKeys);\n\n\t\treturn { columns, orderKeys };\n\t} catch (error) {\n\t\treturn {\n\t\t\tcolumns: defaultColumns,\n\t\t\torderKeys: defaultColumns.map((column) => column.accessorKey) as string[]\n\t\t};\n\t}\n};\n\nexport const PageProvider: React.FC<PageProviderProps> = ({ children, routeToColumnsMap: customRouteToColumnsMap, routeToResourceMap: customRouteToResourceMap }) => {\n\tconst location = useLocation();\n\tconst [activePage, setActivePageData] = useState<PageState>(defaultPageState);\n\t// const permissions=usePermissions();\n\tconst [schemaFields, setSchemaFields] = useState<SchemaFields[]>([]);\n\tconst [loading, setLoading] = useState<boolean>(true);\n\tconst [isSaving, setIsSaving] = useState<boolean>(false);\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [pages, setPages] = useState<any>([]);\n\tconst [sharedPages, setSharedPages] = useState<any>([]);\n\tconst [isChanged, setIsChanged] = useState<boolean>(false);\n\tconst [pageTemplateId, setPageTemplateId] = useState<string>('');\n\tconst [isInitialLoad, setIsInitialLoad] = useState<boolean>(true);\n\tconst [isCreatePage, setIsCreatePage] = useState<boolean>(false);\n\tconst [formData, setFormData] = useState<any>({});\n\tconst [generatedColumns, setGeneratedColumns] = useState<{\n\t\tcolumns: MaterialTableColumnProps[];\n\t\torderKeys: string[];\n\t}>({ columns: [], orderKeys: [] });\n\tconst { user } = useAuth()\n\t// Add ref to track current pathname for race condition prevention\n\tconst currentPathnameRef = useRef<string>(location.pathname);\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\n\n\t// Get current page's default columns and resources\n\tconst defaultColumns: any[] = useMemo(() => {\n\t\tconst columns = (customRouteToColumnsMap?.[curPathName] || routeToColumnsMap[curPathName])?.defaultColumns || [];\n\t\treturn columns;\n\t}, [curPathName, customRouteToColumnsMap]);\n\n\tconst resources: IResources = useMemo(() => {\n\t\tconst resource = customRouteToResourceMap?.[curPathName] || routeToResourceMap[curPathName] || null;\n\t\treturn resource;\n\t}, [curPathName, customRouteToResourceMap]);\n\n\t//Translation\n\tconst { t } = useTranslation()\n\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n\tconst initializeColumns = (columns: MaterialTableColumnProps[]) => {\n\t\t//! Remove the function if not needed\n\t};\n\n\t// Fetch page-related information from API\n\tconst fetchPageData = useCallback(\n\t\tasync (currentPath: string, currentDefaultColumns: any[], currentResources: IResources) => {\n\n\t\t\t// Check if this request is still valid (pathname hasn't changed)\n\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetLoading(true);\n\t\t\tsetError(null);\n\n\t\t\ttry {\n\t\t\t\tif (currentDefaultColumns.length && currentResources) {\n\t\t\t\t\tconst { pageResource = '', fieldResource = '', formResource = '' } = currentResources;\n\n\t\t\t\t\t// Double-check pathname hasn't changed before making API calls\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst [pageResponse, fieldResponse, formResponse] = await Promise.all([\n\t\t\t\t\t\tpageResource ? getV1PagesResource({ ...getToken(), resource: pageResource }) : Promise.resolve(null),\n\n\t\t\t\t\t\tgetV1FormBuilderSchemaFieldsName({\n\t\t\t\t\t\t\tname: fieldResource,\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tskip: 0,\n\t\t\t\t\t\t\tlimit: 999\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tgetV1FormBuilder({\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tfilters: `(resource.eq=${formResource}&company_id.eq=${user?.company_id})`,\n\t\t\t\t\t\t})\n\t\t\t\t\t]);\n\n\t\t\t\t\t// Final check - ensure pathname still matches\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed after API call');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst fields = fieldResponse?.data?.fields?.map(f => ({ ...f, label: !f?.label?.trim() ? formatLabel(f.key) : f.label }));\n\n\t\t\t\t\tconst gColumns = generateColumnSchema(currentDefaultColumns, fields, [], [], t);\n\n\t\t\t\t\tconst pages =\n\t\t\t\t\t\tpageResponse?.data?.pages?.map((p) => ({\n\t\t\t\t\t\t\t...defaultPageState,\n\t\t\t\t\t\t\t...p,\n\t\t\t\t\t\t\tvisible_columns: generateColumnSchema(\n\t\t\t\t\t\t\t\tp.visible_columns?.length ? p.visible_columns : currentDefaultColumns,\n\t\t\t\t\t\t\t\tfields,\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\tcurrentDefaultColumns,\n\t\t\t\t\t\t\t\tt\n\t\t\t\t\t\t\t).columns,\n\t\t\t\t\t\t\tcolumn_order: mergeArraysKeepingOrder(\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\t_.uniq(gColumns.orderKeys)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})) || [];\n\t\t\t\t\tconst sharedPages =\n\t\t\t\t\t\tpageResponse?.data?.shared_pages?.map((sPages) => ({\n\t\t\t\t\t\t\t...sPages.details,\n\t\t\t\t\t\t\tisShared: true,\n\t\t\t\t\t\t\towner: sPages.owner,\n\t\t\t\t\t\t\t_id: sPages.id\n\t\t\t\t\t\t})) || [];\n\n\t\t\t\t\tconst uPages = [...pages, ...sharedPages];\n\n\t\t\t\t\t// Only update state if we're still on the same path\n\t\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\t\tawait Promise.all([\n\t\t\t\t\t\t\tsetSchemaFields(fields),\n\t\t\t\t\t\t\tsetGeneratedColumns(gColumns),\n\t\t\t\t\t\t\tsetPageTemplateId(pageResponse?.data?._id),\n\t\t\t\t\t\t\tsetSharedPages(sharedPages),\n\t\t\t\t\t\t\tsetPages(uPages || []),\n\t\t\t\t\t\t\tsetFormData(formResponse?.data?.form?.[0] || {}),\n\t\t\t\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t\t...(pages?.[0] || {}) // Merge API response with current state\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t// Only set error if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetError('Failed to load page data');\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\t// Only update loading state if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tsetLoading(false);\n\t\t\t\t\t}, 1000);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[] // Remove dependencies to prevent stale closures\n\t);\n\n\t// Update page state dynamically\n\tconst updatePageInfo = (updates: Partial<PageState>) => {\n\t\tsetActivePageData((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t\t!isInitialLoad && setIsChanged(true)\n\t\tsetIsInitialLoad(false)\n\t};\n\n\t// Update columns state dynamically\n\tconst updateGeneratedColumns = (updates: Partial<GeneratedColumnsState>) => {\n\t\tsetGeneratedColumns((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t};\n\n\tconst setActivePage = (page: PageState) => {\n\t\tconst uPages = pages.map((p) =>\n\t\t\tp._id == activePage?._id ? activePage : p\n\t\t);\n\t\tsetPages(uPages);\n\t\tsetActivePageData(page);\n\t};\n\n\tconst savePages = async () => {\n\t\tsetError(null);\n\t\tsetIsSaving(true);\n\t\tawait addOrDeletePage()\n\t\tsetTimeout(() => {\n\t\t\tsetIsSaving(false);\n\t\t}, 1000);\n\t};\n\tconst fetchSavedFilters = async (): Promise<void> => {\n\n\t\tawait getV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\n\n\t};\n\n\tconst addOrDeletePage = async (restPages?: any[]) => {\n\t\ttry {\n\t\t\tconst filteredPages = restPages?.length ? restPages : pages.filter((page) => !page.isShared);\n\t\t\tconst uPages = filteredPages.map((p) =>\n\t\t\t\t(p._id == activePage?._id && activePage.name == p.name) ? activePage : p\n\t\t\t);\n\t\t\tconst sanitizedPages = removeIdStaticIdsFromMongoObject(uPages);\n\n\t\t\tconst response = await patchV1PagesPageId({\n\t\t\t\t...getToken(),\n\t\t\t\t...{ page_id: pageTemplateId, pages: sanitizedPages }\n\t\t\t});\n\t\t\tif (response.status_code === 200) {\n\t\t\t\tconst updatedPages = response?.data?.pages || [];\n\t\t\t\tsetPages(updatedPages);\n\t\t\t\tfetchSavedFilters();\n\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\t...(updatedPages.find((p) => p.name == prev.name) || {})\n\t\t\t\t}));\n\t\t\t\tsetIsChanged(false);\n\t\t\t\tsetIsCreatePage(false);\n\t\t\t\tsetFormData(response?.data?.form?.[0] || {});\n\t\t\t\tconst msg = restPages?.length ? t('pages.msg.delete') : t('pages.msg.save')\n\t\t\t\tenqueueSnackbar(msg);\n\t\t\t}\n\t\t\treturn response\n\t\t} catch (err) {\n\t\t\tsetError('Failed to save page data');\n\t\t}\n\t}\n\n\tconst deletePage = async (pages: string) => {\n\t\taddOrDeletePage(pages);\n\t}\n\n\t// Handle pathname changes\n\tuseEffect(() => {\n\t\t// Update the ref immediately\n\t\tcurrentPathnameRef.current = curPathName;\n\n\t\t// Reset state for new page\n\t\tsetLoading(true);\n\t\tsetIsSaving(false);\n\t\tsetActivePageData(defaultPageState);\n\t\tsetIsChanged(false);\n\t\tsetIsInitialLoad(true);\n\n\t\t// Clear previous data to prevent showing stale data\n\t\tsetSchemaFields([]);\n\t\tsetGeneratedColumns({ columns: [], orderKeys: [] });\n\t\tsetPages([]);\n\t\tsetSharedPages([]);\n\t\tsetPageTemplateId('');\n\t\tsetError(null);\n\n\t\t// Fetch data for new page with current values\n\t\tfetchPageData(curPathName, defaultColumns, resources);\n\n\t\treturn () => { setLoading(true) }\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [curPathName, JSON.stringify(defaultColumns), JSON.stringify(resources)]); // Remove other dependencies to prevent issues\n\n\n\t// Removed loading check to prevent blank page during loading\n\n\treturn (\n\t\t<PageContext.Provider\n\t\t\tvalue={{\n\t\t\t\tpageTemplateId,\n\t\t\t\tactivePage,\n\t\t\t\tpages,\n\t\t\t\tsharedPages,\n\t\t\t\tschemaFields,\n\t\t\t\tsetPages,\n\t\t\t\tupdatePageInfo,\n\t\t\t\tsavePages,\n\t\t\t\tsetActivePage,\n\t\t\t\tisSaving,\n\t\t\t\tloading,\n\t\t\t\terror,\n\t\t\t\tinitializeColumns,\n\t\t\t\tgeneratedColumns,\n\t\t\t\tupdateGeneratedColumns,\n\t\t\t\tisChanged,\n\t\t\t\tdeletePage,\n\t\t\t\tisCreatePage,\n\t\t\t\tsetIsCreatePage,\n\t\t\t\taddOrDeletePage,\n\t\t\t\tsetIsChanged,\n\t\t\t\tformData\n\t\t\t}}>\n\t\t\t{children}\n\t\t</PageContext.Provider>\n\t);\n};\n"],"names":["initialFilter","combinator","rules","defaultPageState","_id","name","page_size","column_order","visible_columns","views","active_view","filters","filterQueryString","sort","search","enabled_views","isShared","column_sizes","PageContext","createContext","pageTemplateId","activePage","updatePageInfo","loading","isSaving","error","pages","sharedPages","savePages","setActivePage","setPages","schemaFields","initializeColumns","generatedColumns","columns","orderKeys","updateGeneratedColumns","mergeArraysKeepingOrder","array1","array2","array1Set","Set","elementsToAdd","filter","item","has","generateColumnSchema","defaultColumns","columnOrders","dColumns","t","length","map","column","find","c","accessorKey","getAccesorKeyViaField","field","type","join","alias","key","updatedFields","replace","is_inner_join","uniqueFields","_","differenceWith","fieldA","fieldB","joinKey","additionalColumns","header","formatLabel","_a","label","_b","visible","enum","typeArrayAccessorKey","enableSorting","typeBooleanLabels","_c","values","mapValues","keyBy","value","false","true","children","routeToColumnsMap","customRouteToColumnsMap","routeToResourceMap","customRouteToResourceMap","location","useLocation","setActivePageData","useState","setSchemaFields","setLoading","setIsSaving","setError","setSharedPages","isChanged","setIsChanged","setPageTemplateId","isInitialLoad","setIsInitialLoad","isCreatePage","setIsCreatePage","formData","setFormData","setGeneratedColumns","user","useAuth","currentPathnameRef","useRef","pathname","curPathName","useMemo","resources","useTranslation","fetchPageData","useCallback","async","currentPath","currentDefaultColumns","currentResources","current","pageResource","fieldResource","formResource","pageResponse","fieldResponse","formResponse","Promise","all","getV1PagesResource","getToken","resource","resolve","getV1FormBuilderSchemaFieldsName","getV1FormBuilder","company_id","fields","data","f","trim","gColumns","_d","p","uniq","_f","_e","shared_pages","sPages","details","owner","id","uPages","_g","_i","_h","form","prev","err","setTimeout","addOrDeletePage","restPages","page","sanitizedPages","removeIdStaticIdsFromMongoObject","response","patchV1PagesPageId","page_id","status_code","updatedPages","getV1FilterResource","fetchSavedFilters","msg","enqueueSnackbar","useEffect","JSON","stringify","jsx","Provider","updates","deletePage"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/contexts/page-context.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\n/* eslint-disable no-mixed-spaces-and-tabs */\n\nimport React, { createContext, useCallback, useEffect, useMemo, useState, useRef } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport {\n\tgetV1FilterResource,\n\tgetV1FormBuilder,\n\tgetV1FormBuilderSchemaFieldsName,\n\tgetV1PagesResource,\n\tpatchV1PagesPageId\n} from '../api-client/api.system-feature/api';\nimport { IResources, routeToColumnsMap, routeToResourceMap } from '../constants/route-page-map'; // Removed - should be passed as props or configured by consuming app\nimport { getToken } from '../utils/common';\nimport { removeIdStaticIdsFromMongoObject } from '../utils/common';\nimport { RuleGroupType } from 'react-querybuilder';\nimport { MaterialTableColumnProps } from '../components/material-table/material-table';\nimport _ from 'lodash';\nimport { formatLabel } from '../utils/format-text';\nimport ErpLoader from '../components/loaders/erp-loader';\nimport { enqueueSnackbar } from 'notistack';\nimport { useTranslation } from 'react-i18next';\nimport { useAuth } from '../hooks/useAuth';\n// import { usePermissions } from '../hooks/use-permissions';\n\n/* Interfaces and types */\nexport type ViewType = 'Table' | 'Grid' | 'Kanban' | 'Calendar' | 'Gantt' | '';\n\ninterface SchemaFields {\n\tselect: string;\n\talias: string;\n\ttype: string;\n\tfilter_type?: string;\n\tfilter_name?: string;\n\trequired?: boolean;\n\tisOrderAllowed?: boolean;\n\tisDefault?: boolean;\n\tisFilterAllowed?: boolean;\n\tlabel?: string;\n\tkey: string;\n\taccessorKey?: string;\n\tjoinKey?: string;\n\tenum?: string | string[];\n}\nexport interface SavedViewType {\n\tlabel: ViewType;\n\tposition: number;\n}\nexport interface PageState {\n\t_id: string | number;\n\tname: string;\n\tpage_size: number;\n\tcolumn_order: string[];\n\tvisible_columns: MaterialTableColumnProps[];\n\tviews: SavedViewType[];\n\tactive_view: ViewType;\n\tfilters: RuleGroupType;\n\tfilterQueryString: string;\n\tsort: Record<any, any> | null;\n\tsearch: string;\n\tenabled_views: ViewType[];\n\tisShared: boolean;\n\tcolumn_sizes: Record<string, number>;\n}\n\nexport interface GeneratedColumnsState {\n\tcolumns: MaterialTableColumnProps[];\n\torderKeys: string[];\n}\n\nexport const initialFilter: RuleGroupType = { combinator: 'and', rules: [] };\n\ninterface PageContextValue {\n\tpageTemplateId: string;\n\tactivePage: PageState;\n\tupdatePageInfo: (updates: Partial<PageState>) => void;\n\tloading: boolean;\n\tisSaving: boolean;\n\terror: string | null;\n\tpages: any[];\n\tsavePages: () => void;\n\tsetActivePage: (data: any) => void;\n\tsetPages: React.Dispatch<any>;\n\tschemaFields: SchemaFields[];\n\tinitializeColumns: (columns: MaterialTableColumnProps[]) => void;\n\tgeneratedColumns: GeneratedColumnsState;\n\tsharedPages: any[];\n\tupdateGeneratedColumns: (updates: Partial<GeneratedColumnsState>) => void;\n\tformData:Record<string, any>\n\tsetFormData:(data:Record<string, any>) => void\n}\n\nexport const defaultPageState: PageState = {\n\t_id: '',\n\tname: '',\n\tpage_size: 10,\n\tcolumn_order: ['id'],\n\tvisible_columns: [],\n\tviews: [],\n\tactive_view: '',\n\tfilters: initialFilter,\n\tfilterQueryString: '',\n\tsort: null,\n\tsearch: '',\n\tenabled_views: ['Table', 'Grid', 'Kanban', 'Calendar', 'Gantt'],\n\tisShared: false,\n\tcolumn_sizes: {}\n};\ninterface PageProviderProps {\n\tchildren: React.ReactNode;\n}\n\nconst UpdatePageInfo = () => {};\nconst UpdateGeneratedColumns = () => {};\n\nexport const PageContext = createContext<PageContextValue>({\n\tpageTemplateId: '',\n\tactivePage: defaultPageState,\n\tupdatePageInfo: UpdatePageInfo,\n\tloading: false,\n\tisSaving: false,\n\terror: null,\n\tpages: [],\n\tsharedPages: [],\n\tsavePages: () => {},\n\tsetActivePage: () => {},\n\tsetPages: () => {},\n\tschemaFields: [],\n\tinitializeColumns: () => {},\n\tgeneratedColumns: { columns: [], orderKeys: [] },\n\tupdateGeneratedColumns: UpdateGeneratedColumns,\n});\n\nfunction mergeArraysKeepingOrder(array1: string[], array2: string[]): string[] {\n\t// Create a Set from the first array for efficient lookups\n\tconst array1Set = new Set(array1);\n\n\t// Filter the second array to find elements not in the first array\n\tconst elementsToAdd = array2.filter((item) => !array1Set.has(item));\n\n\t// Combine the original first array with the new elements\n\treturn [...array1, ...elementsToAdd];\n}\n\nconst generateColumnSchema = (\n\tdefaultColumns: MaterialTableColumnProps[],\n\tschemaFields: SchemaFields[],\n\tcolumnOrders: string[],\n\tdColumns?: any[],\n\tt?: any\n): { columns: MaterialTableColumnProps[]; orderKeys: string[] } => {\n\ttry {\n\t\tif(dColumns && dColumns?.length) {\n\t\t\tdefaultColumns = defaultColumns.map((column) => {\n\t\t\t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\n\t\t\t\treturn f || column\n\t\t\t})\n\t\t}\n\t\tlet orderKeys = columnOrders.length\n\t\t\t? columnOrders\n\t\t\t: (defaultColumns.map((column) => column.accessorKey) as string[]);\n\t\tconst getAccesorKeyViaField = (field: SchemaFields) =>\n\t\t\t\t(field.type === 'object' || field?.join) ? `${field.alias}.${field.accessorKey}` : field.key;\n\t\t\t\n\t\t// Clean up schema fields by removing \"__replaceKey\" from the keys\n\t\tconst updatedFields = schemaFields.map((field) => ({\n\t\t\t...field,\n\t\t\tkey: field.key.replace('__replaceKey', '')\n\t\t})).filter((field)=>!field.is_inner_join);\n\n\t\tconst uniqueFields = _.differenceWith(\n\t\t\tupdatedFields,\n\t\t\tupdatedFields,\n\t\t\t(fieldA, fieldB) => fieldA.key === fieldB?.joinKey\n\t\t);\n\n\t\t// Find fields in schemaFields but not in defaultColumns based on accessorKey\n\t\tconst unmatchedFields = _.differenceWith(\n\t\t\tuniqueFields,\n\t\t\tdefaultColumns,\n\t\t\t(field, column) => getAccesorKeyViaField(field) === column.accessorKey\n\t\t);\n\n\t\t// Map unique fields to MaterialTableColumn structure\n\t\tconst additionalColumns: MaterialTableColumnProps[] = unmatchedFields.map(\n\t\t\t(field) => ({\n\t\t\t\theader: t ? formatLabel(t(field?.label)?.replace('_data', '') || '') : formatLabel(field?.label?.replace('_data', '') || ''),\n\t\t\t\taccessorKey: getAccesorKeyViaField(field),\n\t\t\t\tvisible: false,\n\t\t\t\ttype: field?.enum ? 'status' : field.type,\n\t\t\t\t...(field.type === 'array' && {typeArrayAccessorKey: field.accessorKey || ''}),\n\t\t\t\tenableSorting: (field.type === 'array' || field.type === 'object' || field?.join) ? false: true,\n\t\t\t\t...(field?.type === 'boolean' ? {\n\t\t\t\t\ttypeBooleanLabels: field?.values?.length ? _.mapValues( _.keyBy(\n\t\t\t\t\t\tfield?.values.map(item => ({\n\t\t\t\t\t\t\tkey: item.name,\n\t\t\t\t\t\t\tvalue: item.label\n\t\t\t\t\t\t})),\n\t\t\t\t\t\t'key'\n\t\t\t\t\t), 'value') : { 0: \"Inactive\", 1: \"Active\", false: \"Inactive\", true: \"Active\" }\n\t\t\t\t} : {})\n\t\t\t})\n\t\t);\n\n\t\tconst updatedDefaultColumns = defaultColumns?.map((column) => {\n\t\t\tconst field = schemaFields.find((field) => getAccesorKeyViaField(field) === column.accessorKey);\n\t\t\treturn {\n\t\t\t\t...column,\n\t\t\t\t...((field?.type === 'object' || field?.joinKey||column.enableSorting===false) ? { enableSorting: false } : {})\n\t\t\t};\n\t\t});\n\n\t\t// Combine default columns and additional columns\n\t\tconst columns = [...updatedDefaultColumns, ...additionalColumns];\n\n\t\t// Generate an array of column keys for ordering\n\t\tconst nOrderKeys = columns.map((column) => column.accessorKey) as string[];\n\n\t\torderKeys = mergeArraysKeepingOrder(orderKeys, nOrderKeys);\n\n\t\treturn { columns, orderKeys };\n\t} catch (error) {\n\t\treturn {\n\t\t\tcolumns: defaultColumns,\n\t\t\torderKeys: defaultColumns.map((column) => column.accessorKey) as string[]\n\t\t};\n\t}\n};\n\nexport const PageProvider: React.FC<PageProviderProps> = ({ children }) => {\n\tconst location = useLocation();\n\tconst [activePage, setActivePageData] = useState<PageState>(defaultPageState);\n\t// const permissions=usePermissions();\n\tconst [schemaFields, setSchemaFields] = useState<SchemaFields[]>([]);\n\tconst [loading, setLoading] = useState<boolean>(true);\n\tconst [isSaving, setIsSaving] = useState<boolean>(false);\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [pages, setPages] = useState<any>([]);\n\tconst [sharedPages, setSharedPages] = useState<any>([]);\n\tconst [isChanged, setIsChanged] = useState<boolean>(false);\n\tconst [pageTemplateId, setPageTemplateId] = useState<string>('');\n\tconst [isInitialLoad, setIsInitialLoad] = useState<boolean>(true);\n\tconst [isCreatePage, setIsCreatePage] = useState<boolean>(false);\n\tconst [formData, setFormData] = useState<any>({});\n\tconst [generatedColumns, setGeneratedColumns] = useState<{\n\t\tcolumns: MaterialTableColumnProps[];\n\t\torderKeys: string[];\n\t}>({ columns: [], orderKeys: [] });\n\tconst {user} = useAuth()\n\t// Add ref to track current pathname for race condition prevention\n\tconst currentPathnameRef = useRef<string>(location.pathname);\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\n\t\n\t// Get current page's default columns and resources\n\tconst defaultColumns: any[] = useMemo(() => {\n\t\tconst columns = routeToColumnsMap[curPathName]?.defaultColumns || [];\n\t\treturn columns;\n\t}, [curPathName]);\n\t\n\tconst resources: IResources = useMemo(() => {\n\t\tconst resource = routeToResourceMap[curPathName] || null;\n\t\treturn resource;\n\t}, [curPathName]);\n\n\t//Translation\n\tconst {t}=useTranslation()\n\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n\tconst initializeColumns = (columns: MaterialTableColumnProps[]) => {\n\t\t//! Remove the function if not needed\n\t};\n\n\t// Fetch page-related information from API\n\tconst fetchPageData = useCallback(\n\t\tasync (currentPath: string, currentDefaultColumns: any[], currentResources: IResources) => {\n\t\t\n\t\t\t// Check if this request is still valid (pathname hasn't changed)\n\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetLoading(true);\n\t\t\tsetError(null);\n\t\t\t\n\t\t\ttry {\n\t\t\t\tif (currentDefaultColumns.length && currentResources) {\n\t\t\t\t\tconst { pageResource = '', fieldResource = '',formResource='' } = currentResources;\n\t\t\t\t\t\n\t\t\t\t\t// Double-check pathname hasn't changed before making API calls\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tconst [pageResponse, fieldResponse,formResponse] = await Promise.all([\n\t\t\t\t\t\tpageResource ? getV1PagesResource({ ...getToken(), resource: pageResource }): Promise.resolve(null),\n\n\t\t\t\t\t\tgetV1FormBuilderSchemaFieldsName({\n\t\t\t\t\t\t\tname: fieldResource,\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tskip: 0,\n\t\t\t\t\t\t\tlimit: 999\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tgetV1FormBuilder({\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tfilters:`(resource.eq=${formResource}&company_id.eq=${user?.company_id})`,\n\t\t\t\t\t\t})\n\t\t\t\t\t]);\n\n\t\t\t\t\t// Final check - ensure pathname still matches\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed after API call');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst fields = fieldResponse?.data?.fields?.map(f => ({...f, label: !f?.label?.trim() ? formatLabel(f.key) : f.label}));\n\n\t\t\t\t\tconst gColumns = generateColumnSchema(currentDefaultColumns, fields, [], [], t);\n \n\t\t\t\t\tconst pages =\n\t\t\t\t\t\tpageResponse?.data?.pages?.map((p) => ({\n\t\t\t\t\t\t\t...defaultPageState,\n\t\t\t\t\t\t\t...p,\n\t\t\t\t\t\t\tvisible_columns: generateColumnSchema(\n\t\t\t\t\t\t\t\tp.visible_columns?.length ? p.visible_columns : currentDefaultColumns,\n\t\t\t\t\t\t\t\tfields,\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\tcurrentDefaultColumns,\n\t\t\t\t\t\t\t\tt\n\t\t\t\t\t\t\t).columns,\n\t\t\t\t\t\t\tcolumn_order: mergeArraysKeepingOrder(\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\t_.uniq(gColumns.orderKeys)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})) || [];\n\t\t\t\t\tconst sharedPages =\n\t\t\t\t\t\tpageResponse?.data?.shared_pages?.map((sPages) => ({\n\t\t\t\t\t\t\t...sPages.details,\n\t\t\t\t\t\t\tisShared: true,\n\t\t\t\t\t\t\towner: sPages.owner,\n\t\t\t\t\t\t\t_id: sPages.id\n\t\t\t\t\t\t})) || [];\n\n\t\t\t\t\tconst uPages = [...pages, ...sharedPages];\n\n\t\t\t\t\t// Only update state if we're still on the same path\n\t\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\t\tawait Promise.all([\n\t\t\t\t\t\t\tsetSchemaFields(fields),\n\t\t\t\t\t\t\tsetGeneratedColumns(gColumns),\n\t\t\t\t\t\t\tsetPageTemplateId(pageResponse?.data?._id),\n\t\t\t\t\t\t\tsetSharedPages(sharedPages),\n\t\t\t\t\t\t\tsetPages(uPages || []),\n\t\t\t\t\t\t\tsetFormData(formResponse?.data?.form?.[0] || {}),\n\t\t\t\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t\t...(pages?.[0] || {}) // Merge API response with current state\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t// Only set error if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetError('Failed to load page data');\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\t// Only update loading state if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tsetLoading(false);\n\t\t\t\t\t}, 1000);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[] // Remove dependencies to prevent stale closures\n\t);\n\n\t// Update page state dynamically\n\tconst updatePageInfo = (updates: Partial<PageState>) => {\n\t\tsetActivePageData((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t\t!isInitialLoad && setIsChanged(true)\n\t\tsetIsInitialLoad(false)\n\t};\n\n\t// Update columns state dynamically\n\tconst updateGeneratedColumns = (updates: Partial<GeneratedColumnsState>) => {\n\t\tsetGeneratedColumns((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t};\n\n\tconst setActivePage = (page: PageState) => {\n\t\tconst uPages = pages.map((p) =>\n\t\t\tp._id == activePage?._id ? activePage : p\n\t\t);\n\t\tsetPages(uPages);\n\t\tsetActivePageData(page);\n\t};\n\n\tconst savePages = async () => {\n\t\tsetError(null);\n\t\tsetIsSaving(true);\n\t\tawait addOrDeletePage()\n\t\tsetTimeout(() => {\n\t\t\tsetIsSaving(false);\n\t\t}, 1000);\n\t};\n\tconst fetchSavedFilters = async (): Promise<void> => {\n\n\t\tawait\tgetV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\n\t\t\t\n\t};\n\n\tconst addOrDeletePage=async(restPages?:any[])=>{\n\t\ttry {\n\t\t\tconst filteredPages =restPages?.length ? restPages : pages.filter((page) => !page.isShared);\n\t\t\tconst uPages = filteredPages.map((p) =>\n\t\t\t\t(p._id == activePage?._id && activePage.name==p.name) ? activePage : p\n\t\t\t);\n\t\t\tconst sanitizedPages = removeIdStaticIdsFromMongoObject(uPages);\n\n\t\t\tconst response = await patchV1PagesPageId({\n\t\t\t\t...getToken(),\n\t\t\t\t...{ page_id: pageTemplateId, pages: sanitizedPages }\n\t\t\t});\n\t\t\tif (response.status_code === 200) {\n\t\t\t\tconst updatedPages = response?.data?.pages || [];\n\t\t\t\tsetPages(updatedPages);\n \t\tfetchSavedFilters();\n\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\t...(updatedPages.find((p) => p.name == prev.name) || {})\n\t\t\t\t}));\n\t\t\t\tsetIsChanged(false);\n\t\t\t\tsetIsCreatePage(false);\n\t\t\t\tsetFormData(response?.data?.form?.[0] || {});\n\t\t\t\tconst msg=restPages?.length ? t('pages.msg.delete') : t('pages.msg.save')\n\t\t\t\tenqueueSnackbar(msg);\n\t\t\t}\n\t\t\treturn response\n\t\t} catch (err) {\n\t\t\tsetError('Failed to save page data');\n\t\t} \n\t}\n\t\n\tconst deletePage=async(pages:string)=>{\n\t\taddOrDeletePage(pages);\n\t}\n\n\t// Handle pathname changes\n\tuseEffect(() => {\n\t\t// Update the ref immediately\n\t\tcurrentPathnameRef.current = curPathName;\n\t\t\n\t\t// Reset state for new page\n\t\tsetLoading(true);\n\t\tsetIsSaving(false);\n\t\tsetActivePageData(defaultPageState);\n\t\tsetIsChanged(false);\n\t\tsetIsInitialLoad(true);\n\t\t\n\t\t// Clear previous data to prevent showing stale data\n\t\tsetSchemaFields([]);\n\t\tsetGeneratedColumns({ columns: [], orderKeys: [] });\n\t\tsetPages([]);\n\t\tsetSharedPages([]);\n\t\tsetPageTemplateId('');\n\t\tsetError(null);\n\t\t\n\t\t// Fetch data for new page with current values\n\t\tfetchPageData(curPathName, defaultColumns, resources);\n\n\t\treturn () => { setLoading(true) }\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [curPathName, JSON.stringify(defaultColumns), JSON.stringify(resources)]); // Remove other dependencies to prevent issues\n\n\n\t// Removed loading check to prevent blank page during loading\n\n\treturn (\n\t\t<PageContext.Provider\n\t\t\tvalue={{\n\t\t\t\tpageTemplateId,\n\t\t\t\tactivePage,\n\t\t\t\tpages,\n\t\t\t\tsharedPages,\n\t\t\t\tschemaFields,\n\t\t\t\tsetPages,\n\t\t\t\tupdatePageInfo,\n\t\t\t\tsavePages,\n\t\t\t\tsetActivePage,\n\t\t\t\tisSaving,\n\t\t\t\tloading,\n\t\t\t\terror,\n\t\t\t\tinitializeColumns,\n\t\t\t\tgeneratedColumns,\n\t\t\t\tupdateGeneratedColumns,\n\t\t\t\tisChanged,\n\t\t\t\tdeletePage,\n\t\t\t\tisCreatePage,\n\t\t\t\tsetIsCreatePage,\n\t\t\t\taddOrDeletePage,\n\t\t\t\tsetIsChanged,\n\t\t\t\tformData\n\t\t\t}}>\n\t\t\t{children}\n\t\t</PageContext.Provider>\n\t);\n};\n"],"names":["initialFilter","combinator","rules","defaultPageState","_id","name","page_size","column_order","visible_columns","views","active_view","filters","filterQueryString","sort","search","enabled_views","isShared","column_sizes","PageContext","createContext","pageTemplateId","activePage","updatePageInfo","loading","isSaving","error","pages","sharedPages","savePages","setActivePage","setPages","schemaFields","initializeColumns","generatedColumns","columns","orderKeys","updateGeneratedColumns","mergeArraysKeepingOrder","array1","array2","array1Set","Set","elementsToAdd","filter","item","has","generateColumnSchema","defaultColumns","columnOrders","dColumns","t","length","map","column","find","c","accessorKey","getAccesorKeyViaField","field","type","join","alias","key","updatedFields","replace","is_inner_join","uniqueFields","_","differenceWith","fieldA","fieldB","joinKey","additionalColumns","header","formatLabel","_a","label","_b","visible","enum","typeArrayAccessorKey","enableSorting","typeBooleanLabels","_c","values","mapValues","keyBy","value","false","true","children","location","useLocation","setActivePageData","useState","setSchemaFields","setLoading","setIsSaving","setError","setSharedPages","isChanged","setIsChanged","setPageTemplateId","isInitialLoad","setIsInitialLoad","isCreatePage","setIsCreatePage","formData","setFormData","setGeneratedColumns","user","useAuth","currentPathnameRef","useRef","pathname","curPathName","useMemo","routeToColumnsMap","resources","routeToResourceMap","useTranslation","fetchPageData","useCallback","async","currentPath","currentDefaultColumns","currentResources","current","pageResource","fieldResource","formResource","pageResponse","fieldResponse","formResponse","Promise","all","getV1PagesResource","getToken","resource","resolve","getV1FormBuilderSchemaFieldsName","getV1FormBuilder","company_id","fields","data","f","trim","gColumns","_d","p","uniq","_f","_e","shared_pages","sPages","details","owner","id","uPages","_g","_i","_h","form","prev","err","setTimeout","addOrDeletePage","restPages","page","sanitizedPages","removeIdStaticIdsFromMongoObject","response","patchV1PagesPageId","page_id","status_code","updatedPages","getV1FilterResource","fetchSavedFilters","msg","enqueueSnackbar","useEffect","JSON","stringify","jsx","Provider","updates","deletePage"],"mappings":"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"}
@@ -66,8 +66,6 @@ interface PageContextValue {
66
66
  export declare const defaultPageState: PageState;
67
67
  interface PageProviderProps {
68
68
  children: React.ReactNode;
69
- routeToColumnsMap?: Record<string, any>;
70
- routeToResourceMap?: Record<string, any>;
71
69
  }
72
70
  export declare const PageContext: React.Context<PageContextValue>;
73
71
  export declare const PageProvider: React.FC<PageProviderProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../src/hooks/apiHelper.ts"],"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"],"names":["_a"],"mappings":";AAcO,SAAS,UAAU,KAAkB,UAA2B;;AACrE,QAAI,gCAAK,SAAL,mBAAW,mBAAkB,YAAY;AAC3C,UAAM,gBAAgB,MAAM;;AAC1B,UAAI;AACF,iBAAOA,MAAA,IAAI,UAAJ,gBAAAA,IAAW,WAAU,KAAK,MAAM,IAAI,MAAM,OAAO,IAAI;AAAA,MAC9D,QAAQ;AACN,eAAO,EAAE,SAAS,uBAAA;AAAA,MACpB;AAAA,IACF,GAAA;AAEA,UAAM,YAAU,kDAAc,YAAd,mBAAuB,QAAQ,UAAU,IAAI,WAAU;AAEvE,oBAAgB,SAAS;AAAA,MACvB,SAAS;AAAA,IAAA,CACV;AACD;AAAA,EACF;AAEA,MAAI,YAAY,OAAO,aAAa,YAAY;AAC9C,aAAA;AAAA,EACF,WAAW,UAAU;AACnB,YAAQ,KAAK,sCAAsC;AAAA,EACrD;AACF;"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../../src/hooks/apiHelper.ts"],"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"],"names":["_a"],"mappings":";AAcO,SAAS,UAAU,KAAkB,UAA2B;;AACrE,QAAI,gCAAK,SAAL,mBAAW,mBAAkB,YAAY;AAC3C,UAAM,gBAAgB,MAAM;;AAC1B,UAAI;AACF,iBAAOA,MAAA,IAAI,UAAJ,gBAAAA,IAAW,WAAU,KAAK,MAAM,IAAI,MAAM,OAAO,IAAI;AAAA,MAC9D,QAAQ;AACN,eAAO,EAAE,SAAS,uBAAA;AAAA,MACpB;AAAA,IACF,GAAA;AAEA,UAAM,YAAU,kDAAc,YAAd,mBAAuB,QAAQ,UAAU,IAAI,WAAU;AAEvE,oBAAgB,SAAS;AAAA,MACvB,SAAS;AAAA,IAAA,CACV;AACD;AAAA,EACF;AAEA,MAAI,YAAY,OAAO,aAAa,YAAY;AAC9C,aAAA;AAAA,EACF,WAAW,UAAU;AACnB,YAAQ,KAAK,sCAAsC;AAAA,EACrD;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/hooks/apiHelper.ts"],"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"],"names":["res","callBack","_a","meta","requestStatus","errorMessage","error","message","JSON","parse","_b","replace","trim","enqueueSnackbar","variant"],"mappings":"2JAcO,SAAmBA,EAAkBC,WAC1C,GAAiC,cAA7B,OAAAC,EAAA,MAAAF,OAAA,EAAAA,EAAKG,WAAL,EAAAD,EAAWE,eAA8B,CAC3C,MAAMC,cACJ,IACE,OAAO,OAAAH,EAAAF,EAAIM,YAAJ,EAAAJ,EAAWK,SAAUC,KAAKC,MAAMT,EAAIM,MAAMC,SAAW,IAC9D,CAAA,MACE,MAAO,CAAEA,QAAS,uBACpB,CACF,KAEMA,GAAU,OAAAG,EAAA,MAAAL,OAAA,EAAAA,EAAcE,kBAASI,QAAQ,SAAU,IAAIC,SAAU,uBAKvE,YAHAC,EAAAA,gBAAgBN,EAAS,CACvBO,QAAS,SAGb,CAEIb,GAAgC,mBAAbA,GACrBA,GAIJ"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/hooks/apiHelper.ts"],"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"],"names":["res","callBack","_a","meta","requestStatus","errorMessage","error","message","JSON","parse","_b","replace","trim","enqueueSnackbar","variant"],"mappings":"2JAcO,SAAmBA,EAAkBC,WAC1C,GAAiC,cAA7B,OAAAC,EAAA,MAAAF,OAAA,EAAAA,EAAKG,WAAL,EAAAD,EAAWE,eAA8B,CAC3C,MAAMC,cACJ,IACE,OAAO,OAAAH,EAAAF,EAAIM,YAAJ,EAAAJ,EAAWK,SAAUC,KAAKC,MAAMT,EAAIM,MAAMC,SAAW,IAC9D,CAAA,MACE,MAAO,CAAEA,QAAS,uBACpB,CACF,KAEMA,GAAU,OAAAG,EAAA,MAAAL,OAAA,EAAAA,EAAcE,kBAASI,QAAQ,SAAU,IAAIC,SAAU,uBAKvE,YAHAC,EAAAA,gBAAgBN,EAAS,CACvBO,QAAS,SAGb,CAEIb,GAAgC,mBAAbA,GACrBA,GAIJ"}
@@ -1,5 +1,5 @@
1
1
  import { getDefaultExportFromCjs } from "../../../../../_virtual/_commonjsHelpers/index.esm.js";
2
- import { __module as dist } from "../../../../../_virtual/index/index.esm10.js";
2
+ import { __module as dist } from "../../../../../_virtual/index/index.esm11.js";
3
3
  import React__default from "react";
4
4
  import ReactDOM__default from "react-dom";
5
5
  import require$$0 from "react-is";