@erpsquad/common 1.7.4 → 1.8.1

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 (141) hide show
  1. package/dist/components/action-bar/action-bar/index.esm.js +4 -56
  2. package/dist/components/action-bar/action-bar/index.esm.js.map +1 -1
  3. package/dist/components/action-bar/action-bar/index.js +18 -28
  4. package/dist/components/action-bar/action-bar/index.js.map +1 -1
  5. package/dist/components/filter/filter/index.esm.js +1 -1
  6. package/dist/components/filter/filter/index.esm.js.map +1 -1
  7. package/dist/components/filter/filter/index.js +1 -1
  8. package/dist/components/filter/filter/index.js.map +1 -1
  9. package/dist/components/header/redux/actionCreator/index.esm.js +1 -1
  10. package/dist/components/header/redux/actionCreator/index.esm.js.map +1 -1
  11. package/dist/components/header/redux/actionCreator/index.js +1 -1
  12. package/dist/components/header/redux/actionCreator/index.js.map +1 -1
  13. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js +1 -1
  14. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
  15. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js +1 -1
  16. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js.map +1 -1
  17. package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js +1 -1
  18. package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
  19. package/dist/components/reports-title-bar/redux/actionCreator/index.js +1 -1
  20. package/dist/components/reports-title-bar/redux/actionCreator/index.js.map +1 -1
  21. package/dist/components/share-modal/redux/actionCreator/index.esm.js +1 -1
  22. package/dist/components/share-modal/redux/actionCreator/index.esm.js.map +1 -1
  23. package/dist/components/share-modal/redux/actionCreator/index.js +1 -1
  24. package/dist/components/share-modal/redux/actionCreator/index.js.map +1 -1
  25. package/dist/components/upload/upload/index.esm.js +2 -2
  26. package/dist/components/upload/upload/index.esm.js.map +1 -1
  27. package/dist/components/upload/upload/index.js +2 -2
  28. package/dist/components/upload/upload/index.js.map +1 -1
  29. package/dist/contexts/AuthContext/index.esm.js +1 -1
  30. package/dist/contexts/AuthContext/index.esm.js.map +1 -1
  31. package/dist/contexts/AuthContext/index.js +1 -1
  32. package/dist/contexts/AuthContext/index.js.map +1 -1
  33. package/dist/contexts/languageContext/index.esm.js +1 -1
  34. package/dist/contexts/languageContext/index.esm.js.map +1 -1
  35. package/dist/contexts/languageContext/index.js +1 -1
  36. package/dist/contexts/languageContext/index.js.map +1 -1
  37. package/dist/index.esm.js +68 -67
  38. package/dist/index.js +1 -1
  39. package/dist/{node_modules/ckeditor5/dist/ckeditor5.css → style.css} +161 -0
  40. package/dist/utils/api/index.esm.js +4 -4
  41. package/dist/utils/api/index.esm.js.map +1 -1
  42. package/dist/utils/api/index.js +1 -1
  43. package/dist/utils/api/index.js.map +1 -1
  44. package/dist/utils/common/index.esm.js +6 -6
  45. package/dist/utils/common/index.esm.js.map +1 -1
  46. package/dist/utils/common/index.js +1 -1
  47. package/dist/utils/common/index.js.map +1 -1
  48. package/dist/utils/index.d.ts +1 -0
  49. package/dist/utils/index.esm.js +4 -3
  50. package/dist/utils/index.js +1 -1
  51. package/dist/views/template-editor/components/EditorSidebar/index.esm.js +1 -1
  52. package/dist/views/template-editor/components/EditorSidebar/index.esm.js.map +1 -1
  53. package/dist/views/template-editor/components/EditorSidebar/index.js +1 -1
  54. package/dist/views/template-editor/components/EditorSidebar/index.js.map +1 -1
  55. package/dist/views/template-editor/templates/index.esm.js +1 -1
  56. package/dist/views/template-editor/templates/index.esm.js.map +1 -1
  57. package/dist/views/template-editor/templates/index.js +1 -1
  58. package/dist/views/template-editor/templates/index.js.map +1 -1
  59. package/package.json +2 -4
  60. package/CSS_SETUP.md +0 -195
  61. package/QUICK_START.md +0 -118
  62. package/dist/components/Dashboard/dashboard.css +0 -1
  63. package/dist/components/action-bar/action-bar.css +0 -1
  64. package/dist/components/activity-tag/activity-tag.css +0 -1
  65. package/dist/components/activityArea/activityArea.css +0 -1
  66. package/dist/components/activityLog/activity-log.css +0 -1
  67. package/dist/components/avatar/avatar.css +0 -1
  68. package/dist/components/board/board.css +0 -1
  69. package/dist/components/calculation-summary/calculation-summary.css +0 -1
  70. package/dist/components/calendar/calendar.css +0 -1
  71. package/dist/components/card-wrapper/card-wrapper.css +0 -1
  72. package/dist/components/charts/barLineChart/barLineChart.css +0 -1
  73. package/dist/components/charts/chartLegend.css +0 -1
  74. package/dist/components/charts/donut-chart/donut-chart.css +0 -1
  75. package/dist/components/charts/donutChart/donut-chart.css +0 -1
  76. package/dist/components/confirm-modal/confirm-modal.css +0 -1
  77. package/dist/components/country-select/index.css +0 -1
  78. package/dist/components/custom-snackbar/custom-snackbar.css +0 -1
  79. package/dist/components/date-picker/date-picker.css +0 -1
  80. package/dist/components/date-range-picker/date-range-picker.css +0 -1
  81. package/dist/components/editor/custom-editor.css +0 -1
  82. package/dist/components/expandable-summary-wrapper/expandable-summary-wrapper.css +0 -1
  83. package/dist/components/fallback/fallback.css +0 -1
  84. package/dist/components/filter/filter.css +0 -1
  85. package/dist/components/footer/footer.css +0 -1
  86. package/dist/components/form-control/form-builder/form-builder-element/element.css +0 -1
  87. package/dist/components/form-control/form-builder/form-builder-element/location-add-modal/location-add-modal.css +0 -1
  88. package/dist/components/form-control/form-parser/form-parser.css +0 -1
  89. package/dist/components/form-header/form-header.css +0 -1
  90. package/dist/components/gantt/gantt.css +0 -1
  91. package/dist/components/grid/grid-wrapper/grid-wrapper.css +0 -1
  92. package/dist/components/header/header.css +0 -1
  93. package/dist/components/header-card/header-card.css +0 -1
  94. package/dist/components/hr-line/hr-line.css +0 -1
  95. package/dist/components/info-card/info-card.css +0 -1
  96. package/dist/components/inventory-reports-title-bar/component/reportFilter.css +0 -1
  97. package/dist/components/inventory-reports-title-bar/inventory-reports-title-bar.css +0 -1
  98. package/dist/components/inventory-reports-title-bar/report-buttons/report-buttons.css +0 -1
  99. package/dist/components/material-table/material-table.css +0 -1
  100. package/dist/components/module-button/module-button.css +0 -1
  101. package/dist/components/mulitline/multiline.css +0 -1
  102. package/dist/components/multi-select/multi-select.css +0 -1
  103. package/dist/components/page-navigator/components/shared-page-modal.css +0 -1
  104. package/dist/components/page-navigator/page-navigator.css +0 -1
  105. package/dist/components/pagination/pagination.css +0 -1
  106. package/dist/components/parties-modal/parties-modal.css +0 -1
  107. package/dist/components/quick-approval-modal/quick-approval-modal.css +0 -1
  108. package/dist/components/reports/dynamic-report/dynamic-report.css +0 -1
  109. package/dist/components/reports-title-bar/reports-title-bar.css +0 -1
  110. package/dist/components/schedule-report/schedule-report-modal.css +0 -1
  111. package/dist/components/schedule-report/schedule-report.css +0 -1
  112. package/dist/components/search-bar/search-bar.css +0 -1
  113. package/dist/components/select/controller/controller-select.css +0 -1
  114. package/dist/components/share-modal/share-modal.css +0 -1
  115. package/dist/components/sidebar/sidebar.css +0 -1
  116. package/dist/components/sub-header-doc/sub-header-doc.css +0 -1
  117. package/dist/components/tab-bar-ui/tab-bar-ui.css +0 -1
  118. package/dist/components/tabs/tabs.css +0 -1
  119. package/dist/components/text-field/text-field.css +0 -1
  120. package/dist/components/time-picker/time-picker.css +0 -1
  121. package/dist/components/time-range-picker/time-range-picker.css +0 -1
  122. package/dist/components/toast/toast.css +0 -1
  123. package/dist/components/toggle/toggle.css +0 -1
  124. package/dist/components/upload/upload.css +0 -1
  125. package/dist/components/upload-excel/upload-excel.css +0 -1
  126. package/dist/components/user-dropdown/user-dropdown.css +0 -1
  127. package/dist/components/value-field/value-field.css +0 -1
  128. package/dist/components/view-modal/view-modal.css +0 -1
  129. package/dist/node_modules/@asseinfo/react-kanban/dist/styles.css +0 -1
  130. package/dist/node_modules/@glideapps/glide-data-grid/dist/index.css +0 -1
  131. package/dist/node_modules/gantt-task-react/dist/index.css +0 -1
  132. package/dist/node_modules/normalize.css/normalize.css +0 -1
  133. package/dist/styles/sass/_animations.css +0 -1
  134. package/dist/styles/sass/_utils.css +0 -1
  135. package/dist/views/afterAuth/dashboard/dashboard.css +0 -1
  136. package/dist/views/beforeAuth/components/index.css +0 -1
  137. package/dist/views/beforeAuth/landing/landing.css +0 -1
  138. package/dist/views/template-editor/add-template/add-template.css +0 -1
  139. package/dist/views/template-editor/company-selection-modal/company-selection-modal.css +0 -1
  140. package/dist/views/template-editor/edit-section-modal/edit-section-modal.css +0 -1
  141. package/dist/views/template-editor/templates.css +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../src/contexts/languageContext.tsx"],"sourcesContent":["// contexts/LanguageContext.tsx\nimport React, { createContext, useEffect, useReducer, ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { DEFAULT_LANG } from '../constants/all-language';\nimport { getToken } from '../utils/common';\nimport { setRoleURL } from '../utils/server';\nimport { getV1Languages } from '../api-client/api.system-feature/api';\n// import ErpLoader from '../components/loader/erp-loader';\n\n// Types\ninterface ILanguage {\n label: string;\n code: string;\n direction: string;\n}\n\ninterface LanguageState {\n languages: ILanguage[];\n currentLanguage: ILanguage | null;\n isLoading: boolean;\n error: string | null;\n isFallbackActive: boolean; // Track if we're using fallback\n}\n\ninterface LanguageContextType extends LanguageState {\n changeLanguage: (langCode: string) => void;\n fetchLanguages: () => Promise<void>;\n}\n\n// Define fallback languages in order of preference - English first\nconst FALLBACK_LANGUAGES = [\n 'en', // English as primary fallback\n 'en-US', // US English as secondary\n DEFAULT_LANG, // Then default language\n];\n\n// Create English fallback language object\nconst createEnglishFallback = (): ILanguage => ({\n code: 'en',\n label: 'English',\n direction: 'ltr'\n});\n\n// Action types\ntype LanguageAction =\n | { type: 'FETCH_LANGUAGES_START' }\n | { type: 'FETCH_LANGUAGES_SUCCESS'; payload: ILanguage[] }\n | { type: 'FETCH_LANGUAGES_ERROR'; payload: string }\n | { type: 'SET_CURRENT_LANGUAGE'; payload: ILanguage; isFallback?: boolean }\n | { type: 'SET_FALLBACK_ACTIVE'; payload: boolean };\n\n// Initial state\nconst initialState: LanguageState = {\n languages: [],\n currentLanguage: null,\n isLoading: false,\n error: null,\n isFallbackActive: false,\n};\n\n// Helper function to find the best available language\nconst findBestAvailableLanguage = (\n languages: ILanguage[], \n preferredCode?: string\n): ILanguage | null => {\n if (!languages || languages.length === 0) return null;\n\n // First try the preferred language if provided\n if (preferredCode) {\n const preferred = languages.find(lang => lang.code === preferredCode);\n if (preferred) return preferred;\n }\n\n // Try fallback languages in order (English first)\n for (const fallbackCode of FALLBACK_LANGUAGES) {\n const fallback = languages.find(lang => lang.code === fallbackCode);\n if (fallback) return fallback;\n }\n\n // If no fallbacks found, return the first available language\n return languages[0] || null;\n};\n\n// Reducer\nconst languageReducer = (state: LanguageState, action: LanguageAction): LanguageState => {\n switch (action.type) {\n case 'FETCH_LANGUAGES_START':\n return {\n ...state,\n isLoading: true,\n error: null,\n };\n case 'FETCH_LANGUAGES_SUCCESS':\n return {\n ...state,\n languages: action.payload,\n isLoading: false,\n error: null,\n isFallbackActive: false,\n };\n case 'FETCH_LANGUAGES_ERROR':\n return {\n ...state,\n isLoading: false,\n error: action.payload,\n isFallbackActive: true, \n };\n case 'SET_CURRENT_LANGUAGE':\n return {\n ...state,\n currentLanguage: action.payload,\n isFallbackActive: action.isFallback || false,\n };\n case 'SET_FALLBACK_ACTIVE':\n return {\n ...state,\n isFallbackActive: action.payload,\n };\n default:\n return state;\n }\n};\n\n// Create context\nconst LanguageContext = createContext<LanguageContextType | undefined>(undefined);\n\n// Provider component\ninterface LanguageProviderProps {\n children: ReactNode;\n}\n\nexport const LanguageProvider: React.FC<LanguageProviderProps> = ({ children }) => {\n const [state, dispatch] = useReducer(languageReducer, initialState);\n const { i18n } = useTranslation();\n\n // Initialize role URL\n useEffect(() => {\n setRoleURL(`${import.meta.env.VITE_BACKEND_BASE_URL}/rbac`);\n }, []);\n\n // Guarded i18n changeLanguage call\n const safeChangeLanguage = async (langCode: string) => {\n if (i18n && typeof i18n.changeLanguage === 'function') {\n try {\n await i18n.changeLanguage(langCode);\n } catch (error) {\n console.warn(`Failed to change language to \"${langCode}\"`, error);\n }\n } else {\n console.warn(\n 'i18n.changeLanguage is unavailable. Ensure I18nextProvider is configured in the host application.'\n );\n }\n };\n\n // Apply language settings\n const applyLanguageSettings = (language: ILanguage) => {\n document.body.dir = language.direction || 'ltr';\n safeChangeLanguage(language.code);\n localStorage.setItem('_language', language.code);\n };\n\n // Fetch languages from API\n const fetchLanguages = async (): Promise<void> => {\n try {\n dispatch({ type: 'FETCH_LANGUAGES_START' });\n \n const response = await getV1Languages({\n order: `id:1`,\n filters: `(is_active.in=[1])`,\n ...getToken(),\n });\n \n const data = response?.data?.languages || [];\n const languages = data\n ?.filter((d: any) => d?.is_active)\n ?.map((d: any) => ({\n label: d?.name,\n code: d?.code,\n direction: d?.direction,\n }));\n\n // Always ensure English is available in the languages list\n const hasEnglish = languages.some((lang: ILanguage) => lang.code === 'en');\n if (!hasEnglish) {\n languages.unshift(createEnglishFallback());\n }\n\n dispatch({ type: 'FETCH_LANGUAGES_SUCCESS', payload: languages });\n \n // Get saved language or use fallback\n const savedLangCode = localStorage.getItem('_language');\n const bestLanguage = findBestAvailableLanguage(languages, savedLangCode || undefined);\n \n if (bestLanguage) {\n const isFallback = savedLangCode && savedLangCode !== bestLanguage.code;\n dispatch({ \n type: 'SET_CURRENT_LANGUAGE', \n payload: bestLanguage,\n isFallback \n });\n applyLanguageSettings(bestLanguage);\n \n // Log if we're using a fallback\n if (isFallback) {\n console.warn(`Saved language \"${savedLangCode}\" not available. Using fallback: \"${bestLanguage.code}\"`);\n }\n } else {\n console.error('No languages available');\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Failed to fetch languages';\n dispatch({ type: 'FETCH_LANGUAGES_ERROR', payload: errorMessage });\n \n // On error, always fall back to English\n const englishFallback = createEnglishFallback();\n \n // Create languages array with English fallback for dropdown\n const fallbackLanguages = [englishFallback];\n \n dispatch({ type: 'FETCH_LANGUAGES_SUCCESS', payload: fallbackLanguages });\n dispatch({ \n type: 'SET_CURRENT_LANGUAGE', \n payload: englishFallback,\n isFallback: true \n });\n \n document.body.dir = 'ltr';\n safeChangeLanguage('en');\n localStorage.setItem('_language', 'en');\n \n console.warn('Language fetch failed, using English fallback');\n }\n };\n\n // Change language function\n const changeLanguage = (langCode: string): void => {\n const selectedLanguage = state.languages.find((lang) => lang.code === langCode);\n \n if (selectedLanguage) {\n dispatch({ type: 'SET_CURRENT_LANGUAGE', payload: selectedLanguage });\n dispatch({ type: 'SET_FALLBACK_ACTIVE', payload: false });\n applyLanguageSettings(selectedLanguage);\n } else {\n console.error(`Language \"${langCode}\" not found in available languages`);\n \n // If language not found, fall back to English\n const englishFallback = createEnglishFallback();\n dispatch({ \n type: 'SET_CURRENT_LANGUAGE', \n payload: englishFallback,\n isFallback: true \n });\n applyLanguageSettings(englishFallback);\n }\n };\n\n // Initialize on mount\n useEffect(() => {\n fetchLanguages();\n //eslint-disable-next-line \n }, []);\n\n const contextValue: LanguageContextType = {\n ...state,\n changeLanguage,\n fetchLanguages,\n };\n\n return (\n <LanguageContext.Provider value={contextValue}>\n {/* {state.isLoading } */}\n {children}\n </LanguageContext.Provider>\n );\n};\n\nexport default LanguageContext;"],"names":["setRoleURL"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../../src/contexts/languageContext.tsx"],"sourcesContent":["// contexts/LanguageContext.tsx\nimport React, { createContext, useEffect, useReducer, ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { DEFAULT_LANG } from '../constants/all-language';\nimport { getToken } from '../utils/common';\nimport { setRoleURL } from '../utils/server';\nimport { getV1Languages } from '../api-client/api.system-feature/api';\n// import ErpLoader from '../components/loader/erp-loader';\n\n// Types\ninterface ILanguage {\n label: string;\n code: string;\n direction: string;\n}\n\ninterface LanguageState {\n languages: ILanguage[];\n currentLanguage: ILanguage | null;\n isLoading: boolean;\n error: string | null;\n isFallbackActive: boolean; // Track if we're using fallback\n}\n\ninterface LanguageContextType extends LanguageState {\n changeLanguage: (langCode: string) => void;\n fetchLanguages: () => Promise<void>;\n}\n\n// Define fallback languages in order of preference - English first\nconst FALLBACK_LANGUAGES = [\n 'en', // English as primary fallback\n 'en-US', // US English as secondary\n DEFAULT_LANG, // Then default language\n];\n\n// Create English fallback language object\nconst createEnglishFallback = (): ILanguage => ({\n code: 'en',\n label: 'English',\n direction: 'ltr'\n});\n\n// Action types\ntype LanguageAction =\n | { type: 'FETCH_LANGUAGES_START' }\n | { type: 'FETCH_LANGUAGES_SUCCESS'; payload: ILanguage[] }\n | { type: 'FETCH_LANGUAGES_ERROR'; payload: string }\n | { type: 'SET_CURRENT_LANGUAGE'; payload: ILanguage; isFallback?: boolean }\n | { type: 'SET_FALLBACK_ACTIVE'; payload: boolean };\n\n// Initial state\nconst initialState: LanguageState = {\n languages: [],\n currentLanguage: null,\n isLoading: false,\n error: null,\n isFallbackActive: false,\n};\n\n// Helper function to find the best available language\nconst findBestAvailableLanguage = (\n languages: ILanguage[], \n preferredCode?: string\n): ILanguage | null => {\n if (!languages || languages.length === 0) return null;\n\n // First try the preferred language if provided\n if (preferredCode) {\n const preferred = languages.find(lang => lang.code === preferredCode);\n if (preferred) return preferred;\n }\n\n // Try fallback languages in order (English first)\n for (const fallbackCode of FALLBACK_LANGUAGES) {\n const fallback = languages.find(lang => lang.code === fallbackCode);\n if (fallback) return fallback;\n }\n\n // If no fallbacks found, return the first available language\n return languages[0] || null;\n};\n\n// Reducer\nconst languageReducer = (state: LanguageState, action: LanguageAction): LanguageState => {\n switch (action.type) {\n case 'FETCH_LANGUAGES_START':\n return {\n ...state,\n isLoading: true,\n error: null,\n };\n case 'FETCH_LANGUAGES_SUCCESS':\n return {\n ...state,\n languages: action.payload,\n isLoading: false,\n error: null,\n isFallbackActive: false,\n };\n case 'FETCH_LANGUAGES_ERROR':\n return {\n ...state,\n isLoading: false,\n error: action.payload,\n isFallbackActive: true, \n };\n case 'SET_CURRENT_LANGUAGE':\n return {\n ...state,\n currentLanguage: action.payload,\n isFallbackActive: action.isFallback || false,\n };\n case 'SET_FALLBACK_ACTIVE':\n return {\n ...state,\n isFallbackActive: action.payload,\n };\n default:\n return state;\n }\n};\n\n// Create context\nconst LanguageContext = createContext<LanguageContextType | undefined>(undefined);\n\n// Provider component\ninterface LanguageProviderProps {\n children: ReactNode;\n}\n\nexport const LanguageProvider: React.FC<LanguageProviderProps> = ({ children }) => {\n const [state, dispatch] = useReducer(languageReducer, initialState);\n const { i18n } = useTranslation();\n\n // Initialize role URL\n useEffect(() => {\n setRoleURL(`${import.meta.env.VITE_BACKEND_BASE_URL}/rbac`);\n }, []);\n\n // Guarded i18n changeLanguage call\n const safeChangeLanguage = async (langCode: string) => {\n if (i18n && typeof i18n.changeLanguage === 'function') {\n try {\n await i18n.changeLanguage(langCode);\n } catch (error) {\n console.warn(`Failed to change language to \"${langCode}\"`, error);\n }\n } else {\n console.warn(\n 'i18n.changeLanguage is unavailable. Ensure I18nextProvider is configured in the host application.'\n );\n }\n };\n\n // Apply language settings\n const applyLanguageSettings = (language: ILanguage) => {\n document.body.dir = language.direction || 'ltr';\n safeChangeLanguage(language.code);\n localStorage.setItem('_language', language.code);\n };\n\n // Fetch languages from API\n const fetchLanguages = async (): Promise<void> => {\n try {\n dispatch({ type: 'FETCH_LANGUAGES_START' });\n \n const response = await getV1Languages({\n order: `id:1`,\n filters: `(is_active.in=[1])`,\n ...getToken(),\n });\n \n const data = response?.data?.languages || [];\n const languages = data\n ?.filter((d: any) => d?.is_active)\n ?.map((d: any) => ({\n label: d?.name,\n code: d?.code,\n direction: d?.direction,\n }));\n\n // Always ensure English is available in the languages list\n const hasEnglish = languages.some((lang: ILanguage) => lang.code === 'en');\n if (!hasEnglish) {\n languages.unshift(createEnglishFallback());\n }\n\n dispatch({ type: 'FETCH_LANGUAGES_SUCCESS', payload: languages });\n \n // Get saved language or use fallback\n const savedLangCode = localStorage.getItem('_language');\n const bestLanguage = findBestAvailableLanguage(languages, savedLangCode || undefined);\n \n if (bestLanguage) {\n const isFallback = savedLangCode && savedLangCode !== bestLanguage.code;\n dispatch({ \n type: 'SET_CURRENT_LANGUAGE', \n payload: bestLanguage,\n isFallback \n });\n applyLanguageSettings(bestLanguage);\n \n // Log if we're using a fallback\n if (isFallback) {\n console.warn(`Saved language \"${savedLangCode}\" not available. Using fallback: \"${bestLanguage.code}\"`);\n }\n } else {\n console.error('No languages available');\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Failed to fetch languages';\n dispatch({ type: 'FETCH_LANGUAGES_ERROR', payload: errorMessage });\n \n // On error, always fall back to English\n const englishFallback = createEnglishFallback();\n \n // Create languages array with English fallback for dropdown\n const fallbackLanguages = [englishFallback];\n \n dispatch({ type: 'FETCH_LANGUAGES_SUCCESS', payload: fallbackLanguages });\n dispatch({ \n type: 'SET_CURRENT_LANGUAGE', \n payload: englishFallback,\n isFallback: true \n });\n \n document.body.dir = 'ltr';\n safeChangeLanguage('en');\n localStorage.setItem('_language', 'en');\n \n console.warn('Language fetch failed, using English fallback');\n }\n };\n\n // Change language function\n const changeLanguage = (langCode: string): void => {\n const selectedLanguage = state.languages.find((lang) => lang.code === langCode);\n \n if (selectedLanguage) {\n dispatch({ type: 'SET_CURRENT_LANGUAGE', payload: selectedLanguage });\n dispatch({ type: 'SET_FALLBACK_ACTIVE', payload: false });\n applyLanguageSettings(selectedLanguage);\n } else {\n console.error(`Language \"${langCode}\" not found in available languages`);\n \n // If language not found, fall back to English\n const englishFallback = createEnglishFallback();\n dispatch({ \n type: 'SET_CURRENT_LANGUAGE', \n payload: englishFallback,\n isFallback: true \n });\n applyLanguageSettings(englishFallback);\n }\n };\n\n // Initialize on mount\n useEffect(() => {\n fetchLanguages();\n //eslint-disable-next-line \n }, []);\n\n const contextValue: LanguageContextType = {\n ...state,\n changeLanguage,\n fetchLanguages,\n };\n\n return (\n <LanguageContext.Provider value={contextValue}>\n {/* {state.isLoading } */}\n {children}\n </LanguageContext.Provider>\n );\n};\n\nexport default LanguageContext;"],"names":["setRoleURL"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),a=require("react"),n=require("react-i18next"),t=require("../../constants/all-language/index.js"),l=require("../../utils/common/index.js"),i=require("../../api-client/api.rbac/api/index.js"),r=require("../../api-client/api.system-feature/api/index.js");const o=["en","en-US",t.DEFAULT_LANG],c={languages:[],currentLanguage:null,isLoading:!1,error:null,isFallbackActive:!1},s=(e,a)=>{switch(a.type){case"FETCH_LANGUAGES_START":return{...e,isLoading:!0,error:null};case"FETCH_LANGUAGES_SUCCESS":return{...e,languages:a.payload,isLoading:!1,error:null,isFallbackActive:!1};case"FETCH_LANGUAGES_ERROR":return{...e,isLoading:!1,error:a.payload,isFallbackActive:!0};case"SET_CURRENT_LANGUAGE":return{...e,currentLanguage:a.payload,isFallbackActive:a.isFallback||!1};case"SET_FALLBACK_ACTIVE":return{...e,isFallbackActive:a.payload};default:return e}},d=a.createContext(void 0);exports.LanguageProvider=({children:t})=>{const[u,g]=a.useReducer(s,c),{i18n:E}=n.useTranslation();a.useEffect(()=>{i.setBaseUrl("http://127.0.0.1:4011/rbac")},[]);const A=async e=>{if(E&&"function"==typeof E.changeLanguage)try{await E.changeLanguage(e)}catch(a){}},_=e=>{document.body.dir=e.direction||"ltr",A(e.code),localStorage.setItem("_language",e.code)},p=async()=>{var e,a;try{g({type:"FETCH_LANGUAGES_START"});const n=await r.getV1Languages({order:"id:1",filters:"(is_active.in=[1])",...l.getToken()}),t=(null==(e=null==n?void 0:n.data)?void 0:e.languages)||[],i=null==(a=null==t?void 0:t.filter(e=>null==e?void 0:e.is_active))?void 0:a.map(e=>({label:null==e?void 0:e.name,code:null==e?void 0:e.code,direction:null==e?void 0:e.direction}));i.some(e=>"en"===e.code)||i.unshift({code:"en",label:"English",direction:"ltr"}),g({type:"FETCH_LANGUAGES_SUCCESS",payload:i});const c=localStorage.getItem("_language"),s=((e,a)=>{if(!e||0===e.length)return null;if(a){const n=e.find(e=>e.code===a);if(n)return n}for(const n of o){const a=e.find(e=>e.code===n);if(a)return a}return e[0]||null})(i,c||void 0);if(s){const e=c&&c!==s.code;g({type:"SET_CURRENT_LANGUAGE",payload:s,isFallback:e}),_(s)}}catch(n){const e=n instanceof Error?n.message:"Failed to fetch languages";g({type:"FETCH_LANGUAGES_ERROR",payload:e});const a={code:"en",label:"English",direction:"ltr"};g({type:"FETCH_LANGUAGES_SUCCESS",payload:[a]}),g({type:"SET_CURRENT_LANGUAGE",payload:a,isFallback:!0}),document.body.dir="ltr",A("en"),localStorage.setItem("_language","en")}};a.useEffect(()=>{p()},[]);const y={...u,changeLanguage:e=>{const a=u.languages.find(a=>a.code===e);if(a)g({type:"SET_CURRENT_LANGUAGE",payload:a}),g({type:"SET_FALLBACK_ACTIVE",payload:!1}),_(a);else{const e={code:"en",label:"English",direction:"ltr"};g({type:"SET_CURRENT_LANGUAGE",payload:e,isFallback:!0}),_(e)}},fetchLanguages:p};/* @__PURE__ */
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),a=require("react"),n=require("react-i18next"),t=require("../../constants/all-language/index.js"),l=require("../../utils/common/index.js"),i=require("../../api-client/api.rbac/api/index.js"),r=require("../../api-client/api.system-feature/api/index.js");const o=["en","en-US",t.DEFAULT_LANG],c={languages:[],currentLanguage:null,isLoading:!1,error:null,isFallbackActive:!1},s=(e,a)=>{switch(a.type){case"FETCH_LANGUAGES_START":return{...e,isLoading:!0,error:null};case"FETCH_LANGUAGES_SUCCESS":return{...e,languages:a.payload,isLoading:!1,error:null,isFallbackActive:!1};case"FETCH_LANGUAGES_ERROR":return{...e,isLoading:!1,error:a.payload,isFallbackActive:!0};case"SET_CURRENT_LANGUAGE":return{...e,currentLanguage:a.payload,isFallbackActive:a.isFallback||!1};case"SET_FALLBACK_ACTIVE":return{...e,isFallbackActive:a.payload};default:return e}},d=a.createContext(void 0);exports.LanguageProvider=({children:t})=>{const[u,g]=a.useReducer(s,c),{i18n:E}=n.useTranslation();a.useEffect(()=>{i.setBaseUrl("https://apidev.erpforce.co/rbac")},[]);const A=async e=>{if(E&&"function"==typeof E.changeLanguage)try{await E.changeLanguage(e)}catch(a){}},p=e=>{document.body.dir=e.direction||"ltr",A(e.code),localStorage.setItem("_language",e.code)},_=async()=>{var e,a;try{g({type:"FETCH_LANGUAGES_START"});const n=await r.getV1Languages({order:"id:1",filters:"(is_active.in=[1])",...l.getToken()}),t=(null==(e=null==n?void 0:n.data)?void 0:e.languages)||[],i=null==(a=null==t?void 0:t.filter(e=>null==e?void 0:e.is_active))?void 0:a.map(e=>({label:null==e?void 0:e.name,code:null==e?void 0:e.code,direction:null==e?void 0:e.direction}));i.some(e=>"en"===e.code)||i.unshift({code:"en",label:"English",direction:"ltr"}),g({type:"FETCH_LANGUAGES_SUCCESS",payload:i});const c=localStorage.getItem("_language"),s=((e,a)=>{if(!e||0===e.length)return null;if(a){const n=e.find(e=>e.code===a);if(n)return n}for(const n of o){const a=e.find(e=>e.code===n);if(a)return a}return e[0]||null})(i,c||void 0);if(s){const e=c&&c!==s.code;g({type:"SET_CURRENT_LANGUAGE",payload:s,isFallback:e}),p(s)}}catch(n){const e=n instanceof Error?n.message:"Failed to fetch languages";g({type:"FETCH_LANGUAGES_ERROR",payload:e});const a={code:"en",label:"English",direction:"ltr"};g({type:"FETCH_LANGUAGES_SUCCESS",payload:[a]}),g({type:"SET_CURRENT_LANGUAGE",payload:a,isFallback:!0}),document.body.dir="ltr",A("en"),localStorage.setItem("_language","en")}};a.useEffect(()=>{_()},[]);const y={...u,changeLanguage:e=>{const a=u.languages.find(a=>a.code===e);if(a)g({type:"SET_CURRENT_LANGUAGE",payload:a}),g({type:"SET_FALLBACK_ACTIVE",payload:!1}),p(a);else{const e={code:"en",label:"English",direction:"ltr"};g({type:"SET_CURRENT_LANGUAGE",payload:e,isFallback:!0}),p(e)}},fetchLanguages:_};/* @__PURE__ */
2
2
  return e.jsx(d.Provider,{value:y,children:t})},exports.default=d;
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/contexts/languageContext.tsx"],"sourcesContent":["// contexts/LanguageContext.tsx\nimport React, { createContext, useEffect, useReducer, ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { DEFAULT_LANG } from '../constants/all-language';\nimport { getToken } from '../utils/common';\nimport { setRoleURL } from '../utils/server';\nimport { getV1Languages } from '../api-client/api.system-feature/api';\n// import ErpLoader from '../components/loader/erp-loader';\n\n// Types\ninterface ILanguage {\n label: string;\n code: string;\n direction: string;\n}\n\ninterface LanguageState {\n languages: ILanguage[];\n currentLanguage: ILanguage | null;\n isLoading: boolean;\n error: string | null;\n isFallbackActive: boolean; // Track if we're using fallback\n}\n\ninterface LanguageContextType extends LanguageState {\n changeLanguage: (langCode: string) => void;\n fetchLanguages: () => Promise<void>;\n}\n\n// Define fallback languages in order of preference - English first\nconst FALLBACK_LANGUAGES = [\n 'en', // English as primary fallback\n 'en-US', // US English as secondary\n DEFAULT_LANG, // Then default language\n];\n\n// Create English fallback language object\nconst createEnglishFallback = (): ILanguage => ({\n code: 'en',\n label: 'English',\n direction: 'ltr'\n});\n\n// Action types\ntype LanguageAction =\n | { type: 'FETCH_LANGUAGES_START' }\n | { type: 'FETCH_LANGUAGES_SUCCESS'; payload: ILanguage[] }\n | { type: 'FETCH_LANGUAGES_ERROR'; payload: string }\n | { type: 'SET_CURRENT_LANGUAGE'; payload: ILanguage; isFallback?: boolean }\n | { type: 'SET_FALLBACK_ACTIVE'; payload: boolean };\n\n// Initial state\nconst initialState: LanguageState = {\n languages: [],\n currentLanguage: null,\n isLoading: false,\n error: null,\n isFallbackActive: false,\n};\n\n// Helper function to find the best available language\nconst findBestAvailableLanguage = (\n languages: ILanguage[], \n preferredCode?: string\n): ILanguage | null => {\n if (!languages || languages.length === 0) return null;\n\n // First try the preferred language if provided\n if (preferredCode) {\n const preferred = languages.find(lang => lang.code === preferredCode);\n if (preferred) return preferred;\n }\n\n // Try fallback languages in order (English first)\n for (const fallbackCode of FALLBACK_LANGUAGES) {\n const fallback = languages.find(lang => lang.code === fallbackCode);\n if (fallback) return fallback;\n }\n\n // If no fallbacks found, return the first available language\n return languages[0] || null;\n};\n\n// Reducer\nconst languageReducer = (state: LanguageState, action: LanguageAction): LanguageState => {\n switch (action.type) {\n case 'FETCH_LANGUAGES_START':\n return {\n ...state,\n isLoading: true,\n error: null,\n };\n case 'FETCH_LANGUAGES_SUCCESS':\n return {\n ...state,\n languages: action.payload,\n isLoading: false,\n error: null,\n isFallbackActive: false,\n };\n case 'FETCH_LANGUAGES_ERROR':\n return {\n ...state,\n isLoading: false,\n error: action.payload,\n isFallbackActive: true, \n };\n case 'SET_CURRENT_LANGUAGE':\n return {\n ...state,\n currentLanguage: action.payload,\n isFallbackActive: action.isFallback || false,\n };\n case 'SET_FALLBACK_ACTIVE':\n return {\n ...state,\n isFallbackActive: action.payload,\n };\n default:\n return state;\n }\n};\n\n// Create context\nconst LanguageContext = createContext<LanguageContextType | undefined>(undefined);\n\n// Provider component\ninterface LanguageProviderProps {\n children: ReactNode;\n}\n\nexport const LanguageProvider: React.FC<LanguageProviderProps> = ({ children }) => {\n const [state, dispatch] = useReducer(languageReducer, initialState);\n const { i18n } = useTranslation();\n\n // Initialize role URL\n useEffect(() => {\n setRoleURL(`${import.meta.env.VITE_BACKEND_BASE_URL}/rbac`);\n }, []);\n\n // Guarded i18n changeLanguage call\n const safeChangeLanguage = async (langCode: string) => {\n if (i18n && typeof i18n.changeLanguage === 'function') {\n try {\n await i18n.changeLanguage(langCode);\n } catch (error) {\n console.warn(`Failed to change language to \"${langCode}\"`, error);\n }\n } else {\n console.warn(\n 'i18n.changeLanguage is unavailable. Ensure I18nextProvider is configured in the host application.'\n );\n }\n };\n\n // Apply language settings\n const applyLanguageSettings = (language: ILanguage) => {\n document.body.dir = language.direction || 'ltr';\n safeChangeLanguage(language.code);\n localStorage.setItem('_language', language.code);\n };\n\n // Fetch languages from API\n const fetchLanguages = async (): Promise<void> => {\n try {\n dispatch({ type: 'FETCH_LANGUAGES_START' });\n \n const response = await getV1Languages({\n order: `id:1`,\n filters: `(is_active.in=[1])`,\n ...getToken(),\n });\n \n const data = response?.data?.languages || [];\n const languages = data\n ?.filter((d: any) => d?.is_active)\n ?.map((d: any) => ({\n label: d?.name,\n code: d?.code,\n direction: d?.direction,\n }));\n\n // Always ensure English is available in the languages list\n const hasEnglish = languages.some((lang: ILanguage) => lang.code === 'en');\n if (!hasEnglish) {\n languages.unshift(createEnglishFallback());\n }\n\n dispatch({ type: 'FETCH_LANGUAGES_SUCCESS', payload: languages });\n \n // Get saved language or use fallback\n const savedLangCode = localStorage.getItem('_language');\n const bestLanguage = findBestAvailableLanguage(languages, savedLangCode || undefined);\n \n if (bestLanguage) {\n const isFallback = savedLangCode && savedLangCode !== bestLanguage.code;\n dispatch({ \n type: 'SET_CURRENT_LANGUAGE', \n payload: bestLanguage,\n isFallback \n });\n applyLanguageSettings(bestLanguage);\n \n // Log if we're using a fallback\n if (isFallback) {\n console.warn(`Saved language \"${savedLangCode}\" not available. Using fallback: \"${bestLanguage.code}\"`);\n }\n } else {\n console.error('No languages available');\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Failed to fetch languages';\n dispatch({ type: 'FETCH_LANGUAGES_ERROR', payload: errorMessage });\n \n // On error, always fall back to English\n const englishFallback = createEnglishFallback();\n \n // Create languages array with English fallback for dropdown\n const fallbackLanguages = [englishFallback];\n \n dispatch({ type: 'FETCH_LANGUAGES_SUCCESS', payload: fallbackLanguages });\n dispatch({ \n type: 'SET_CURRENT_LANGUAGE', \n payload: englishFallback,\n isFallback: true \n });\n \n document.body.dir = 'ltr';\n safeChangeLanguage('en');\n localStorage.setItem('_language', 'en');\n \n console.warn('Language fetch failed, using English fallback');\n }\n };\n\n // Change language function\n const changeLanguage = (langCode: string): void => {\n const selectedLanguage = state.languages.find((lang) => lang.code === langCode);\n \n if (selectedLanguage) {\n dispatch({ type: 'SET_CURRENT_LANGUAGE', payload: selectedLanguage });\n dispatch({ type: 'SET_FALLBACK_ACTIVE', payload: false });\n applyLanguageSettings(selectedLanguage);\n } else {\n console.error(`Language \"${langCode}\" not found in available languages`);\n \n // If language not found, fall back to English\n const englishFallback = createEnglishFallback();\n dispatch({ \n type: 'SET_CURRENT_LANGUAGE', \n payload: englishFallback,\n isFallback: true \n });\n applyLanguageSettings(englishFallback);\n }\n };\n\n // Initialize on mount\n useEffect(() => {\n fetchLanguages();\n //eslint-disable-next-line \n }, []);\n\n const contextValue: LanguageContextType = {\n ...state,\n changeLanguage,\n fetchLanguages,\n };\n\n return (\n <LanguageContext.Provider value={contextValue}>\n {/* {state.isLoading } */}\n {children}\n </LanguageContext.Provider>\n );\n};\n\nexport default LanguageContext;"],"names":["FALLBACK_LANGUAGES","DEFAULT_LANG","initialState","languages","currentLanguage","isLoading","error","isFallbackActive","languageReducer","state","action","type","payload","isFallback","LanguageContext","createContext","children","dispatch","useReducer","i18n","useTranslation","useEffect","setRoleURL","safeChangeLanguage","async","langCode","changeLanguage","applyLanguageSettings","language","document","body","dir","direction","code","localStorage","setItem","fetchLanguages","response","getV1Languages","order","filters","getToken","data","_a","_b","filter","d","is_active","map","label","name","some","lang","unshift","savedLangCode","getItem","bestLanguage","preferredCode","length","preferred","find","fallbackCode","fallback","findBestAvailableLanguage","errorMessage","Error","message","englishFallback","contextValue","selectedLanguage","Provider","value"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/contexts/languageContext.tsx"],"sourcesContent":["// contexts/LanguageContext.tsx\nimport React, { createContext, useEffect, useReducer, ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { DEFAULT_LANG } from '../constants/all-language';\nimport { getToken } from '../utils/common';\nimport { setRoleURL } from '../utils/server';\nimport { getV1Languages } from '../api-client/api.system-feature/api';\n// import ErpLoader from '../components/loader/erp-loader';\n\n// Types\ninterface ILanguage {\n label: string;\n code: string;\n direction: string;\n}\n\ninterface LanguageState {\n languages: ILanguage[];\n currentLanguage: ILanguage | null;\n isLoading: boolean;\n error: string | null;\n isFallbackActive: boolean; // Track if we're using fallback\n}\n\ninterface LanguageContextType extends LanguageState {\n changeLanguage: (langCode: string) => void;\n fetchLanguages: () => Promise<void>;\n}\n\n// Define fallback languages in order of preference - English first\nconst FALLBACK_LANGUAGES = [\n 'en', // English as primary fallback\n 'en-US', // US English as secondary\n DEFAULT_LANG, // Then default language\n];\n\n// Create English fallback language object\nconst createEnglishFallback = (): ILanguage => ({\n code: 'en',\n label: 'English',\n direction: 'ltr'\n});\n\n// Action types\ntype LanguageAction =\n | { type: 'FETCH_LANGUAGES_START' }\n | { type: 'FETCH_LANGUAGES_SUCCESS'; payload: ILanguage[] }\n | { type: 'FETCH_LANGUAGES_ERROR'; payload: string }\n | { type: 'SET_CURRENT_LANGUAGE'; payload: ILanguage; isFallback?: boolean }\n | { type: 'SET_FALLBACK_ACTIVE'; payload: boolean };\n\n// Initial state\nconst initialState: LanguageState = {\n languages: [],\n currentLanguage: null,\n isLoading: false,\n error: null,\n isFallbackActive: false,\n};\n\n// Helper function to find the best available language\nconst findBestAvailableLanguage = (\n languages: ILanguage[], \n preferredCode?: string\n): ILanguage | null => {\n if (!languages || languages.length === 0) return null;\n\n // First try the preferred language if provided\n if (preferredCode) {\n const preferred = languages.find(lang => lang.code === preferredCode);\n if (preferred) return preferred;\n }\n\n // Try fallback languages in order (English first)\n for (const fallbackCode of FALLBACK_LANGUAGES) {\n const fallback = languages.find(lang => lang.code === fallbackCode);\n if (fallback) return fallback;\n }\n\n // If no fallbacks found, return the first available language\n return languages[0] || null;\n};\n\n// Reducer\nconst languageReducer = (state: LanguageState, action: LanguageAction): LanguageState => {\n switch (action.type) {\n case 'FETCH_LANGUAGES_START':\n return {\n ...state,\n isLoading: true,\n error: null,\n };\n case 'FETCH_LANGUAGES_SUCCESS':\n return {\n ...state,\n languages: action.payload,\n isLoading: false,\n error: null,\n isFallbackActive: false,\n };\n case 'FETCH_LANGUAGES_ERROR':\n return {\n ...state,\n isLoading: false,\n error: action.payload,\n isFallbackActive: true, \n };\n case 'SET_CURRENT_LANGUAGE':\n return {\n ...state,\n currentLanguage: action.payload,\n isFallbackActive: action.isFallback || false,\n };\n case 'SET_FALLBACK_ACTIVE':\n return {\n ...state,\n isFallbackActive: action.payload,\n };\n default:\n return state;\n }\n};\n\n// Create context\nconst LanguageContext = createContext<LanguageContextType | undefined>(undefined);\n\n// Provider component\ninterface LanguageProviderProps {\n children: ReactNode;\n}\n\nexport const LanguageProvider: React.FC<LanguageProviderProps> = ({ children }) => {\n const [state, dispatch] = useReducer(languageReducer, initialState);\n const { i18n } = useTranslation();\n\n // Initialize role URL\n useEffect(() => {\n setRoleURL(`${import.meta.env.VITE_BACKEND_BASE_URL}/rbac`);\n }, []);\n\n // Guarded i18n changeLanguage call\n const safeChangeLanguage = async (langCode: string) => {\n if (i18n && typeof i18n.changeLanguage === 'function') {\n try {\n await i18n.changeLanguage(langCode);\n } catch (error) {\n console.warn(`Failed to change language to \"${langCode}\"`, error);\n }\n } else {\n console.warn(\n 'i18n.changeLanguage is unavailable. Ensure I18nextProvider is configured in the host application.'\n );\n }\n };\n\n // Apply language settings\n const applyLanguageSettings = (language: ILanguage) => {\n document.body.dir = language.direction || 'ltr';\n safeChangeLanguage(language.code);\n localStorage.setItem('_language', language.code);\n };\n\n // Fetch languages from API\n const fetchLanguages = async (): Promise<void> => {\n try {\n dispatch({ type: 'FETCH_LANGUAGES_START' });\n \n const response = await getV1Languages({\n order: `id:1`,\n filters: `(is_active.in=[1])`,\n ...getToken(),\n });\n \n const data = response?.data?.languages || [];\n const languages = data\n ?.filter((d: any) => d?.is_active)\n ?.map((d: any) => ({\n label: d?.name,\n code: d?.code,\n direction: d?.direction,\n }));\n\n // Always ensure English is available in the languages list\n const hasEnglish = languages.some((lang: ILanguage) => lang.code === 'en');\n if (!hasEnglish) {\n languages.unshift(createEnglishFallback());\n }\n\n dispatch({ type: 'FETCH_LANGUAGES_SUCCESS', payload: languages });\n \n // Get saved language or use fallback\n const savedLangCode = localStorage.getItem('_language');\n const bestLanguage = findBestAvailableLanguage(languages, savedLangCode || undefined);\n \n if (bestLanguage) {\n const isFallback = savedLangCode && savedLangCode !== bestLanguage.code;\n dispatch({ \n type: 'SET_CURRENT_LANGUAGE', \n payload: bestLanguage,\n isFallback \n });\n applyLanguageSettings(bestLanguage);\n \n // Log if we're using a fallback\n if (isFallback) {\n console.warn(`Saved language \"${savedLangCode}\" not available. Using fallback: \"${bestLanguage.code}\"`);\n }\n } else {\n console.error('No languages available');\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Failed to fetch languages';\n dispatch({ type: 'FETCH_LANGUAGES_ERROR', payload: errorMessage });\n \n // On error, always fall back to English\n const englishFallback = createEnglishFallback();\n \n // Create languages array with English fallback for dropdown\n const fallbackLanguages = [englishFallback];\n \n dispatch({ type: 'FETCH_LANGUAGES_SUCCESS', payload: fallbackLanguages });\n dispatch({ \n type: 'SET_CURRENT_LANGUAGE', \n payload: englishFallback,\n isFallback: true \n });\n \n document.body.dir = 'ltr';\n safeChangeLanguage('en');\n localStorage.setItem('_language', 'en');\n \n console.warn('Language fetch failed, using English fallback');\n }\n };\n\n // Change language function\n const changeLanguage = (langCode: string): void => {\n const selectedLanguage = state.languages.find((lang) => lang.code === langCode);\n \n if (selectedLanguage) {\n dispatch({ type: 'SET_CURRENT_LANGUAGE', payload: selectedLanguage });\n dispatch({ type: 'SET_FALLBACK_ACTIVE', payload: false });\n applyLanguageSettings(selectedLanguage);\n } else {\n console.error(`Language \"${langCode}\" not found in available languages`);\n \n // If language not found, fall back to English\n const englishFallback = createEnglishFallback();\n dispatch({ \n type: 'SET_CURRENT_LANGUAGE', \n payload: englishFallback,\n isFallback: true \n });\n applyLanguageSettings(englishFallback);\n }\n };\n\n // Initialize on mount\n useEffect(() => {\n fetchLanguages();\n //eslint-disable-next-line \n }, []);\n\n const contextValue: LanguageContextType = {\n ...state,\n changeLanguage,\n fetchLanguages,\n };\n\n return (\n <LanguageContext.Provider value={contextValue}>\n {/* {state.isLoading } */}\n {children}\n </LanguageContext.Provider>\n );\n};\n\nexport default LanguageContext;"],"names":["FALLBACK_LANGUAGES","DEFAULT_LANG","initialState","languages","currentLanguage","isLoading","error","isFallbackActive","languageReducer","state","action","type","payload","isFallback","LanguageContext","createContext","children","dispatch","useReducer","i18n","useTranslation","useEffect","setRoleURL","safeChangeLanguage","async","langCode","changeLanguage","applyLanguageSettings","language","document","body","dir","direction","code","localStorage","setItem","fetchLanguages","response","getV1Languages","order","filters","getToken","data","_a","_b","filter","d","is_active","map","label","name","some","lang","unshift","savedLangCode","getItem","bestLanguage","preferredCode","length","preferred","find","fallbackCode","fallback","findBestAvailableLanguage","errorMessage","Error","message","englishFallback","contextValue","selectedLanguage","Provider","value"],"mappings":"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"}
package/dist/index.esm.js CHANGED
@@ -279,29 +279,30 @@ import { default as default257, LanguageProvider } from "./contexts/languageCont
279
279
  import { themeVariant, getTheme, themeVariant as themeVariant2 } from "./theme/themeSelector/index.esm.js";
