@novu/react 3.19.2-rc.dc9caee828 → 3.20.0-rc.569d407fd0

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 (250) hide show
  1. package/dist/cjs/components/Bell.cjs +6 -21
  2. package/dist/cjs/components/Bell.cjs.map +1 -1
  3. package/dist/cjs/components/Bell.d.cts +2 -3
  4. package/dist/cjs/components/Inbox.cjs +100 -138
  5. package/dist/cjs/components/Inbox.cjs.map +1 -1
  6. package/dist/cjs/components/InboxContent.cjs +9 -65
  7. package/dist/cjs/components/InboxContent.cjs.map +1 -1
  8. package/dist/cjs/components/InboxContent.d.cts +2 -3
  9. package/dist/cjs/components/Mounter.cjs +20 -13
  10. package/dist/cjs/components/Mounter.cjs.map +1 -1
  11. package/dist/cjs/components/Mounter.d.cts +12 -4
  12. package/dist/cjs/components/Notifications.cjs +9 -59
  13. package/dist/cjs/components/Notifications.cjs.map +1 -1
  14. package/dist/cjs/components/Notifications.d.cts +2 -3
  15. package/dist/cjs/components/NovuUI.cjs +17 -6
  16. package/dist/cjs/components/NovuUI.cjs.map +1 -1
  17. package/dist/cjs/components/NovuUI.d.cts +4 -0
  18. package/dist/cjs/{context/RendererContext.cjs → components/OutletHost.cjs} +15 -15
  19. package/dist/cjs/components/OutletHost.cjs.map +1 -0
  20. package/dist/cjs/components/OutletHost.d.cts +14 -0
  21. package/dist/cjs/components/Preferences.cjs +1 -20
  22. package/dist/cjs/components/Preferences.cjs.map +1 -1
  23. package/dist/cjs/components/connect-chat/ConnectChat.cjs +2 -3
  24. package/dist/cjs/components/connect-chat/ConnectChat.cjs.map +1 -1
  25. package/dist/cjs/components/connect-chat/DefaultConnectChat.cjs +14 -23
  26. package/dist/cjs/components/connect-chat/DefaultConnectChat.cjs.map +1 -1
  27. package/dist/cjs/components/index.cjs +2 -0
  28. package/dist/cjs/components/index.cjs.map +1 -1
  29. package/dist/cjs/components/index.d.cts +6 -0
  30. package/dist/cjs/components/msteams-connect-button/DefaultMsTeamsConnectButton.cjs +17 -26
  31. package/dist/cjs/components/msteams-connect-button/DefaultMsTeamsConnectButton.cjs.map +1 -1
  32. package/dist/cjs/components/msteams-connect-button/MsTeamsConnectButton.cjs +2 -3
  33. package/dist/cjs/components/msteams-connect-button/MsTeamsConnectButton.cjs.map +1 -1
  34. package/dist/cjs/components/msteams-link-user/DefaultMsTeamsLinkUser.cjs +13 -22
  35. package/dist/cjs/components/msteams-link-user/DefaultMsTeamsLinkUser.cjs.map +1 -1
  36. package/dist/cjs/components/msteams-link-user/MsTeamsLinkUser.cjs +2 -3
  37. package/dist/cjs/components/msteams-link-user/MsTeamsLinkUser.cjs.map +1 -1
  38. package/dist/cjs/components/notification-item/ClockIcon.cjs +43 -0
  39. package/dist/cjs/components/notification-item/ClockIcon.cjs.map +1 -0
  40. package/dist/cjs/components/notification-item/ClockIcon.d.cts +7 -0
  41. package/dist/cjs/components/notification-item/Markdown.cjs +53 -0
  42. package/dist/cjs/components/notification-item/Markdown.cjs.map +1 -0
  43. package/dist/cjs/components/notification-item/Markdown.d.cts +12 -0
  44. package/dist/cjs/components/notification-item/NotificationItem.cjs +146 -0
  45. package/dist/cjs/components/notification-item/NotificationItem.cjs.map +1 -0
  46. package/dist/cjs/components/notification-item/NotificationItem.d.cts +40 -0
  47. package/dist/cjs/components/notification-item/context.cjs +49 -0
  48. package/dist/cjs/components/notification-item/context.cjs.map +1 -0
  49. package/dist/cjs/components/notification-item/context.d.cts +23 -0
  50. package/dist/cjs/components/notification-item/parts/Actions.cjs +56 -0
  51. package/dist/cjs/components/notification-item/parts/Actions.cjs.map +1 -0
  52. package/dist/cjs/components/notification-item/parts/Actions.d.cts +11 -0
  53. package/dist/cjs/components/notification-item/parts/Avatar.cjs +65 -0
  54. package/dist/cjs/components/notification-item/parts/Avatar.cjs.map +1 -0
  55. package/dist/cjs/components/notification-item/parts/Avatar.d.cts +8 -0
  56. package/dist/cjs/components/notification-item/parts/Content.cjs +66 -0
  57. package/dist/cjs/components/notification-item/parts/Content.cjs.map +1 -0
  58. package/dist/cjs/components/notification-item/parts/Content.d.cts +17 -0
  59. package/dist/cjs/components/notification-item/parts/Date.cjs +114 -0
  60. package/dist/cjs/components/notification-item/parts/Date.cjs.map +1 -0
  61. package/dist/cjs/components/notification-item/parts/Date.d.cts +11 -0
  62. package/dist/cjs/components/notification-item/parts/Dot.cjs +48 -0
  63. package/dist/cjs/components/notification-item/parts/Dot.cjs.map +1 -0
  64. package/dist/cjs/components/notification-item/parts/Dot.d.cts +9 -0
  65. package/dist/cjs/components/notification-item/parts/Subject.cjs +92 -0
  66. package/dist/cjs/components/notification-item/parts/Subject.cjs.map +1 -0
  67. package/dist/cjs/components/notification-item/parts/Subject.d.cts +15 -0
  68. package/dist/cjs/components/slack-connect-button/DefaultSlackConnectButton.cjs +18 -27
  69. package/dist/cjs/components/slack-connect-button/DefaultSlackConnectButton.cjs.map +1 -1
  70. package/dist/cjs/components/slack-connect-button/SlackConnectButton.cjs +2 -3
  71. package/dist/cjs/components/slack-connect-button/SlackConnectButton.cjs.map +1 -1
  72. package/dist/cjs/components/slack-link-user/DefaultSlackLinkUser.cjs +13 -22
  73. package/dist/cjs/components/slack-link-user/DefaultSlackLinkUser.cjs.map +1 -1
  74. package/dist/cjs/components/slack-link-user/SlackLinkUser.cjs +2 -3
  75. package/dist/cjs/components/slack-link-user/SlackLinkUser.cjs.map +1 -1
  76. package/dist/cjs/components/subscription/DefaultSubscription.cjs +14 -22
  77. package/dist/cjs/components/subscription/DefaultSubscription.cjs.map +1 -1
  78. package/dist/cjs/components/subscription/Subscription.cjs +2 -3
  79. package/dist/cjs/components/subscription/Subscription.cjs.map +1 -1
  80. package/dist/cjs/components/subscription/SubscriptionButton.cjs +9 -26
  81. package/dist/cjs/components/subscription/SubscriptionButton.cjs.map +1 -1
  82. package/dist/cjs/components/subscription/SubscriptionButton.d.cts +1 -1
  83. package/dist/cjs/components/subscription/SubscriptionPreferences.cjs +9 -26
  84. package/dist/cjs/components/subscription/SubscriptionPreferences.cjs.map +1 -1
  85. package/dist/cjs/components/subscription/SubscriptionPreferences.d.cts +1 -1
  86. package/dist/cjs/components/telegram-connect-button/DefaultTelegramConnectButton.cjs +14 -23
  87. package/dist/cjs/components/telegram-connect-button/DefaultTelegramConnectButton.cjs.map +1 -1
  88. package/dist/cjs/components/telegram-connect-button/TelegramConnectButton.cjs +2 -3
  89. package/dist/cjs/components/telegram-connect-button/TelegramConnectButton.cjs.map +1 -1
  90. package/dist/cjs/context/NovuUIContext.cjs +3 -0
  91. package/dist/cjs/context/NovuUIContext.cjs.map +1 -1
  92. package/dist/cjs/context/NovuUIContext.d.cts +8 -1
  93. package/dist/cjs/context/OutletStore.cjs +97 -0
  94. package/dist/cjs/context/OutletStore.cjs.map +1 -0
  95. package/dist/cjs/context/OutletStore.d.cts +31 -0
  96. package/dist/cjs/hooks/internal/useEngineAccessor.cjs +36 -0
  97. package/dist/cjs/hooks/internal/useEngineAccessor.cjs.map +1 -0
  98. package/dist/cjs/hooks/internal/useEngineAccessor.d.cts +4 -0
  99. package/dist/cjs/hooks/internal/useEngineStores.cjs +54 -0
  100. package/dist/cjs/hooks/internal/useEngineStores.cjs.map +1 -0
  101. package/dist/cjs/hooks/internal/useEngineStores.d.cts +13 -0
  102. package/dist/cjs/hooks/internal/useIsomorphicLayoutEffect.cjs +32 -0
  103. package/dist/cjs/hooks/internal/useIsomorphicLayoutEffect.cjs.map +1 -0
  104. package/dist/cjs/hooks/internal/useIsomorphicLayoutEffect.d.cts +5 -0
  105. package/dist/cjs/hooks/internal/useNotificationOutlets.cjs +57 -0
  106. package/dist/cjs/hooks/internal/useNotificationOutlets.cjs.map +1 -0
  107. package/dist/cjs/hooks/internal/useNotificationOutlets.d.cts +33 -0
  108. package/dist/cjs/hooks/internal/useOutletRenderer.cjs +53 -0
  109. package/dist/cjs/hooks/internal/useOutletRenderer.cjs.map +1 -0
  110. package/dist/cjs/hooks/internal/useOutletRenderer.d.cts +14 -0
  111. package/dist/cjs/index.cjs +2 -0
  112. package/dist/cjs/index.cjs.map +1 -1
  113. package/dist/cjs/index.d.cts +6 -0
  114. package/dist/cjs/server/index.cjs +14 -0
  115. package/dist/cjs/server/index.cjs.map +1 -1
  116. package/dist/cjs/server/index.d.cts +15 -1
  117. package/dist/cjs/utils/appearance.cjs +2 -2
  118. package/dist/cjs/utils/appearance.cjs.map +1 -1
  119. package/dist/cjs/utils/appearance.d.cts +2 -3
  120. package/dist/esm/components/Bell.d.ts +2 -3
  121. package/dist/esm/components/Bell.js +7 -22
  122. package/dist/esm/components/Bell.js.map +1 -1
  123. package/dist/esm/components/Inbox.js +100 -138
  124. package/dist/esm/components/Inbox.js.map +1 -1
  125. package/dist/esm/components/InboxContent.d.ts +2 -3
  126. package/dist/esm/components/InboxContent.js +10 -66
  127. package/dist/esm/components/InboxContent.js.map +1 -1
  128. package/dist/esm/components/Mounter.d.ts +12 -4
  129. package/dist/esm/components/Mounter.js +19 -14
  130. package/dist/esm/components/Mounter.js.map +1 -1
  131. package/dist/esm/components/Notifications.d.ts +2 -3
  132. package/dist/esm/components/Notifications.js +10 -60
  133. package/dist/esm/components/Notifications.js.map +1 -1
  134. package/dist/esm/components/NovuUI.d.ts +4 -0
  135. package/dist/esm/components/NovuUI.js +16 -6
  136. package/dist/esm/components/NovuUI.js.map +1 -1
  137. package/dist/esm/components/OutletHost.d.ts +14 -0
  138. package/dist/esm/components/OutletHost.js +15 -0
  139. package/dist/esm/components/OutletHost.js.map +1 -0
  140. package/dist/esm/components/Preferences.js +1 -10
  141. package/dist/esm/components/Preferences.js.map +1 -1
  142. package/dist/esm/components/connect-chat/ConnectChat.js +2 -3
  143. package/dist/esm/components/connect-chat/ConnectChat.js.map +1 -1
  144. package/dist/esm/components/connect-chat/DefaultConnectChat.js +15 -24
  145. package/dist/esm/components/connect-chat/DefaultConnectChat.js.map +1 -1
  146. package/dist/esm/components/index.d.ts +6 -0
  147. package/dist/esm/components/index.js +1 -0
  148. package/dist/esm/components/index.js.map +1 -1
  149. package/dist/esm/components/msteams-connect-button/DefaultMsTeamsConnectButton.js +18 -27
  150. package/dist/esm/components/msteams-connect-button/DefaultMsTeamsConnectButton.js.map +1 -1
  151. package/dist/esm/components/msteams-connect-button/MsTeamsConnectButton.js +2 -3
  152. package/dist/esm/components/msteams-connect-button/MsTeamsConnectButton.js.map +1 -1
  153. package/dist/esm/components/msteams-link-user/DefaultMsTeamsLinkUser.js +14 -23
  154. package/dist/esm/components/msteams-link-user/DefaultMsTeamsLinkUser.js.map +1 -1
  155. package/dist/esm/components/msteams-link-user/MsTeamsLinkUser.js +2 -3
  156. package/dist/esm/components/msteams-link-user/MsTeamsLinkUser.js.map +1 -1
  157. package/dist/esm/components/notification-item/ClockIcon.d.ts +7 -0
  158. package/dist/esm/components/notification-item/ClockIcon.js +18 -0
  159. package/dist/esm/components/notification-item/ClockIcon.js.map +1 -0
  160. package/dist/esm/components/notification-item/Markdown.d.ts +12 -0
  161. package/dist/esm/components/notification-item/Markdown.js +28 -0
  162. package/dist/esm/components/notification-item/Markdown.js.map +1 -0
  163. package/dist/esm/components/notification-item/NotificationItem.d.ts +40 -0
  164. package/dist/esm/components/notification-item/NotificationItem.js +131 -0
  165. package/dist/esm/components/notification-item/NotificationItem.js.map +1 -0
  166. package/dist/esm/components/notification-item/context.d.ts +23 -0
  167. package/dist/esm/components/notification-item/context.js +21 -0
  168. package/dist/esm/components/notification-item/context.js.map +1 -0
  169. package/dist/esm/components/notification-item/parts/Actions.d.ts +11 -0
  170. package/dist/esm/components/notification-item/parts/Actions.js +30 -0
  171. package/dist/esm/components/notification-item/parts/Actions.js.map +1 -0
  172. package/dist/esm/components/notification-item/parts/Avatar.d.ts +8 -0
  173. package/dist/esm/components/notification-item/parts/Avatar.js +40 -0
  174. package/dist/esm/components/notification-item/parts/Avatar.js.map +1 -0
  175. package/dist/esm/components/notification-item/parts/Content.d.ts +17 -0
  176. package/dist/esm/components/notification-item/parts/Content.js +40 -0
  177. package/dist/esm/components/notification-item/parts/Content.js.map +1 -0
  178. package/dist/esm/components/notification-item/parts/Date.d.ts +11 -0
  179. package/dist/esm/components/notification-item/parts/Date.js +89 -0
  180. package/dist/esm/components/notification-item/parts/Date.js.map +1 -0
  181. package/dist/esm/components/notification-item/parts/Dot.d.ts +9 -0
  182. package/dist/esm/components/notification-item/parts/Dot.js +23 -0
  183. package/dist/esm/components/notification-item/parts/Dot.js.map +1 -0
  184. package/dist/esm/components/notification-item/parts/Subject.d.ts +15 -0
  185. package/dist/esm/components/notification-item/parts/Subject.js +66 -0
  186. package/dist/esm/components/notification-item/parts/Subject.js.map +1 -0
  187. package/dist/esm/components/slack-connect-button/DefaultSlackConnectButton.js +19 -28
  188. package/dist/esm/components/slack-connect-button/DefaultSlackConnectButton.js.map +1 -1
  189. package/dist/esm/components/slack-connect-button/SlackConnectButton.js +2 -3
  190. package/dist/esm/components/slack-connect-button/SlackConnectButton.js.map +1 -1
  191. package/dist/esm/components/slack-link-user/DefaultSlackLinkUser.js +14 -23
  192. package/dist/esm/components/slack-link-user/DefaultSlackLinkUser.js.map +1 -1
  193. package/dist/esm/components/slack-link-user/SlackLinkUser.js +2 -3
  194. package/dist/esm/components/slack-link-user/SlackLinkUser.js.map +1 -1
  195. package/dist/esm/components/subscription/DefaultSubscription.js +15 -23
  196. package/dist/esm/components/subscription/DefaultSubscription.js.map +1 -1
  197. package/dist/esm/components/subscription/Subscription.js +2 -3
  198. package/dist/esm/components/subscription/Subscription.js.map +1 -1
  199. package/dist/esm/components/subscription/SubscriptionButton.d.ts +1 -1
  200. package/dist/esm/components/subscription/SubscriptionButton.js +10 -27
  201. package/dist/esm/components/subscription/SubscriptionButton.js.map +1 -1
  202. package/dist/esm/components/subscription/SubscriptionPreferences.d.ts +1 -1
  203. package/dist/esm/components/subscription/SubscriptionPreferences.js +10 -27
  204. package/dist/esm/components/subscription/SubscriptionPreferences.js.map +1 -1
  205. package/dist/esm/components/telegram-connect-button/DefaultTelegramConnectButton.js +15 -24
  206. package/dist/esm/components/telegram-connect-button/DefaultTelegramConnectButton.js.map +1 -1
  207. package/dist/esm/components/telegram-connect-button/TelegramConnectButton.js +2 -3
  208. package/dist/esm/components/telegram-connect-button/TelegramConnectButton.js.map +1 -1
  209. package/dist/esm/context/NovuUIContext.d.ts +8 -1
  210. package/dist/esm/context/NovuUIContext.js +2 -0
  211. package/dist/esm/context/NovuUIContext.js.map +1 -1
  212. package/dist/esm/context/OutletStore.d.ts +31 -0
  213. package/dist/esm/context/OutletStore.js +61 -0
  214. package/dist/esm/context/OutletStore.js.map +1 -0
  215. package/dist/esm/hooks/internal/useEngineAccessor.d.ts +4 -0
  216. package/dist/esm/hooks/internal/useEngineAccessor.js +11 -0
  217. package/dist/esm/hooks/internal/useEngineAccessor.js.map +1 -0
  218. package/dist/esm/hooks/internal/useEngineStores.d.ts +13 -0
  219. package/dist/esm/hooks/internal/useEngineStores.js +27 -0
  220. package/dist/esm/hooks/internal/useEngineStores.js.map +1 -0
  221. package/dist/esm/hooks/internal/useIsomorphicLayoutEffect.d.ts +5 -0
  222. package/dist/esm/hooks/internal/useIsomorphicLayoutEffect.js +7 -0
  223. package/dist/esm/hooks/internal/useIsomorphicLayoutEffect.js.map +1 -0
  224. package/dist/esm/hooks/internal/useNotificationOutlets.d.ts +33 -0
  225. package/dist/esm/hooks/internal/useNotificationOutlets.js +32 -0
  226. package/dist/esm/hooks/internal/useNotificationOutlets.js.map +1 -0
  227. package/dist/esm/hooks/internal/useOutletRenderer.d.ts +14 -0
  228. package/dist/esm/hooks/internal/useOutletRenderer.js +25 -0
  229. package/dist/esm/hooks/internal/useOutletRenderer.js.map +1 -0
  230. package/dist/esm/index.d.ts +6 -0
  231. package/dist/esm/index.js +5 -3
  232. package/dist/esm/index.js.map +1 -1
  233. package/dist/esm/server/index.d.ts +15 -1
  234. package/dist/esm/server/index.js +14 -1
  235. package/dist/esm/server/index.js.map +1 -1
  236. package/dist/esm/utils/appearance.d.ts +2 -3
  237. package/dist/esm/utils/appearance.js +2 -2
  238. package/dist/esm/utils/appearance.js.map +1 -1
  239. package/package.json +11 -5
  240. package/dist/cjs/components/Renderer.cjs +0 -70
  241. package/dist/cjs/components/Renderer.cjs.map +0 -1
  242. package/dist/cjs/components/Renderer.d.cts +0 -8
  243. package/dist/cjs/context/RendererContext.cjs.map +0 -1
  244. package/dist/cjs/context/RendererContext.d.cts +0 -15
  245. package/dist/esm/components/Renderer.d.ts +0 -8
  246. package/dist/esm/components/Renderer.js +0 -44
  247. package/dist/esm/components/Renderer.js.map +0 -1
  248. package/dist/esm/context/RendererContext.d.ts +0 -15
  249. package/dist/esm/context/RendererContext.js +0 -13
  250. package/dist/esm/context/RendererContext.js.map +0 -1
