@dashadmin/dash-admin 1.3.24 → 1.3.26

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 (511) hide show
  1. package/dist/AppAsyncWrapper.js +30 -1
  2. package/dist/AppWrapper.js +35 -1
  3. package/dist/DASHAdmin.js +312 -1
  4. package/dist/RoutingWrapper.js +76 -1
  5. package/dist/classes/DASHStorageClass.js +15 -1
  6. package/dist/components/Input/RichTextField.js +26 -1
  7. package/dist/components/Redirect.js +56 -1
  8. package/dist/components/avatar/Avatar.js +72 -1
  9. package/dist/components/avatar/SingleImageUploader.js +46 -1
  10. package/dist/components/currency/Format.js +71 -1
  11. package/dist/components/custom/Redirect.js +20 -1
  12. package/dist/components/error/Error.js +161 -1
  13. package/dist/components/geocoding/GeocodingField.js +133 -1
  14. package/dist/components/i18n/BridgedLocalesMenuButton.js +126 -1
  15. package/dist/components/i18n/LangSwitcher.js +196 -1
  16. package/dist/components/loader/GlobalLoader.js +71 -1
  17. package/dist/components/logs/LogFile.js +99 -1
  18. package/dist/components/logs/LogFileById.js +75 -1
  19. package/dist/components/logs/LogViewer.js +33 -1
  20. package/dist/components/menu/AppMenu.js +11 -1
  21. package/dist/components/menu/CustomMenuItemLink.js +77 -1
  22. package/dist/components/menu/DarkToggleMode.js +47 -1
  23. package/dist/components/menu/LanguageToggleMode.js +99 -1
  24. package/dist/components/misc/CustomImageInput.js +54 -1
  25. package/dist/components/misc/DASHGlobalErrorHandler.js +159 -1
  26. package/dist/components/misc/DarkModeSwitcher.js +40 -1
  27. package/dist/components/misc/LanguageSwitcher.js +193 -1
  28. package/dist/components/misc/MUIHtmlToolTip.js +50 -1
  29. package/dist/components/misc/MuiSimpleJsonTable.js +178 -1
  30. package/dist/components/misc/MultiLevelTable.js +124 -1
  31. package/dist/components/misc/NoResults.js +17 -1
  32. package/dist/components/misc/PDFViewer.js +86 -1
  33. package/dist/components/navigation/Breadcrumbs.js +178 -1
  34. package/dist/components/navigation/BreadcrumbsManager.js +194 -1
  35. package/dist/components/navigation/index.js +8 -1
  36. package/dist/components/panel/Error.js +161 -1
  37. package/dist/components/permission/AvailablePermissionsContext.js +157 -1
  38. package/dist/components/permission/PermissionsSelector.js +719 -1
  39. package/dist/components/permission/PermissionsSelectorList.js +400 -1
  40. package/dist/components/racustombuttons/CustomRAButton.js +94 -1
  41. package/dist/components/racustombuttons/QuickButton.js +109 -1
  42. package/dist/components/racustombuttons/QuickEditButton.js +114 -1
  43. package/dist/components/racustombuttons/QuickIconButton.js +119 -1
  44. package/dist/components/scrollbar/Scrollbar.js +52 -1
  45. package/dist/components/selects/MultiSelect.js +42 -1
  46. package/dist/components/selects/RASearchableSelect.js +207 -1
  47. package/dist/components/selects/RASearchableSelectChips.js +225 -1
  48. package/dist/components/selects/SearchableSelect.js +128 -1
  49. package/dist/components/subscription/BillingCycleSelectInput.js +50 -1
  50. package/dist/components/subscription/PlanAddonsSettings.js +396 -1
  51. package/dist/components/subscription/PlanAuditLog.js +345 -1
  52. package/dist/components/subscription/PlanFeaturesSettings.js +151 -1
  53. package/dist/components/subscription/PlanLimitsSettings.js +168 -1
  54. package/dist/components/subscription/PlanMetadataSettings.js +219 -1
  55. package/dist/components/subscription/PlanPricesSettings.js +222 -1
  56. package/dist/components/subscription/index.js +12 -1
  57. package/dist/components/svgelements/SvgLoading.js +330 -1
  58. package/dist/components/svgelements/SvgLogo.js +70 -1
  59. package/dist/components/svgelements/SvgLogoMin.js +76 -1
  60. package/dist/components/svgelements/SvgShipping.js +1001 -1
  61. package/dist/components/tenant/TenantAttributes.js +107 -1
  62. package/dist/components/tenant/TenantAttributesContext.js +150 -1
  63. package/dist/components/tenant/TenantSelector.js +160 -1
  64. package/dist/components/tenant/TenantSettings.js +107 -1
  65. package/dist/components/tenant/TenantSettingsContext.js +152 -1
  66. package/dist/components/tenant/TenantTheme.js +112 -1
  67. package/dist/components/user/AvatarComponent.js +270 -1
  68. package/dist/components/user/TenantAvatarComponent.js +83 -1
  69. package/dist/components/user/UserPreferences.js +422 -1
  70. package/dist/config/ACTIONS.js +25 -1
  71. package/dist/config/ConstantsService.js +25 -1
  72. package/dist/config/DASHAdminSystemConstants.js +137 -1
  73. package/dist/config/PARSERS.js +9 -1
  74. package/dist/contexts/DashQueryClientContext.js +78 -1
  75. package/dist/contexts/DashResourceContext.js +21 -1
  76. package/dist/contexts/I18nBridgeContext.js +123 -1
  77. package/dist/contexts/I18nBridgeSetter.js +29 -1
  78. package/dist/contexts/I18nReduxSync.js +16 -1
  79. package/dist/contexts/SubscriptionPlanFormatsProvider.js +175 -1
  80. package/dist/contexts/SystemRequestsCache.js +194 -1
  81. package/dist/contexts/auth/AuthContext.js +396 -1
  82. package/dist/contexts/auth/AuthContextLocalStorage.js +118 -1
  83. package/dist/contexts/auth/DASHAuthenticationService.js +679 -1
  84. package/dist/contexts/auth/WindowContext.js +10 -1
  85. package/dist/contexts/auth/index.js +2 -1
  86. package/dist/contexts/com/FCMContext.js +378 -1
  87. package/dist/contexts/com/LaravelEchoContext.js +45 -1
  88. package/dist/contexts/com/LaravelEchoMgr.js +121 -1
  89. package/dist/contexts/com/components/DefaultNotificationComponent.js +31 -1
  90. package/dist/contexts/com/components/NotificationAttributesTable.js +28 -1
  91. package/dist/contexts/com/components/NotificationRenderer.js +36 -1
  92. package/dist/contexts/com/components/NotificationsWidget.js +142 -1
  93. package/dist/contexts/com/components/notificationFormats.js +15 -1
  94. package/dist/contexts/com/useLaravelEcho.js +340 -1
  95. package/dist/contexts/dictionary/DictionaryContext.js +43 -1
  96. package/dist/default-theme/DASHAppProviders.js +86 -1
  97. package/dist/default-theme/DashThemeContext.js +146 -1
  98. package/dist/default-theme/DashThemeHelperProvider.js +54 -1
  99. package/dist/default-theme/DomainAppLayout.js +126 -1
  100. package/dist/default-theme/DomainHeader.js +114 -1
  101. package/dist/default-theme/DomainTheme.js +60 -1
  102. package/dist/default-theme/FullLayoutMarkup.js +55 -1
  103. package/dist/default-theme/StaticLayout.js +36 -1
  104. package/dist/default-theme/index.js +19 -1
  105. package/dist/default-theme/menu/AppMaterialMenu.js +364 -1
  106. package/dist/default-theme/menu/AppMenuComponents/SubmenuPortal.js +33 -1
  107. package/dist/default-theme/menu/AppMenuComponents/collapsed/CollapsedSidebarItem.js +239 -1
  108. package/dist/default-theme/menu/AppMenuComponents/collapsed/CollapsedSidebarItems.js +22 -1
  109. package/dist/default-theme/menu/AppMenuComponents/expanded/CollapsableSidebarMenu.js +209 -1
  110. package/dist/default-theme/menu/AppMenuComponents/expanded/SidebarItem.js +71 -1
  111. package/dist/default-theme/menu/AppMenuComponents/getItem.js +7 -1
  112. package/dist/default-theme/menu/AppMenuComponents/submenuConstants.js +78 -1
  113. package/dist/default-theme/menu/AppSidebarMaterial.js +232 -1
  114. package/dist/default-theme/menu/SidebarActions.js +75 -1
  115. package/dist/default-theme/updateDomCssVariables.js +134 -1
  116. package/dist/helpers/checkRole.js +14 -1
  117. package/dist/helpers/parseAxiosError.js +28 -2
  118. package/dist/hooks/audio/useAudio.js +24 -1
  119. package/dist/hooks/axios.js +52 -1
  120. package/dist/hooks/data/useDashboardStats.js +88 -1
  121. package/dist/hooks/data/usePackageByClientsStats.js +51 -1
  122. package/dist/hooks/data/usePackageByCommunesStats.js +51 -1
  123. package/dist/hooks/data/usePackageStats.js +88 -1
  124. package/dist/hooks/data/usePackageWithdrawDetails.js +69 -1
  125. package/dist/hooks/data/useStats.js +94 -1
  126. package/dist/hooks/isCurrentPath.js +18 -1
  127. package/dist/hooks/notifications/WSMessagesManager.js +128 -1
  128. package/dist/hooks/notifications/WSPusherManager.js +70 -1
  129. package/dist/hooks/useBreadcrumbs.js +208 -1
  130. package/dist/hooks/useClickOutside.js +18 -1
  131. package/dist/hooks/useFormPersistance.js +129 -1
  132. package/dist/hooks/useGlobalErrorMediator.js +37 -1
  133. package/dist/hooks/useGlobalLoaderMgr.js +20 -1
  134. package/dist/hooks/useHash.js +24 -1
  135. package/dist/hooks/useLocalStorage.js +68 -1
  136. package/dist/hooks/usePolyglotTranslation.js +57 -1
  137. package/dist/hooks/usePrevious.js +12 -1
  138. package/dist/hooks/usePrintSelected.js +30 -1
  139. package/dist/hooks/useVirtualHash.js +28 -1
  140. package/dist/hooks/window/useWindowSize.js +23 -1
  141. package/dist/index.js +120 -97
  142. package/dist/interfaces.js +6 -1
  143. package/dist/layout/AppLayout.js +36 -1
  144. package/dist/layout/ApplicationLayout.js +110 -1
  145. package/dist/layout/MotionWrapper.js +182 -1
  146. package/dist/layout/MotionWrapper.original.js +182 -1
  147. package/dist/layout/ResourceMenu.js +87 -1
  148. package/dist/layout/ResoureLayout.js +47 -1
  149. package/dist/layout/TransitionWrapper.js +83 -2
  150. package/dist/pages/ChangePassword.js +198 -1
  151. package/dist/pages/DASHLanding.js +9 -1
  152. package/dist/pages/DASHLightWeightLogin.js +495 -1
  153. package/dist/pages/DASHSimpleLogin.js +231 -1
  154. package/dist/pages/Login.js +113 -1
  155. package/dist/pages/Profile.js +347 -1
  156. package/dist/pages/RecoverPassword.js +175 -1
  157. package/dist/pages/SingleImageUploader.js +40 -1
  158. package/dist/pages/VerifyAccount.js +129 -1
  159. package/dist/providers/authProvider.js +186 -1
  160. package/dist/providers/dataProvider.js +468 -1
  161. package/dist/providers/i18n/en.js +514 -1
  162. package/dist/providers/i18n/es.js +520 -1
  163. package/dist/providers/i18n/languages.js +8 -1
  164. package/dist/providers/i18nProvider.js +23 -1
  165. package/dist/react-admin-dash/RADashComponent.js +210 -1
  166. package/dist/react-admin-dash/Resource.js +62 -1
  167. package/dist/resources/Brand/BrandResource.js +106 -1
  168. package/dist/resources/DASHResourceLoader.js +104 -1
  169. package/dist/resources/Log/LogResource.js +59 -1
  170. package/dist/resources/Tenant/ImpersonateTenantResource.js +113 -1
  171. package/dist/resources/Trash/TrashTemplate.js +195 -1
  172. package/dist/resources.js +259 -1
  173. package/dist/schemas/log.js +45 -1
  174. package/dist/schemas/notification.js +39 -1
  175. package/dist/schemas/permissions.js +44 -1
  176. package/dist/schemas/roles.js +48 -1
  177. package/dist/schemas/rolesDataGrid.js +48 -1
  178. package/dist/schemas/subscription/components/SubscriptionActions.js +172 -1
  179. package/dist/schemas/subscription/components/SubscriptionPaymentHistory.js +101 -1
  180. package/dist/schemas/subscription/components/SubscriptionPlanFeatures.js +115 -1
  181. package/dist/schemas/subscription/components/SubscriptionPlanPreview.js +92 -1
  182. package/dist/schemas/subscription/components/SubscriptionPlanStats.js +181 -1
  183. package/dist/schemas/subscription/components/SubscriptionStatusIndicator.js +70 -1
  184. package/dist/schemas/subscription/subscriptionPlanSchema.js +184 -1
  185. package/dist/schemas/subscription/subscriptionSchema.js +147 -1
  186. package/dist/schemas/subscriptionPlan.js +397 -1
  187. package/dist/schemas/tenant.js +122 -1
  188. package/dist/schemas/tenantUser.js +94 -1
  189. package/dist/schemas/tenant_superadmin.js +118 -1
  190. package/dist/schemas/user.js +26 -1
  191. package/dist/systemResources.js +1039 -1
  192. package/dist/systemResources.old.js +668 -1
  193. package/dist/templates/ResourceTemplate.js +196 -1
  194. package/dist/templates/ResourceTemplateCreate.js +144 -1
  195. package/dist/templates/ResourceTemplateEdit.js +147 -1
  196. package/dist/templates/ResourceTemplateFull.js +518 -1
  197. package/dist/templates/ResourceTemplateList.js +295 -1
  198. package/dist/templates/ResourceTemplateShow.js +45 -1
  199. package/dist/templates/TrashTemplate.js +175 -1
  200. package/dist/tenantResources.js +206 -1
  201. package/dist/test_portal_bubbles.js +37 -1
  202. package/dist/theme/AppHeader.js +60 -1
  203. package/dist/theme/AppLayoutSetting.js +34 -1
  204. package/dist/theme/AppLogo.js +7 -1
  205. package/dist/theme/AppSidebar.js +30 -1
  206. package/dist/theme/AppSidebarContent.js +84 -1
  207. package/dist/theme/AppSidebarLogo.js +42 -1
  208. package/dist/theme/components/PageTitle.js +61 -1
  209. package/dist/utils/cache/CacheInvalidatorContext.js +100 -1
  210. package/dist/utils/cache/CacheInvalidatorListenerComponent.js +10 -1
  211. package/dist/utils/cache/useCacheInvalidatorListener.js +17 -1
  212. package/dist/utils/convertFileToBase64.js +10 -1
  213. package/dist/utils/convertToFile.js +12 -1
  214. package/dist/utils/cookies.js +45 -1
  215. package/dist/utils/dashDefaultQueryClient.js +15 -1
  216. package/dist/utils/dataUrlToBlob.js +23 -1
  217. package/dist/utils/deepReplace.js +17 -1
  218. package/dist/utils/getProfileMenu.js +31 -1
  219. package/dist/utils/getTenantSettings.js +9 -1
  220. package/dist/utils/getType.js +10 -1
  221. package/dist/utils/getUserSettings.js +9 -1
  222. package/dist/utils/hasCode.js +14 -1
  223. package/dist/utils/index.js +19 -1
  224. package/dist/utils/injectTenantStyles.js +19 -1
  225. package/dist/utils/isComponent.js +23 -1
  226. package/dist/utils/navEvents.js +75 -1
  227. package/dist/utils/prototypes.js +5 -1
  228. package/dist/utils/regexp.js +7 -1
  229. package/dist/utils/resolveObjectPath.js +5 -1
  230. package/dist/utils/setNativeValue.js +17 -1
  231. package/dist/utils/slugify.js +7 -1
  232. package/dist/utils/validators/emailValidator.js +8 -1
  233. package/dist/utils/validators/requiredValidator.js +7 -1
  234. package/dist/utils/validators/rutValidator.js +25 -1
  235. package/dist/utils/validators.js +57 -1
  236. package/package.json +153 -69
  237. package/src/AppAsyncWrapper.tsx +42 -0
  238. package/src/AppWrapper.tsx +45 -0
  239. package/src/DASHAdmin.tsx +501 -0
  240. package/src/RoutingWrapper.tsx +139 -0
  241. package/src/classes/DASHStorageClass.tsx +8 -0
  242. package/src/components/Input/RichTextField.tsx +27 -0
  243. package/src/components/Redirect.tsx +46 -0
  244. package/src/components/avatar/Avatar.tsx +67 -0
  245. package/src/components/avatar/SingleImageUploader.tsx +53 -0
  246. package/src/components/currency/Format.tsx +77 -0
  247. package/src/components/custom/Redirect.tsx +23 -0
  248. package/src/components/error/Error.tsx +168 -0
  249. package/src/components/geocoding/GeocodingField.tsx +167 -0
  250. package/src/components/i18n/BridgedLocalesMenuButton.tsx +159 -0
  251. package/src/components/i18n/LangSwitcher.tsx +204 -0
  252. package/src/components/loader/GlobalLoader.tsx +56 -0
  253. package/src/components/logs/LogFile.tsx +88 -0
  254. package/src/components/logs/LogFileById.tsx +68 -0
  255. package/src/components/logs/LogViewer.tsx +43 -0
  256. package/src/components/menu/AppMenu.tsx +22 -0
  257. package/src/components/menu/CustomMenuItemLink.tsx +61 -0
  258. package/src/components/menu/DarkToggleMode.tsx +65 -0
  259. package/src/components/menu/LanguageToggleMode.tsx +120 -0
  260. package/src/components/misc/CustomImageInput.tsx +62 -0
  261. package/src/components/misc/DASHGlobalErrorHandler.tsx +194 -0
  262. package/src/components/misc/DarkModeSwitcher.tsx +112 -0
  263. package/src/components/misc/LanguageSwitcher.tsx +199 -0
  264. package/src/components/misc/MUIHtmlToolTip.tsx +15 -0
  265. package/src/components/misc/MuiSimpleJsonTable.tsx +279 -0
  266. package/src/components/misc/MultiLevelTable.tsx +229 -0
  267. package/src/components/misc/NoResults.tsx +25 -0
  268. package/src/components/misc/PDFViewer.tsx +85 -0
  269. package/src/components/navigation/Breadcrumbs.tsx +220 -0
  270. package/src/components/navigation/BreadcrumbsManager.tsx +310 -0
  271. package/src/components/navigation/index.tsx +5 -0
  272. package/src/components/panel/Error.tsx +168 -0
  273. package/src/components/permission/AvailablePermissionsContext.tsx +173 -0
  274. package/src/components/permission/PermissionsSelector.tsx +819 -0
  275. package/src/components/permission/PermissionsSelectorList.tsx +468 -0
  276. package/src/components/permission/tsx +0 -0
  277. package/src/components/racustombuttons/CustomRAButton.tsx +87 -0
  278. package/src/components/racustombuttons/QuickButton.tsx +117 -0
  279. package/src/components/racustombuttons/QuickEditButton.tsx +115 -0
  280. package/src/components/racustombuttons/QuickIconButton.tsx +122 -0
  281. package/src/components/scrollbar/Scrollbar.tsx +31 -0
  282. package/src/components/selects/MultiSelect.tsx +53 -0
  283. package/src/components/selects/RASearchableSelect.tsx +279 -0
  284. package/src/components/selects/RASearchableSelectChips.tsx +304 -0
  285. package/src/components/selects/SearchableSelect.tsx +135 -0
  286. package/src/components/subscription/BillingCycleSelectInput.tsx +68 -0
  287. package/src/components/subscription/PlanAddonsSettings.tsx +522 -0
  288. package/src/components/subscription/PlanAuditLog.tsx +439 -0
  289. package/src/components/subscription/PlanFeaturesSettings.tsx +223 -0
  290. package/src/components/subscription/PlanLimitsSettings.tsx +230 -0
  291. package/src/components/subscription/PlanMetadataSettings.tsx +284 -0
  292. package/src/components/subscription/PlanPricesSettings.tsx +295 -0
  293. package/src/components/subscription/index.ts +7 -0
  294. package/src/components/svgelements/SvgLoading.tsx +229 -0
  295. package/src/components/svgelements/SvgLogo.tsx +53 -0
  296. package/src/components/svgelements/SvgLogoMin.tsx +64 -0
  297. package/src/components/svgelements/SvgShipping.tsx +673 -0
  298. package/src/components/tenant/AvailablePermissionsContext.tsx +0 -0
  299. package/src/components/tenant/TenantAttributes.tsx +153 -0
  300. package/src/components/tenant/TenantAttributesContext.tsx +163 -0
  301. package/src/components/tenant/TenantSelector.tsx +139 -0
  302. package/src/components/tenant/TenantSettings.tsx +172 -0
  303. package/src/components/tenant/TenantSettingsContext.tsx +165 -0
  304. package/src/components/tenant/TenantTheme.tsx +172 -0
  305. package/src/components/user/AvatarComponent.tsx +301 -0
  306. package/src/components/user/TenantAvatarComponent.tsx +99 -0
  307. package/src/components/user/UserPreferences.tsx +642 -0
  308. package/src/config/ACTIONS.tsx +26 -0
  309. package/src/config/ConstantsService.tsx +44 -0
  310. package/src/config/DASHAdminSystemConstants.tsx +182 -0
  311. package/src/config/PARSERS.tsx +9 -0
  312. package/src/contexts/DashQueryClientContext.tsx +113 -0
  313. package/src/contexts/DashResourceContext.tsx +34 -0
  314. package/src/contexts/I18nBridgeContext.tsx +156 -0
  315. package/src/contexts/I18nBridgeSetter.tsx +39 -0
  316. package/src/contexts/I18nReduxSync.tsx +27 -0
  317. package/src/contexts/SubscriptionPlanFormatsProvider.tsx +217 -0
  318. package/src/contexts/SystemRequestsCache.tsx +215 -0
  319. package/src/contexts/auth/AuthContext.tsx +553 -0
  320. package/src/contexts/auth/AuthContextLocalStorage.tsx +140 -0
  321. package/src/contexts/auth/DASHAuthenticationService.tsx +917 -0
  322. package/src/contexts/auth/WindowContext.tsx +15 -0
  323. package/src/contexts/auth/index.tsx +3 -0
  324. package/src/contexts/com/FCMContext.tsx +415 -0
  325. package/src/contexts/com/LaravelEchoContext.tsx +41 -0
  326. package/src/contexts/com/LaravelEchoMgr.tsx +155 -0
  327. package/src/contexts/com/components/DefaultNotificationComponent.tsx +20 -0
  328. package/src/contexts/com/components/NotificationAttributesTable.tsx +54 -0
  329. package/src/contexts/com/components/NotificationRenderer.tsx +42 -0
  330. package/src/contexts/com/components/NotificationsWidget.tsx +182 -0
  331. package/src/contexts/com/components/notificationFormats.tsx +50 -0
  332. package/src/contexts/com/useLaravelEcho.tsx +432 -0
  333. package/src/contexts/dictionary/DictionaryContext.tsx +94 -0
  334. package/src/default-theme/DASHAppProviders.tsx +117 -0
  335. package/src/default-theme/DashThemeContext.tsx +218 -0
  336. package/src/default-theme/DashThemeHelperProvider.tsx +98 -0
  337. package/src/default-theme/DomainAppLayout.tsx +166 -0
  338. package/src/default-theme/DomainHeader.tsx +162 -0
  339. package/src/default-theme/DomainTheme.tsx +59 -0
  340. package/src/default-theme/FullLayoutMarkup.tsx +250 -0
  341. package/src/default-theme/StaticLayout.tsx +47 -0
  342. package/src/default-theme/index.tsx +11 -0
  343. package/src/default-theme/menu/AppMaterialMenu.tsx +545 -0
  344. package/src/default-theme/menu/AppMenuComponents/SubmenuPortal.tsx +56 -0
  345. package/src/default-theme/menu/AppMenuComponents/collapsed/CollapsedSidebarItem.tsx +254 -0
  346. package/src/default-theme/menu/AppMenuComponents/collapsed/CollapsedSidebarItems.tsx +31 -0
  347. package/src/default-theme/menu/AppMenuComponents/expanded/CollapsableSidebarMenu.tsx +276 -0
  348. package/src/default-theme/menu/AppMenuComponents/expanded/SidebarItem.tsx +91 -0
  349. package/src/default-theme/menu/AppMenuComponents/getItem.tsx +17 -0
  350. package/src/default-theme/menu/AppMenuComponents/interfaces.tsx +41 -0
  351. package/src/default-theme/menu/AppMenuComponents/submenuConstants.ts +85 -0
  352. package/src/default-theme/menu/AppSidebarMaterial.tsx +339 -0
  353. package/src/default-theme/menu/SidebarActions.tsx +84 -0
  354. package/src/default-theme/updateDomCssVariables.tsx +176 -0
  355. package/src/helpers/checkRole.tsx +66 -0
  356. package/src/helpers/parseAxiosError.tsx +41 -0
  357. package/src/hooks/audio/useAudio.tsx +39 -0
  358. package/src/hooks/axios.tsx +62 -0
  359. package/src/hooks/data/useDashboardStats.tsx +65 -0
  360. package/src/hooks/data/usePackageByClientsStats.tsx +44 -0
  361. package/src/hooks/data/usePackageByCommunesStats.tsx +44 -0
  362. package/src/hooks/data/usePackageStats.tsx +69 -0
  363. package/src/hooks/data/usePackageWithdrawDetails.tsx +61 -0
  364. package/src/hooks/data/useStats.tsx +86 -0
  365. package/src/hooks/isCurrentPath.tsx +22 -0
  366. package/src/hooks/notifications/WSMessagesManager.tsx +152 -0
  367. package/src/hooks/notifications/WSPusherManager.tsx +92 -0
  368. package/src/hooks/useBreadcrumbs.tsx +329 -0
  369. package/src/hooks/useClickOutside.tsx +17 -0
  370. package/src/hooks/useFormPersistance.tsx +150 -0
  371. package/src/hooks/useGlobalErrorMediator.tsx +43 -0
  372. package/src/hooks/useGlobalLoaderMgr.tsx +21 -0
  373. package/src/hooks/useHash.tsx +27 -0
  374. package/src/hooks/useLocalStorage.tsx +196 -0
  375. package/src/hooks/usePolyglotTranslation.tsx +62 -0
  376. package/src/hooks/usePrevious.tsx +9 -0
  377. package/src/hooks/usePrintSelected.tsx +37 -0
  378. package/src/hooks/useVirtualHash.tsx +33 -0
  379. package/src/hooks/window/useWindowSize.tsx +36 -0
  380. package/src/index.tsx +110 -0
  381. package/src/interfaces/IAppResourceConfig.tsx +20 -0
  382. package/src/interfaces/Log.tsx +16 -0
  383. package/src/interfaces/Tenant.tsx +25 -0
  384. package/src/interfaces/communication/IActions.tsx +5 -0
  385. package/src/interfaces/communication/INotification.tsx +21 -0
  386. package/src/interfaces/communication/IPayload.tsx +3 -0
  387. package/src/interfaces/communication/IRequestAction.tsx +10 -0
  388. package/src/interfaces/communication/IRequestPayload.tsx +7 -0
  389. package/src/interfaces/communication/IResponseAction.tsx +7 -0
  390. package/src/interfaces/misc/IAny.tsx +3 -0
  391. package/src/interfaces/misc/IFlashMessage.tsx +10 -0
  392. package/src/interfaces/navigation/IAppMenu.ts +14 -0
  393. package/src/interfaces/navigation/ICollapsableSidebarMenu.ts +12 -0
  394. package/src/interfaces/navigation/IMenuItem.ts +16 -0
  395. package/src/interfaces/notifications/IModel.tsx +6 -0
  396. package/src/interfaces/notifications/IModelField.tsx +8 -0
  397. package/src/interfaces/notifications/IUserNotification.tsx +12 -0
  398. package/src/interfaces/notifications/IUserNotificationData.tsx +13 -0
  399. package/src/interfaces/notifications/IUserNotificationPayload.tsx +8 -0
  400. package/src/interfaces/user/IGetAuth.tsx +92 -0
  401. package/src/interfaces/user/ITenantSettings.tsx +3 -0
  402. package/src/interfaces/user/IUser.tsx +60 -0
  403. package/src/interfaces/user/IUserSettings.tsx +43 -0
  404. package/src/interfaces.tsx +6 -0
  405. package/src/layout/AppLayout.tsx +112 -0
  406. package/src/layout/ApplicationLayout.tsx +197 -0
  407. package/src/layout/MotionWrapper.original.tsx +236 -0
  408. package/src/layout/MotionWrapper.tsx +236 -0
  409. package/src/layout/ResourceMenu.tsx +164 -0
  410. package/src/layout/ResoureLayout.tsx +105 -0
  411. package/src/layout/TransitionWrapper.tsx +125 -0
  412. package/src/pages/ChangePassword.tsx +179 -0
  413. package/src/pages/DASHLanding.tsx +22 -0
  414. package/src/pages/DASHLightWeightLogin.tsx +610 -0
  415. package/src/pages/DASHSimpleLogin.tsx +260 -0
  416. package/src/pages/Login.tsx +111 -0
  417. package/src/pages/Profile.tsx +394 -0
  418. package/src/pages/RecoverPassword.tsx +166 -0
  419. package/src/pages/SingleImageUploader.tsx +55 -0
  420. package/src/pages/VerifyAccount.tsx +128 -0
  421. package/src/providers/authProvider.tsx +210 -0
  422. package/src/providers/dataProvider.tsx +672 -0
  423. package/src/providers/i18n/en.ts +533 -0
  424. package/src/providers/i18n/es.ts +539 -0
  425. package/src/providers/i18n/languages.tsx +5 -0
  426. package/src/providers/i18nProvider.tsx +23 -0
  427. package/src/react-admin-dash/RADashComponent.tsx +240 -0
  428. package/src/react-admin-dash/Resource.tsx +77 -0
  429. package/src/resources/Brand/BrandResource.tsx +130 -0
  430. package/src/resources/DASHResourceLoader.ts +180 -0
  431. package/src/resources/Log/LogResource.tsx +73 -0
  432. package/src/resources/Tenant/ImpersonateTenantResource.tsx +113 -0
  433. package/src/resources/Trash/TrashTemplate.tsx +180 -0
  434. package/src/resources.tsx +280 -0
  435. package/src/schemas/log.tsx +45 -0
  436. package/src/schemas/notification.tsx +42 -0
  437. package/src/schemas/permissions.tsx +44 -0
  438. package/src/schemas/roles.tsx +48 -0
  439. package/src/schemas/rolesDataGrid.tsx +48 -0
  440. package/src/schemas/subscription/components/SubscriptionActions.tsx +153 -0
  441. package/src/schemas/subscription/components/SubscriptionPaymentHistory.tsx +120 -0
  442. package/src/schemas/subscription/components/SubscriptionPlanFeatures.tsx +155 -0
  443. package/src/schemas/subscription/components/SubscriptionPlanPreview.tsx +128 -0
  444. package/src/schemas/subscription/components/SubscriptionPlanStats.tsx +268 -0
  445. package/src/schemas/subscription/components/SubscriptionStatusIndicator.tsx +72 -0
  446. package/src/schemas/subscription/subscriptionPlanSchema.tsx +185 -0
  447. package/src/schemas/subscription/subscriptionSchema.tsx +152 -0
  448. package/src/schemas/subscriptionPlan.ts +422 -0
  449. package/src/schemas/tenant.tsx +129 -0
  450. package/src/schemas/tenantUser.tsx +96 -0
  451. package/src/schemas/tenant_superadmin.tsx +119 -0
  452. package/src/schemas/user.tsx +26 -0
  453. package/src/systemResources.old.tsx +928 -0
  454. package/src/systemResources.tsx +1135 -0
  455. package/src/templates/ResourceTemplate.tsx +240 -0
  456. package/src/templates/ResourceTemplateCreate.tsx +167 -0
  457. package/src/templates/ResourceTemplateEdit.tsx +176 -0
  458. package/src/templates/ResourceTemplateFull.tsx +581 -0
  459. package/src/templates/ResourceTemplateList.tsx +340 -0
  460. package/src/templates/ResourceTemplateShow.tsx +88 -0
  461. package/src/templates/TrashTemplate.tsx +179 -0
  462. package/src/tenantResources.tsx +223 -0
  463. package/src/test_portal_bubbles.tsx +40 -0
  464. package/src/theme/AppHeader.tsx +52 -0
  465. package/src/theme/AppLayoutSetting.tsx +33 -0
  466. package/src/theme/AppLogo.tsx +13 -0
  467. package/src/theme/AppSidebar.tsx +12 -0
  468. package/src/theme/AppSidebarContent.tsx +105 -0
  469. package/src/theme/AppSidebarLogo.tsx +48 -0
  470. package/src/theme/components/PageTitle.tsx +37 -0
  471. package/src/utils/cache/CacheInvalidatorContext.tsx +125 -0
  472. package/src/utils/cache/CacheInvalidatorListenerComponent.tsx +10 -0
  473. package/src/utils/cache/useCacheInvalidatorListener.tsx +27 -0
  474. package/src/utils/convertFileToBase64.tsx +9 -0
  475. package/src/utils/convertToFile.tsx +14 -0
  476. package/src/utils/cookies.tsx +33 -0
  477. package/src/utils/dashDefaultQueryClient.tsx +34 -0
  478. package/src/utils/dataUrlToBlob.tsx +30 -0
  479. package/src/utils/deepReplace.tsx +19 -0
  480. package/src/utils/getProfileMenu.tsx +41 -0
  481. package/src/utils/getTenantSettings.tsx +9 -0
  482. package/src/utils/getType.tsx +8 -0
  483. package/src/utils/getUserSettings.tsx +8 -0
  484. package/src/utils/hasCode.tsx +14 -0
  485. package/src/utils/index.ts +19 -0
  486. package/src/utils/injectTenantStyles.ts +28 -0
  487. package/src/utils/isComponent.tsx +45 -0
  488. package/src/utils/navEvents.tsx +91 -0
  489. package/src/utils/prototypes.tsx +5 -0
  490. package/src/utils/regexp.tsx +4 -0
  491. package/src/utils/resolveObjectPath.tsx +4 -0
  492. package/src/utils/setNativeValue.tsx +24 -0
  493. package/src/utils/slugify.tsx +11 -0
  494. package/src/utils/validators/emailValidator.tsx +6 -0
  495. package/src/utils/validators/requiredValidator.tsx +5 -0
  496. package/src/utils/validators/rutValidator.tsx +31 -0
  497. package/src/utils/validators.tsx +96 -0
  498. package/dist/ChangePassword-DmWAQAX_.js +0 -152
  499. package/dist/Login-t41HMhVT.js +0 -101
  500. package/dist/Profile-By-gdPUd.js +0 -294
  501. package/dist/RecoverPassword-DzPdbkg2.js +0 -149
  502. package/dist/VerifyAccount-Bofaxe5w.js +0 -99
  503. package/dist/index-gfebuoyf.js +0 -21614
  504. /package/dist/{components/permission/tsx → declarations.d.js} +0 -0
  505. /package/{dist → src}/DASHAdmin.tsx.old +0 -0
  506. /package/{dist → src}/declarations.d.ts +0 -0
  507. /package/{dist → src}/default-theme/DashThemeContext.tsx.fast +0 -0
  508. /package/{dist → src}/default-theme/DashThemeContext.tsx.old +0 -0
  509. /package/{dist → src}/templates/ResourceTemplate.tsx.memoized_experiment +0 -0
  510. /package/{dist → src}/templates/ResourceTemplate.tsx.original +0 -0
  511. /package/{dist → src}/templates/ResourceTemplateOld.tsx.bkup +0 -0