280
280
  import { default as default258 } from "./theme/themeWrapper/index.esm.js";
281
281
  import { convertTableColumns, default as default259 } from "./utils/form-builder-deconversion/index.esm.js";
282
- import { default as default260 } from "./layout/fullScreen/fullScreen/index.esm.js";
283
- import { default as default261 } from "./layout/sidebarScreen/sidebarScreen/index.esm.js";
284
- import { default as default262 } from "./views/template-editor/templates/index.esm.js";
285
- import { default as default263 } from "./views/template-editor/add-template/add-template/index.esm.js";
286
- import { default as default264 } from "./views/template-editor/template-modal/template-modal/index.esm.js";
287
- import { default as default265 } from "./views/template-editor/template-modal/html-thumbnail-preview/index.esm.js";
288
- import { default as default266 } from "./views/template-editor/company-selection-modal/company-selection-modal/index.esm.js";
289
- import { default as default267 } from "./views/template-editor/edit-section-modal/edit-section-modal/index.esm.js";
290
- import { default as default268 } from "./views/template-editor/template-name-modal/template-name-modal/index.esm.js";
291
- import { default as default269 } from "./views/template-editor/components/EditorCanvas/index.esm.js";
292
- import { default as default270 } from "./views/template-editor/components/EditorHeader/index.esm.js";
293
- import { default as default271 } from "./views/template-editor/components/EditorSection/index.esm.js";
294
- import { default as default272 } from "./views/template-editor/components/EditorSidebar/index.esm.js";
295
- import { default as default273 } from "./views/template-editor/components/SectionFlowEditor/index.esm.js";
296
- import { default as default274 } from "./views/template-editor/components/SectionFormatPanel/index.esm.js";
297
- import { default as default275 } from "./views/template-editor/components/controllers/AlignmentControl/index.esm.js";
298
- import { default as default276 } from "./views/template-editor/components/controllers/border-control/index.esm.js";
299
- import { default as default277 } from "./views/template-editor/components/controllers/ButtonControls/index.esm.js";
300
- import { default as default278 } from "./views/template-editor/components/controllers/CodeControls/index.esm.js";
301
- import { default as default279 } from "./views/template-editor/components/controllers/DividerControls/index.esm.js";
302
- import { default as default280 } from "./views/template-editor/components/controllers/ImageControls/index.esm.js";
303
- import { default as default281 } from "./views/template-editor/components/controllers/SignatureControls/index.esm.js";
304
- import { default as default282 } from "./views/template-editor/components/controllers/TableControls/index.esm.js";
282
+ import { convertToUnderscore, formatLabel, default as default260 } from "./utils/format-text/index.esm.js";
283
+ import { default as default261 } from "./layout/fullScreen/fullScreen/index.esm.js";
284
+ import { default as default262 } from "./layout/sidebarScreen/sidebarScreen/index.esm.js";
285
+ import { default as default263 } from "./views/template-editor/templates/index.esm.js";
286
+ import { default as default264 } from "./views/template-editor/add-template/add-template/index.esm.js";
287
+ import { default as default265 } from "./views/template-editor/template-modal/template-modal/index.esm.js";
288
+ import { default as default266 } from "./views/template-editor/template-modal/html-thumbnail-preview/index.esm.js";
289
+ import { default as default267 } from "./views/template-editor/company-selection-modal/company-selection-modal/index.esm.js";
290
+ import { default as default268 } from "./views/template-editor/edit-section-modal/edit-section-modal/index.esm.js";
291
+ import { default as default269 } from "./views/template-editor/template-name-modal/template-name-modal/index.esm.js";
292
+ import { default as default270 } from "./views/template-editor/components/EditorCanvas/index.esm.js";
293
+ import { default as default271 } from "./views/template-editor/components/EditorHeader/index.esm.js";
294
+ import { default as default272 } from "./views/template-editor/components/EditorSection/index.esm.js";
295
+ import { default as default273 } from "./views/template-editor/components/EditorSidebar/index.esm.js";
296
+ import { default as default274 } from "./views/template-editor/components/SectionFlowEditor/index.esm.js";
297
+ import { default as default275 } from "./views/template-editor/components/SectionFormatPanel/index.esm.js";
298
+ import { default as default276 } from "./views/template-editor/components/controllers/AlignmentControl/index.esm.js";
299
+ import { default as default277 } from "./views/template-editor/components/controllers/border-control/index.esm.js";
300
+ import { default as default278 } from "./views/template-editor/components/controllers/ButtonControls/index.esm.js";
301
+ import { default as default279 } from "./views/template-editor/components/controllers/CodeControls/index.esm.js";
302
+ import { default as default280 } from "./views/template-editor/components/controllers/DividerControls/index.esm.js";
303
+ import { default as default281 } from "./views/template-editor/components/controllers/ImageControls/index.esm.js";
304
+ import { default as default282 } from "./views/template-editor/components/controllers/SignatureControls/index.esm.js";
305
+ import { default as default283 } from "./views/template-editor/components/controllers/TableControls/index.esm.js";
305
306
  import { ClickAwayListener } from "./node_modules/@mui/material/ClickAwayListener/ClickAwayListener/index.esm.js";