@@ -34,30 +34,15 @@ __export(Bell_exports, {
34
34
  });
35
35
  module.exports = __toCommonJS(Bell_exports);
36
36
  var import_react = __toESM(require("react"), 1);
37
- var import_NovuUIContext = require("../context/NovuUIContext.cjs");
38
- var import_RendererContext = require("../context/RendererContext.cjs");
37
+ var import_useOutletRenderer = require("../hooks/internal/useOutletRenderer.cjs");
39
38
  var import_Mounter = require("./Mounter.cjs");
40
- var import_Renderer = require("./Renderer.cjs");
41
39
  var import_jsx_runtime = require("react/jsx-runtime");
42
- var _Bell = import_react.default.memo((props) => {
43
- const { renderBell } = props;
44
- const { novuUI } = (0, import_NovuUIContext.useNovuUI)();
45
- const { mountElement } = (0, import_RendererContext.useRenderer)();
46
- const mount = import_react.default.useCallback(
47
- (element) => {
48
- return novuUI.mountComponent({
49
- name: "Bell",
50
- element,
51
- props: renderBell ? {
52
- renderBell: (el, unreadCount) => mountElement(el, renderBell(unreadCount))
53
- } : void 0
54
- });
55
- },
56
- [renderBell, mountElement, novuUI]
57
- );
58
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Mounter.Mounter, { mount });
40
+ var Bell = import_react.default.memo((props) => {
41
+ const renderBell = (0, import_useOutletRenderer.useOutletRenderer)(props.renderBell);
42
+ const mountProps = (0, import_react.useMemo)(() => renderBell ? { renderBell } : void 0, [renderBell]);
43
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Mounter.Mounter, { name: "Bell", props: mountProps });
59
44
  });
