@novu/react 3.19.2 → 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.
- package/dist/cjs/components/Bell.cjs +6 -21
- package/dist/cjs/components/Bell.cjs.map +1 -1
- package/dist/cjs/components/Bell.d.cts +2 -3
- package/dist/cjs/components/Inbox.cjs +100 -138
- package/dist/cjs/components/Inbox.cjs.map +1 -1
- package/dist/cjs/components/InboxContent.cjs +9 -65
- package/dist/cjs/components/InboxContent.cjs.map +1 -1
- package/dist/cjs/components/InboxContent.d.cts +2 -3
- package/dist/cjs/components/Mounter.cjs +20 -13
- package/dist/cjs/components/Mounter.cjs.map +1 -1
- package/dist/cjs/components/Mounter.d.cts +12 -4
- package/dist/cjs/components/Notifications.cjs +9 -59
- package/dist/cjs/components/Notifications.cjs.map +1 -1
- package/dist/cjs/components/Notifications.d.cts +2 -3
- package/dist/cjs/components/NovuUI.cjs +17 -6
- package/dist/cjs/components/NovuUI.cjs.map +1 -1
- package/dist/cjs/components/NovuUI.d.cts +4 -0
- package/dist/cjs/{context/RendererContext.cjs → components/OutletHost.cjs} +15 -15
- package/dist/cjs/components/OutletHost.cjs.map +1 -0
- package/dist/cjs/components/OutletHost.d.cts +14 -0
- package/dist/cjs/components/Preferences.cjs +1 -20
- package/dist/cjs/components/Preferences.cjs.map +1 -1
- package/dist/cjs/components/connect-chat/ConnectChat.cjs +2 -3
- package/dist/cjs/components/connect-chat/ConnectChat.cjs.map +1 -1
- package/dist/cjs/components/connect-chat/DefaultConnectChat.cjs +14 -23
- package/dist/cjs/components/connect-chat/DefaultConnectChat.cjs.map +1 -1
- package/dist/cjs/components/index.cjs +2 -0
- package/dist/cjs/components/index.cjs.map +1 -1
- package/dist/cjs/components/index.d.cts +6 -0
- package/dist/cjs/components/msteams-connect-button/DefaultMsTeamsConnectButton.cjs +17 -26
- package/dist/cjs/components/msteams-connect-button/DefaultMsTeamsConnectButton.cjs.map +1 -1
- package/dist/cjs/components/msteams-connect-button/MsTeamsConnectButton.cjs +2 -3
- package/dist/cjs/components/msteams-connect-button/MsTeamsConnectButton.cjs.map +1 -1
- package/dist/cjs/components/msteams-link-user/DefaultMsTeamsLinkUser.cjs +13 -22
- package/dist/cjs/components/msteams-link-user/DefaultMsTeamsLinkUser.cjs.map +1 -1
- package/dist/cjs/components/msteams-link-user/MsTeamsLinkUser.cjs +2 -3
- package/dist/cjs/components/msteams-link-user/MsTeamsLinkUser.cjs.map +1 -1
- package/dist/cjs/components/notification-item/ClockIcon.cjs +43 -0
- package/dist/cjs/components/notification-item/ClockIcon.cjs.map +1 -0
- package/dist/cjs/components/notification-item/ClockIcon.d.cts +7 -0
- package/dist/cjs/components/notification-item/Markdown.cjs +53 -0
- package/dist/cjs/components/notification-item/Markdown.cjs.map +1 -0
- package/dist/cjs/components/notification-item/Markdown.d.cts +12 -0
- package/dist/cjs/components/notification-item/NotificationItem.cjs +146 -0
- package/dist/cjs/components/notification-item/NotificationItem.cjs.map +1 -0
- package/dist/cjs/components/notification-item/NotificationItem.d.cts +40 -0
- package/dist/cjs/components/notification-item/context.cjs +49 -0
- package/dist/cjs/components/notification-item/context.cjs.map +1 -0
- package/dist/cjs/components/notification-item/context.d.cts +23 -0
- package/dist/cjs/components/notification-item/parts/Actions.cjs +56 -0
- package/dist/cjs/components/notification-item/parts/Actions.cjs.map +1 -0
- package/dist/cjs/components/notification-item/parts/Actions.d.cts +11 -0
- package/dist/cjs/components/notification-item/parts/Avatar.cjs +65 -0
- package/dist/cjs/components/notification-item/parts/Avatar.cjs.map +1 -0
- package/dist/cjs/components/notification-item/parts/Avatar.d.cts +8 -0
- package/dist/cjs/components/notification-item/parts/Content.cjs +66 -0
- package/dist/cjs/components/notification-item/parts/Content.cjs.map +1 -0
- package/dist/cjs/components/notification-item/parts/Content.d.cts +17 -0
- package/dist/cjs/components/notification-item/parts/Date.cjs +114 -0
- package/dist/cjs/components/notification-item/parts/Date.cjs.map +1 -0
- package/dist/cjs/components/notification-item/parts/Date.d.cts +11 -0
- package/dist/cjs/components/notification-item/parts/Dot.cjs +48 -0
- package/dist/cjs/components/notification-item/parts/Dot.cjs.map +1 -0
- package/dist/cjs/components/notification-item/parts/Dot.d.cts +9 -0
- package/dist/cjs/components/notification-item/parts/Subject.cjs +92 -0
- package/dist/cjs/components/notification-item/parts/Subject.cjs.map +1 -0
- package/dist/cjs/components/notification-item/parts/Subject.d.cts +15 -0
- package/dist/cjs/components/slack-connect-button/DefaultSlackConnectButton.cjs +18 -27
- package/dist/cjs/components/slack-connect-button/DefaultSlackConnectButton.cjs.map +1 -1
- package/dist/cjs/components/slack-connect-button/SlackConnectButton.cjs +2 -3
- package/dist/cjs/components/slack-connect-button/SlackConnectButton.cjs.map +1 -1
- package/dist/cjs/components/slack-link-user/DefaultSlackLinkUser.cjs +13 -22
- package/dist/cjs/components/slack-link-user/DefaultSlackLinkUser.cjs.map +1 -1
- package/dist/cjs/components/slack-link-user/SlackLinkUser.cjs +2 -3
- package/dist/cjs/components/slack-link-user/SlackLinkUser.cjs.map +1 -1
- package/dist/cjs/components/subscription/DefaultSubscription.cjs +14 -22
- package/dist/cjs/components/subscription/DefaultSubscription.cjs.map +1 -1
- package/dist/cjs/components/subscription/Subscription.cjs +2 -3
- package/dist/cjs/components/subscription/Subscription.cjs.map +1 -1
- package/dist/cjs/components/subscription/SubscriptionButton.cjs +9 -26
- package/dist/cjs/components/subscription/SubscriptionButton.cjs.map +1 -1
- package/dist/cjs/components/subscription/SubscriptionButton.d.cts +1 -1
- package/dist/cjs/components/subscription/SubscriptionPreferences.cjs +9 -26
- package/dist/cjs/components/subscription/SubscriptionPreferences.cjs.map +1 -1
- package/dist/cjs/components/subscription/SubscriptionPreferences.d.cts +1 -1
- package/dist/cjs/components/telegram-connect-button/DefaultTelegramConnectButton.cjs +14 -23
- package/dist/cjs/components/telegram-connect-button/DefaultTelegramConnectButton.cjs.map +1 -1
- package/dist/cjs/components/telegram-connect-button/TelegramConnectButton.cjs +2 -3
- package/dist/cjs/components/telegram-connect-button/TelegramConnectButton.cjs.map +1 -1
- package/dist/cjs/context/NovuUIContext.cjs +3 -0
- package/dist/cjs/context/NovuUIContext.cjs.map +1 -1
- package/dist/cjs/context/NovuUIContext.d.cts +8 -1
- package/dist/cjs/context/OutletStore.cjs +97 -0
- package/dist/cjs/context/OutletStore.cjs.map +1 -0
- package/dist/cjs/context/OutletStore.d.cts +31 -0
- package/dist/cjs/hooks/internal/useEngineAccessor.cjs +36 -0
- package/dist/cjs/hooks/internal/useEngineAccessor.cjs.map +1 -0
- package/dist/cjs/hooks/internal/useEngineAccessor.d.cts +4 -0
- package/dist/cjs/hooks/internal/useEngineStores.cjs +54 -0
- package/dist/cjs/hooks/internal/useEngineStores.cjs.map +1 -0
- package/dist/cjs/hooks/internal/useEngineStores.d.cts +13 -0
- package/dist/cjs/hooks/internal/useIsomorphicLayoutEffect.cjs +32 -0
- package/dist/cjs/hooks/internal/useIsomorphicLayoutEffect.cjs.map +1 -0
- package/dist/cjs/hooks/internal/useIsomorphicLayoutEffect.d.cts +5 -0
- package/dist/cjs/hooks/internal/useNotificationOutlets.cjs +57 -0
- package/dist/cjs/hooks/internal/useNotificationOutlets.cjs.map +1 -0
- package/dist/cjs/hooks/internal/useNotificationOutlets.d.cts +33 -0
- package/dist/cjs/hooks/internal/useOutletRenderer.cjs +53 -0
- package/dist/cjs/hooks/internal/useOutletRenderer.cjs.map +1 -0
- package/dist/cjs/hooks/internal/useOutletRenderer.d.cts +14 -0
- package/dist/cjs/index.cjs +2 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +6 -0
- package/dist/cjs/server/index.cjs +14 -0
- package/dist/cjs/server/index.cjs.map +1 -1
- package/dist/cjs/server/index.d.cts +15 -1
- package/dist/cjs/utils/appearance.cjs +2 -2
- package/dist/cjs/utils/appearance.cjs.map +1 -1
- package/dist/cjs/utils/appearance.d.cts +2 -3
- package/dist/esm/components/Bell.d.ts +2 -3
- package/dist/esm/components/Bell.js +7 -22
- package/dist/esm/components/Bell.js.map +1 -1
- package/dist/esm/components/Inbox.js +100 -138
- package/dist/esm/components/Inbox.js.map +1 -1
- package/dist/esm/components/InboxContent.d.ts +2 -3
- package/dist/esm/components/InboxContent.js +10 -66
- package/dist/esm/components/InboxContent.js.map +1 -1
- package/dist/esm/components/Mounter.d.ts +12 -4
- package/dist/esm/components/Mounter.js +19 -14
- package/dist/esm/components/Mounter.js.map +1 -1
- package/dist/esm/components/Notifications.d.ts +2 -3
- package/dist/esm/components/Notifications.js +10 -60
- package/dist/esm/components/Notifications.js.map +1 -1
- package/dist/esm/components/NovuUI.d.ts +4 -0
- package/dist/esm/components/NovuUI.js +16 -6
- package/dist/esm/components/NovuUI.js.map +1 -1
- package/dist/esm/components/OutletHost.d.ts +14 -0
- package/dist/esm/components/OutletHost.js +15 -0
- package/dist/esm/components/OutletHost.js.map +1 -0
- package/dist/esm/components/Preferences.js +1 -10
- package/dist/esm/components/Preferences.js.map +1 -1
- package/dist/esm/components/connect-chat/ConnectChat.js +2 -3
- package/dist/esm/components/connect-chat/ConnectChat.js.map +1 -1
- package/dist/esm/components/connect-chat/DefaultConnectChat.js +15 -24
- package/dist/esm/components/connect-chat/DefaultConnectChat.js.map +1 -1
- package/dist/esm/components/index.d.ts +6 -0
- package/dist/esm/components/index.js +1 -0
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/components/msteams-connect-button/DefaultMsTeamsConnectButton.js +18 -27
- package/dist/esm/components/msteams-connect-button/DefaultMsTeamsConnectButton.js.map +1 -1
- package/dist/esm/components/msteams-connect-button/MsTeamsConnectButton.js +2 -3
- package/dist/esm/components/msteams-connect-button/MsTeamsConnectButton.js.map +1 -1
- package/dist/esm/components/msteams-link-user/DefaultMsTeamsLinkUser.js +14 -23
- package/dist/esm/components/msteams-link-user/DefaultMsTeamsLinkUser.js.map +1 -1
- package/dist/esm/components/msteams-link-user/MsTeamsLinkUser.js +2 -3
- package/dist/esm/components/msteams-link-user/MsTeamsLinkUser.js.map +1 -1
- package/dist/esm/components/notification-item/ClockIcon.d.ts +7 -0
- package/dist/esm/components/notification-item/ClockIcon.js +18 -0
- package/dist/esm/components/notification-item/ClockIcon.js.map +1 -0
- package/dist/esm/components/notification-item/Markdown.d.ts +12 -0
- package/dist/esm/components/notification-item/Markdown.js +28 -0
- package/dist/esm/components/notification-item/Markdown.js.map +1 -0
- package/dist/esm/components/notification-item/NotificationItem.d.ts +40 -0
- package/dist/esm/components/notification-item/NotificationItem.js +131 -0
- package/dist/esm/components/notification-item/NotificationItem.js.map +1 -0
- package/dist/esm/components/notification-item/context.d.ts +23 -0
- package/dist/esm/components/notification-item/context.js +21 -0
- package/dist/esm/components/notification-item/context.js.map +1 -0
- package/dist/esm/components/notification-item/parts/Actions.d.ts +11 -0
- package/dist/esm/components/notification-item/parts/Actions.js +30 -0
- package/dist/esm/components/notification-item/parts/Actions.js.map +1 -0
- package/dist/esm/components/notification-item/parts/Avatar.d.ts +8 -0
- package/dist/esm/components/notification-item/parts/Avatar.js +40 -0
- package/dist/esm/components/notification-item/parts/Avatar.js.map +1 -0
- package/dist/esm/components/notification-item/parts/Content.d.ts +17 -0
- package/dist/esm/components/notification-item/parts/Content.js +40 -0
- package/dist/esm/components/notification-item/parts/Content.js.map +1 -0
- package/dist/esm/components/notification-item/parts/Date.d.ts +11 -0
- package/dist/esm/components/notification-item/parts/Date.js +89 -0
- package/dist/esm/components/notification-item/parts/Date.js.map +1 -0
- package/dist/esm/components/notification-item/parts/Dot.d.ts +9 -0
- package/dist/esm/components/notification-item/parts/Dot.js +23 -0
- package/dist/esm/components/notification-item/parts/Dot.js.map +1 -0
- package/dist/esm/components/notification-item/parts/Subject.d.ts +15 -0
- package/dist/esm/components/notification-item/parts/Subject.js +66 -0
- package/dist/esm/components/notification-item/parts/Subject.js.map +1 -0
- package/dist/esm/components/slack-connect-button/DefaultSlackConnectButton.js +19 -28
- package/dist/esm/components/slack-connect-button/DefaultSlackConnectButton.js.map +1 -1
- package/dist/esm/components/slack-connect-button/SlackConnectButton.js +2 -3
- package/dist/esm/components/slack-connect-button/SlackConnectButton.js.map +1 -1
- package/dist/esm/components/slack-link-user/DefaultSlackLinkUser.js +14 -23
- package/dist/esm/components/slack-link-user/DefaultSlackLinkUser.js.map +1 -1
- package/dist/esm/components/slack-link-user/SlackLinkUser.js +2 -3
- package/dist/esm/components/slack-link-user/SlackLinkUser.js.map +1 -1
- package/dist/esm/components/subscription/DefaultSubscription.js +15 -23
- package/dist/esm/components/subscription/DefaultSubscription.js.map +1 -1
- package/dist/esm/components/subscription/Subscription.js +2 -3
- package/dist/esm/components/subscription/Subscription.js.map +1 -1
- package/dist/esm/components/subscription/SubscriptionButton.d.ts +1 -1
- package/dist/esm/components/subscription/SubscriptionButton.js +10 -27
- package/dist/esm/components/subscription/SubscriptionButton.js.map +1 -1
- package/dist/esm/components/subscription/SubscriptionPreferences.d.ts +1 -1
- package/dist/esm/components/subscription/SubscriptionPreferences.js +10 -27
- package/dist/esm/components/subscription/SubscriptionPreferences.js.map +1 -1
- package/dist/esm/components/telegram-connect-button/DefaultTelegramConnectButton.js +15 -24
- package/dist/esm/components/telegram-connect-button/DefaultTelegramConnectButton.js.map +1 -1
- package/dist/esm/components/telegram-connect-button/TelegramConnectButton.js +2 -3
- package/dist/esm/components/telegram-connect-button/TelegramConnectButton.js.map +1 -1
- package/dist/esm/context/NovuUIContext.d.ts +8 -1
- package/dist/esm/context/NovuUIContext.js +2 -0
- package/dist/esm/context/NovuUIContext.js.map +1 -1
- package/dist/esm/context/OutletStore.d.ts +31 -0
- package/dist/esm/context/OutletStore.js +61 -0
- package/dist/esm/context/OutletStore.js.map +1 -0
- package/dist/esm/hooks/internal/useEngineAccessor.d.ts +4 -0
- package/dist/esm/hooks/internal/useEngineAccessor.js +11 -0
- package/dist/esm/hooks/internal/useEngineAccessor.js.map +1 -0
- package/dist/esm/hooks/internal/useEngineStores.d.ts +13 -0
- package/dist/esm/hooks/internal/useEngineStores.js +27 -0
- package/dist/esm/hooks/internal/useEngineStores.js.map +1 -0
- package/dist/esm/hooks/internal/useIsomorphicLayoutEffect.d.ts +5 -0
- package/dist/esm/hooks/internal/useIsomorphicLayoutEffect.js +7 -0
- package/dist/esm/hooks/internal/useIsomorphicLayoutEffect.js.map +1 -0
- package/dist/esm/hooks/internal/useNotificationOutlets.d.ts +33 -0
- package/dist/esm/hooks/internal/useNotificationOutlets.js +32 -0
- package/dist/esm/hooks/internal/useNotificationOutlets.js.map +1 -0
- package/dist/esm/hooks/internal/useOutletRenderer.d.ts +14 -0
- package/dist/esm/hooks/internal/useOutletRenderer.js +25 -0
- package/dist/esm/hooks/internal/useOutletRenderer.js.map +1 -0
- package/dist/esm/index.d.ts +6 -0
- package/dist/esm/index.js +5 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/server/index.d.ts +15 -1
- package/dist/esm/server/index.js +14 -1
- package/dist/esm/server/index.js.map +1 -1
- package/dist/esm/utils/appearance.d.ts +2 -3
- package/dist/esm/utils/appearance.js +2 -2
- package/dist/esm/utils/appearance.js.map +1 -1
- package/package.json +10 -4
- package/dist/cjs/components/Renderer.cjs +0 -70
- package/dist/cjs/components/Renderer.cjs.map +0 -1
- package/dist/cjs/components/Renderer.d.cts +0 -8
- package/dist/cjs/context/RendererContext.cjs.map +0 -1
- package/dist/cjs/context/RendererContext.d.cts +0 -15
- package/dist/esm/components/Renderer.d.ts +0 -8
- package/dist/esm/components/Renderer.js +0 -44
- package/dist/esm/components/Renderer.js.map +0 -1
- package/dist/esm/context/RendererContext.d.ts +0 -15
- package/dist/esm/context/RendererContext.js +0 -13
- 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
|
|
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
|
|
43
|
-
const
|
|
44
|
-
const
|
|
45
|
-
|
|
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
|
-
|
|
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
|
|
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.
|
|
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
|
|
39
|
-
var
|
|
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
|
|
62
|
-
const
|
|
63
|
-
const
|
|
64
|
-
(
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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
|
-
|
|
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, {
|
|
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 = (
|
|
141
|
-
|
|
142
|
-
|
|
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
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
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
|
-
|
|
217
|
-
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
|
|
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":"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","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
|
|
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
|
|
43
|
-
const {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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, {
|
|
47
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Mounter.Mounter, { name: "InboxContent", props: mountProps });
|
|
104
48
|
});
|
|
105
|
-
|
|
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
|
|
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.
|
|
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({
|
|
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.
|
|
31
|
-
|
|
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
|
|
34
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
+
var _a;
|
|
44
|
+
(_a = handleRef.current) == null ? void 0 : _a.unmount();
|
|
45
|
+
handleRef.current = null;
|
|
43
46
|
};
|
|
44
|
-
}, [
|
|
45
|
-
|
|
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 {
|
|
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
|
-
|
|
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
|
-
*
|
|
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({
|
|
17
|
+
declare function Mounter({ name, props, bare }: MounterProps): react_jsx_runtime.JSX.Element;
|
|
10
18
|
|
|
11
|
-
export { Mounter };
|
|
19
|
+
export { Mounter, type MounterProps };
|