306
307
  import { RecgtangleIcon } from "./components/icons/rectangle/index.esm.js";
307
308
  import { RectangleFilledIcon } from "./components/icons/rectangle-filled/index.esm.js";
@@ -376,15 +377,15 @@ import { useLanguage } from "./hooks/useLangauge/index.esm.js";
376
377
  import { useAuth } from "./hooks/useAuth/index.esm.js";
377
378
  import { usePages } from "./hooks/use-pages/index.esm.js";
378
379
  import { usePermissions } from "./hooks/use-permissions/index.esm.js";
379
- import { default as default283 } from "./hooks/use-material-calculations/index.esm.js";
380
- import { default as default284 } from "./hooks/useLanguageFallback/index.esm.js";
381
- import { default as default285 } from "./hooks/useLocationFilter/index.esm.js";
380
+ import { default as default284 } from "./hooks/use-material-calculations/index.esm.js";
381
+ import { default as default285 } from "./hooks/useLanguageFallback/index.esm.js";
382
+ import { default as default286 } from "./hooks/useLocationFilter/index.esm.js";
382
383
  import { apiType, capitalizeWords, convertEmptyToNull, defaultUserCurrency, formatNumber, formatTime, formateDate, recursiveSort, removeExtraKeys, sortData, valueWithCurrency } from "./hooks/common/index.esm.js";