60
- var Bell = (0, import_Renderer.withRenderer)(_Bell);
45
+ Bell.displayName = "Bell";
61
46
  // Annotate the CommonJS export names for ESM import in node:
62
47
  0 && (module.exports = {
63
48
  Bell
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Bell.tsx"],"sourcesContent":["import React from 'react';\nimport { useNovuUI } from '../context/NovuUIContext';\nimport { useRenderer } from '../context/RendererContext';\nimport { BellRenderer } from '../utils/types';\nimport { Mounter } from './Mounter';\nimport { withRenderer } from './Renderer';\n\nexport type BellProps = {\n renderBell?: BellRenderer;\n};\n\nconst _Bell = React.memo((props: BellProps) => {\n const { renderBell } = props;\n const { novuUI } = useNovuUI();\n const { mountElement } = useRenderer();\n\n const mount = React.useCallback(\n (element: HTMLElement) => {\n return novuUI.mountComponent({\n name: 'Bell',\n element,\n props: renderBell\n ? {\n renderBell: (el, unreadCount) => mountElement(el, renderBell(unreadCount)),\n }\n : undefined,\n });\n },\n [renderBell, mountElement, novuUI]\n );\n\n return <Mounter mount={mount} />;\n});\n\nexport const Bell = withRenderer(_Bell);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAClB,2BAA0B;AAC1B,6BAA4B;AAE5B,qBAAwB;AACxB,sBAA6B;AA0BpB;AApBT,IAAM,QAAQ,aAAAA,QAAM,KAAK,CAAC,UAAqB;AAC7C,QAAM,EAAE,WAAW,IAAI;AACvB,QAAM,EAAE,OAAO,QAAI,gCAAU;AAC7B,QAAM,EAAE,aAAa,QAAI,oCAAY;AAErC,QAAM,QAAQ,aAAAA,QAAM;AAAA,IAClB,CAAC,YAAyB;AACxB,aAAO,OAAO,eAAe;AAAA,QAC3B,MAAM;AAAA,QACN;AAAA,QACA,OAAO,aACH;AAAA,UACE,YAAY,CAAC,IAAI,gBAAgB,aAAa,IAAI,WAAW,WAAW,CAAC;AAAA,QAC3E,IACA;AAAA,MACN,CAAC;AAAA,IACH;AAAA,IACA,CAAC,YAAY,cAAc,MAAM;AAAA,EACnC;AAEA,SAAO,4CAAC,0BAAQ,OAAc;AAChC,CAAC;AAEM,IAAM,WAAO,8BAAa,KAAK;","names":["React"]}
1
+ {"version":3,"sources":["../../../src/components/Bell.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { useOutletRenderer } from '../hooks/internal/useOutletRenderer';\nimport { BellRenderer } from '../utils/types';\nimport { Mounter } from './Mounter';\n\nexport type BellProps = {\n renderBell?: BellRenderer;\n};\n\nexport const Bell = React.memo((props: BellProps) => {\n const renderBell = useOutletRenderer(props.renderBell);\n\n const mountProps = useMemo(() => (renderBell ? { renderBell } : undefined), [renderBell]);\n\n return <Mounter name=\"Bell\" props={mountProps} />;\n});\n\nBell.displayName = 'Bell';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA+B;AAC/B,+BAAkC;AAElC,qBAAwB;AAWf;AALF,IAAM,OAAO,aAAAA,QAAM,KAAK,CAAC,UAAqB;AACnD,QAAM,iBAAa,4CAAkB,MAAM,UAAU;AAErD,QAAM,iBAAa,sBAAQ,MAAO,aAAa,EAAE,WAAW,IAAI,QAAY,CAAC,UAAU,CAAC;AAExF,SAAO,4CAAC,0BAAQ,MAAK,QAAO,OAAO,YAAY;AACjD,CAAC;AAED,KAAK,cAAc;","names":["React"]}
@@ -1,3 +1,4 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
1
2
  import React__default from 'react';
2
3
  import { BellRenderer } from '../utils/types.cjs';
3
4
  import '@novu/js';
@@ -6,8 +7,6 @@ import '@novu/js/ui';
6
7
  type BellProps = {
7
8
  renderBell?: BellRenderer;
8
9
  };
9
- declare const Bell: React__default.ComponentType<BellProps & {
10
- children?: React__default.ReactNode | undefined;
11
- }>;
10
+ declare const Bell: React__default.MemoExoticComponent<(props: BellProps) => react_jsx_runtime.JSX.Element>;
12
11
 
13
12
  export { Bell, type BellProps };
@@ -35,22 +35,15 @@ __export(Inbox_exports, {
35
35
  module.exports = __toCommonJS(Inbox_exports);
36
36
  var import_internal = require("@novu/js/internal");
37
37
  var import_react = __toESM(require("react"), 1);
38
- var import_NovuUIContext = require("../context/NovuUIContext.cjs");
39
- var import_RendererContext = require("../context/RendererContext.cjs");
38
+ var import_useNotificationOutlets = require("../hooks/internal/useNotificationOutlets.cjs");
39
+ var import_useOutletRenderer = require("../hooks/internal/useOutletRenderer.cjs");
40
40
  var import_NovuProvider = require("../hooks/NovuProvider.cjs");
41
41
  var import_Mounter = require("./Mounter.cjs");
42
42
  var import_NovuUI = require("./NovuUI.cjs");
43
- var import_Renderer = require("./Renderer.cjs");
44
43
  var import_jsx_runtime = require("react/jsx-runtime");
45
44
  var DefaultInbox = (props) => {
46
45
  const {
47
46
  open,
48
- renderNotification,
49
- renderAvatar,
50
- renderSubject,
51
- renderBody,
52
- renderDefaultActions,
53
- renderCustomActions,
54
47
  renderBell,
55
48
  onNotificationClick,
56
49
  onPrimaryActionClick,
@@ -58,60 +51,31 @@ var DefaultInbox = (props) => {
58
51
  placement,
59
52
  placementOffset
60
53
  } = props;
61
- const { novuUI } = (0, import_NovuUIContext.useNovuUI)();
62
- const { mountElement } = (0, import_RendererContext.useRenderer)();
63
- const mount = import_react.default.useCallback(
64
- (element) => {
65
- if (renderNotification) {
66
- return novuUI.mountComponent({
67
- name: "Inbox",
68
- props: {
69
- open,
70
- renderNotification: renderNotification ? (el, notification) => mountElement(el, renderNotification(notification)) : void 0,
71
- renderBell: renderBell ? (el, unreadCount) => mountElement(el, renderBell(unreadCount)) : void 0,
72
- onNotificationClick,
73
- onPrimaryActionClick,
74
- onSecondaryActionClick,
75
- placementOffset,
76
- placement
77
- },
78
- element
79
- });
80
- }
81
- return novuUI.mountComponent({
82
- name: "Inbox",
83
- props: {
84
- open,
85
- renderAvatar: renderAvatar ? (el, notification) => mountElement(el, renderAvatar(notification)) : void 0,
86
- renderSubject: renderSubject ? (el, notification) => mountElement(el, renderSubject(notification)) : void 0,
87
- renderBody: renderBody ? (el, notification) => mountElement(el, renderBody(notification)) : void 0,
88
- renderDefaultActions: renderDefaultActions ? (el, notification) => mountElement(el, renderDefaultActions(notification)) : void 0,
89
- renderCustomActions: renderCustomActions ? (el, notification) => mountElement(el, renderCustomActions(notification)) : void 0,
90
- renderBell: renderBell ? (el, unreadCount) => mountElement(el, renderBell(unreadCount)) : void 0,
91
- onNotificationClick,
92
- onPrimaryActionClick,
93
- onSecondaryActionClick,
94
- placementOffset,
95
- placement
96
- },
97
- element
98
- });
99
- },
54
+ const outlets = (0, import_useNotificationOutlets.useNotificationOutlets)(props);
55
+ const bellOutlet = (0, import_useOutletRenderer.useOutletRenderer)(renderBell);
56
+ const mountProps = (0, import_react.useMemo)(
57
+ () => ({
58
+ ...outlets,
59
+ open,
60
+ renderBell: bellOutlet,
61
+ onNotificationClick,
62
+ onPrimaryActionClick,
63
+ onSecondaryActionClick,
64
+ placementOffset,
65
+ placement
66
+ }),
100
67
  [
68
+ outlets,
101
69
  open,
102
- renderNotification,
103
- renderAvatar,
104
- renderSubject,
105
- renderBody,
106
- renderDefaultActions,
107
- renderCustomActions,
108
- renderBell,
70
+ bellOutlet,
109
71
  onNotificationClick,
110
72
  onPrimaryActionClick,
111
- onSecondaryActionClick
73
+ onSecondaryActionClick,
74
+ placementOffset,
75
+ placement
112
76
  ]
113
77
  );
114
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Mounter.Mounter, { mount });
78
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Mounter.Mounter, { name: "Inbox", props: mountProps });
115
79
  };
116
80
  var Inbox = import_react.default.memo((props) => {
117
81
  const { subscriberId, ...propsWithoutSubscriberId } = props;
@@ -137,9 +101,30 @@ var Inbox = import_react.default.memo((props) => {
137
101
  };
138
102
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_NovuProvider.InternalNovuProvider, { ...providerProps, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InboxChild, { ...propsWithoutSubscriberId, applicationIdentifier, subscriber }) });
139
103
  });
140
- var InboxChild = (0, import_Renderer.withRenderer)(
141
- import_react.default.memo((props) => {
142
- const {
104
+ var InboxChild = import_react.default.memo((props) => {
105
+ const {
106
+ localization,
107
+ appearance,
108
+ tabs,
109
+ preferencesFilter,
110
+ preferenceGroups,
111
+ preferencesSort,
112
+ routerPush,
113
+ applicationIdentifier = "",
114
+ // for keyless we provide an empty string, the api will generate a identifier
115
+ subscriberId,
116
+ subscriberHash,
117
+ contextHash,
118
+ backendUrl,
119
+ socketUrl,
120
+ socketOptions,
121
+ subscriber,
122
+ defaultSchedule,
123
+ context
124
+ } = props;
125
+ const novu = (0, import_NovuProvider.useNovu)();
126
+ const options = (0, import_react.useMemo)(() => {
127
+ return {
143
128
  localization,
144
129
  appearance,
145
130
  tabs,
@@ -147,61 +132,56 @@ var InboxChild = (0, import_Renderer.withRenderer)(
147
132
  preferenceGroups,
148
133
  preferencesSort,
149
134
  routerPush,
150
- applicationIdentifier = "",
151
- // for keyless we provide an empty string, the api will generate a identifier
152
- subscriberId,
153
- subscriberHash,
154
- contextHash,
155
- backendUrl,
156
- socketUrl,
157
- socketOptions,
158
- subscriber,
159
- defaultSchedule,
160
- context
161
- } = props;
162
- const novu = (0, import_NovuProvider.useNovu)();
163
- const options = (0, import_react.useMemo)(() => {
164
- return {
165
- localization,
166
- appearance,
167
- tabs,
168
- preferencesFilter,
169
- preferenceGroups,
170
- preferencesSort,
171
- routerPush,
172
- options: {
173
- applicationIdentifier,
174
- subscriberHash,
175
- contextHash,
176
- backendUrl,
177
- socketUrl,
178
- socketOptions,
179
- subscriber: (0, import_internal.buildSubscriber)({ subscriberId, subscriber }),
180
- defaultSchedule,
181
- context
182
- }
183
- };
184
- }, [
185
- localization,
186
- appearance,
187
- tabs,
188
- preferencesFilter,
189
- preferenceGroups,
190
- preferencesSort,
191
- applicationIdentifier,
192
- subscriberId,
193
- subscriberHash,
194
- contextHash,
195
- backendUrl,
196
- socketUrl,
197
- socketOptions,
198
- subscriber,
199
- context
200
- ]);
201
- if (isWithChildrenProps(props)) {
202
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_NovuUI.NovuUI, { options, novu, children: props.children });
203
- }
204
- const {
135
+ options: {
136
+ applicationIdentifier,
137
+ subscriberHash,
138
+ contextHash,
139
+ backendUrl,
140
+ socketUrl,
141
+ socketOptions,
142
+ subscriber: (0, import_internal.buildSubscriber)({ subscriberId, subscriber }),
143
+ defaultSchedule,
144
+ context
145
+ }
146
+ };
147
+ }, [
148
+ localization,
149
+ appearance,
150
+ tabs,
151
+ preferencesFilter,
152
+ preferenceGroups,
153
+ preferencesSort,
154
+ applicationIdentifier,
155
+ subscriberId,
156
+ subscriberHash,
157
+ contextHash,
158
+ backendUrl,
159
+ socketUrl,
160
+ socketOptions,
161
+ subscriber,
162
+ context
163
+ ]);
164
+ if (isWithChildrenProps(props)) {
165
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_NovuUI.NovuUI, { options, novu, children: props.children });
166
+ }
167
+ const {
168
+ open,
169
+ renderNotification,
170
+ renderAvatar,
171
+ renderSubject,
172
+ renderBody,
173
+ renderDefaultActions,
174
+ renderCustomActions,
175
+ renderBell,
176
+ onNotificationClick,
177
+ onPrimaryActionClick,
178
+ onSecondaryActionClick,
179
+ placementOffset,
180
+ placement
181
+ } = props;
182
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_NovuUI.NovuUI, { options, novu, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
183
+ DefaultInbox,
184
+ {
205
185
  open,
206
186
  renderNotification,
207
187
  renderAvatar,
@@ -213,29 +193,11 @@ var InboxChild = (0, import_Renderer.withRenderer)(
213
193
  onNotificationClick,
214
194
  onPrimaryActionClick,
215
195
  onSecondaryActionClick,
216
- placementOffset,
217
- placement
218
- } = props;
219
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_NovuUI.NovuUI, { options, novu, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
220
- DefaultInbox,
221
- {
222
- open,
223
- renderNotification,
224
- renderAvatar,
225
- renderSubject,
226
- renderBody,
227
- renderDefaultActions,
228
- renderCustomActions,
229
- renderBell,
230
- onNotificationClick,
231
- onPrimaryActionClick,
232
- onSecondaryActionClick,
233
- placement,
234
- placementOffset
235
- }
236
- ) });
237
- })
238
- );
196
+ placement,
197
+ placementOffset
198
+ }
199
+ ) });
200
+ });
239
201
  InboxChild.displayName = "InboxChild";