@@ -1 +1,36 @@
1
- import{Fragment as f,jsx as a}from"react/jsx-runtime";import{useRecordContext as e}from"react-admin";import{formatNotification as n}from"./notificationFormats";const r=({notification:t})=>{let o=t;const i=n(o);return a(i.content,{notification:o})},c=({method:t,attribute:o})=>{const i=e();return a(r,{notification:i})},s=({method:t,attribute:o,resourceConfig:i})=>{switch(t){case"edit":case"create":return a(f,{children:"Not implemented"});case"view":case"list":return a(c,{attribute:o,method:t,resourceConfig:i})}};var A=s;export{r as NotificationComponent,A as default};
1
+ import { Fragment, jsx } from "react/jsx-runtime";
2
+ import { useRecordContext } from "react-admin";
3
+ import { formatNotification } from "./notificationFormats";
4
+ const NotificationComponent = ({
5
+ notification
6
+ }) => {
7
+ let _record = notification;
8
+ const formattedNotificationDefault = formatNotification(_record);
9
+ return /* @__PURE__ */ jsx(formattedNotificationDefault.content, { notification: _record });
10
+ };
11
+ const NotificationRendererView = ({
12
+ method,
13
+ attribute
14
+ }) => {
15
+ const record = useRecordContext();
16
+ return /* @__PURE__ */ jsx(NotificationComponent, { notification: record });
17
+ };
18
+ const NotificationRenderer = ({
19
+ method,
20
+ attribute,
21
+ resourceConfig
22
+ }) => {
23
+ switch (method) {
24
+ case "edit":
25
+ case "create":
26
+ return /* @__PURE__ */ jsx(Fragment, { children: "Not implemented" });
27
+ case "view":
28
+ case "list":
29
+ return /* @__PURE__ */ jsx(NotificationRendererView, { attribute, method, resourceConfig });
30
+ }
31
+ };
32
+ var NotificationRenderer_default = NotificationRenderer;
33
+ export {
34
+ NotificationComponent,
35
+ NotificationRenderer_default as default
36
+ };
@@ -1 +1,142 @@
1
- import{Fragment as F,jsx as t,jsxs as e}from"react/jsx-runtime";import m,{useContext as u,useEffect as v}from"react";import{useGetList as g}from"react-admin";import{NotificationComponent as y}from"./NotificationRenderer";import{Badge as I,Button as C,Popover as E}from"@mui/material";import{useNavigate as P}from"react-router";import{Link as b}from"react-router-dom";import{useStore as B}from"react-admin";import T from"@mui/icons-material/NotificationsActive";import x from"../LaravelEchoContext";import L from"../../dictionary/DictionaryContext";import k from"../../../components/scrollbar/Scrollbar";import{formatNotification as O}from"./notificationFormats";import{dashStorage as S}from"@dashadmin/dash-utils";const A=({notification:a,key:r,children:i})=>{const n=O(a);return e("li",{className:"dash-media",children:[e("div",{className:"dash-user-thumb dash-mr-3",children:[t(n.content,{notification:a}),t("span",{className:"dash-badge dash-badge-danger dash-text-white dash-rounded-circle"})]}),e("div",{className:"dash-media-body",children:[t("h5",{children:t(n.title,{notification:a})}),t("span",{children:t(n.content,{notification:a})}),i]})]},r)},D=()=>{const[a,r]=B("activeNotifications"),i=u(x);v(()=>{if(i.lastEvent&&S.getItem("lastEvent")!==JSON.stringify(i.lastEvent)){if(["ProductImportProgressNotification"].includes(i.lastEvent.notificationPayload.class))return;r((a||0)+1)}},[i.lastEvent]);const n=P(),{data:s}=g("notification",{pagination:{page:1,perPage:5},sort:null}),c=m.useContext(L),f=()=>t("ul",{className:"dash-sub-popover",children:t("li",{children:c.get("NO_AVAILABLE_NOTIFICATIONS")})}),p=()=>e(F,{children:[e("div",{className:"dash-popover-header",children:[t("h3",{className:"dash-mb-0",children:c.get("NOTIFICATIONS_WIDGET_TITLE")}),t(C,{onClick:()=>n("notification"),children:"Ver todas"})]}),t(k,{className:"dash-popover-scroll",children:t("ul",{className:"dash-sub-popover",children:s&&s.length?s.map((o,h)=>{const N={...o,notificationPayload:{...o.notificationPayload,notificationPayload:{...o.notificationPayload.notificationPayload,name:t(b,{target:"_blank",to:`/log/${o?.notificationPayload?.notificationPayload?.id}/show`,children:o?.notificationPayload?.notificationPayload?.name})}}};return t(A,{notification:o,children:t(y,{notification:N})},h)}):t(f,{})})})]}),[l,d]=m.useState(null);return e("div",{className:"dash-notify dash-header-entry",children:[t(E,{id:void 0,open:!!l,anchorEl:l,onClose:()=>{d(null)},anchorOrigin:{vertical:"bottom",horizontal:"left"},children:t(p,{})}),t(I,{onClick:o=>{d(o.currentTarget)},badgeContent:a,color:"primary",children:t(T,{color:"action"})})]})};var it=D;export{A as NotificationWrapper,D as NotificationsWidget,it as default};
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
21
+ import React, { useContext, useEffect } from "react";
22
+ import { useGetList } from "react-admin";
23
+ import { NotificationComponent } from "./NotificationRenderer";
24
+ import { Badge, Button, Popover } from "@mui/material";
25
+ import { useNavigate } from "react-router";
26
+ import { Link } from "react-router-dom";
27
+ import { useStore } from "react-admin";
28
+ import NotificationsActive from "@mui/icons-material/NotificationsActive";
29
+ import LaravelEchoContext from "../LaravelEchoContext";
30
+ import DictionaryContext from "../../dictionary/DictionaryContext";
31
+ import Scrollbar from "../../../components/scrollbar/Scrollbar";
32
+ import { formatNotification } from "./notificationFormats";
33
+ import { dashStorage } from "dash-utils";
34
+ const NotificationWrapper = ({ notification, key, children }) => {
35
+ const formattedNotification = formatNotification(notification);
36
+ return /* @__PURE__ */ jsxs("li", { className: "dash-media", children: [
37
+ /* @__PURE__ */ jsxs("div", { className: "dash-user-thumb dash-mr-3", children: [
38
+ /* @__PURE__ */ jsx(formattedNotification.content, { notification }),
39
+ /* @__PURE__ */ jsx("span", { className: "dash-badge dash-badge-danger dash-text-white dash-rounded-circle" })
40
+ ] }),
41
+ /* @__PURE__ */ jsxs("div", { className: "dash-media-body", children: [
42
+ /* @__PURE__ */ jsx("h5", { children: /* @__PURE__ */ jsx(formattedNotification.title, { notification }) }),
43
+ /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(formattedNotification.content, { notification }) }),
44
+ children
45
+ ] })
46
+ ] }, key);
47
+ };
48
+ const NotificationsWidget = () => {
49
+ const [currentNotifications, setCurrentNotifications] = useStore(
50
+ "activeNotifications"
51
+ );
52
+ const laravelEchoContext = useContext(LaravelEchoContext);
53
+ useEffect(() => {
54
+ if (laravelEchoContext.lastEvent && dashStorage.getItem("lastEvent") !== JSON.stringify(laravelEchoContext.lastEvent)) {
55
+ if (["ProductImportProgressNotification"].includes(
56
+ laravelEchoContext.lastEvent.notificationPayload.class
57
+ ))
58
+ return;
59
+ setCurrentNotifications((currentNotifications || 0) + 1);
60
+ }
61
+ }, [laravelEchoContext.lastEvent]);
62
+ const navigate = useNavigate();
63
+ const {
64
+ data: NOTIFICATIONS
65
+ // total,
66
+ // isLoading,
67
+ // error,
68
+ // refetch,
69
+ } = useGetList("notification", {
70
+ pagination: { page: 1, perPage: 5 },
71
+ sort: null
72
+ });
73
+ const dict = React.useContext(DictionaryContext);
74
+ const NoNotifications = () => {
75
+ return /* @__PURE__ */ jsx("ul", { className: "dash-sub-popover", children: /* @__PURE__ */ jsx("li", { children: dict.get("NO_AVAILABLE_NOTIFICATIONS") }) });
76
+ };
77
+ const MailNotification = () => {
78
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
79
+ /* @__PURE__ */ jsxs("div", { className: "dash-popover-header", children: [
80
+ /* @__PURE__ */ jsx("h3", { className: "dash-mb-0", children: dict.get("NOTIFICATIONS_WIDGET_TITLE") }),
81
+ /* @__PURE__ */ jsx(Button, { onClick: () => navigate("notification"), children: "Ver todas" })
82
+ ] }),
83
+ /* @__PURE__ */ jsx(Scrollbar, { className: "dash-popover-scroll", children: /* @__PURE__ */ jsx("ul", { className: "dash-sub-popover", children: NOTIFICATIONS && NOTIFICATIONS.length ? NOTIFICATIONS.map((notification, index) => {
84
+ var _a, _b, _c, _d;
85
+ const linkNotification = __spreadProps(__spreadValues({}, notification), {
86
+ notificationPayload: __spreadProps(__spreadValues({}, notification.notificationPayload), {
87
+ notificationPayload: __spreadProps(__spreadValues({}, notification.notificationPayload.notificationPayload), {
88
+ name: /* @__PURE__ */ jsx(
89
+ Link,
90
+ {
91
+ target: "_blank",
92
+ to: `/log/${(_b = (_a = notification == null ? void 0 : notification.notificationPayload) == null ? void 0 : _a.notificationPayload) == null ? void 0 : _b.id}/show`,
93
+ children: (_d = (_c = notification == null ? void 0 : notification.notificationPayload) == null ? void 0 : _c.notificationPayload) == null ? void 0 : _d.name
94
+ }
95
+ )
96
+ })
97
+ })
98
+ });
99
+ return /* @__PURE__ */ jsx(NotificationWrapper, { notification, children: /* @__PURE__ */ jsx(NotificationComponent, { notification: linkNotification }) }, index);
100
+ }) : /* @__PURE__ */ jsx(NoNotifications, {}) }) })
101
+ ] });
102
+ };
103
+ const [anchorEl, setAnchorEl] = React.useState(null);
104
+ const openNotifications = (event) => {
105
+ setAnchorEl(event.currentTarget);
106
+ };
107
+ const handleClose = () => {
108
+ setAnchorEl(null);
109
+ };
110
+ const openPanel = Boolean(anchorEl);
111
+ return /* @__PURE__ */ jsxs("div", { className: "dash-notify dash-header-entry", children: [
112
+ /* @__PURE__ */ jsx(
113
+ Popover,
114
+ {
115
+ id: void 0,
116
+ open: openPanel,
117
+ anchorEl,
118
+ onClose: handleClose,
119
+ anchorOrigin: {
120
+ vertical: "bottom",
121
+ horizontal: "left"
122
+ },
123
+ children: /* @__PURE__ */ jsx(MailNotification, {})
124
+ }
125
+ ),
126
+ /* @__PURE__ */ jsx(
127
+ Badge,
128
+ {
129
+ onClick: openNotifications,
130
+ badgeContent: currentNotifications,
131
+ color: "primary",
132
+ children: /* @__PURE__ */ jsx(NotificationsActive, { color: "action" })
133
+ }
134
+ )
135
+ ] });
136
+ };
137
+ var NotificationsWidget_default = NotificationsWidget;
138
+ export {
139
+ NotificationWrapper,
140
+ NotificationsWidget,
141
+ NotificationsWidget_default as default
142
+ };
@@ -1 +1,15 @@
1
- import{Fragment as o,jsx as n}from"react/jsx-runtime";import f from"./DefaultNotificationComponent";function s(c,i,t,a){return{class:c.class,title:i||(e=>n(o,{children:"notification.title"})),icon:t||(e=>n(o,{children:"\u{1F514}"})),content:a||f}}var F=s;export{F as default,s as formatNotification};
1
+ import { Fragment, jsx } from "react/jsx-runtime";
2
+ import DefaultNotificationComponent from "./DefaultNotificationComponent";
3
+ function formatNotification(notification, titleComponent, iconComponent, contentComponent) {
4
+ return {
5
+ class: notification.class,
6
+ title: titleComponent ? titleComponent : (notification2) => /* @__PURE__ */ jsx(Fragment, { children: "notification.title" }),
7
+ icon: iconComponent ? iconComponent : (notification2) => /* @__PURE__ */ jsx(Fragment, { children: "\u{1F514}" }),
8
+ content: contentComponent ? contentComponent : DefaultNotificationComponent
9
+ };
10
+ }
11
+ var notificationFormats_default = formatNotification;
12
+ export {
13
+ notificationFormats_default as default,
14
+ formatNotification
15
+ };
@@ -1 +1,340 @@
1
- var G=Object.defineProperty;var J=(r,e,g)=>e in r?G(r,e,{enumerable:!0,configurable:!0,writable:!0,value:g}):r[e]=g;var _=(r,e,g)=>J(r,typeof e!="symbol"?e+"":e,g);import{useState as C,useEffect as $,useContext as Y,useCallback as w,useRef as Q}from"react";import Z from"@rooks/use-previous";import ee from"laravel-echo";import ne from"pusher-js";import{ConstantsContext as te}from"../../config/ConstantsService";import{getEnv as p}from"@dashadmin/dash-constants/src/DASHAdminSystemConstants";import{useSelector as oe}from"react-redux";import{dashStorage as N}from"@dashadmin/dash-utils";window.Pusher=ne;const f=class f{constructor(){_(this,"clients");this.clients=new Map}static getInstance(){return f.instance||(f.instance=new f),f.instance}setClient(e,g){this.clients.set(e,g)}getClient(e){return this.clients.get(e)}removeClient(e){return this.clients.delete(e)}hasClient(e){return this.clients.has(e)}};_(f,"instance");let D=f;const H=D.getInstance(),ie=({type:r,channel:e,events:g,userId:s,socketId:re,pingInterval:z=3e4,debug:d=!0,enabled:L=!1})=>{const[c,T]=C(null),[n,I]=C(null),[M,K]=C(null),[y,P]=C(!1),v=Z(e),se=Y(te),l=Q(null),a=oe(t=>t.auth),[ce,R]=C(null);console.log("\u{1F50D} useLaravelEcho: Hook called with params:",{type:r,channel:e,userId:s,enabled:L,hasAuth:!!a?.user,authUserId:a?.user?.id,authenticated:a?.authenticated}),$(()=>{a.user?.id&&typeof a.user.id=="number"&&a.user.id!==s&&R(a.user.id),a?.authenticated===!1&&R(null)},[a]);const le=p("APP_ENV")==="production",i=(t,o)=>{d&&console.log(`%c\u{1F4E1} ${t}`,"color: #2196F3; font-weight: bold; font-size: 12px;",o||"")},A=(t,o)=>{d&&console.error(`%c\u{1F4E1} ${t}`,"color: #f44336; font-weight: bold; font-size: 12px;",o||"")},U=w(()=>{if(n&&n.connector&&n.connector.pusher)try{i("Sending custom ping event..."),n.connector.pusher.send_event("client-ping",{timestamp:new Date().toISOString()})}catch(t){A("Error pinging WebSocket connection:",t)}},[n,d]),x=w(()=>`${r}-${e||"global"}-${s||"public"}`,[r,s,e]),W=w(()=>{l.current&&(window.clearInterval(l.current),l.current=null),i("Disconnecting Laravel Echo client...",x()),n&&n.disconnect(),i("Setting Laravel Echo client to null..."),I(null),i("Setting Echo channel to null..."),T(null),i("Clearing current events..."),K(null),i("Setting connection status to false..."),P(!1),i("Removing client from Echo manager...")},[n]);$(()=>{if(!L){console.log("\u{1F50D} useLaravelEcho: Hook disabled, skipping WebSocket setup");return}if(!JSON.parse(p("APP_SOCKETS_ENABLED"))){console.log("\u{1F50D} useLaravelEcho: WebSockets disabled by APP_SOCKETS_ENABLED env var");return}const t=x();if(console.log("\u{1F50D} useLaravelEcho: Setting up WebSocket connection...",{clientId:t,type:r,channel:e,userId:s,enabled:L}),r==="private"&&!s){console.log("\u{1F50D} useLaravelEcho: Skipping private channel setup - no userId provided");return}if(r==="public"||r==="private"&&s){if(H.clients.has(t)){const m=H.getClient(t);console.log("\u{1F50D} useLaravelEcho: Using existing Echo client:",t),I(m);return}const o=s?N.getItem("token"):null,k=o?{headers:{Authorization:`Bearer ${o}`,Accept:"application/json","X-Requested-With":"XMLHttpRequest"}}:void 0;try{const m=p("APP_SOCKETS_HOST"),E=p("APP_SOCKETS_SCHEME")?.toLowerCase()==="https",X=m||window.location.hostname,O=p("APP_SOCKETS_PORT"),S={broadcaster:"pusher",key:p("APP_SOCKETS_KEY")||"dash",wsHost:X,...O&&O!==""?{wsPort:O}:{},secure:E,forceTLS:E,encrypted:E,useTLS:E,disableStats:!E,enabledTransports:E?["wss","ws"]:["ws"],disableCluster:!0,cluster:"mt1",logToConsole:d,activityTimeout:12e4,pongTimeout:3e4};if(console.log("\u{1F50D} useLaravelEcho: WebSocket config:",S),k){const h=p("APP_BACKEND_URL")||window.location.origin,b=p("APP_SOCKETS_AUTH_ENDPOINT")||"/api/ws/auth",j=h.endsWith("/")?h:`${h}/`,F=b.startsWith("/")?b.substring(1):b,B=`${j}${F}`;console.log("\u{1F50D} useLaravelEcho: Using auth endpoint:",B),S.authEndpoint=B,S.auth=k}console.log("\u{1F50D} useLaravelEcho: Initializing Echo client with config:",S);const u=new ee(S);u.connector&&u.connector.pusher&&(u.connector.pusher.bind_global((h,b)=>{i(`Global event received: ${h}`,b),K({event:h,data:b})}),u.connector.pusher.connection.bind("connected",()=>{i("Connected to Pusher!"),P(!0),N.setItem("socketConnectionState","true"),l.current&&window.clearInterval(l.current),l.current=window.setInterval(U,z)}),u.connector.pusher.connection.bind("disconnected",()=>{i("Disconnected from Pusher"),P(!1),l.current&&(window.clearInterval(l.current),l.current=null)}),u.connector.pusher.connection.bind("error",h=>{A("Pusher connection error:",h),P(!1)})),i("Setting Echo client",t),H.setClient(t,u),I(u)}catch(m){A("Error initializing Echo client:",m),W()}}return()=>{d&&(console.log("%c\u{1F4E1} Socket listener unmounted!","color: #ff6b6b; font-weight: bold;"),W())}},[s,L,e]),$(()=>{if(!n||!e||r==="private"&&!s)return;if(i(`Attempting to subscribe to ${r} channel: ${e}`),n.connector.channels[e.includes(".")?`private-${e}`:e]!==void 0){i("Skipping, already suscribed");return}if(c&&v&&e!==v&&(i(`Leaving previous channel: ${v}`),n.leaveChannel(v),T(null)),!c||e!==v)try{let o;r==="private"?(i(`Subscribing to private channel: ${e}`),o=n.private(e.replace("{userId}",s.toString()))):(i(`Subscribing to public channel: ${e}`),o=n.channel(e)),T(o),i("Channel subscription successful:",o)}catch(o){A(`Error subscribing to ${r} channel ${e}:`,o)}return()=>{n&&e&&n.leaveChannel(e)}},[n,e,r,s,v,d]),$(()=>{if(!n||!y)return;const t=()=>{document.visibilityState==="visible"&&n.connector&&n.connector.pusher&&n.connector.pusher.connection.state!=="connected"&&(i("Tab is visible again, reconnecting..."),n.connector.pusher.connect())},o=()=>{i("Browser is online, reconnecting..."),n.connector&&n.connector.pusher&&n.connector.pusher.connect()};return document.addEventListener("visibilitychange",t),window.addEventListener("online",o),()=>{document.removeEventListener("visibilitychange",t),window.removeEventListener("online",o)}},[n,y,d]);const q=w((t,o)=>{if(!c)return;console.log(`Adding listener for event: ${t}`);const k=t;c.listen(k,o)},[c]),V=w(t=>{if(!c)return;console.log(`Adding listener for event: ${t}`);const o=t;c.stopListening(o)},[c]);return{echoChannel:c,isConnected:y,lastEvent:M,ping:U,addListener:q,removeListener:V}};var Te=ie;export{Te as default,H as echoManager};
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
21
+ import { useState, useEffect, useContext, useCallback, useRef } from "react";
22
+ import usePrevious from "@rooks/use-previous";
23
+ import Echo from "laravel-echo";
24
+ import Pusher from "pusher-js";
25
+ import { ConstantsContext } from "../../config/ConstantsService";
26
+ import { getEnv } from "dash-constants/src/DASHAdminSystemConstants";
27
+ import { useSelector } from "react-redux";
28
+ import { dashStorage } from "dash-utils";
29
+ window.Pusher = Pusher;
30
+ const _EchoClientManager = class _EchoClientManager {
31
+ constructor() {
32
+ __publicField(this, "clients");
33
+ this.clients = /* @__PURE__ */ new Map();
34
+ }
35
+ static getInstance() {
36
+ if (!_EchoClientManager.instance) {
37
+ _EchoClientManager.instance = new _EchoClientManager();
38
+ }
39
+ return _EchoClientManager.instance;
40
+ }
41
+ setClient(hash, client) {
42
+ this.clients.set(hash, client);
43
+ }
44
+ getClient(hash) {
45
+ return this.clients.get(hash);
46
+ }
47
+ removeClient(hash) {
48
+ return this.clients.delete(hash);
49
+ }
50
+ hasClient(hash) {
51
+ return this.clients.has(hash);
52
+ }
53
+ };
54
+ __publicField(_EchoClientManager, "instance");
55
+ let EchoClientManager = _EchoClientManager;
56
+ const echoManager = EchoClientManager.getInstance();
57
+ const useLaravelEcho = ({
58
+ type,
59
+ channel,
60
+ events,
61
+ userId,
62
+ socketId,
63
+ pingInterval = 3e4,
64
+ // Default ping interval: 30 seconds
65
+ debug = true,
66
+ enabled = false
67
+ }) => {
68
+ var _a;
69
+ const [echoChannel, setEchoChannel] = useState(null);
70
+ const [laravelEchoClient, setLaravelEchoClient] = useState(null);
71
+ const [lastEvent, setLastEvent] = useState(null);
72
+ const [isConnected, setIsConnected] = useState(false);
73
+ const prevChannel = usePrevious(channel);
74
+ const constants = useContext(ConstantsContext);
75
+ const pingTimerRef = useRef(null);
76
+ const auth = useSelector(
77
+ (state) => state.auth
78
+ );
79
+ const [currentUserId, setCurrentUserId] = useState(null);
80
+ console.log("\u{1F50D} useLaravelEcho: Hook called with params:", {
81
+ type,
82
+ channel,
83
+ userId,
84
+ enabled,
85
+ hasAuth: !!(auth == null ? void 0 : auth.user),
86
+ authUserId: (_a = auth == null ? void 0 : auth.user) == null ? void 0 : _a.id,
87
+ authenticated: auth == null ? void 0 : auth.authenticated
88
+ });
89
+ useEffect(() => {
90
+ var _a2;
91
+ if (((_a2 = auth.user) == null ? void 0 : _a2.id) && typeof auth.user.id === "number" && auth.user.id !== userId) {
92
+ setCurrentUserId(auth.user.id);
93
+ }
94
+ if ((auth == null ? void 0 : auth.authenticated) === false) {
95
+ setCurrentUserId(null);
96
+ }
97
+ }, [auth]);
98
+ const isProd = getEnv("APP_ENV") === "production";
99
+ const log = (message, data) => {
100
+ if (debug) {
101
+ console.log(`%c\u{1F4E1} ${message}`, "color: #2196F3; font-weight: bold; font-size: 12px;", data || "");
102
+ }
103
+ };
104
+ const logError = (message, error) => {
105
+ if (debug) {
106
+ console.error(`%c\u{1F4E1} ${message}`, "color: #f44336; font-weight: bold; font-size: 12px;", error || "");
107
+ }
108
+ };
109
+ const pingConnection = useCallback(() => {
110
+ if (laravelEchoClient && laravelEchoClient.connector && laravelEchoClient.connector.pusher) {
111
+ try {
112
+ log("Sending custom ping event...");
113
+ laravelEchoClient.connector.pusher.send_event("client-ping", {
114
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
115
+ });
116
+ } catch (error) {
117
+ logError("Error pinging WebSocket connection:", error);
118
+ }
119
+ }
120
+ }, [laravelEchoClient, debug]);
121
+ const getClientId = useCallback(() => {
122
+ return `${type}-${channel || "global"}-${userId || "public"}`;
123
+ }, [type, userId, channel]);
124
+ const cleanup = useCallback(() => {
125
+ if (pingTimerRef.current) {
126
+ window.clearInterval(pingTimerRef.current);
127
+ pingTimerRef.current = null;
128
+ }
129
+ log("Disconnecting Laravel Echo client...", getClientId());
130
+ laravelEchoClient && laravelEchoClient.disconnect();
131
+ log("Setting Laravel Echo client to null...");
132
+ setLaravelEchoClient(null);
133
+ log("Setting Echo channel to null...");
134
+ setEchoChannel(null);
135
+ log("Clearing current events...");
136
+ setLastEvent(null);
137
+ log("Setting connection status to false...");
138
+ setIsConnected(false);
139
+ log("Removing client from Echo manager...");
140
+ }, [laravelEchoClient]);
141
+ useEffect(() => {
142
+ var _a2;
143
+ if (!enabled) {
144
+ console.log("\u{1F50D} useLaravelEcho: Hook disabled, skipping WebSocket setup");
145
+ return;
146
+ }
147
+ if (!JSON.parse(getEnv("APP_SOCKETS_ENABLED"))) {
148
+ console.log("\u{1F50D} useLaravelEcho: WebSockets disabled by APP_SOCKETS_ENABLED env var");
149
+ return;
150
+ }
151
+ const clientId = getClientId();
152
+ console.log("\u{1F50D} useLaravelEcho: Setting up WebSocket connection...", {
153
+ clientId,
154
+ type,
155
+ channel,
156
+ userId,
157
+ enabled
158
+ });
159
+ if (type === "private" && !userId) {
160
+ console.log("\u{1F50D} useLaravelEcho: Skipping private channel setup - no userId provided");
161
+ return;
162
+ }
163
+ if (type === "public" || type === "private" && userId) {
164
+ if (echoManager.clients.has(clientId)) {
165
+ const existingClient = echoManager.getClient(clientId);
166
+ console.log("\u{1F50D} useLaravelEcho: Using existing Echo client:", clientId);
167
+ setLaravelEchoClient(existingClient);
168
+ return;
169
+ }
170
+ const token = userId ? dashStorage.getItem("token") : null;
171
+ const authConfig = token ? {
172
+ headers: {
173
+ Authorization: `Bearer ${token}`,
174
+ Accept: "application/json",
175
+ "X-Requested-With": "XMLHttpRequest"
176
+ }
177
+ } : void 0;
178
+ try {
179
+ const socketHostEnv = getEnv("APP_SOCKETS_HOST");
180
+ const socketScheme = (_a2 = getEnv("APP_SOCKETS_SCHEME")) == null ? void 0 : _a2.toLowerCase();
181
+ const isSSL = socketScheme === "https";
182
+ const wsHost = socketHostEnv || window.location.hostname;
183
+ const portEnv = getEnv("APP_SOCKETS_PORT");
184
+ const completeConfig = __spreadProps(__spreadValues({
185
+ broadcaster: "pusher",
186
+ key: getEnv("APP_SOCKETS_KEY") || "dash",
187
+ wsHost
188
+ }, portEnv && portEnv !== "" ? { wsPort: portEnv } : {}), {
189
+ secure: isSSL,
190
+ forceTLS: isSSL,
191
+ encrypted: isSSL,
192
+ useTLS: isSSL,
193
+ disableStats: !isSSL,
194
+ enabledTransports: isSSL ? ["wss", "ws"] : ["ws"],
195
+ disableCluster: true,
196
+ cluster: "mt1",
197
+ logToConsole: debug,
198
+ activityTimeout: 12e4,
199
+ pongTimeout: 3e4
200
+ });
201
+ console.log("\u{1F50D} useLaravelEcho: WebSocket config:", completeConfig);
202
+ if (authConfig) {
203
+ const baseUrl = getEnv("APP_BACKEND_URL") || window.location.origin;
204
+ const authPath = getEnv("APP_SOCKETS_AUTH_ENDPOINT") || "/api/ws/auth";
205
+ const formattedBaseUrl = baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`;
206
+ const formattedAuthPath = authPath.startsWith("/") ? authPath.substring(1) : authPath;
207
+ const authEndpoint = `${formattedBaseUrl}${formattedAuthPath}`;
208
+ console.log("\u{1F50D} useLaravelEcho: Using auth endpoint:", authEndpoint);
209
+ completeConfig["authEndpoint"] = authEndpoint;
210
+ completeConfig["auth"] = authConfig;
211
+ }
212
+ console.log("\u{1F50D} useLaravelEcho: Initializing Echo client with config:", completeConfig);
213
+ const echo = new Echo(completeConfig);
214
+ if (echo.connector && echo.connector.pusher) {
215
+ echo.connector.pusher.bind_global((eventName, data) => {
216
+ log(`Global event received: ${eventName}`, data);
217
+ setLastEvent({ event: eventName, data });
218
+ });
219
+ echo.connector.pusher.connection.bind("connected", () => {
220
+ log("Connected to Pusher!");
221
+ setIsConnected(true);
222
+ dashStorage.setItem("socketConnectionState", "true");
223
+ if (pingTimerRef.current) {
224
+ window.clearInterval(pingTimerRef.current);
225
+ }
226
+ pingTimerRef.current = window.setInterval(pingConnection, pingInterval);
227
+ });
228
+ echo.connector.pusher.connection.bind("disconnected", () => {
229
+ log("Disconnected from Pusher");
230
+ setIsConnected(false);
231
+ if (pingTimerRef.current) {
232
+ window.clearInterval(pingTimerRef.current);
233
+ pingTimerRef.current = null;
234
+ }
235
+ });
236
+ echo.connector.pusher.connection.bind("error", (err) => {
237
+ logError("Pusher connection error:", err);
238
+ setIsConnected(false);
239
+ });
240
+ }
241
+ log("Setting Echo client", clientId);
242
+ echoManager.setClient(clientId, echo);
243
+ setLaravelEchoClient(echo);
244
+ } catch (error) {
245
+ logError("Error initializing Echo client:", error);
246
+ cleanup();
247
+ }
248
+ }
249
+ return () => {
250
+ if (debug) {
251
+ console.log("%c\u{1F4E1} Socket listener unmounted!", "color: #ff6b6b; font-weight: bold;");
252
+ cleanup();
253
+ }
254
+ };
255
+ }, [userId, enabled, channel]);
256
+ useEffect(() => {
257
+ if (!laravelEchoClient || !channel) return;
258
+ if (type === "private" && !userId) return;
259
+ log(`Attempting to subscribe to ${type} channel: ${channel}`);
260
+ const isSubscribed = laravelEchoClient.connector.channels[channel.includes(".") ? `private-${channel}` : channel] !== void 0;
261
+ if (isSubscribed) {
262
+ log(`Skipping, already suscribed`);
263
+ return;
264
+ }
265
+ if (echoChannel && prevChannel && channel !== prevChannel) {
266
+ log(`Leaving previous channel: ${prevChannel}`);
267
+ laravelEchoClient.leaveChannel(prevChannel);
268
+ setEchoChannel(null);
269
+ }
270
+ if (!echoChannel || channel !== prevChannel) {
271
+ try {
272
+ let newChannel;
273
+ if (type === "private") {
274
+ log(`Subscribing to private channel: ${channel}`);
275
+ newChannel = laravelEchoClient.private(channel.replace("{userId}", userId.toString()));
276
+ } else {
277
+ log(`Subscribing to public channel: ${channel}`);
278
+ newChannel = laravelEchoClient.channel(channel);
279
+ }
280
+ setEchoChannel(newChannel);
281
+ log("Channel subscription successful:", newChannel);
282
+ } catch (error) {
283
+ logError(`Error subscribing to ${type} channel ${channel}:`, error);
284
+ }
285
+ }
286
+ return () => {
287
+ if (laravelEchoClient && channel) {
288
+ laravelEchoClient.leaveChannel(channel);
289
+ }
290
+ };
291
+ }, [laravelEchoClient, channel, type, userId, prevChannel, debug]);
292
+ useEffect(() => {
293
+ if (!laravelEchoClient || !isConnected) return;
294
+ const handleVisibilityChange = () => {
295
+ if (document.visibilityState === "visible") {
296
+ if (laravelEchoClient.connector && laravelEchoClient.connector.pusher && laravelEchoClient.connector.pusher.connection.state !== "connected") {
297
+ log("Tab is visible again, reconnecting...");
298
+ laravelEchoClient.connector.pusher.connect();
299
+ }
300
+ }
301
+ };
302
+ const handleOnline = () => {
303
+ log("Browser is online, reconnecting...");
304
+ if (laravelEchoClient.connector && laravelEchoClient.connector.pusher) {
305
+ laravelEchoClient.connector.pusher.connect();
306
+ }
307
+ };
308
+ document.addEventListener("visibilitychange", handleVisibilityChange);
309
+ window.addEventListener("online", handleOnline);
310
+ return () => {
311
+ document.removeEventListener("visibilitychange", handleVisibilityChange);
312
+ window.removeEventListener("online", handleOnline);
313
+ };
314
+ }, [laravelEchoClient, isConnected, debug]);
315
+ const addListener = useCallback((eventName, callback) => {
316
+ if (!echoChannel) return;
317
+ console.log(`Adding listener for event: ${eventName}`);
318
+ const formattedEventName = eventName;
319
+ echoChannel.listen(formattedEventName, callback);
320
+ }, [echoChannel]);
321
+ const removeListener = useCallback((eventName) => {
322
+ if (!echoChannel) return;
323
+ console.log(`Adding listener for event: ${eventName}`);
324
+ const formattedEventName = eventName;
325
+ echoChannel.stopListening(formattedEventName);
326
+ }, [echoChannel]);
327
+ return {
328
+ echoChannel,
329
+ isConnected,
330
+ lastEvent,
331
+ ping: pingConnection,
332
+ addListener,
333
+ removeListener
334
+ };
335
+ };
336
+ var useLaravelEcho_default = useLaravelEcho;
337
+ export {
338
+ useLaravelEcho_default as default,
339
+ echoManager
340
+ };
@@ -1 +1,43 @@
1
- import{jsx as s}from"react/jsx-runtime";import y from"react";function i(e,r){for(const[o,t]of Object.entries(r))typeof t=="object"&&t!==null?e=i(e,t):e=Array.isArray(e)?e.join(", ").replace(o,t):typeof e=="string"?e.replace(o,t):e;return e}const a=y.createContext({dictionary:null,replacements:null,get:e=>e}),l=({dictionary:e,replacements:r,children:o})=>s(a.Provider,{value:{dictionary:e,replacements:r,get:(t,c)=>{let n=t;return c&&r&&(n=i(n,r)),e[n]?e[n]:n}},children:o});export{a as DictionaryContext,l as DictionaryProvider,a as default};
1
+ import { jsx } from "react/jsx-runtime";
2
+ import React from "react";
3
+ function replaceDictValues(string, dictionary) {
4
+ for (const [key, value] of Object.entries(dictionary)) {
5
+ if (typeof value === "object" && value !== null) {
6
+ string = replaceDictValues(string, value);
7
+ } else {
8
+ string = Array.isArray(string) ? string.join(", ").replace(key, value) : typeof string === "string" ? string.replace(key, value) : string;
9
+ }
10
+ }
11
+ return string;
12
+ }
13
+ const DictionaryContext = React.createContext({
14
+ dictionary: null,
15
+ replacements: null,
16
+ get: (key) => {
17
+ return key;
18
+ }
19
+ });
20
+ const DictionaryProvider = ({ dictionary, replacements, children }) => {
21
+ return /* @__PURE__ */ jsx(
22
+ DictionaryContext.Provider,
23
+ {
24
+ value: {
25
+ dictionary,
26
+ replacements,
27
+ get: (key, replace) => {
28
+ let str = key;
29
+ if (replace && replacements) {
30
+ str = replaceDictValues(str, replacements);
31
+ }
32
+ return dictionary[str] ? dictionary[str] : str;
33
+ }
34
+ },
35
+ children
36
+ }
37
+ );
38
+ };
39
+ export {
40
+ DictionaryContext,
41
+ DictionaryProvider,
42
+ DictionaryContext as default
43
+ };