383
384
  import { AuthContext, AuthProvider } from "./contexts/AuthContext/index.esm.js";
384
385
  import { PageContext, PageProvider, defaultPageState, initialFilter } from "./contexts/page-context/index.esm.js";
385
386
  import { PermissionsContext, PermissionsProvider } from "./contexts/permission-context/index.esm.js";
386
387
  import { createDarkTheme, createLightTheme, createLightTheme as createLightTheme2, themes } from "./theme/theme-impl/index.esm.js";
387
- import { default as default286 } from "dayjs";
388
+ import { default as default287 } from "dayjs";
388
389
  import { closeSnackbar, enqueueSnackbar, useSnackbar } from "./node_modules/notistack/notistack.esm/index.esm.js";
389
390
  import { apiConfigurations, fetchApi, getCurrency, getItems, getOptions } from "./utils/api/index.esm.js";
390
391
  import { calculateEntries } from "./utils/calculation/index.esm.js";
@@ -396,7 +397,6 @@ import { UTCDateFormat, formatDataTime, formatDate, formatOnlyTime, formatUtcDat
396
397
  import { RANGE, handleCompareDateRange, handleCompareDateRangeSync } from "./utils/date-range/index.esm.js";
397
398
  import { COMMON_DATE_VALIDATIONS, anyDateValidation, businessDateValidation, conditionalDateValidation, createCustomMessages, createDateValidation, dateRangeValidation, dateTimeValidation, dateValidation, futureDateValidation, pastDateValidation } from "./utils/dateValidation/index.esm.js";
398
399
  import { specificFilters, subModuleMappings } from "./utils/export-filters/index.esm.js";
399
- import { convertToUnderscore, formatLabel } from "./utils/format-text/index.esm.js";
400
400
  import { createParameterizedNavigationHandler, migrateRoutesToUseParams, migrateToPathWithId, updateTableConfigForParameterizedNavigation } from "./utils/migration-utils/index.esm.js";
401
401
  import { getEntityId, navigateWithId } from "./utils/navigation-utils/index.esm.js";
402
402
  import { convertRoutesToUseIdParams, generateRouteWithId, navigateToRouteWithId, updatePathnameWithIdParams } from "./utils/route-utils/index.esm.js";
@@ -409,11 +409,11 @@ import { setBaseUrl as setBaseUrl3 } from "./api-client/api.system-feature/api/i
409
409
  import { loadModuleTranslations } from "./utils/translations/index.esm.js";
410
410
  import { MenuFilter, MenuFilterService, ModuleAccessService, StorageUtils } from "./utils/menu-filter/index.esm.js";
411
411
  export * from "react-i18next";
412
- import { getAllUserAndDepartmentDropdown, resetState, setDepartments, setError, setLoading, setUsers, sharePage, default as default287 } from "./redux/slices/shareSlice/index.esm.js";
413
- import { default as default288, resetHeaderState, resetLanguagesState, setCurrentLanguage, setLanguages, setLanguagesData } from "./redux/slices/headerSlice/index.esm.js";
414
- import { fetchCompanies, default as default289, resetReportsTitleBarState, setCompanies, setError as setError2, setLoading as setLoading2 } from "./redux/slices/reportsTitleBarSlice/index.esm.js";
415
- import { fetchBom, default as default290, resetInventoryReportsTitleBarState, setAssemblyItems, setBomData, setCompanies as setCompanies2, setError as setError3, setLoading as setLoading3, setItems, setWarehouseLocations } from "./redux/slices/inventoryReportsTitleBarSlice/index.esm.js";
416
- import { changeCurrentPage, dashBoardDrive, default as default291, pinToDashboardList, setGrid, setPages, setPaginationModel, setSharedPage, setUserName } from "./views/afterAuth/dashboard/redux/reducer/index.esm.js";
412
+ import { getAllUserAndDepartmentDropdown, resetState, setDepartments, setError, setLoading, setUsers, sharePage, default as default288 } from "./redux/slices/shareSlice/index.esm.js";
413
+ import { default as default289, resetHeaderState, resetLanguagesState, setCurrentLanguage, setLanguages, setLanguagesData } from "./redux/slices/headerSlice/index.esm.js";
414
+ import { fetchCompanies, default as default290, resetReportsTitleBarState, setCompanies, setError as setError2, setLoading as setLoading2 } from "./redux/slices/reportsTitleBarSlice/index.esm.js";
415
+ import { fetchBom, default as default291, resetInventoryReportsTitleBarState, setAssemblyItems, setBomData, setCompanies as setCompanies2, setError as setError3, setLoading as setLoading3, setItems, setWarehouseLocations } from "./redux/slices/inventoryReportsTitleBarSlice/index.esm.js";
416
+ import { changeCurrentPage, dashBoardDrive, default as default292, pinToDashboardList, setGrid, setPages, setPaginationModel, setSharedPage, setUserName } from "./views/afterAuth/dashboard/redux/reducer/index.esm.js";
417
417
  import { UsersFetchAction } from "./views/afterAuth/dashboard/redux/actionCreator/index.esm.js";
418
418
  import { createLibraryStore, getLibrarySlices, libraryReducers } from "./redux/store/index.esm.js";
419
419
  import { API_METHOD_GROUPS, createConfiguredApiClient, validateApiClient } from "./redux/apiConfig/index.esm.js";
@@ -436,7 +436,7 @@ import * as apiTypes_d$7 from "./api-client/api.system-feature/api-types.d/index
436
436
  import * as api$9 from "./api-client/api.user/api/index.esm.js";
437
437
  import * as apiTypes_d$8 from "./api-client/api.user/api-types.d/index.esm.js";
438
438
  import { templateEditorRoutes } from "./views/template-editor/routes/index.esm.js";
439
- import { default as default292 } from "./views/template-editor/components/controllers/TextControls/index.esm.js";
439
+ import { default as default293 } from "./views/template-editor/components/controllers/TextControls/index.esm.js";
440
440
  import { TEMPLATE_EDITOR_PATHS, initialStyles } from "./views/template-editor/utils/constant/index.esm.js";
441
441
  import { extractStyles, generateEmailPreview, generateHeaderFooterPreview, generateInlineStyles, getInitialSectionData, templateRoutes } from "./views/template-editor/utils/common/index.esm.js";
442
442
  export {
@@ -453,12 +453,12 @@ export {
453
453
  AddCircle,
454
454
  default47 as AddPage,
455
455
  default48 as AddPageModal,
456
- default263 as AddTemplate,
456
+ default264 as AddTemplate,
457
457
  default89 as AdvancedBarChart,
458
458
  default92 as AdvancedDonutChart,
459
459
  default5 as Alert,
460
460
  default103 as AlertTitle,
461
- default275 as AlignmentControl,
461
+ default276 as AlignmentControl,
462
462
  default70 as AndroidSwitch,
463
463
  AppBarWrapper as AppBar,
464
464
  ApprovalWrapper,
@@ -484,14 +484,14 @@ export {
484
484
  BlankCircle,
485
485
  BlockFiled,
486
486
  BoardWrapper as Board,
487
- default276 as BorderControl,
487
+ default277 as BorderControl,
488
488
  default108 as BottomNavigation,
489
489
  default109 as BottomNavigationAction,
490
490
  default110 as Box,
491
491
  default6 as BreadCrumb,
492
492
  default7 as Button,
493
493
  default112 as ButtonBase,
494
- default277 as ButtonControls,
494
+ default278 as ButtonControls,
495
495
  default113 as ButtonGroup,
496
496
  COMMON_DATE_VALIDATIONS,
497
497
  default8 as CalculationSummary,
@@ -516,11 +516,11 @@ export {
516
516
  ClickAwayListener,
517
517
  Clock,
518
518
  Close,
519
- default278 as CodeControls,
519
+ default279 as CodeControls,
520
520
  CoinOutline,
521
521
  default121 as Collapse,
522
522
  default14 as ColorPickerInput,
523
- default266 as CompanySelectionModal,
523
+ default267 as CompanySelectionModal,
524
524
  default15 as ConfirmModal,
525
525
  default122 as Container,
526
526
  Copy,
@@ -542,7 +542,7 @@ export {
542
542
  default126 as DialogContentText,
543
543
  default127 as DialogTitle,
544
544
  default128 as Divider,
545
- default279 as DividerControls,
545
+ default280 as DividerControls,
546
546
  Document,
547
547
  DocumentDownload,
548
548
  DollarCircle,
@@ -577,12 +577,12 @@ export {
577
577
  default249 as DynamicToggleButton,
578
578
  ERPUIProvider,
579
579
  Edit,
580
- default267 as EditSectionModal,
580
+ default268 as EditSectionModal,
581
581
  default25 as Editor,
582
- default269 as EditorCanvas,
583
- default270 as EditorHeader,
584
- default271 as EditorSection,
585
- default272 as EditorSidebar,
582
+ default270 as EditorCanvas,
583
+ default271 as EditorHeader,
584
+ default272 as EditorSection,
585
+ default273 as EditorSidebar,
586
586
  Email,
587
587
  default26 as EntityViewWrapper,
588
588
  default224 as ErpLoader,
@@ -608,7 +608,7 @@ export {
608
608
  default137 as FormLabel,
609
609
  default225 as FormLoader,
610
610
  default228 as FormParser,
611
- default260 as FullScreenLayout,
611
+ default261 as FullScreenLayout,
612
612
  default32 as Gantt,
613
613
  default138 as GlobalStyles,
614
614
  default139 as Grid,
@@ -622,7 +622,7 @@ export {
622
622
  default34 as HeaderCard,
623
623
  default141 as Hidden,
624
624
  default35 as HrLine,
625
- default265 as HtmlThumbnailPreview,
625
+ default266 as HtmlThumbnailPreview,
626
626
  INVENTORY_ADD_MODE_DISABLED_FIELDS,
627
627
  INVENTORY_ALWAYS_DISABLED_FIELDS,
628
628
  INVENTORY_EDIT_MODE_DISABLED_FIELDS,
@@ -633,7 +633,7 @@ export {
633
633
  default142 as Icon,
634
634
  default143 as IconButton,
635
635
  Image,
636
- default280 as ImageControls,
636
+ default281 as ImageControls,
637
637
  default144 as ImageList,
638
638
  default145 as ImageListItem,
639
639
  default146 as ImageListItemBar,
@@ -767,8 +767,8 @@ export {
767
767
  default64 as SearchBar,
768
768
  SearchStatus,
769
769
  default65 as SearchableSelect,
770
- default273 as SectionFlowEditor,
771
- default274 as SectionFormatPanel,
770
+ default274 as SectionFlowEditor,
771
+ default275 as SectionFormatPanel,
772
772
  default66 as Select,
773
773
  SettingsFallback,
774
774
  SettingsFallbackIcon,
@@ -776,8 +776,8 @@ export {
776
776
  default50 as SharedPageModal,
777
777
  default51 as SharedPageView,
778
778
  Sidebar,
779
- default261 as SidebarLayout,
780
- default281 as SignatureControls,
779
+ default262 as SidebarLayout,
780
+ default282 as SignatureControls,
781
781
  default174 as Slider,
782
782
  default68 as Snackbar,
783
783
  default175 as SnackbarContent,
@@ -806,18 +806,18 @@ export {
806
806
  default190 as TableBody,
807
807
  default191 as TableCell,
808
808
  default192 as TableContainer,
809
- default282 as TableControls,
809
+ default283 as TableControls,
810
810
  default193 as TableFooter,
811
811
  default194 as TableHead,
812
812
  default195 as TablePagination,
813
813
  default196 as TableRow,
814
814
  default197 as TableSortLabel,
815
815
  default72 as Tabs,
816
- default264 as TemplateModal,
817
- default268 as TemplateNameModal,
818
- default262 as Templates,
816
+ default265 as TemplateModal,
817
+ default269 as TemplateNameModal,
818
+ default263 as Templates,
819
819
  default73 as TextArea,
820
- default292 as TextControls,
820
+ default293 as TextControls,
821
821
  default74 as TextField,
822
822
  default198 as TextareaAutosize,
823
823
  themeVariant as ThemeSelector,
@@ -883,11 +883,11 @@ export {
883
883
  createLightTheme2 as createTheme,
884
884
  createdOnAndBy,
885
885
  dashBoardDrive,
886
- default291 as dashboardSlice,
886
+ default292 as dashboardSlice,
887
887
  dateRangeValidation,
888
888
  dateTimeValidation,
889
889
  dateValidation,
890
- default286 as dayjs,
890
+ default287 as dayjs,
891
891
  defaultCompany,
892
892
  defaultCurrencyFormat,
893
893
  defaultCurrencySymbol,
@@ -925,6 +925,7 @@ export {
925
925
  formatOnlyTime,
926
926
  formatResponseDatesToDayJS,
927
927
  formatResponseOnlyDatesToDayJS,
928
+ default260 as formatText,
928
929
  formatTime,
929
930
  formatTimeForPayload,
930
931
  formatUtcDate,
@@ -976,11 +977,11 @@ export {
976
977
  handleCompareDateRangeSync,
977
978
  handleRegularUpload,
978
979
  hasValue,
979
- default288 as headerSlice,
980
+ default289 as headerSlice,
980
981
  images,
981
982
  initialFilter,
982
983
  initialStyles,
983
- default290 as inventoryReportsTitleBarSlice,
984
+ default291 as inventoryReportsTitleBarSlice,
984
985
  isBetweenTheDates,
985
986
  isJSONString,
986
987
  isJsonParse,
@@ -1008,7 +1009,7 @@ export {
1008
1009
  removeIdStaticIdsFromMongoObject,
1009
1010
  renderEmptyRowsFallback,
1010
1011
  renderValueField,
1011
- default289 as reportsTitleBarSlice,
1012
+ default290 as reportsTitleBarSlice,
1012
1013
  resetHeaderState,
1013
1014
  resetInventoryReportsTitleBarState,
1014
1015
  resetLanguagesState,
@@ -1042,7 +1043,7 @@ export {
1042
1043
  setUsers,
1043
1044
  setWarehouseLocations,
1044
1045
  sharePage,
1045
- default287 as shareSlice,
1046
+ default288 as shareSlice,
1046
1047
  showSnackBar,
1047
1048
  skuGenerator,
1048
1049
  sortData,
@@ -1068,11 +1069,11 @@ export {
1068
1069
  default252 as useDeepMemo,
1069
1070
  useERPUI,
1070
1071
  useLanguage,
1071
- default284 as useLanguageFallback,
1072
+ default285 as useLanguageFallback,
1072
1073
  useLibraryDispatch,
1073
1074
  useLibrarySelector,
1074
- default285 as useLocationFilter,
1075
- default283 as useMaterialCalculations,
1075
+ default286 as useLocationFilter,
1076
+ default284 as useMaterialCalculations,
1076
1077
  default202 as useMediaQuery,
1077
1078
  usePages,
1078
1079
  usePermissions,