240
202
  function isWithChildrenProps(props) {
241
203
  return "children" in props;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Inbox.tsx"],"sourcesContent":["import { StandardNovuOptions } from '@novu/js';\nimport { buildSubscriber } from '@novu/js/internal';\nimport React, { useMemo } from 'react';\nimport { useNovuUI } from '../context/NovuUIContext';\nimport { useRenderer } from '../context/RendererContext';\nimport { InternalNovuProvider, useNovu, useUnsafeNovu } from '../hooks/NovuProvider';\nimport { DefaultInboxProps, DefaultProps, WithChildrenProps } from '../utils/types';\nimport { Mounter } from './Mounter';\nimport { NovuUI } from './NovuUI';\nimport { withRenderer } from './Renderer';\n\nexport type InboxProps = DefaultProps | WithChildrenProps;\n\nconst DefaultInbox = (props: DefaultInboxProps) => {\n const {\n open,\n renderNotification,\n renderAvatar,\n renderSubject,\n renderBody,\n renderDefaultActions,\n renderCustomActions,\n renderBell,\n onNotificationClick,\n onPrimaryActionClick,\n onSecondaryActionClick,\n placement,\n placementOffset,\n } = props;\n const { novuUI } = useNovuUI();\n const { mountElement } = useRenderer();\n\n const mount = React.useCallback(\n (element: HTMLElement) => {\n if (renderNotification) {\n return novuUI.mountComponent({\n name: 'Inbox',\n props: {\n open,\n renderNotification: renderNotification\n ? (el, notification) => mountElement(el, renderNotification(notification))\n : undefined,\n renderBell: renderBell ? (el, unreadCount) => mountElement(el, renderBell(unreadCount)) : undefined,\n onNotificationClick,\n onPrimaryActionClick,\n onSecondaryActionClick,\n placementOffset,\n placement,\n },\n element,\n });\n }\n\n return novuUI.mountComponent({\n name: 'Inbox',\n props: {\n open,\n renderAvatar: renderAvatar ? (el, notification) => mountElement(el, renderAvatar(notification)) : undefined,\n renderSubject: renderSubject\n ? (el, notification) => mountElement(el, renderSubject(notification))\n : undefined,\n renderBody: renderBody ? (el, notification) => mountElement(el, renderBody(notification)) : undefined,\n renderDefaultActions: renderDefaultActions\n ? (el, notification) => mountElement(el, renderDefaultActions(notification))\n : undefined,\n renderCustomActions: renderCustomActions\n ? (el, notification) => mountElement(el, renderCustomActions(notification))\n : undefined,\n renderBell: renderBell ? (el, unreadCount) => mountElement(el, renderBell(unreadCount)) : undefined,\n onNotificationClick,\n onPrimaryActionClick,\n onSecondaryActionClick,\n placementOffset,\n placement,\n },\n element,\n });\n },\n [\n open,\n renderNotification,\n renderAvatar,\n renderSubject,\n renderBody,\n renderDefaultActions,\n renderCustomActions,\n renderBell,\n onNotificationClick,\n onPrimaryActionClick,\n onSecondaryActionClick,\n ]\n );\n\n return <Mounter mount={mount} />;\n};\n\nexport const Inbox = React.memo((props: InboxProps) => {\n const { subscriberId, ...propsWithoutSubscriberId } = props;\n const subscriber = useMemo(\n () => buildSubscriber({ subscriberId: props.subscriberId, subscriber: props.subscriber }),\n [props.subscriberId, props.subscriber]\n );\n const applicationIdentifier = props.applicationIdentifier ? props.applicationIdentifier : ''; // for keyless we provide an empty string, the api will generate a identifier\n const novu = useUnsafeNovu();\n\n if (novu) {\n return (\n <InboxChild {...propsWithoutSubscriberId} applicationIdentifier={applicationIdentifier} subscriber={subscriber} />\n );\n }\n\n const providerProps = {\n applicationIdentifier,\n subscriberHash: props.subscriberHash,\n contextHash: props.contextHash,\n backendUrl: props.backendUrl,\n socketUrl: props.socketUrl,\n socketOptions: props.socketOptions,\n subscriber,\n defaultSchedule: props.defaultSchedule,\n context: props.context,\n } satisfies StandardNovuOptions;\n\n return (\n <InternalNovuProvider {...providerProps}>\n <InboxChild {...propsWithoutSubscriberId} applicationIdentifier={applicationIdentifier} subscriber={subscriber} />\n </InternalNovuProvider>\n );\n});\n\nconst InboxChild = withRenderer(\n React.memo((props: InboxProps) => {\n const {\n localization,\n appearance,\n tabs,\n preferencesFilter,\n preferenceGroups,\n preferencesSort,\n routerPush,\n applicationIdentifier = '', // for keyless we provide an empty string, the api will generate a identifier\n subscriberId,\n subscriberHash,\n contextHash,\n backendUrl,\n socketUrl,\n socketOptions,\n subscriber,\n defaultSchedule,\n context,\n } = props;\n const novu = useNovu();\n\n const options = useMemo(() => {\n return {\n localization,\n appearance,\n tabs,\n preferencesFilter,\n preferenceGroups,\n preferencesSort,\n routerPush,\n options: {\n applicationIdentifier,\n subscriberHash,\n contextHash,\n backendUrl,\n socketUrl,\n socketOptions,\n subscriber: buildSubscriber({ subscriberId, subscriber }),\n defaultSchedule,\n context,\n },\n };\n }, [\n localization,\n appearance,\n tabs,\n preferencesFilter,\n preferenceGroups,\n preferencesSort,\n applicationIdentifier,\n subscriberId,\n subscriberHash,\n contextHash,\n backendUrl,\n socketUrl,\n socketOptions,\n subscriber,\n context,\n ]);\n\n if (isWithChildrenProps(props)) {\n return (\n <NovuUI options={options} novu={novu}>\n {props.children}\n </NovuUI>\n );\n }\n\n const {\n open,\n renderNotification,\n renderAvatar,\n renderSubject,\n renderBody,\n renderDefaultActions,\n renderCustomActions,\n renderBell,\n onNotificationClick,\n onPrimaryActionClick,\n onSecondaryActionClick,\n placementOffset,\n placement,\n } = props;\n\n return (\n <NovuUI options={options} novu={novu}>\n <DefaultInbox\n open={open}\n renderNotification={renderNotification}\n renderAvatar={renderAvatar}\n renderSubject={renderSubject}\n renderBody={renderBody}\n renderDefaultActions={renderDefaultActions}\n renderCustomActions={renderCustomActions}\n renderBell={renderBell}\n onNotificationClick={onNotificationClick}\n onPrimaryActionClick={onPrimaryActionClick}\n onSecondaryActionClick={onSecondaryActionClick}\n placement={placement}\n placementOffset={placementOffset}\n />\n </NovuUI>\n );\n })\n);\n\nInboxChild.displayName = 'InboxChild';\n\nfunction isWithChildrenProps(props: InboxProps): props is WithChildrenProps {\n return 'children' in props;\n}\n"],"mappings":"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","names":["React"]}
1
+ {"version":3,"sources":["../../../src/components/Inbox.tsx"],"sourcesContent":["import { StandardNovuOptions } from '@novu/js';\nimport { buildSubscriber } from '@novu/js/internal';\nimport React, { useMemo } from 'react';\nimport { useNotificationOutlets } from '../hooks/internal/useNotificationOutlets';\nimport { useOutletRenderer } from '../hooks/internal/useOutletRenderer';\nimport { InternalNovuProvider, useNovu, useUnsafeNovu } from '../hooks/NovuProvider';\nimport { DefaultInboxProps, DefaultProps, WithChildrenProps } from '../utils/types';\nimport { Mounter } from './Mounter';\nimport { NovuUI } from './NovuUI';\n\nexport type InboxProps = DefaultProps | WithChildrenProps;\n\nconst DefaultInbox = (props: DefaultInboxProps) => {\n const {\n open,\n renderBell,\n onNotificationClick,\n onPrimaryActionClick,\n onSecondaryActionClick,\n placement,\n placementOffset,\n } = props;\n const outlets = useNotificationOutlets(props);\n const bellOutlet = useOutletRenderer(renderBell);\n\n const mountProps = useMemo(\n () => ({\n ...outlets,\n open,\n renderBell: bellOutlet,\n onNotificationClick,\n onPrimaryActionClick,\n onSecondaryActionClick,\n placementOffset,\n placement,\n }),\n [\n outlets,\n open,\n bellOutlet,\n onNotificationClick,\n onPrimaryActionClick,\n onSecondaryActionClick,\n placementOffset,\n placement,\n ]\n );\n\n return <Mounter name=\"Inbox\" props={mountProps} />;\n};\n\nexport const Inbox = React.memo((props: InboxProps) => {\n const { subscriberId, ...propsWithoutSubscriberId } = props;\n const subscriber = useMemo(\n () => buildSubscriber({ subscriberId: props.subscriberId, subscriber: props.subscriber }),\n [props.subscriberId, props.subscriber]\n );\n const applicationIdentifier = props.applicationIdentifier ? props.applicationIdentifier : ''; // for keyless we provide an empty string, the api will generate a identifier\n const novu = useUnsafeNovu();\n\n if (novu) {\n return (\n <InboxChild {...propsWithoutSubscriberId} applicationIdentifier={applicationIdentifier} subscriber={subscriber} />\n );\n }\n\n const providerProps = {\n applicationIdentifier,\n subscriberHash: props.subscriberHash,\n contextHash: props.contextHash,\n backendUrl: props.backendUrl,\n socketUrl: props.socketUrl,\n socketOptions: props.socketOptions,\n subscriber,\n defaultSchedule: props.defaultSchedule,\n context: props.context,\n } satisfies StandardNovuOptions;\n\n return (\n <InternalNovuProvider {...providerProps}>\n <InboxChild {...propsWithoutSubscriberId} applicationIdentifier={applicationIdentifier} subscriber={subscriber} />\n </InternalNovuProvider>\n );\n});\n\nconst InboxChild = React.memo((props: InboxProps) => {\n const {\n localization,\n appearance,\n tabs,\n preferencesFilter,\n preferenceGroups,\n preferencesSort,\n routerPush,\n applicationIdentifier = '', // for keyless we provide an empty string, the api will generate a identifier\n subscriberId,\n subscriberHash,\n contextHash,\n backendUrl,\n socketUrl,\n socketOptions,\n subscriber,\n defaultSchedule,\n context,\n } = props;\n const novu = useNovu();\n\n const options = useMemo(() => {\n return {\n localization,\n appearance,\n tabs,\n preferencesFilter,\n preferenceGroups,\n preferencesSort,\n routerPush,\n options: {\n applicationIdentifier,\n subscriberHash,\n contextHash,\n backendUrl,\n socketUrl,\n socketOptions,\n subscriber: buildSubscriber({ subscriberId, subscriber }),\n defaultSchedule,\n context,\n },\n };\n }, [\n localization,\n appearance,\n tabs,\n preferencesFilter,\n preferenceGroups,\n preferencesSort,\n applicationIdentifier,\n subscriberId,\n subscriberHash,\n contextHash,\n backendUrl,\n socketUrl,\n socketOptions,\n subscriber,\n context,\n ]);\n\n if (isWithChildrenProps(props)) {\n return (\n <NovuUI options={options} novu={novu}>\n {props.children}\n </NovuUI>\n );\n }\n\n const {\n open,\n renderNotification,\n renderAvatar,\n renderSubject,\n renderBody,\n renderDefaultActions,\n renderCustomActions,\n renderBell,\n onNotificationClick,\n onPrimaryActionClick,\n onSecondaryActionClick,\n placementOffset,\n placement,\n } = props;\n\n return (\n <NovuUI options={options} novu={novu}>\n <DefaultInbox\n open={open}\n renderNotification={renderNotification}\n renderAvatar={renderAvatar}\n renderSubject={renderSubject}\n renderBody={renderBody}\n renderDefaultActions={renderDefaultActions}\n renderCustomActions={renderCustomActions}\n renderBell={renderBell}\n onNotificationClick={onNotificationClick}\n onPrimaryActionClick={onPrimaryActionClick}\n onSecondaryActionClick={onSecondaryActionClick}\n placement={placement}\n placementOffset={placementOffset}\n />\n </NovuUI>\n );\n});\n\nInboxChild.displayName = 'InboxChild';\n\nfunction isWithChildrenProps(props: InboxProps): props is WithChildrenProps {\n return 'children' in props;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAgC;AAChC,mBAA+B;AAC/B,oCAAuC;AACvC,+BAAkC;AAClC,0BAA6D;AAE7D,qBAAwB;AACxB,oBAAuB;AAwCd;AApCT,IAAM,eAAe,CAAC,UAA6B;AACjD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,cAAU,sDAAuB,KAAK;AAC5C,QAAM,iBAAa,4CAAkB,UAAU;AAE/C,QAAM,iBAAa;AAAA,IACjB,OAAO;AAAA,MACL,GAAG;AAAA,MACH;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,SAAO,4CAAC,0BAAQ,MAAK,SAAQ,OAAO,YAAY;AAClD;AAEO,IAAM,QAAQ,aAAAA,QAAM,KAAK,CAAC,UAAsB;AACrD,QAAM,EAAE,cAAc,GAAG,yBAAyB,IAAI;AACtD,QAAM,iBAAa;AAAA,IACjB,UAAM,iCAAgB,EAAE,cAAc,MAAM,cAAc,YAAY,MAAM,WAAW,CAAC;AAAA,IACxF,CAAC,MAAM,cAAc,MAAM,UAAU;AAAA,EACvC;AACA,QAAM,wBAAwB,MAAM,wBAAwB,MAAM,wBAAwB;AAC1F,QAAM,WAAO,mCAAc;AAE3B,MAAI,MAAM;AACR,WACE,4CAAC,cAAY,GAAG,0BAA0B,uBAA8C,YAAwB;AAAA,EAEpH;AAEA,QAAM,gBAAgB;AAAA,IACpB;AAAA,IACA,gBAAgB,MAAM;AAAA,IACtB,aAAa,MAAM;AAAA,IACnB,YAAY,MAAM;AAAA,IAClB,WAAW,MAAM;AAAA,IACjB,eAAe,MAAM;AAAA,IACrB;AAAA,IACA,iBAAiB,MAAM;AAAA,IACvB,SAAS,MAAM;AAAA,EACjB;AAEA,SACE,4CAAC,4CAAsB,GAAG,eACxB,sDAAC,cAAY,GAAG,0BAA0B,uBAA8C,YAAwB,GAClH;AAEJ,CAAC;AAED,IAAM,aAAa,aAAAA,QAAM,KAAK,CAAC,UAAsB;AACnD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,wBAAwB;AAAA;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,WAAO,6BAAQ;AAErB,QAAM,cAAU,sBAAQ,MAAM;AAC5B,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,gBAAY,iCAAgB,EAAE,cAAc,WAAW,CAAC;AAAA,QACxD;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,MAAI,oBAAoB,KAAK,GAAG;AAC9B,WACE,4CAAC,wBAAO,SAAkB,MACvB,gBAAM,UACT;AAAA,EAEJ;AAEA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,SACE,4CAAC,wBAAO,SAAkB,MACxB;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACF,GACF;AAEJ,CAAC;AAED,WAAW,cAAc;AAEzB,SAAS,oBAAoB,OAA+C;AAC1E,SAAO,cAAc;AACvB;","names":["React"]}
@@ -34,75 +34,19 @@ __export(InboxContent_exports, {
34
34
  });
35
35
  module.exports = __toCommonJS(InboxContent_exports);
36
36
  var import_react = __toESM(require("react"), 1);
37
- var import_NovuUIContext = require("../context/NovuUIContext.cjs");
38
- var import_RendererContext = require("../context/RendererContext.cjs");
37
+ var import_useNotificationOutlets = require("../hooks/internal/useNotificationOutlets.cjs");
39
38
  var import_Mounter = require("./Mounter.cjs");
40
- var import_Renderer = require("./Renderer.cjs");
41
39
  var import_jsx_runtime = require("react/jsx-runtime");
42
- var _InboxContent = import_react.default.memo((props) => {
43
- const {
44
- onNotificationClick,
45
- onPrimaryActionClick,
46
- renderNotification,
47
- renderAvatar,
48
- renderSubject,
49
- renderBody,
50
- renderDefaultActions,
51
- renderCustomActions,
52
- onSecondaryActionClick,
53
- initialPage,
54
- hideNav
55
- } = props;
56
- const { novuUI } = (0, import_NovuUIContext.useNovuUI)();
57
- const { mountElement } = (0, import_RendererContext.useRenderer)();
58
- const mount = import_react.default.useCallback(
59
- (element) => {
60
- if (renderNotification) {
61
- return novuUI.mountComponent({
62
- name: "InboxContent",
63
- element,
64
- props: {
65
- renderNotification: renderNotification ? (el, notification) => mountElement(el, renderNotification(notification)) : void 0,
66
- onNotificationClick,
67
- onPrimaryActionClick,
68
- onSecondaryActionClick,
69
- initialPage,
70
- hideNav
71
- }
72
- });
73
- }
74
- return novuUI.mountComponent({
75
- name: "InboxContent",
76
- element,
77
- props: {
78
- renderAvatar: renderAvatar ? (el, notification) => mountElement(el, renderAvatar(notification)) : void 0,
79
- renderSubject: renderSubject ? (el, notification) => mountElement(el, renderSubject(notification)) : void 0,
80
- renderBody: renderBody ? (el, notification) => mountElement(el, renderBody(notification)) : void 0,
81
- renderDefaultActions: renderDefaultActions ? (el, notification) => mountElement(el, renderDefaultActions(notification)) : void 0,
82
- renderCustomActions: renderCustomActions ? (el, notification) => mountElement(el, renderCustomActions(notification)) : void 0,
83
- onNotificationClick,
84
- onPrimaryActionClick,
85
- onSecondaryActionClick,
86
- initialPage,
87
- hideNav
88
- }
89
- });
90
- },
91
- [
92
- renderNotification,
93
- renderAvatar,
94
- renderSubject,
95
- renderBody,
96
- renderDefaultActions,
97
- renderCustomActions,
98
- onNotificationClick,
99
- onPrimaryActionClick,
100
- onSecondaryActionClick
101
- ]
40
+ var InboxContent = import_react.default.memo((props) => {
41
+ const { onNotificationClick, onPrimaryActionClick, onSecondaryActionClick, initialPage, hideNav } = props;
42
+ const outlets = (0, import_useNotificationOutlets.useNotificationOutlets)(props);
43
+ const mountProps = (0, import_react.useMemo)(
44
+ () => ({ ...outlets, onNotificationClick, onPrimaryActionClick, onSecondaryActionClick, initialPage, hideNav }),
45
+ [outlets, onNotificationClick, onPrimaryActionClick, onSecondaryActionClick, initialPage, hideNav]
102
46
  );
103
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Mounter.Mounter, { mount });
47
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Mounter.Mounter, { name: "InboxContent", props: mountProps });
104
48
  });
105
- var InboxContent = (0, import_Renderer.withRenderer)(_InboxContent);
49
+ InboxContent.displayName = "InboxContent";
106
50
  // Annotate the CommonJS export names for ESM import in node:
107
51
  0 && (module.exports = {
108
52
  InboxContent
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/InboxContent.tsx"],"sourcesContent":["import type { InboxPage, NotificationActionClickHandler, NotificationClickHandler } from '@novu/js/ui';\nimport React from 'react';\nimport { useNovuUI } from '../context/NovuUIContext';\nimport { useRenderer } from '../context/RendererContext';\nimport { NoRendererProps, NotificationRendererProps, SubjectBodyRendererProps } from '../utils/types';\nimport { Mounter } from './Mounter';\nimport { withRenderer } from './Renderer';\n\nexport type InboxContentProps = {\n onNotificationClick?: NotificationClickHandler;\n onPrimaryActionClick?: NotificationActionClickHandler;\n onSecondaryActionClick?: NotificationActionClickHandler;\n initialPage?: InboxPage;\n hideNav?: boolean;\n} & (NotificationRendererProps | SubjectBodyRendererProps | NoRendererProps);\n\nconst _InboxContent = React.memo((props: InboxContentProps) => {\n const {\n onNotificationClick,\n onPrimaryActionClick,\n renderNotification,\n renderAvatar,\n renderSubject,\n renderBody,\n renderDefaultActions,\n renderCustomActions,\n onSecondaryActionClick,\n initialPage,\n hideNav,\n } = props;\n const { novuUI } = useNovuUI();\n const { mountElement } = useRenderer();\n\n const mount = React.useCallback(\n (element: HTMLElement) => {\n if (renderNotification) {\n return novuUI.mountComponent({\n name: 'InboxContent',\n element,\n props: {\n renderNotification: renderNotification\n ? (el, notification) => mountElement(el, renderNotification(notification))\n : undefined,\n onNotificationClick,\n onPrimaryActionClick,\n onSecondaryActionClick,\n initialPage,\n hideNav,\n },\n });\n }\n\n return novuUI.mountComponent({\n name: 'InboxContent',\n element,\n props: {\n renderAvatar: renderAvatar ? (el, notification) => mountElement(el, renderAvatar(notification)) : undefined,\n renderSubject: renderSubject\n ? (el, notification) => mountElement(el, renderSubject(notification))\n : undefined,\n renderBody: renderBody ? (el, notification) => mountElement(el, renderBody(notification)) : undefined,\n renderDefaultActions: renderDefaultActions\n ? (el, notification) => mountElement(el, renderDefaultActions(notification))\n : undefined,\n renderCustomActions: renderCustomActions\n ? (el, notification) => mountElement(el, renderCustomActions(notification))\n : undefined,\n onNotificationClick,\n onPrimaryActionClick,\n onSecondaryActionClick,\n initialPage,\n hideNav,\n },\n });\n },\n [\n renderNotification,\n renderAvatar,\n renderSubject,\n renderBody,\n renderDefaultActions,\n renderCustomActions,\n onNotificationClick,\n onPrimaryActionClick,\n onSecondaryActionClick,\n ]\n );\n\n return <Mounter mount={mount} />;\n});\n\nexport const InboxContent = withRenderer(_InboxContent);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAkB;AAClB,2BAA0B;AAC1B,6BAA4B;AAE5B,qBAAwB;AACxB,sBAA6B;AAkFpB;AAxET,IAAM,gBAAgB,aAAAA,QAAM,KAAK,CAAC,UAA6B;AAC7D,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,EAAE,OAAO,QAAI,gCAAU;AAC7B,QAAM,EAAE,aAAa,QAAI,oCAAY;AAErC,QAAM,QAAQ,aAAAA,QAAM;AAAA,IAClB,CAAC,YAAyB;AACxB,UAAI,oBAAoB;AACtB,eAAO,OAAO,eAAe;AAAA,UAC3B,MAAM;AAAA,UACN;AAAA,UACA,OAAO;AAAA,YACL,oBAAoB,qBAChB,CAAC,IAAI,iBAAiB,aAAa,IAAI,mBAAmB,YAAY,CAAC,IACvE;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAEA,aAAO,OAAO,eAAe;AAAA,QAC3B,MAAM;AAAA,QACN;AAAA,QACA,OAAO;AAAA,UACL,cAAc,eAAe,CAAC,IAAI,iBAAiB,aAAa,IAAI,aAAa,YAAY,CAAC,IAAI;AAAA,UAClG,eAAe,gBACX,CAAC,IAAI,iBAAiB,aAAa,IAAI,cAAc,YAAY,CAAC,IAClE;AAAA,UACJ,YAAY,aAAa,CAAC,IAAI,iBAAiB,aAAa,IAAI,WAAW,YAAY,CAAC,IAAI;AAAA,UAC5F,sBAAsB,uBAClB,CAAC,IAAI,iBAAiB,aAAa,IAAI,qBAAqB,YAAY,CAAC,IACzE;AAAA,UACJ,qBAAqB,sBACjB,CAAC,IAAI,iBAAiB,aAAa,IAAI,oBAAoB,YAAY,CAAC,IACxE;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,SAAO,4CAAC,0BAAQ,OAAc;AAChC,CAAC;AAEM,IAAM,mBAAe,8BAAa,aAAa;","names":["React"]}
1
+ {"version":3,"sources":["../../../src/components/InboxContent.tsx"],"sourcesContent":["import type { InboxPage, NotificationActionClickHandler, NotificationClickHandler } from '@novu/js/ui';\nimport React, { useMemo } from 'react';\nimport { useNotificationOutlets } from '../hooks/internal/useNotificationOutlets';\nimport { NoRendererProps, NotificationRendererProps, SubjectBodyRendererProps } from '../utils/types';\nimport { Mounter } from './Mounter';\n\nexport type InboxContentProps = {\n onNotificationClick?: NotificationClickHandler;\n onPrimaryActionClick?: NotificationActionClickHandler;\n onSecondaryActionClick?: NotificationActionClickHandler;\n initialPage?: InboxPage;\n hideNav?: boolean;\n} & (NotificationRendererProps | SubjectBodyRendererProps | NoRendererProps);\n\nexport const InboxContent = React.memo((props: InboxContentProps) => {\n const { onNotificationClick, onPrimaryActionClick, onSecondaryActionClick, initialPage, hideNav } = props;\n const outlets = useNotificationOutlets(props);\n\n const mountProps = useMemo(\n () => ({ ...outlets, onNotificationClick, onPrimaryActionClick, onSecondaryActionClick, initialPage, hideNav }),\n [outlets, onNotificationClick, onPrimaryActionClick, onSecondaryActionClick, initialPage, hideNav]\n );\n\n return <Mounter name=\"InboxContent\" props={mountProps} />;\n});\n\nInboxContent.displayName = 'InboxContent';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAA+B;AAC/B,oCAAuC;AAEvC,qBAAwB;AAmBf;AATF,IAAM,eAAe,aAAAA,QAAM,KAAK,CAAC,UAA6B;AACnE,QAAM,EAAE,qBAAqB,sBAAsB,wBAAwB,aAAa,QAAQ,IAAI;AACpG,QAAM,cAAU,sDAAuB,KAAK;AAE5C,QAAM,iBAAa;AAAA,IACjB,OAAO,EAAE,GAAG,SAAS,qBAAqB,sBAAsB,wBAAwB,aAAa,QAAQ;AAAA,IAC7G,CAAC,SAAS,qBAAqB,sBAAsB,wBAAwB,aAAa,OAAO;AAAA,EACnG;AAEA,SAAO,4CAAC,0BAAQ,MAAK,gBAAe,OAAO,YAAY;AACzD,CAAC;AAED,aAAa,cAAc;","names":["React"]}
@@ -1,3 +1,4 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
1
2
  import { NotificationClickHandler, NotificationActionClickHandler, InboxPage } from '@novu/js/ui';
2
3
  import React__default from 'react';
3
4
  import { NotificationRendererProps, SubjectBodyRendererProps, NoRendererProps } from '../utils/types.cjs';
@@ -10,8 +11,6 @@ type InboxContentProps = {
10
11
  initialPage?: InboxPage;
11
12
  hideNav?: boolean;
12
13
  } & (NotificationRendererProps | SubjectBodyRendererProps | NoRendererProps);
13
- declare const InboxContent: React__default.ComponentType<InboxContentProps & {
14
- children?: React__default.ReactNode | undefined;
15
- }>;
14
+ declare const InboxContent: React__default.MemoExoticComponent<(props: InboxContentProps) => react_jsx_runtime.JSX.Element>;
16
15
 
17
16
  export { InboxContent, type InboxContentProps };
@@ -24,25 +24,32 @@ __export(Mounter_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(Mounter_exports);
26
26
  var import_react = require("react");
27
+ var import_NovuUIContext = require("../context/NovuUIContext.cjs");
28
+ var import_useIsomorphicLayoutEffect = require("../hooks/internal/useIsomorphicLayoutEffect.cjs");
27
29
  var import_jsx_runtime = require("react/jsx-runtime");
28
- function Mounter({ mount }) {
30
+ function Mounter({ name, props, bare }) {
31
+ const { novuUI } = (0, import_NovuUIContext.useNovuUI)();
29
32
  const ref = (0, import_react.useRef)(null);
30
- (0, import_react.useEffect)(() => {
31
- let unmount;
33
+ const handleRef = (0, import_react.useRef)(null);
34
+ const latestProps = (0, import_react.useRef)(props);
35
+ latestProps.current = props;
36
+ (0, import_useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(() => {
32
37
  const element = ref.current;
33
- if (element && mount) {
34
- const possibleUnmount = mount(element);
35
- if (possibleUnmount) {
36
- unmount = possibleUnmount;
37
- }
38
+ if (!element) {
39
+ return;
38
40
  }
41
+ handleRef.current = novuUI.mountComponent({ name, element, props: latestProps.current, bare });
39
42
  return () => {
40
- if (element && unmount) {
41
- unmount(element);
42
- }
43
+ var _a;
44
+ (_a = handleRef.current) == null ? void 0 : _a.unmount();
45
+ handleRef.current = null;
43
46
  };
44
- }, [ref, mount]);
45
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { ref });
47
+ }, [novuUI, name, bare]);
48
+ (0, import_useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(() => {
49
+ var _a;
50
+ (_a = handleRef.current) == null ? void 0 : _a.update(props);
51
+ }, [props]);
52
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { ref, style: bare ? { display: "contents" } : void 0 });
46
53
  }
47
54
  // Annotate the CommonJS export names for ESM import in node:
48
55
  0 && (module.exports = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Mounter.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\ntype MounterProps = {\n mount: (node: HTMLElement) => ((node: HTMLElement) => void) | void;\n};\n\n/**\n * Mounter allows you to mount a component to a DOM node.\n */\nexport function Mounter({ mount }: MounterProps) {\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n let unmount: (node: HTMLDivElement) => void | undefined;\n const element = ref.current;\n if (element && mount) {\n const possibleUnmount = mount(element);\n if (possibleUnmount) {\n unmount = possibleUnmount;\n }\n }\n\n return () => {\n if (element && unmount) {\n unmount(element);\n }\n };\n }, [ref, mount]);\n\n return <div ref={ref} />;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkC;AA6BzB;AApBF,SAAS,QAAQ,EAAE,MAAM,GAAiB;AAC/C,QAAM,UAAM,qBAAuB,IAAI;AAEvC,8BAAU,MAAM;AACd,QAAI;AACJ,UAAM,UAAU,IAAI;AACpB,QAAI,WAAW,OAAO;AACpB,YAAM,kBAAkB,MAAM,OAAO;AACrC,UAAI,iBAAiB;AACnB,kBAAU;AAAA,MACZ;AAAA,IACF;AAEA,WAAO,MAAM;AACX,UAAI,WAAW,SAAS;AACtB,gBAAQ,OAAO;AAAA,MACjB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,KAAK,KAAK,CAAC;AAEf,SAAO,4CAAC,SAAI,KAAU;AACxB;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/Mounter.tsx"],"sourcesContent":["import type { MountHandle, NovuUI } from '@novu/js/ui';\nimport { useRef } from 'react';\nimport { useNovuUI } from '../context/NovuUIContext';\nimport { useIsomorphicLayoutEffect } from '../hooks/internal/useIsomorphicLayoutEffect';\n\ntype MountComponentParams = Parameters<NovuUI['mountComponent']>[0];\n\nexport type MounterProps = {\n name: MountComponentParams['name'];\n props?: MountComponentParams['props'];\n /** Mount as an island: no `Root` wrapper, no layout box. For mount points inside DOM that already sits under an engine root. */\n bare?: boolean;\n};\n\n/**\n * A mount point: a DOM node the host hands to the engine so the engine can render a component into it.\n *\n * Mounts before the browser paints, pushes later prop changes through the engine's handle instead of mounting\n * again, and unmounts when React removes it.\n */\nexport function Mounter({ name, props, bare }: MounterProps) {\n const { novuUI } = useNovuUI();\n const ref = useRef<HTMLDivElement>(null);\n const handleRef = useRef<MountHandle<MountComponentParams['props']> | null>(null);\n const latestProps = useRef(props);\n latestProps.current = props;\n\n useIsomorphicLayoutEffect(() => {\n const element = ref.current;\n if (!element) {\n return;\n }\n\n handleRef.current = novuUI.mountComponent({ name, element, props: latestProps.current, bare });\n\n return () => {\n handleRef.current?.unmount();\n handleRef.current = null;\n };\n }, [novuUI, name, bare]);\n\n useIsomorphicLayoutEffect(() => {\n handleRef.current?.update(props);\n }, [props]);\n\n return <div ref={ref} style={bare ? { display: 'contents' } : undefined} />;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAuB;AACvB,2BAA0B;AAC1B,uCAA0C;AA0CjC;AAzBF,SAAS,QAAQ,EAAE,MAAM,OAAO,KAAK,GAAiB;AAC3D,QAAM,EAAE,OAAO,QAAI,gCAAU;AAC7B,QAAM,UAAM,qBAAuB,IAAI;AACvC,QAAM,gBAAY,qBAA0D,IAAI;AAChF,QAAM,kBAAc,qBAAO,KAAK;AAChC,cAAY,UAAU;AAEtB,kEAA0B,MAAM;AAC9B,UAAM,UAAU,IAAI;AACpB,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AAEA,cAAU,UAAU,OAAO,eAAe,EAAE,MAAM,SAAS,OAAO,YAAY,SAAS,KAAK,CAAC;AAE7F,WAAO,MAAM;AAnCjB;AAoCM,sBAAU,YAAV,mBAAmB;AACnB,gBAAU,UAAU;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,QAAQ,MAAM,IAAI,CAAC;AAEvB,kEAA0B,MAAM;AAzClC;AA0CI,oBAAU,YAAV,mBAAmB,OAAO;AAAA,EAC5B,GAAG,CAAC,KAAK,CAAC;AAEV,SAAO,4CAAC,SAAI,KAAU,OAAO,OAAO,EAAE,SAAS,WAAW,IAAI,QAAW;AAC3E;","names":[]}
@@ -1,11 +1,19 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { NovuUI } from '@novu/js/ui';
2
3
 
4
+ type MountComponentParams = Parameters<NovuUI['mountComponent']>[0];
3
5
  type MounterProps = {
4
- mount: (node: HTMLElement) => ((node: HTMLElement) => void) | void;
6
+ name: MountComponentParams['name'];
7
+ props?: MountComponentParams['props'];
8
+ /** Mount as an island: no `Root` wrapper, no layout box. For mount points inside DOM that already sits under an engine root. */
9
+ bare?: boolean;
5
10
  };
6
11
  /**
7
- * Mounter allows you to mount a component to a DOM node.
12
+ * A mount point: a DOM node the host hands to the engine so the engine can render a component into it.
13
+ *
14
+ * Mounts before the browser paints, pushes later prop changes through the engine's handle instead of mounting
15
+ * again, and unmounts when React removes it.
8
16
  */
9
- declare function Mounter({ mount }: MounterProps): react_jsx_runtime.JSX.Element;
17
+ declare function Mounter({ name, props, bare }: MounterProps): react_jsx_runtime.JSX.Element;
10
18
 
11
- export { Mounter };
19
+ export { Mounter, type MounterProps };