@novu/react 3.5.0-rc.1 → 3.5.0-rc.3
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/Inbox.cjs +24 -24
- package/dist/cjs/components/Inbox.cjs.map +1 -1
- package/dist/cjs/hooks/NovuProvider.cjs +22 -45
- package/dist/cjs/hooks/NovuProvider.cjs.map +1 -1
- package/dist/cjs/hooks/NovuProvider.d.cts +2 -2
- package/dist/cjs/utils/types.cjs.map +1 -1
- package/dist/cjs/utils/types.d.cts +5 -1
- package/dist/esm/components/Inbox.js +24 -24
- package/dist/esm/components/Inbox.js.map +1 -1
- package/dist/esm/hooks/NovuProvider.d.ts +2 -2
- package/dist/esm/hooks/NovuProvider.js +22 -45
- package/dist/esm/hooks/NovuProvider.js.map +1 -1
- package/dist/esm/utils/types.d.ts +5 -1
- package/package.json +10 -9
|
@@ -104,23 +104,21 @@ var DefaultInbox = (props) => {
|
|
|
104
104
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Mounter.Mounter, { mount });
|
|
105
105
|
};
|
|
106
106
|
var Inbox = import_react.default.memo((props) => {
|
|
107
|
-
const {
|
|
107
|
+
const { subscriberId, ...propsWithoutSubscriberId } = props;
|
|
108
|
+
const subscriber = buildSubscriber(props.subscriber, props.subscriberId);
|
|
109
|
+
const applicationIdentifier = props.applicationIdentifier ? props.applicationIdentifier : "";
|
|
108
110
|
const novu = (0, import_NovuProvider.useUnsafeNovu)();
|
|
109
111
|
if (novu) {
|
|
110
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InboxChild, { ...
|
|
112
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InboxChild, { ...propsWithoutSubscriberId, applicationIdentifier, subscriber });
|
|
111
113
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
userAgentType: "components",
|
|
121
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InboxChild, { ...props })
|
|
122
|
-
}
|
|
123
|
-
);
|
|
114
|
+
const providerProps = {
|
|
115
|
+
applicationIdentifier,
|
|
116
|
+
subscriberHash: props.subscriberHash,
|
|
117
|
+
backendUrl: props.backendUrl,
|
|
118
|
+
socketUrl: props.socketUrl,
|
|
119
|
+
subscriber
|
|
120
|
+
};
|
|
121
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_NovuProvider.InternalNovuProvider, { ...providerProps, userAgentType: "components", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InboxChild, { ...propsWithoutSubscriberId, applicationIdentifier, subscriber }) });
|
|
124
122
|
});
|
|
125
123
|
var InboxChild = (0, import_Renderer.withRenderer)(
|
|
126
124
|
import_react.default.memo((props) => {
|
|
@@ -131,11 +129,13 @@ var InboxChild = (0, import_Renderer.withRenderer)(
|
|
|
131
129
|
preferencesFilter,
|
|
132
130
|
preferenceGroups,
|
|
133
131
|
routerPush,
|
|
134
|
-
applicationIdentifier,
|
|
132
|
+
applicationIdentifier = "",
|
|
133
|
+
// for keyless we provide an empty string, the api will generate a identifier
|
|
135
134
|
subscriberId,
|
|
136
135
|
subscriberHash,
|
|
137
136
|
backendUrl,
|
|
138
|
-
socketUrl
|
|
137
|
+
socketUrl,
|
|
138
|
+
subscriber
|
|
139
139
|
} = props;
|
|
140
140
|
const novu = (0, import_NovuProvider.useNovu)();
|
|
141
141
|
const options = (0, import_react.useMemo)(() => {
|
|
@@ -151,7 +151,7 @@ var InboxChild = (0, import_Renderer.withRenderer)(
|
|
|
151
151
|
subscriberHash,
|
|
152
152
|
backendUrl,
|
|
153
153
|
socketUrl,
|
|
154
|
-
subscriber: buildSubscriber(
|
|
154
|
+
subscriber: buildSubscriber(subscriber, subscriberId)
|
|
155
155
|
}
|
|
156
156
|
};
|
|
157
157
|
}, [
|
|
@@ -202,14 +202,14 @@ var InboxChild = (0, import_Renderer.withRenderer)(
|
|
|
202
202
|
function isWithChildrenProps(props) {
|
|
203
203
|
return "children" in props;
|
|
204
204
|
}
|
|
205
|
-
function buildSubscriber(
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
205
|
+
function buildSubscriber(subscriber, subscriberId) {
|
|
206
|
+
if (subscriber) {
|
|
207
|
+
return typeof subscriber === "string" ? { subscriberId: subscriber } : subscriber;
|
|
208
|
+
}
|
|
209
|
+
if (subscriberId) {
|
|
210
|
+
return { subscriberId };
|
|
211
211
|
}
|
|
212
|
-
return
|
|
212
|
+
return { subscriberId: "" };
|
|
213
213
|
}
|
|
214
214
|
// Annotate the CommonJS export names for ESM import in node:
|
|
215
215
|
0 && (module.exports = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Inbox.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { Subscriber } from '@novu/js';\nimport { DefaultProps, DefaultInboxProps, WithChildrenProps } from '../utils/types';\nimport { Mounter } from './Mounter';\nimport { useNovuUI } from '../context/NovuUIContext';\nimport { useRenderer } from '../context/RendererContext';\nimport { InternalNovuProvider, useNovu, useUnsafeNovu } from '../hooks/NovuProvider';\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 renderSubject,\n renderBody,\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 renderSubject: renderSubject\n ? (el, notification) => mountElement(el, renderSubject(notification))\n : undefined,\n renderBody: renderBody ? (el, notification) => mountElement(el, renderBody(notification)) : 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 renderSubject,\n renderBody,\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 {
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Inbox.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { Subscriber, StandardNovuOptions } from '@novu/js';\nimport { DefaultProps, DefaultInboxProps, WithChildrenProps } from '../utils/types';\nimport { Mounter } from './Mounter';\nimport { useNovuUI } from '../context/NovuUIContext';\nimport { useRenderer } from '../context/RendererContext';\nimport { InternalNovuProvider, useNovu, useUnsafeNovu } from '../hooks/NovuProvider';\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 renderSubject,\n renderBody,\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 renderSubject: renderSubject\n ? (el, notification) => mountElement(el, renderSubject(notification))\n : undefined,\n renderBody: renderBody ? (el, notification) => mountElement(el, renderBody(notification)) : 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 renderSubject,\n renderBody,\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 = buildSubscriber(props.subscriber, props.subscriberId);\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 backendUrl: props.backendUrl,\n socketUrl: props.socketUrl,\n subscriber,\n } satisfies StandardNovuOptions;\n\n return (\n <InternalNovuProvider {...providerProps} userAgentType=\"components\">\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 routerPush,\n applicationIdentifier = '', // for keyless we provide an empty string, the api will generate a identifier\n subscriberId,\n subscriberHash,\n backendUrl,\n socketUrl,\n subscriber,\n } = props;\n const novu = useNovu();\n\n const options = useMemo(() => {\n return {\n localization,\n appearance,\n tabs,\n preferencesFilter,\n preferenceGroups,\n routerPush,\n options: {\n applicationIdentifier,\n subscriberHash,\n backendUrl,\n socketUrl,\n subscriber: buildSubscriber(subscriber, subscriberId),\n },\n };\n }, [\n localization,\n appearance,\n tabs,\n preferencesFilter,\n preferenceGroups,\n applicationIdentifier,\n subscriberId,\n subscriberHash,\n backendUrl,\n socketUrl,\n props.subscriber,\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 renderSubject,\n renderBody,\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 renderSubject={renderSubject}\n renderBody={renderBody}\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\nfunction isWithChildrenProps(props: InboxProps): props is WithChildrenProps {\n return 'children' in props;\n}\n\nfunction buildSubscriber(subscriber?: string | Subscriber | undefined, subscriberId?: string): Subscriber {\n // subscriber object\n if (subscriber) {\n return typeof subscriber === 'string' ? { subscriberId: subscriber } : subscriber;\n }\n\n // subscriberId\n if (subscriberId) {\n return { subscriberId };\n }\n\n // missing - keyless subscriber, the api will generate a subscriberId\n return { subscriberId: '' };\n}\n"],"mappings":"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","names":["React"]}
|
|
@@ -29,48 +29,25 @@ module.exports = __toCommonJS(NovuProvider_exports);
|
|
|
29
29
|
var import_js = require("@novu/js");
|
|
30
30
|
var import_react = require("react");
|
|
31
31
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
32
|
-
var version = "3.5.0-rc.
|
|
32
|
+
var version = "3.5.0-rc.3";
|
|
33
33
|
var name = "@novu/react";
|
|
34
34
|
var baseUserAgent = `${name}@${version}`;
|
|
35
35
|
var NovuContext = (0, import_react.createContext)(void 0);
|
|
36
|
-
var NovuProvider = ({
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}) => {
|
|
47
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
48
|
-
InternalNovuProvider,
|
|
49
|
-
{
|
|
50
|
-
applicationIdentifier,
|
|
51
|
-
subscriberHash,
|
|
52
|
-
backendUrl,
|
|
53
|
-
apiUrl,
|
|
54
|
-
socketUrl,
|
|
55
|
-
useCache,
|
|
56
|
-
userAgentType: "hooks",
|
|
57
|
-
subscriber: buildSubscriber(subscriberId, subscriber),
|
|
58
|
-
children
|
|
59
|
-
}
|
|
60
|
-
);
|
|
36
|
+
var NovuProvider = (props) => {
|
|
37
|
+
const { subscriberId, ...propsWithoutSubscriberId } = props;
|
|
38
|
+
const subscriberObj = buildSubscriber(subscriberId, props.subscriber);
|
|
39
|
+
const applicationIdentifier = propsWithoutSubscriberId.applicationIdentifier ? propsWithoutSubscriberId.applicationIdentifier : "";
|
|
40
|
+
const providerProps = {
|
|
41
|
+
...propsWithoutSubscriberId,
|
|
42
|
+
applicationIdentifier,
|
|
43
|
+
subscriber: subscriberObj
|
|
44
|
+
};
|
|
45
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InternalNovuProvider, { ...providerProps, applicationIdentifier, userAgentType: "hooks", children: props.children });
|
|
61
46
|
};
|
|
62
|
-
var InternalNovuProvider = ({
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
subscriberId,
|
|
66
|
-
subscriberHash,
|
|
67
|
-
backendUrl,
|
|
68
|
-
apiUrl,
|
|
69
|
-
socketUrl,
|
|
70
|
-
useCache,
|
|
71
|
-
subscriber,
|
|
72
|
-
userAgentType
|
|
73
|
-
}) => {
|
|
47
|
+
var InternalNovuProvider = (props) => {
|
|
48
|
+
const applicationIdentifier = props.applicationIdentifier || "";
|
|
49
|
+
const subscriberObj = buildSubscriber(props.subscriberId, props.subscriber);
|
|
50
|
+
const { children, subscriberId, subscriberHash, backendUrl, apiUrl, socketUrl, useCache, userAgentType } = props;
|
|
74
51
|
const novu = (0, import_react.useMemo)(
|
|
75
52
|
() => new import_js.Novu({
|
|
76
53
|
applicationIdentifier,
|
|
@@ -80,7 +57,7 @@ var InternalNovuProvider = ({
|
|
|
80
57
|
socketUrl,
|
|
81
58
|
useCache,
|
|
82
59
|
__userAgent: `${baseUserAgent} ${userAgentType}`,
|
|
83
|
-
|
|
60
|
+
subscriber: subscriberObj
|
|
84
61
|
}),
|
|
85
62
|
[
|
|
86
63
|
applicationIdentifier,
|
|
@@ -90,7 +67,7 @@ var InternalNovuProvider = ({
|
|
|
90
67
|
apiUrl,
|
|
91
68
|
socketUrl,
|
|
92
69
|
useCache,
|
|
93
|
-
|
|
70
|
+
subscriberObj,
|
|
94
71
|
userAgentType
|
|
95
72
|
]
|
|
96
73
|
);
|
|
@@ -108,13 +85,13 @@ var useUnsafeNovu = () => {
|
|
|
108
85
|
return context;
|
|
109
86
|
};
|
|
110
87
|
function buildSubscriber(subscriberId, subscriber) {
|
|
111
|
-
let subscriberObj;
|
|
112
88
|
if (subscriber) {
|
|
113
|
-
|
|
114
|
-
}
|
|
115
|
-
|
|
89
|
+
return typeof subscriber === "string" ? { subscriberId: subscriber } : subscriber;
|
|
90
|
+
}
|
|
91
|
+
if (subscriberId) {
|
|
92
|
+
return { subscriberId };
|
|
116
93
|
}
|
|
117
|
-
return
|
|
94
|
+
return { subscriberId: "" };
|
|
118
95
|
}
|
|
119
96
|
// Annotate the CommonJS export names for ESM import in node:
|
|
120
97
|
0 && (module.exports = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/hooks/NovuProvider.tsx"],"sourcesContent":["import { Novu, NovuOptions, Subscriber } from '@novu/js';\nimport { ReactNode, createContext, useContext, useMemo } from 'react';\n\n// @ts-ignore\nconst version = PACKAGE_VERSION;\n// @ts-ignore\nconst name = PACKAGE_NAME;\nconst baseUserAgent = `${name}@${version}`;\n\nexport type NovuProviderProps = NovuOptions & {\n children: ReactNode;\n};\n\nconst NovuContext = createContext<Novu | undefined>(undefined);\n\nexport const NovuProvider = ({\n
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/NovuProvider.tsx"],"sourcesContent":["import { Novu, NovuOptions, StandardNovuOptions, Subscriber } from '@novu/js';\nimport { ReactNode, createContext, useContext, useMemo } from 'react';\n\n// @ts-ignore\nconst version = PACKAGE_VERSION;\n// @ts-ignore\nconst name = PACKAGE_NAME;\nconst baseUserAgent = `${name}@${version}`;\n\nexport type NovuProviderProps = NovuOptions & {\n children: ReactNode;\n};\n\nconst NovuContext = createContext<Novu | undefined>(undefined);\n\nexport const NovuProvider = (props: NovuProviderProps) => {\n const { subscriberId, ...propsWithoutSubscriberId } = props;\n const subscriberObj = buildSubscriber(subscriberId, props.subscriber);\n const applicationIdentifier = propsWithoutSubscriberId.applicationIdentifier\n ? propsWithoutSubscriberId.applicationIdentifier\n : '';\n\n const providerProps: NovuProviderProps = {\n ...propsWithoutSubscriberId,\n applicationIdentifier,\n subscriber: subscriberObj,\n };\n\n return (\n <InternalNovuProvider {...providerProps} applicationIdentifier={applicationIdentifier} userAgentType=\"hooks\">\n {props.children}\n </InternalNovuProvider>\n );\n};\n\n/**\n * @internal Should be used internally not to be exposed outside of the library\n * This is needed to differentiate between the hooks and components user agents\n * Better to use this internally to avoid confusion.\n */\nexport const InternalNovuProvider = (props: NovuProviderProps & { userAgentType: 'components' | 'hooks' }) => {\n const applicationIdentifier = props.applicationIdentifier || '';\n const subscriberObj = buildSubscriber(props.subscriberId, props.subscriber);\n\n const { children, subscriberId, subscriberHash, backendUrl, apiUrl, socketUrl, useCache, userAgentType } = props;\n\n const novu = useMemo(\n () =>\n new Novu({\n applicationIdentifier,\n subscriberHash,\n backendUrl,\n apiUrl,\n socketUrl,\n useCache,\n __userAgent: `${baseUserAgent} ${userAgentType}`,\n subscriber: subscriberObj,\n }),\n [\n applicationIdentifier,\n subscriberId,\n subscriberHash,\n backendUrl,\n apiUrl,\n socketUrl,\n useCache,\n subscriberObj,\n userAgentType,\n ]\n );\n\n return <NovuContext.Provider value={novu}>{children}</NovuContext.Provider>;\n};\n\nexport const useNovu = () => {\n const context = useContext(NovuContext);\n if (!context) {\n throw new Error('useNovu must be used within a <NovuProvider />');\n }\n\n return context;\n};\n\nexport const useUnsafeNovu = () => {\n const context = useContext(NovuContext);\n\n return context;\n};\n\nfunction buildSubscriber(subscriberId: string | undefined, subscriber: Subscriber | string | undefined): Subscriber {\n // subscriber object\n if (subscriber) {\n return typeof subscriber === 'string' ? { subscriberId: subscriber } : subscriber;\n }\n\n // subscriberId\n if (subscriberId) {\n return { subscriberId: subscriberId as string };\n }\n\n // missing - keyless subscriber, the api will generate a subscriberId\n return { subscriberId: '' };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAmE;AACnE,mBAA8D;AA4B1D;AAzBJ,IAAM,UAAU;AAEhB,IAAM,OAAO;AACb,IAAM,gBAAgB,GAAG,IAAI,IAAI,OAAO;AAMxC,IAAM,kBAAc,4BAAgC,MAAS;AAEtD,IAAM,eAAe,CAAC,UAA6B;AACxD,QAAM,EAAE,cAAc,GAAG,yBAAyB,IAAI;AACtD,QAAM,gBAAgB,gBAAgB,cAAc,MAAM,UAAU;AACpE,QAAM,wBAAwB,yBAAyB,wBACnD,yBAAyB,wBACzB;AAEJ,QAAM,gBAAmC;AAAA,IACvC,GAAG;AAAA,IACH;AAAA,IACA,YAAY;AAAA,EACd;AAEA,SACE,4CAAC,wBAAsB,GAAG,eAAe,uBAA8C,eAAc,SAClG,gBAAM,UACT;AAEJ;AAOO,IAAM,uBAAuB,CAAC,UAAyE;AAC5G,QAAM,wBAAwB,MAAM,yBAAyB;AAC7D,QAAM,gBAAgB,gBAAgB,MAAM,cAAc,MAAM,UAAU;AAE1E,QAAM,EAAE,UAAU,cAAc,gBAAgB,YAAY,QAAQ,WAAW,UAAU,cAAc,IAAI;AAE3G,QAAM,WAAO;AAAA,IACX,MACE,IAAI,eAAK;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa,GAAG,aAAa,IAAI,aAAa;AAAA,MAC9C,YAAY;AAAA,IACd,CAAC;AAAA,IACH;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,YAAY,UAAZ,EAAqB,OAAO,MAAO,UAAS;AACtD;AAEO,IAAM,UAAU,MAAM;AAC3B,QAAM,cAAU,yBAAW,WAAW;AACtC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AAEA,SAAO;AACT;AAEO,IAAM,gBAAgB,MAAM;AACjC,QAAM,cAAU,yBAAW,WAAW;AAEtC,SAAO;AACT;AAEA,SAAS,gBAAgB,cAAkC,YAAyD;AAElH,MAAI,YAAY;AACd,WAAO,OAAO,eAAe,WAAW,EAAE,cAAc,WAAW,IAAI;AAAA,EACzE;AAGA,MAAI,cAAc;AAChB,WAAO,EAAE,aAAqC;AAAA,EAChD;AAGA,SAAO,EAAE,cAAc,GAAG;AAC5B;","names":[]}
|
|
@@ -5,13 +5,13 @@ import { ReactNode } from 'react';
|
|
|
5
5
|
type NovuProviderProps = NovuOptions & {
|
|
6
6
|
children: ReactNode;
|
|
7
7
|
};
|
|
8
|
-
declare const NovuProvider: (
|
|
8
|
+
declare const NovuProvider: (props: NovuProviderProps) => react_jsx_runtime.JSX.Element;
|
|
9
9
|
/**
|
|
10
10
|
* @internal Should be used internally not to be exposed outside of the library
|
|
11
11
|
* This is needed to differentiate between the hooks and components user agents
|
|
12
12
|
* Better to use this internally to avoid confusion.
|
|
13
13
|
*/
|
|
14
|
-
declare const InternalNovuProvider: (
|
|
14
|
+
declare const InternalNovuProvider: (props: NovuProviderProps & {
|
|
15
15
|
userAgentType: "components" | "hooks";
|
|
16
16
|
}) => react_jsx_runtime.JSX.Element;
|
|
17
17
|
declare const useNovu: () => Novu;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/types.ts"],"sourcesContent":["import type {\n Notification,\n NotificationClickHandler,\n NotificationActionClickHandler,\n Tab,\n Appearance as JsAppearance,\n Theme as JsTheme,\n IconKey,\n Localization,\n RouterPush,\n PreferencesFilter,\n PreferenceGroups,\n InboxProps,\n InboxPage,\n} from '@novu/js/ui';\nimport type { Subscriber } from '@novu/js';\nimport type { ReactNode } from 'react';\n\nexport type NotificationsRenderer = (notification: Notification) => React.ReactNode;\nexport type SubjectRenderer = (notification: Notification) => React.ReactNode;\nexport type BodyRenderer = (notification: Notification) => React.ReactNode;\nexport type BellRenderer = (unreadCount: number) => React.ReactNode;\n\nexport type ReactIconRendererProps = { class?: string };\nexport type ReactIconRenderer = (props: ReactIconRendererProps) => ReactNode;\n\nexport type ReactIconOverrides = {\n [key in IconKey]?: ReactIconRenderer;\n};\n\nexport type ReactTheme = Omit<JsTheme, 'icons'> & {\n icons?: ReactIconOverrides;\n};\n\nexport type ReactAppearance = ReactTheme & {\n baseTheme?: JsTheme | JsTheme[];\n};\n\nexport type DefaultInboxProps = {\n open?: boolean;\n renderNotification?: NotificationsRenderer;\n renderSubject?: SubjectRenderer;\n renderBody?: BodyRenderer;\n renderBell?: BellRenderer;\n onNotificationClick?: NotificationClickHandler;\n onPrimaryActionClick?: NotificationActionClickHandler;\n onSecondaryActionClick?: NotificationActionClickHandler;\n placement?: InboxProps['placement'];\n placementOffset?: InboxProps['placementOffset'];\n};\n\
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/types.ts"],"sourcesContent":["import type {\n Notification,\n NotificationClickHandler,\n NotificationActionClickHandler,\n Tab,\n Appearance as JsAppearance,\n Theme as JsTheme,\n IconKey,\n Localization,\n RouterPush,\n PreferencesFilter,\n PreferenceGroups,\n InboxProps,\n InboxPage,\n} from '@novu/js/ui';\nimport type { Subscriber } from '@novu/js';\nimport type { ReactNode } from 'react';\n\nexport type NotificationsRenderer = (notification: Notification) => React.ReactNode;\nexport type SubjectRenderer = (notification: Notification) => React.ReactNode;\nexport type BodyRenderer = (notification: Notification) => React.ReactNode;\nexport type BellRenderer = (unreadCount: number) => React.ReactNode;\n\nexport type ReactIconRendererProps = { class?: string };\nexport type ReactIconRenderer = (props: ReactIconRendererProps) => ReactNode;\n\nexport type ReactIconOverrides = {\n [key in IconKey]?: ReactIconRenderer;\n};\n\nexport type ReactTheme = Omit<JsTheme, 'icons'> & {\n icons?: ReactIconOverrides;\n};\n\nexport type ReactAppearance = ReactTheme & {\n baseTheme?: JsTheme | JsTheme[];\n};\n\nexport type DefaultInboxProps = {\n open?: boolean;\n renderNotification?: NotificationsRenderer;\n renderSubject?: SubjectRenderer;\n renderBody?: BodyRenderer;\n renderBell?: BellRenderer;\n onNotificationClick?: NotificationClickHandler;\n onPrimaryActionClick?: NotificationActionClickHandler;\n onSecondaryActionClick?: NotificationActionClickHandler;\n placement?: InboxProps['placement'];\n placementOffset?: InboxProps['placementOffset'];\n};\n\ntype KeylessBaseProps = {} & { [K in string]?: never }; // empty object,disallows all unknown keys\n\ntype StandardBaseProps = {\n applicationIdentifier: string;\n subscriberHash?: string;\n backendUrl?: string;\n socketUrl?: string;\n appearance?: ReactAppearance;\n localization?: Localization;\n tabs?: Array<Tab>;\n preferencesFilter?: PreferencesFilter;\n preferenceGroups?: PreferenceGroups;\n routerPush?: RouterPush;\n} & (\n | {\n // TODO: Backward compatibility support - remove in future versions (see NV-5801)\n /** @deprecated Use subscriber prop instead */\n subscriberId: string;\n subscriber?: never;\n }\n | {\n subscriber: Subscriber | string;\n subscriberId?: never;\n }\n);\n\nexport type BaseProps = KeylessBaseProps | StandardBaseProps;\n\nexport type NotificationRendererProps = {\n renderNotification: NotificationsRenderer;\n renderSubject?: never;\n renderBody?: never;\n};\n\nexport type SubjectBodyRendererProps = {\n renderNotification?: never;\n renderSubject?: SubjectRenderer;\n renderBody?: BodyRenderer;\n};\n\nexport type NoRendererProps = {\n renderNotification?: undefined;\n renderSubject?: undefined;\n renderBody?: undefined;\n};\n\nexport type DefaultProps = BaseProps &\n DefaultInboxProps & {\n children?: never;\n } & (NotificationRendererProps | SubjectBodyRendererProps | NoRendererProps);\n\nexport type WithChildrenProps = BaseProps & {\n children: React.ReactNode;\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
@@ -31,7 +31,10 @@ type DefaultInboxProps = {
|
|
|
31
31
|
placement?: InboxProps['placement'];
|
|
32
32
|
placementOffset?: InboxProps['placementOffset'];
|
|
33
33
|
};
|
|
34
|
-
type
|
|
34
|
+
type KeylessBaseProps = {} & {
|
|
35
|
+
[K in string]?: never;
|
|
36
|
+
};
|
|
37
|
+
type StandardBaseProps = {
|
|
35
38
|
applicationIdentifier: string;
|
|
36
39
|
subscriberHash?: string;
|
|
37
40
|
backendUrl?: string;
|
|
@@ -50,6 +53,7 @@ type BaseProps = {
|
|
|
50
53
|
subscriber: Subscriber | string;
|
|
51
54
|
subscriberId?: never;
|
|
52
55
|
});
|
|
56
|
+
type BaseProps = KeylessBaseProps | StandardBaseProps;
|
|
53
57
|
type NotificationRendererProps = {
|
|
54
58
|
renderNotification: NotificationsRenderer;
|
|
55
59
|
renderSubject?: never;
|
|
@@ -70,23 +70,21 @@ var DefaultInbox = (props) => {
|
|
|
70
70
|
return /* @__PURE__ */ jsx(Mounter, { mount });
|
|
71
71
|
};
|
|
72
72
|
var Inbox = React.memo((props) => {
|
|
73
|
-
const {
|
|
73
|
+
const { subscriberId, ...propsWithoutSubscriberId } = props;
|
|
74
|
+
const subscriber = buildSubscriber(props.subscriber, props.subscriberId);
|
|
75
|
+
const applicationIdentifier = props.applicationIdentifier ? props.applicationIdentifier : "";
|
|
74
76
|
const novu = useUnsafeNovu();
|
|
75
77
|
if (novu) {
|
|
76
|
-
return /* @__PURE__ */ jsx(InboxChild, { ...
|
|
78
|
+
return /* @__PURE__ */ jsx(InboxChild, { ...propsWithoutSubscriberId, applicationIdentifier, subscriber });
|
|
77
79
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
userAgentType: "components",
|
|
87
|
-
children: /* @__PURE__ */ jsx(InboxChild, { ...props })
|
|
88
|
-
}
|
|
89
|
-
);
|
|
80
|
+
const providerProps = {
|
|
81
|
+
applicationIdentifier,
|
|
82
|
+
subscriberHash: props.subscriberHash,
|
|
83
|
+
backendUrl: props.backendUrl,
|
|
84
|
+
socketUrl: props.socketUrl,
|
|
85
|
+
subscriber
|
|
86
|
+
};
|
|
87
|
+
return /* @__PURE__ */ jsx(InternalNovuProvider, { ...providerProps, userAgentType: "components", children: /* @__PURE__ */ jsx(InboxChild, { ...propsWithoutSubscriberId, applicationIdentifier, subscriber }) });
|
|
90
88
|
});
|
|
91
89
|
var InboxChild = withRenderer(
|
|
92
90
|
React.memo((props) => {
|
|
@@ -97,11 +95,13 @@ var InboxChild = withRenderer(
|
|
|
97
95
|
preferencesFilter,
|
|
98
96
|
preferenceGroups,
|
|
99
97
|
routerPush,
|
|
100
|
-
applicationIdentifier,
|
|
98
|
+
applicationIdentifier = "",
|
|
99
|
+
// for keyless we provide an empty string, the api will generate a identifier
|
|
101
100
|
subscriberId,
|
|
102
101
|
subscriberHash,
|
|
103
102
|
backendUrl,
|
|
104
|
-
socketUrl
|
|
103
|
+
socketUrl,
|
|
104
|
+
subscriber
|
|
105
105
|
} = props;
|
|
106
106
|
const novu = useNovu();
|
|
107
107
|
const options = useMemo(() => {
|
|
@@ -117,7 +117,7 @@ var InboxChild = withRenderer(
|
|
|
117
117
|
subscriberHash,
|
|
118
118
|
backendUrl,
|
|
119
119
|
socketUrl,
|
|
120
|
-
subscriber: buildSubscriber(
|
|
120
|
+
subscriber: buildSubscriber(subscriber, subscriberId)
|
|
121
121
|
}
|
|
122
122
|
};
|
|
123
123
|
}, [
|
|
@@ -168,14 +168,14 @@ var InboxChild = withRenderer(
|
|
|
168
168
|
function isWithChildrenProps(props) {
|
|
169
169
|
return "children" in props;
|
|
170
170
|
}
|
|
171
|
-
function buildSubscriber(
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
171
|
+
function buildSubscriber(subscriber, subscriberId) {
|
|
172
|
+
if (subscriber) {
|
|
173
|
+
return typeof subscriber === "string" ? { subscriberId: subscriber } : subscriber;
|
|
174
|
+
}
|
|
175
|
+
if (subscriberId) {
|
|
176
|
+
return { subscriberId };
|
|
177
177
|
}
|
|
178
|
-
return
|
|
178
|
+
return { subscriberId: "" };
|
|
179
179
|
}
|
|
180
180
|
export {
|
|
181
181
|
Inbox
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Inbox.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { Subscriber } from '@novu/js';\nimport { DefaultProps, DefaultInboxProps, WithChildrenProps } from '../utils/types';\nimport { Mounter } from './Mounter';\nimport { useNovuUI } from '../context/NovuUIContext';\nimport { useRenderer } from '../context/RendererContext';\nimport { InternalNovuProvider, useNovu, useUnsafeNovu } from '../hooks/NovuProvider';\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 renderSubject,\n renderBody,\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 renderSubject: renderSubject\n ? (el, notification) => mountElement(el, renderSubject(notification))\n : undefined,\n renderBody: renderBody ? (el, notification) => mountElement(el, renderBody(notification)) : 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 renderSubject,\n renderBody,\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 {
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Inbox.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { Subscriber, StandardNovuOptions } from '@novu/js';\nimport { DefaultProps, DefaultInboxProps, WithChildrenProps } from '../utils/types';\nimport { Mounter } from './Mounter';\nimport { useNovuUI } from '../context/NovuUIContext';\nimport { useRenderer } from '../context/RendererContext';\nimport { InternalNovuProvider, useNovu, useUnsafeNovu } from '../hooks/NovuProvider';\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 renderSubject,\n renderBody,\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 renderSubject: renderSubject\n ? (el, notification) => mountElement(el, renderSubject(notification))\n : undefined,\n renderBody: renderBody ? (el, notification) => mountElement(el, renderBody(notification)) : 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 renderSubject,\n renderBody,\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 = buildSubscriber(props.subscriber, props.subscriberId);\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 backendUrl: props.backendUrl,\n socketUrl: props.socketUrl,\n subscriber,\n } satisfies StandardNovuOptions;\n\n return (\n <InternalNovuProvider {...providerProps} userAgentType=\"components\">\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 routerPush,\n applicationIdentifier = '', // for keyless we provide an empty string, the api will generate a identifier\n subscriberId,\n subscriberHash,\n backendUrl,\n socketUrl,\n subscriber,\n } = props;\n const novu = useNovu();\n\n const options = useMemo(() => {\n return {\n localization,\n appearance,\n tabs,\n preferencesFilter,\n preferenceGroups,\n routerPush,\n options: {\n applicationIdentifier,\n subscriberHash,\n backendUrl,\n socketUrl,\n subscriber: buildSubscriber(subscriber, subscriberId),\n },\n };\n }, [\n localization,\n appearance,\n tabs,\n preferencesFilter,\n preferenceGroups,\n applicationIdentifier,\n subscriberId,\n subscriberHash,\n backendUrl,\n socketUrl,\n props.subscriber,\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 renderSubject,\n renderBody,\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 renderSubject={renderSubject}\n renderBody={renderBody}\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\nfunction isWithChildrenProps(props: InboxProps): props is WithChildrenProps {\n return 'children' in props;\n}\n\nfunction buildSubscriber(subscriber?: string | Subscriber | undefined, subscriberId?: string): Subscriber {\n // subscriber object\n if (subscriber) {\n return typeof subscriber === 'string' ? { subscriberId: subscriber } : subscriber;\n }\n\n // subscriberId\n if (subscriberId) {\n return { subscriberId };\n }\n\n // missing - keyless subscriber, the api will generate a subscriberId\n return { subscriberId: '' };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -5,13 +5,13 @@ import { ReactNode } from 'react';
|
|
|
5
5
|
type NovuProviderProps = NovuOptions & {
|
|
6
6
|
children: ReactNode;
|
|
7
7
|
};
|
|
8
|
-
declare const NovuProvider: (
|
|
8
|
+
declare const NovuProvider: (props: NovuProviderProps) => react_jsx_runtime.JSX.Element;
|
|
9
9
|
/**
|
|
10
10
|
* @internal Should be used internally not to be exposed outside of the library
|
|
11
11
|
* This is needed to differentiate between the hooks and components user agents
|
|
12
12
|
* Better to use this internally to avoid confusion.
|
|
13
13
|
*/
|
|
14
|
-
declare const InternalNovuProvider: (
|
|
14
|
+
declare const InternalNovuProvider: (props: NovuProviderProps & {
|
|
15
15
|
userAgentType: "components" | "hooks";
|
|
16
16
|
}) => react_jsx_runtime.JSX.Element;
|
|
17
17
|
declare const useNovu: () => Novu;
|
|
@@ -2,48 +2,25 @@
|
|
|
2
2
|
import { Novu } from "@novu/js";
|
|
3
3
|
import { createContext, useContext, useMemo } from "react";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
|
-
var version = "3.5.0-rc.
|
|
5
|
+
var version = "3.5.0-rc.3";
|
|
6
6
|
var name = "@novu/react";
|
|
7
7
|
var baseUserAgent = `${name}@${version}`;
|
|
8
8
|
var NovuContext = createContext(void 0);
|
|
9
|
-
var NovuProvider = ({
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}) => {
|
|
20
|
-
return /* @__PURE__ */ jsx(
|
|
21
|
-
InternalNovuProvider,
|
|
22
|
-
{
|
|
23
|
-
applicationIdentifier,
|
|
24
|
-
subscriberHash,
|
|
25
|
-
backendUrl,
|
|
26
|
-
apiUrl,
|
|
27
|
-
socketUrl,
|
|
28
|
-
useCache,
|
|
29
|
-
userAgentType: "hooks",
|
|
30
|
-
subscriber: buildSubscriber(subscriberId, subscriber),
|
|
31
|
-
children
|
|
32
|
-
}
|
|
33
|
-
);
|
|
9
|
+
var NovuProvider = (props) => {
|
|
10
|
+
const { subscriberId, ...propsWithoutSubscriberId } = props;
|
|
11
|
+
const subscriberObj = buildSubscriber(subscriberId, props.subscriber);
|
|
12
|
+
const applicationIdentifier = propsWithoutSubscriberId.applicationIdentifier ? propsWithoutSubscriberId.applicationIdentifier : "";
|
|
13
|
+
const providerProps = {
|
|
14
|
+
...propsWithoutSubscriberId,
|
|
15
|
+
applicationIdentifier,
|
|
16
|
+
subscriber: subscriberObj
|
|
17
|
+
};
|
|
18
|
+
return /* @__PURE__ */ jsx(InternalNovuProvider, { ...providerProps, applicationIdentifier, userAgentType: "hooks", children: props.children });
|
|
34
19
|
};
|
|
35
|
-
var InternalNovuProvider = ({
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
subscriberId,
|
|
39
|
-
subscriberHash,
|
|
40
|
-
backendUrl,
|
|
41
|
-
apiUrl,
|
|
42
|
-
socketUrl,
|
|
43
|
-
useCache,
|
|
44
|
-
subscriber,
|
|
45
|
-
userAgentType
|
|
46
|
-
}) => {
|
|
20
|
+
var InternalNovuProvider = (props) => {
|
|
21
|
+
const applicationIdentifier = props.applicationIdentifier || "";
|
|
22
|
+
const subscriberObj = buildSubscriber(props.subscriberId, props.subscriber);
|
|
23
|
+
const { children, subscriberId, subscriberHash, backendUrl, apiUrl, socketUrl, useCache, userAgentType } = props;
|
|
47
24
|
const novu = useMemo(
|
|
48
25
|
() => new Novu({
|
|
49
26
|
applicationIdentifier,
|
|
@@ -53,7 +30,7 @@ var InternalNovuProvider = ({
|
|
|
53
30
|
socketUrl,
|
|
54
31
|
useCache,
|
|
55
32
|
__userAgent: `${baseUserAgent} ${userAgentType}`,
|
|
56
|
-
|
|
33
|
+
subscriber: subscriberObj
|
|
57
34
|
}),
|
|
58
35
|
[
|
|
59
36
|
applicationIdentifier,
|
|
@@ -63,7 +40,7 @@ var InternalNovuProvider = ({
|
|
|
63
40
|
apiUrl,
|
|
64
41
|
socketUrl,
|
|
65
42
|
useCache,
|
|
66
|
-
|
|
43
|
+
subscriberObj,
|
|
67
44
|
userAgentType
|
|
68
45
|
]
|
|
69
46
|
);
|
|
@@ -81,13 +58,13 @@ var useUnsafeNovu = () => {
|
|
|
81
58
|
return context;
|
|
82
59
|
};
|
|
83
60
|
function buildSubscriber(subscriberId, subscriber) {
|
|
84
|
-
let subscriberObj;
|
|
85
61
|
if (subscriber) {
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
|
|
62
|
+
return typeof subscriber === "string" ? { subscriberId: subscriber } : subscriber;
|
|
63
|
+
}
|
|
64
|
+
if (subscriberId) {
|
|
65
|
+
return { subscriberId };
|
|
89
66
|
}
|
|
90
|
-
return
|
|
67
|
+
return { subscriberId: "" };
|
|
91
68
|
}
|
|
92
69
|
export {
|
|
93
70
|
InternalNovuProvider,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/hooks/NovuProvider.tsx"],"sourcesContent":["import { Novu, NovuOptions, Subscriber } from '@novu/js';\nimport { ReactNode, createContext, useContext, useMemo } from 'react';\n\n// @ts-ignore\nconst version = PACKAGE_VERSION;\n// @ts-ignore\nconst name = PACKAGE_NAME;\nconst baseUserAgent = `${name}@${version}`;\n\nexport type NovuProviderProps = NovuOptions & {\n children: ReactNode;\n};\n\nconst NovuContext = createContext<Novu | undefined>(undefined);\n\nexport const NovuProvider = ({\n
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/NovuProvider.tsx"],"sourcesContent":["import { Novu, NovuOptions, StandardNovuOptions, Subscriber } from '@novu/js';\nimport { ReactNode, createContext, useContext, useMemo } from 'react';\n\n// @ts-ignore\nconst version = PACKAGE_VERSION;\n// @ts-ignore\nconst name = PACKAGE_NAME;\nconst baseUserAgent = `${name}@${version}`;\n\nexport type NovuProviderProps = NovuOptions & {\n children: ReactNode;\n};\n\nconst NovuContext = createContext<Novu | undefined>(undefined);\n\nexport const NovuProvider = (props: NovuProviderProps) => {\n const { subscriberId, ...propsWithoutSubscriberId } = props;\n const subscriberObj = buildSubscriber(subscriberId, props.subscriber);\n const applicationIdentifier = propsWithoutSubscriberId.applicationIdentifier\n ? propsWithoutSubscriberId.applicationIdentifier\n : '';\n\n const providerProps: NovuProviderProps = {\n ...propsWithoutSubscriberId,\n applicationIdentifier,\n subscriber: subscriberObj,\n };\n\n return (\n <InternalNovuProvider {...providerProps} applicationIdentifier={applicationIdentifier} userAgentType=\"hooks\">\n {props.children}\n </InternalNovuProvider>\n );\n};\n\n/**\n * @internal Should be used internally not to be exposed outside of the library\n * This is needed to differentiate between the hooks and components user agents\n * Better to use this internally to avoid confusion.\n */\nexport const InternalNovuProvider = (props: NovuProviderProps & { userAgentType: 'components' | 'hooks' }) => {\n const applicationIdentifier = props.applicationIdentifier || '';\n const subscriberObj = buildSubscriber(props.subscriberId, props.subscriber);\n\n const { children, subscriberId, subscriberHash, backendUrl, apiUrl, socketUrl, useCache, userAgentType } = props;\n\n const novu = useMemo(\n () =>\n new Novu({\n applicationIdentifier,\n subscriberHash,\n backendUrl,\n apiUrl,\n socketUrl,\n useCache,\n __userAgent: `${baseUserAgent} ${userAgentType}`,\n subscriber: subscriberObj,\n }),\n [\n applicationIdentifier,\n subscriberId,\n subscriberHash,\n backendUrl,\n apiUrl,\n socketUrl,\n useCache,\n subscriberObj,\n userAgentType,\n ]\n );\n\n return <NovuContext.Provider value={novu}>{children}</NovuContext.Provider>;\n};\n\nexport const useNovu = () => {\n const context = useContext(NovuContext);\n if (!context) {\n throw new Error('useNovu must be used within a <NovuProvider />');\n }\n\n return context;\n};\n\nexport const useUnsafeNovu = () => {\n const context = useContext(NovuContext);\n\n return context;\n};\n\nfunction buildSubscriber(subscriberId: string | undefined, subscriber: Subscriber | string | undefined): Subscriber {\n // subscriber object\n if (subscriber) {\n return typeof subscriber === 'string' ? { subscriberId: subscriber } : subscriber;\n }\n\n // subscriberId\n if (subscriberId) {\n return { subscriberId: subscriberId as string };\n }\n\n // missing - keyless subscriber, the api will generate a subscriberId\n return { subscriberId: '' };\n}\n"],"mappings":";AAAA,SAAS,YAA0D;AACnE,SAAoB,eAAe,YAAY,eAAe;AA4B1D;AAzBJ,IAAM,UAAU;AAEhB,IAAM,OAAO;AACb,IAAM,gBAAgB,GAAG,IAAI,IAAI,OAAO;AAMxC,IAAM,cAAc,cAAgC,MAAS;AAEtD,IAAM,eAAe,CAAC,UAA6B;AACxD,QAAM,EAAE,cAAc,GAAG,yBAAyB,IAAI;AACtD,QAAM,gBAAgB,gBAAgB,cAAc,MAAM,UAAU;AACpE,QAAM,wBAAwB,yBAAyB,wBACnD,yBAAyB,wBACzB;AAEJ,QAAM,gBAAmC;AAAA,IACvC,GAAG;AAAA,IACH;AAAA,IACA,YAAY;AAAA,EACd;AAEA,SACE,oBAAC,wBAAsB,GAAG,eAAe,uBAA8C,eAAc,SAClG,gBAAM,UACT;AAEJ;AAOO,IAAM,uBAAuB,CAAC,UAAyE;AAC5G,QAAM,wBAAwB,MAAM,yBAAyB;AAC7D,QAAM,gBAAgB,gBAAgB,MAAM,cAAc,MAAM,UAAU;AAE1E,QAAM,EAAE,UAAU,cAAc,gBAAgB,YAAY,QAAQ,WAAW,UAAU,cAAc,IAAI;AAE3G,QAAM,OAAO;AAAA,IACX,MACE,IAAI,KAAK;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa,GAAG,aAAa,IAAI,aAAa;AAAA,MAC9C,YAAY;AAAA,IACd,CAAC;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,SAAO,oBAAC,YAAY,UAAZ,EAAqB,OAAO,MAAO,UAAS;AACtD;AAEO,IAAM,UAAU,MAAM;AAC3B,QAAM,UAAU,WAAW,WAAW;AACtC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AAEA,SAAO;AACT;AAEO,IAAM,gBAAgB,MAAM;AACjC,QAAM,UAAU,WAAW,WAAW;AAEtC,SAAO;AACT;AAEA,SAAS,gBAAgB,cAAkC,YAAyD;AAElH,MAAI,YAAY;AACd,WAAO,OAAO,eAAe,WAAW,EAAE,cAAc,WAAW,IAAI;AAAA,EACzE;AAGA,MAAI,cAAc;AAChB,WAAO,EAAE,aAAqC;AAAA,EAChD;AAGA,SAAO,EAAE,cAAc,GAAG;AAC5B;","names":[]}
|
|
@@ -31,7 +31,10 @@ type DefaultInboxProps = {
|
|
|
31
31
|
placement?: InboxProps['placement'];
|
|
32
32
|
placementOffset?: InboxProps['placementOffset'];
|
|
33
33
|
};
|
|
34
|
-
type
|
|
34
|
+
type KeylessBaseProps = {} & {
|
|
35
|
+
[K in string]?: never;
|
|
36
|
+
};
|
|
37
|
+
type StandardBaseProps = {
|
|
35
38
|
applicationIdentifier: string;
|
|
36
39
|
subscriberHash?: string;
|
|
37
40
|
backendUrl?: string;
|
|
@@ -50,6 +53,7 @@ type BaseProps = {
|
|
|
50
53
|
subscriber: Subscriber | string;
|
|
51
54
|
subscriberId?: never;
|
|
52
55
|
});
|
|
56
|
+
type BaseProps = KeylessBaseProps | StandardBaseProps;
|
|
53
57
|
type NotificationRendererProps = {
|
|
54
58
|
renderNotification: NotificationsRenderer;
|
|
55
59
|
renderSubject?: never;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@novu/react",
|
|
3
|
-
"version": "3.5.0-rc.
|
|
3
|
+
"version": "3.5.0-rc.3",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/novuhq/novu",
|
|
@@ -79,12 +79,6 @@
|
|
|
79
79
|
"publishConfig": {
|
|
80
80
|
"access": "public"
|
|
81
81
|
},
|
|
82
|
-
"scripts": {
|
|
83
|
-
"build:watch": "tsup --watch",
|
|
84
|
-
"build": "tsup && pnpm run check-exports",
|
|
85
|
-
"lint": "eslint src",
|
|
86
|
-
"check-exports": "attw --pack ."
|
|
87
|
-
},
|
|
88
82
|
"browserslist": {
|
|
89
83
|
"production": [
|
|
90
84
|
">0.2%",
|
|
@@ -116,11 +110,18 @@
|
|
|
116
110
|
}
|
|
117
111
|
},
|
|
118
112
|
"dependencies": {
|
|
119
|
-
"@novu/js": "
|
|
113
|
+
"@novu/js": "3.5.0-rc.3"
|
|
120
114
|
},
|
|
121
115
|
"nx": {
|
|
122
116
|
"tags": [
|
|
123
117
|
"type:package"
|
|
124
118
|
]
|
|
119
|
+
},
|
|
120
|
+
"scripts": {
|
|
121
|
+
"build:watch": "tsup --watch",
|
|
122
|
+
"build": "tsup && pnpm run check-exports",
|
|
123
|
+
"lint": "eslint src",
|
|
124
|
+
"check-exports": "attw --pack .",
|
|
125
|
+
"publish:rc": "pnpm publish --tag rc"
|
|
125
126
|
}
|
|
126
|
-
}
|
|
127
|
+
}
|