@knocklabs/react-core 0.5.0-rc.3.0 → 0.6.0-rc.0
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/CHANGELOG.md +29 -4
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/modules/core/context/KnockProvider.js +1 -1
- package/dist/cjs/modules/core/context/KnockProvider.js.map +1 -1
- package/dist/cjs/modules/core/hooks/useStableOptions.js +1 -1
- package/dist/cjs/modules/core/hooks/useStableOptions.js.map +1 -1
- package/dist/cjs/modules/feed/context/KnockFeedProvider.js +1 -1
- package/dist/cjs/modules/feed/context/KnockFeedProvider.js.map +1 -1
- package/dist/cjs/modules/guide/context/KnockGuideProvider.js +2 -0
- package/dist/cjs/modules/guide/context/KnockGuideProvider.js.map +1 -0
- package/dist/cjs/modules/guide/hooks/useGuide.js +2 -0
- package/dist/cjs/modules/guide/hooks/useGuide.js.map +1 -0
- package/dist/cjs/modules/guide/hooks/useGuideContext.js +2 -0
- package/dist/cjs/modules/guide/hooks/useGuideContext.js.map +1 -0
- package/dist/cjs/modules/ms-teams/context/KnockMsTeamsProvider.js +1 -1
- package/dist/cjs/modules/ms-teams/hooks/useConnectedMsTeamsChannels.js +1 -1
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsAuth.js +1 -1
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsChannels.js +1 -1
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsTeams.js +1 -1
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsTeams.js.map +1 -1
- package/dist/cjs/modules/slack/context/KnockSlackProvider.js +1 -1
- package/dist/cjs/modules/slack/hooks/useConnectedSlackChannels.js +1 -1
- package/dist/cjs/modules/slack/hooks/useSlackAuth.js +1 -1
- package/dist/cjs/modules/slack/hooks/useSlackChannels.js +1 -1
- package/dist/cjs/modules/slack/hooks/useSlackChannels.js.map +1 -1
- package/dist/esm/index.mjs +42 -37
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/modules/core/context/KnockProvider.mjs +15 -15
- package/dist/esm/modules/core/context/KnockProvider.mjs.map +1 -1
- package/dist/esm/modules/core/hooks/useStableOptions.mjs +8 -8
- package/dist/esm/modules/core/hooks/useStableOptions.mjs.map +1 -1
- package/dist/esm/modules/feed/context/KnockFeedProvider.mjs +16 -10
- package/dist/esm/modules/feed/context/KnockFeedProvider.mjs.map +1 -1
- package/dist/esm/modules/guide/context/KnockGuideProvider.mjs +30 -0
- package/dist/esm/modules/guide/context/KnockGuideProvider.mjs.map +1 -0
- package/dist/esm/modules/guide/hooks/useGuide.mjs +21 -0
- package/dist/esm/modules/guide/hooks/useGuide.mjs.map +1 -0
- package/dist/esm/modules/guide/hooks/useGuideContext.mjs +12 -0
- package/dist/esm/modules/guide/hooks/useGuideContext.mjs.map +1 -0
- package/dist/esm/modules/ms-teams/context/KnockMsTeamsProvider.mjs +1 -1
- package/dist/esm/modules/ms-teams/hooks/useConnectedMsTeamsChannels.mjs +1 -1
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsAuth.mjs +1 -1
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsChannels.mjs +1 -1
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsTeams.mjs +27 -26
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsTeams.mjs.map +1 -1
- package/dist/esm/modules/slack/context/KnockSlackProvider.mjs +1 -1
- package/dist/esm/modules/slack/hooks/useConnectedSlackChannels.mjs +1 -1
- package/dist/esm/modules/slack/hooks/useSlackAuth.mjs +1 -1
- package/dist/esm/modules/slack/hooks/useSlackChannels.mjs +35 -36
- package/dist/esm/modules/slack/hooks/useSlackChannels.mjs.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/modules/core/context/KnockProvider.d.ts.map +1 -1
- package/dist/types/modules/feed/context/KnockFeedProvider.d.ts.map +1 -1
- package/dist/types/modules/guide/context/KnockGuideProvider.d.ts +18 -0
- package/dist/types/modules/guide/context/KnockGuideProvider.d.ts.map +1 -0
- package/dist/types/modules/guide/context/index.d.ts +2 -0
- package/dist/types/modules/guide/context/index.d.ts.map +1 -0
- package/dist/types/modules/guide/hooks/index.d.ts +2 -0
- package/dist/types/modules/guide/hooks/index.d.ts.map +1 -0
- package/dist/types/modules/guide/hooks/useGuide.d.ts +9 -0
- package/dist/types/modules/guide/hooks/useGuide.d.ts.map +1 -0
- package/dist/types/modules/guide/hooks/useGuideContext.d.ts +7 -0
- package/dist/types/modules/guide/hooks/useGuideContext.d.ts.map +1 -0
- package/dist/types/modules/guide/index.d.ts +3 -0
- package/dist/types/modules/guide/index.d.ts.map +1 -0
- package/dist/types/modules/ms-teams/hooks/useMsTeamsTeams.d.ts +2 -2
- package/dist/types/modules/ms-teams/hooks/useMsTeamsTeams.d.ts.map +1 -1
- package/dist/types/modules/slack/hooks/useSlackChannels.d.ts +2 -2
- package/dist/types/modules/slack/hooks/useSlackChannels.d.ts.map +1 -1
- package/package.json +6 -4
- package/src/index.ts +1 -0
- package/src/modules/core/context/KnockProvider.tsx +6 -8
- package/src/modules/core/hooks/useStableOptions.ts +2 -2
- package/src/modules/feed/context/KnockFeedProvider.tsx +11 -6
- package/src/modules/guide/context/KnockGuideProvider.tsx +67 -0
- package/src/modules/guide/context/index.ts +1 -0
- package/src/modules/guide/hooks/index.ts +1 -0
- package/src/modules/guide/hooks/useGuide.ts +33 -0
- package/src/modules/guide/hooks/useGuideContext.ts +18 -0
- package/src/modules/guide/index.ts +2 -0
- package/src/modules/ms-teams/hooks/useMsTeamsTeams.ts +3 -2
- package/src/modules/slack/hooks/useSlackChannels.ts +8 -13
package/CHANGELOG.md
CHANGED
|
@@ -1,15 +1,40 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.
|
|
3
|
+
## 0.6.0-rc.0
|
|
4
4
|
|
|
5
5
|
### Minor Changes
|
|
6
6
|
|
|
7
|
-
-
|
|
7
|
+
- 6bf7e9e: feat: add guide client, hooks, provider, and components
|
|
8
8
|
|
|
9
9
|
### Patch Changes
|
|
10
10
|
|
|
11
|
-
- Updated dependencies [
|
|
12
|
-
- @knocklabs/client@0.
|
|
11
|
+
- Updated dependencies [6bf7e9e]
|
|
12
|
+
- @knocklabs/client@0.13.0-rc.0
|
|
13
|
+
|
|
14
|
+
## 0.5.0
|
|
15
|
+
|
|
16
|
+
### Minor Changes
|
|
17
|
+
|
|
18
|
+
- 8ba5dcb: [JS] Support React 19 in React SDKs
|
|
19
|
+
|
|
20
|
+
### Patch Changes
|
|
21
|
+
|
|
22
|
+
- Updated dependencies [8ba5dcb]
|
|
23
|
+
- @knocklabs/client@0.12.0
|
|
24
|
+
|
|
25
|
+
## 0.4.2
|
|
26
|
+
|
|
27
|
+
### Patch Changes
|
|
28
|
+
|
|
29
|
+
- 226e319: Fix unnecessary refetches of first page by `useSlackChannels` and `useMsTeamsTeams` hooks
|
|
30
|
+
|
|
31
|
+
Previously, both the `useSlackChannels` and `useMsTeamsTeams` hooks would unnecessarily refetch the first page of data whenever multiple pages of data were loaded. This has been fixed.
|
|
32
|
+
|
|
33
|
+
## 0.4.1
|
|
34
|
+
|
|
35
|
+
### Patch Changes
|
|
36
|
+
|
|
37
|
+
- 1b86a0c: fix: correct pagination logic in useSlackChannels hook (KNO-7995)
|
|
13
38
|
|
|
14
39
|
## 0.4.0
|
|
15
40
|
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./modules/core/context/KnockProvider.js"),c=require("./modules/core/hooks/useAuthenticatedKnockClient.js"),a=require("./modules/core/hooks/useStableOptions.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./modules/core/context/KnockProvider.js"),c=require("./modules/core/hooks/useAuthenticatedKnockClient.js"),a=require("./modules/core/hooks/useStableOptions.js"),d=require("./modules/core/constants.js"),e=require("./modules/core/utils.js"),n=require("./modules/feed/context/KnockFeedProvider.js"),l=require("./modules/feed/hooks/useNotifications.js"),k=require("./modules/feed/hooks/useFeedSettings.js"),o=require("./modules/feed/hooks/useNotificationStore.js"),t=require("./modules/guide/context/KnockGuideProvider.js"),K=require("./modules/guide/hooks/useGuide.js"),r=require("./modules/ms-teams/context/KnockMsTeamsProvider.js"),C=require("./modules/ms-teams/hooks/useMsTeamsConnectionStatus.js"),S=require("./modules/ms-teams/hooks/useMsTeamsAuth.js"),m=require("./modules/ms-teams/hooks/useMsTeamsTeams.js"),q=require("./modules/ms-teams/hooks/useMsTeamsChannels.js"),v=require("./modules/ms-teams/hooks/useConnectedMsTeamsChannels.js"),i=require("./modules/slack/context/KnockSlackProvider.js"),P=require("./modules/slack/hooks/useSlackConnectionStatus.js"),T=require("./modules/slack/hooks/useSlackChannels.js"),M=require("./modules/slack/hooks/useConnectedSlackChannels.js"),f=require("./modules/slack/hooks/useSlackAuth.js"),u=require("./modules/i18n/context/KnockI18nProvider.js"),h=require("./modules/i18n/hooks/useTranslations.js"),F=require("./modules/i18n/languages/index.js");exports.KnockProvider=s.KnockProvider;exports.useKnockClient=s.useKnockClient;exports.useAuthenticatedKnockClient=c;exports.useStableOptions=a;exports.FilterStatus=d.FilterStatus;exports.feedProviderKey=e.feedProviderKey;exports.formatBadgeCount=e.formatBadgeCount;exports.formatTimestamp=e.formatTimestamp;exports.msTeamsProviderKey=e.msTeamsProviderKey;exports.renderNodeOrFallback=e.renderNodeOrFallback;exports.slackProviderKey=e.slackProviderKey;exports.toSentenceCase=e.toSentenceCase;exports.KnockFeedProvider=n.KnockFeedProvider;exports.useKnockFeed=n.useKnockFeed;exports.useNotifications=l;exports.useFeedSettings=k;exports.useCreateNotificationStore=o.useCreateNotificationStore;exports.useNotificationStore=o.default;exports.KnockGuideContext=t.KnockGuideContext;exports.KnockGuideProvider=t.KnockGuideProvider;exports.useGuide=K.useGuide;exports.KnockMsTeamsProvider=r.KnockMsTeamsProvider;exports.useKnockMsTeamsClient=r.useKnockMsTeamsClient;exports.useMsTeamsConnectionStatus=C;exports.useMsTeamsAuth=S;exports.useMsTeamsTeams=m;exports.useMsTeamsChannels=q;exports.useConnectedMsTeamsChannels=v;exports.KnockSlackProvider=i.KnockSlackProvider;exports.useKnockSlackClient=i.useKnockSlackClient;exports.useSlackConnectionStatus=P;exports.useSlackChannels=T;exports.useConnectedSlackChannels=M;exports.useSlackAuth=f;exports.I18nContext=u.I18nContext;exports.KnockI18nProvider=u.KnockI18nProvider;exports.useTranslations=h.useTranslations;exports.locales=F.locales;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("react"),b=require("../../i18n/context/KnockI18nProvider.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("react"),b=require("../../i18n/context/KnockI18nProvider.js"),K=require("../hooks/useAuthenticatedKnockClient.js");require("fast-deep-equal");function m(e){if(e&&typeof e=="object"&&"default"in e)return e;const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:()=>e[t]})}}return n.default=e,Object.freeze(n)}const o=m(f),i=o.createContext(null),P=({apiKey:e,host:n,logLevel:t,userId:r,userToken:s,onUserTokenExpiring:c,timeBeforeExpirationInMs:u,children:a,i18n:l})=>{const d=o.useMemo(()=>({host:n,onUserTokenExpiring:c,timeBeforeExpirationInMs:u,logLevel:t}),[n,c,u,t]),k=K(e,r,s,d);return o.createElement(i.Provider,{value:{knock:k}},o.createElement(b.KnockI18nProvider,{i18n:l},a))},p=()=>{const e=o.useContext(i);if(!e)throw new Error("useKnockClient must be used within a KnockProvider");return e.knock};exports.KnockProvider=P;exports.useKnockClient=p;
|
|
2
2
|
//# sourceMappingURL=KnockProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KnockProvider.js","sources":["../../../../../src/modules/core/context/KnockProvider.tsx"],"sourcesContent":["import Knock, { AuthenticateOptions, LogLevel } from \"@knocklabs/client\";\nimport * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\n\nimport { I18nContent, KnockI18nProvider } from \"../../i18n\";\nimport { useAuthenticatedKnockClient } from \"../hooks\";\n\nexport interface KnockProviderState {\n knock: Knock;\n}\n\nconst
|
|
1
|
+
{"version":3,"file":"KnockProvider.js","sources":["../../../../../src/modules/core/context/KnockProvider.tsx"],"sourcesContent":["import Knock, { AuthenticateOptions, LogLevel } from \"@knocklabs/client\";\nimport * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\n\nimport { I18nContent, KnockI18nProvider } from \"../../i18n\";\nimport { useAuthenticatedKnockClient } from \"../hooks\";\n\nexport interface KnockProviderState {\n knock: Knock;\n}\n\nconst KnockContext = React.createContext<KnockProviderState | null>(null);\n\nexport interface KnockProviderProps {\n // Knock client props\n apiKey: string;\n host?: string;\n // Authentication props\n userId: Knock[\"userId\"];\n userToken?: Knock[\"userToken\"];\n onUserTokenExpiring?: AuthenticateOptions[\"onUserTokenExpiring\"];\n timeBeforeExpirationInMs?: AuthenticateOptions[\"timeBeforeExpirationInMs\"];\n // i18n translations\n i18n?: I18nContent;\n logLevel?: LogLevel;\n}\n\nexport const KnockProvider: React.FC<PropsWithChildren<KnockProviderProps>> = ({\n apiKey,\n host,\n logLevel,\n userId,\n userToken,\n onUserTokenExpiring,\n timeBeforeExpirationInMs,\n children,\n i18n,\n}) => {\n // We memoize the options here so that we don't create a new object on every re-render\n const authenticateOptions = React.useMemo(\n () => ({\n host,\n onUserTokenExpiring,\n timeBeforeExpirationInMs,\n logLevel,\n }),\n [host, onUserTokenExpiring, timeBeforeExpirationInMs, logLevel],\n );\n\n const knock = useAuthenticatedKnockClient(\n apiKey,\n userId,\n userToken,\n authenticateOptions,\n );\n\n return (\n <KnockContext.Provider\n value={{\n knock,\n }}\n >\n <KnockI18nProvider i18n={i18n}>{children}</KnockI18nProvider>\n </KnockContext.Provider>\n );\n};\n\nexport const useKnockClient = (): Knock => {\n const context = React.useContext(KnockContext);\n if (!context) {\n throw new Error(\"useKnockClient must be used within a KnockProvider\");\n }\n return context.knock;\n};\n"],"names":["KnockContext","React","createContext","KnockProvider","apiKey","host","logLevel","userId","userToken","onUserTokenExpiring","timeBeforeExpirationInMs","children","i18n","authenticateOptions","useMemo","knock","useAuthenticatedKnockClient","KnockI18nProvider","useKnockClient","context","useContext","Error"],"mappings":"yjBAWMA,EAAeC,EAAMC,cAAyC,IAAI,EAgB3DC,EAAiEA,CAAC,CAC7EC,OAAAA,EACAC,KAAAA,EACAC,SAAAA,EACAC,OAAAA,EACAC,UAAAA,EACAC,oBAAAA,EACAC,yBAAAA,EACAC,SAAAA,EACAC,KAAAA,CACF,IAAM,CAEEC,MAAAA,EAAsBZ,EAAMa,QAChC,KAAO,CACLT,KAAAA,EACAI,oBAAAA,EACAC,yBAAAA,EACAJ,SAAAA,IAEF,CAACD,EAAMI,EAAqBC,EAA0BJ,CAAQ,CAChE,EAEMS,EAAQC,EACZZ,EACAG,EACAC,EACAK,CACF,EAEA,OACGZ,EAAA,cAAAD,EAAa,SAAb,CACC,MAAO,CACLe,MAAAA,CAAAA,CAGF,EAAAd,EAAA,cAACgB,EAAAA,kBAAkB,CAAA,KAAAL,CAAA,EAAaD,CAAS,CAC3C,CAEJ,EAEaO,EAAiBA,IAAa,CACnCC,MAAAA,EAAUlB,EAAMmB,WAAWpB,CAAY,EAC7C,GAAI,CAACmB,EACG,MAAA,IAAIE,MAAM,oDAAoD,EAEtE,OAAOF,EAAQJ,KACjB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const
|
|
1
|
+
"use strict";const n=require("fast-deep-equal"),r=require("react"),s=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},c=s(n);function a(t){const u=r.useRef();return r.useMemo(()=>{const e=u.current;return e&&c.default(t,e)?e:(u.current=t,t)},[t])}module.exports=a;
|
|
2
2
|
//# sourceMappingURL=useStableOptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useStableOptions.js","sources":["../../../../../src/modules/core/hooks/useStableOptions.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"useStableOptions.js","sources":["../../../../../src/modules/core/hooks/useStableOptions.ts"],"sourcesContent":["import fastDeepEqual from \"fast-deep-equal\";\nimport { useMemo, useRef } from \"react\";\n\nexport default function useStableOptions<T>(options: T): T {\n const optionsRef = useRef<T>();\n\n return useMemo(() => {\n const currentOptions = optionsRef.current;\n\n if (currentOptions && fastDeepEqual(options, currentOptions)) {\n return currentOptions;\n }\n\n optionsRef.current = options;\n return options;\n }, [options]);\n}\n"],"names":["useStableOptions","options","optionsRef","useRef","useMemo","currentOptions","current","fastDeepEqual"],"mappings":"kIAGA,SAAwBA,EAAoBC,EAAe,CACzD,MAAMC,EAAaC,EAAAA,OAAU,EAE7B,OAAOC,UAAQ,IAAM,CACnB,MAAMC,EAAiBH,EAAWI,QAElC,OAAID,GAAkBE,EAAAA,QAAcN,EAASI,CAAc,EAClDA,GAGTH,EAAWI,QAAUL,EACdA,EAAAA,EACN,CAACA,CAAO,CAAC,CACd"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react"),a=require("../../core/context/KnockProvider.js");require("@knocklabs/client");require("fast-deep-equal");const l=require("../../core/utils.js"),f=require("../hooks/useNotifications.js"),k=require("../hooks/useNotificationStore.js");function v(e){if(e&&typeof e=="object"&&"default"in e)return e;const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const c=v(d),u=c.createContext(void 0),K=({feedId:e,children:r,defaultFeedOptions:t={},colorMode:o="light"})=>{let n;try{n=a.useKnockClient()}catch{throw new Error("KnockFeedProvider must be used within a KnockProvider.")}const i=f(n,e,t),s=k.useCreateNotificationStore(i);return c.createElement(u.Provider,{key:l.feedProviderKey(n.userId,e,t),value:{knock:n,feedClient:i,useFeedStore:s,colorMode:o}},r)},b=()=>{const e=c.useContext(u);if(!e)throw new Error("useKnockFeed must be used within a KnockFeedProvider");return e};exports.KnockFeedProvider=K;exports.useKnockFeed=b;
|
|
2
2
|
//# sourceMappingURL=KnockFeedProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KnockFeedProvider.js","sources":["../../../../../src/modules/feed/context/KnockFeedProvider.tsx"],"sourcesContent":["import Knock, {\n Feed,\n FeedClientOptions,\n FeedStoreState,\n} from \"@knocklabs/client\";\nimport * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport type { StoreApi, UseBoundStore } from \"zustand\";\n\nimport { useKnockClient } from \"../../core\";\nimport { ColorMode } from \"../../core/constants\";\nimport { feedProviderKey } from \"../../core/utils\";\nimport { useCreateNotificationStore } from \"../hooks\";\nimport useNotifications from \"../hooks/useNotifications\";\n\nexport interface KnockFeedProviderState {\n knock: Knock;\n feedClient: Feed;\n useFeedStore: UseBoundStore<StoreApi<FeedStoreState>>;\n colorMode: ColorMode;\n}\n\nconst
|
|
1
|
+
{"version":3,"file":"KnockFeedProvider.js","sources":["../../../../../src/modules/feed/context/KnockFeedProvider.tsx"],"sourcesContent":["import Knock, {\n Feed,\n FeedClientOptions,\n FeedStoreState,\n} from \"@knocklabs/client\";\nimport * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport type { StoreApi, UseBoundStore } from \"zustand\";\n\nimport { useKnockClient } from \"../../core\";\nimport { ColorMode } from \"../../core/constants\";\nimport { feedProviderKey } from \"../../core/utils\";\nimport { useCreateNotificationStore } from \"../hooks\";\nimport useNotifications from \"../hooks/useNotifications\";\n\nexport interface KnockFeedProviderState {\n knock: Knock;\n feedClient: Feed;\n useFeedStore: UseBoundStore<StoreApi<FeedStoreState>>;\n colorMode: ColorMode;\n}\n\nconst KnockFeedContext = React.createContext<\n KnockFeedProviderState | undefined\n>(undefined);\n\nexport interface KnockFeedProviderProps {\n // Feed props\n feedId: string;\n\n // Extra options\n colorMode?: ColorMode;\n\n // Feed client options\n defaultFeedOptions?: FeedClientOptions;\n}\n\nexport const KnockFeedProvider: React.FC<\n PropsWithChildren<KnockFeedProviderProps>\n> = ({ feedId, children, defaultFeedOptions = {}, colorMode = \"light\" }) => {\n let knock: Knock;\n try {\n knock = useKnockClient();\n } catch (_) {\n throw new Error(\"KnockFeedProvider must be used within a KnockProvider.\");\n }\n\n const feedClient = useNotifications(knock, feedId, defaultFeedOptions);\n const useFeedStore = useCreateNotificationStore(feedClient);\n\n return (\n <KnockFeedContext.Provider\n key={feedProviderKey(knock.userId, feedId, defaultFeedOptions)}\n value={{\n knock,\n feedClient,\n useFeedStore,\n colorMode,\n }}\n >\n {children}\n </KnockFeedContext.Provider>\n );\n};\n\nexport const useKnockFeed = (): KnockFeedProviderState => {\n const context = React.useContext(KnockFeedContext);\n if (!context) {\n throw new Error(\"useKnockFeed must be used within a KnockFeedProvider\");\n }\n\n return context;\n};\n"],"names":["KnockFeedContext","React","createContext","undefined","KnockFeedProvider","feedId","children","defaultFeedOptions","colorMode","knock","useKnockClient","Error","feedClient","useNotifications","useFeedStore","useCreateNotificationStore","feedProviderKey","userId","useKnockFeed","context","useContext"],"mappings":"4pBAsBMA,EAAmBC,EAAMC,cAE7BC,MAAS,EAaEC,EAETA,CAAC,CAAEC,OAAAA,EAAQC,SAAAA,EAAUC,mBAAAA,EAAqB,CAAC,EAAGC,UAAAA,EAAY,OAAQ,IAAM,CACtEC,IAAAA,EACA,GAAA,CACFA,EAAQC,EAAAA,eAAe,OACb,CACJ,MAAA,IAAIC,MAAM,wDAAwD,CAAA,CAG1E,MAAMC,EAAaC,EAAiBJ,EAAOJ,EAAQE,CAAkB,EAC/DO,EAAeC,6BAA2BH,CAAU,EAGxD,OAAAX,EAAA,cAACD,EAAiB,SAAjB,CACC,IAAKgB,kBAAgBP,EAAMQ,OAAQZ,EAAQE,CAAkB,EAC7D,MAAO,CACLE,MAAAA,EACAG,WAAAA,EACAE,aAAAA,EACAN,UAAAA,IAGDF,CACH,CAEJ,EAEaY,EAAeA,IAA8B,CAClDC,MAAAA,EAAUlB,EAAMmB,WAAWpB,CAAgB,EACjD,GAAI,CAACmB,EACG,MAAA,IAAIR,MAAM,sDAAsD,EAGjEQ,OAAAA,CACT"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("@knocklabs/client"),f=require("react"),b=require("../../core/context/KnockProvider.js"),k=require("../../core/hooks/useStableOptions.js");require("date-fns");function m(e){if(e&&typeof e=="object"&&"default"in e)return e;const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const c=m(f),s=c.createContext(void 0),v=({channelId:e,readyToTarget:r,listenForUpdates:t,colorMode:o="light",targetParams:a,children:d})=>{let i;try{i=b.useKnockClient()}catch{throw new Error("KnockGuideProvider must be used within a KnockProvider")}const u=k(a),n=c.useMemo(()=>new l.KnockGuideClient(i,e,u),[i,e,u]);return c.useEffect(()=>(r&&(n.fetch(),t&&n.subscribe()),()=>n.unsubscribe()),[r,t,n]),c.createElement(s.Provider,{value:{client:n,colorMode:o}},d)};exports.KnockGuideContext=s;exports.KnockGuideProvider=v;
|
|
2
|
+
//# sourceMappingURL=KnockGuideProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KnockGuideProvider.js","sources":["../../../../../src/modules/guide/context/KnockGuideProvider.tsx"],"sourcesContent":["import Knock, {\n KnockGuideClient,\n KnockGuideTargetParams,\n} from \"@knocklabs/client\";\nimport * as React from \"react\";\n\nimport { useKnockClient, useStableOptions } from \"../../core\";\nimport { ColorMode } from \"../../core/constants\";\n\ntype KnockGuideProviderValue = {\n client: KnockGuideClient;\n colorMode: ColorMode;\n};\n\nexport const KnockGuideContext = React.createContext<\n KnockGuideProviderValue | undefined\n>(undefined);\n\ntype Props = {\n channelId: string;\n readyToTarget: boolean;\n listenForUpdates?: boolean;\n colorMode?: ColorMode;\n targetParams?: KnockGuideTargetParams;\n};\n\nexport const KnockGuideProvider: React.FC<React.PropsWithChildren<Props>> = ({\n channelId,\n readyToTarget,\n listenForUpdates,\n colorMode = \"light\",\n targetParams,\n children,\n}) => {\n let knock: Knock;\n\n try {\n knock = useKnockClient();\n } catch (_) {\n throw new Error(\"KnockGuideProvider must be used within a KnockProvider\");\n }\n\n const stableTargetParams = useStableOptions(targetParams);\n\n const knockGuideClient = React.useMemo(() => {\n return new KnockGuideClient(knock, channelId, stableTargetParams);\n }, [knock, channelId, stableTargetParams]);\n\n React.useEffect(() => {\n if (readyToTarget) {\n knockGuideClient.fetch();\n if (listenForUpdates) knockGuideClient.subscribe();\n }\n return () => knockGuideClient.unsubscribe();\n }, [readyToTarget, listenForUpdates, knockGuideClient]);\n\n return (\n <KnockGuideContext.Provider\n value={{\n client: knockGuideClient,\n colorMode,\n }}\n >\n {children}\n </KnockGuideContext.Provider>\n );\n};\n"],"names":["KnockGuideContext","React","createContext","undefined","KnockGuideProvider","channelId","readyToTarget","listenForUpdates","colorMode","targetParams","children","knock","useKnockClient","Error","stableTargetParams","useStableOptions","knockGuideClient","useMemo","KnockGuideClient","useEffect","fetch","subscribe","unsubscribe","client"],"mappings":"0kBAcaA,EAAoBC,EAAMC,cAErCC,MAAS,EAUEC,EAA+DA,CAAC,CAC3EC,UAAAA,EACAC,cAAAA,EACAC,iBAAAA,EACAC,UAAAA,EAAY,QACZC,aAAAA,EACAC,SAAAA,CACF,IAAM,CACAC,IAAAA,EAEA,GAAA,CACFA,EAAQC,EAAAA,eAAe,OACb,CACJ,MAAA,IAAIC,MAAM,wDAAwD,CAAA,CAGpEC,MAAAA,EAAqBC,EAAiBN,CAAY,EAElDO,EAAmBf,EAAMgB,QAAQ,IAC9B,IAAIC,EAAAA,iBAAiBP,EAAON,EAAWS,CAAkB,EAC/D,CAACH,EAAON,EAAWS,CAAkB,CAAC,EAEzCb,OAAAA,EAAMkB,UAAU,KACVb,IACFU,EAAiBI,MAAM,EACnBb,KAAmCc,UAAU,GAE5C,IAAML,EAAiBM,YAAY,GACzC,CAAChB,EAAeC,EAAkBS,CAAgB,CAAC,EAGnDf,EAAA,cAAAD,EAAkB,SAAlB,CACC,MAAO,CACLuB,OAAQP,EACRR,UAAAA,IAGDE,CACH,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("@tanstack/react-store"),c=require("./useGuideContext.js"),d=e=>{const u=c.useGuideContext();if(!e.key&&!e.type)throw new Error("useGuide must be used with at least one filter: either a guide key or a guide type");const{client:t,colorMode:r}=u,[o]=n.useStore(t.store,s=>t.select(s,e)),i=o&&o.steps.find(s=>!s.message.archived_at);return{client:t,colorMode:r,guide:o,step:i}};exports.useGuide=d;
|
|
2
|
+
//# sourceMappingURL=useGuide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGuide.js","sources":["../../../../../src/modules/guide/hooks/useGuide.ts"],"sourcesContent":["import {\n KnockGuideFilterParams,\n KnockGuideStepWithHandlers,\n KnockGuideWithHandlers,\n} from \"@knocklabs/client\";\nimport { useStore } from \"@tanstack/react-store\";\n\nimport { UseGuideContextReturn, useGuideContext } from \"./useGuideContext\";\n\ninterface UseGuideReturn extends UseGuideContextReturn {\n guide: KnockGuideWithHandlers | undefined;\n step: KnockGuideStepWithHandlers | undefined;\n}\n\nexport const useGuide = (filters: KnockGuideFilterParams): UseGuideReturn => {\n const context = useGuideContext();\n\n if (!filters.key && !filters.type) {\n throw new Error(\n \"useGuide must be used with at least one filter: either a guide key or a guide type\",\n );\n }\n\n const { client, colorMode } = context;\n\n const [guide] = useStore(client.store, (state) =>\n client.select(state, filters),\n );\n\n const step = guide && guide.steps.find((s) => !s.message.archived_at);\n\n return { client, colorMode, guide, step };\n};\n"],"names":["useGuide","filters","context","useGuideContext","key","type","Error","client","colorMode","guide","useStore","store","state","select","step","steps","find","s","message","archived_at"],"mappings":"2JAcaA,EAAYC,GAAoD,CAC3E,MAAMC,EAAUC,EAAAA,gBAAgB,EAEhC,GAAI,CAACF,EAAQG,KAAO,CAACH,EAAQI,KACrB,MAAA,IAAIC,MACR,oFACF,EAGI,KAAA,CAAEC,OAAAA,EAAQC,UAAAA,CAAAA,EAAcN,EAExB,CAACO,CAAK,EAAIC,EAASH,SAAAA,EAAOI,MAAQC,GACtCL,EAAOM,OAAOD,EAAOX,CAAO,CAC9B,EAEMa,EAAOL,GAASA,EAAMM,MAAMC,KAAY,GAAA,CAACC,EAAEC,QAAQC,WAAW,EAE7D,MAAA,CAAEZ,OAAAA,EAAQC,UAAAA,EAAWC,MAAAA,EAAOK,KAAAA,CAAK,CAC1C"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react"),u=require("../context/KnockGuideProvider.js");function c(e){if(e&&typeof e=="object"&&"default"in e)return e;const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(o,t,n.get?n:{enumerable:!0,get:()=>e[t]})}}return o.default=e,Object.freeze(o)}const i=c(r),s=()=>{const e=i.useContext(u.KnockGuideContext);if(!e)throw new Error("useGuide must be used within a KnockGuideProvider");return e};exports.useGuideContext=s;
|
|
2
|
+
//# sourceMappingURL=useGuideContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGuideContext.js","sources":["../../../../../src/modules/guide/hooks/useGuideContext.ts"],"sourcesContent":["import { KnockGuideClient } from \"@knocklabs/client\";\nimport * as React from \"react\";\n\nimport { KnockGuideContext } from \"../context\";\n\nexport interface UseGuideContextReturn {\n client: KnockGuideClient;\n colorMode: \"light\" | \"dark\";\n}\n\nexport const useGuideContext = (): UseGuideContextReturn => {\n const context = React.useContext(KnockGuideContext);\n if (!context) {\n throw new Error(\"useGuide must be used within a KnockGuideProvider\");\n }\n\n return context;\n};\n"],"names":["useGuideContext","context","React","useContext","KnockGuideContext","Error"],"mappings":"keAUaA,EAAkBA,IAA6B,CACpDC,MAAAA,EAAUC,EAAMC,WAAWC,mBAAiB,EAClD,GAAI,CAACH,EACG,MAAA,IAAII,MAAM,mDAAmD,EAG9DJ,OAAAA,CACT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("react"),f=require("../../core/context/KnockProvider.js");require("@knocklabs/client");require("
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("react"),f=require("../../core/context/KnockProvider.js");require("@knocklabs/client");require("fast-deep-equal");const d=require("../../core/utils.js"),v=require("../hooks/useMsTeamsConnectionStatus.js");require("swr/infinite");require("swr");require("../../i18n/context/KnockI18nProvider.js");function P(e){if(e&&typeof e=="object"&&"default"in e)return e;const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const n=P(b),i=n.createContext(null),p=({knockMsTeamsChannelId:e,tenantId:t,children:r})=>{const o=f.useKnockClient(),{connectionStatus:s,setConnectionStatus:u,errorLabel:c,setErrorLabel:a,actionLabel:l,setActionLabel:m}=v(o,e,t);return n.createElement(i.Provider,{key:d.msTeamsProviderKey({knockMsTeamsChannelId:e,tenantId:t,connectionStatus:s,errorLabel:c}),value:{connectionStatus:s,setConnectionStatus:u,errorLabel:c,setErrorLabel:a,actionLabel:l,setActionLabel:m,knockMsTeamsChannelId:e,tenantId:t}},r)},q=()=>{const e=n.useContext(i);if(!e)throw new Error("useKnockMsTeamsClient must be used within a KnockMsTeamsProvider");return e};exports.KnockMsTeamsProvider=p;exports.useKnockMsTeamsClient=q;
|
|
2
2
|
//# sourceMappingURL=KnockMsTeamsProvider.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const S=require("../context/KnockMsTeamsProvider.js"),i=require("react");require("../../i18n/context/KnockI18nProvider.js");const E=require("../../i18n/hooks/useTranslations.js");require("@knocklabs/client");const T=require("../../core/context/KnockProvider.js");require("
|
|
1
|
+
"use strict";const S=require("../context/KnockMsTeamsProvider.js"),i=require("react");require("../../i18n/context/KnockI18nProvider.js");const E=require("../../i18n/hooks/useTranslations.js");require("@knocklabs/client");const T=require("../../core/context/KnockProvider.js");require("fast-deep-equal");require("date-fns");require("swr/infinite");const _=require("swr"),g=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},k=g(_),M="MS_TEAMS_CONNECTED_CHANNELS";function D({msTeamsChannelsRecipientObject:{objectId:e,collection:a}}){const{t:l}=E.useTranslations(),r=T.useKnockClient(),{connectionStatus:d,knockMsTeamsChannelId:s}=S.useKnockMsTeamsClient(),[C,c]=i.useState(null),[h,o]=i.useState(!1),{data:p,mutate:m,isValidating:f,isLoading:q}=k.default(d==="connected"?[M,s,a,e]:null,async()=>r.objects.getChannelData({collection:a,objectId:e,channelId:s}).then(t=>{var n;return((n=t.data)==null?void 0:n.connections)??[]}).catch(()=>[]),{onSuccess:()=>{c(null)}});return{data:p??null,updateConnectedChannels:async t=>{o(!0);try{await m(()=>r.objects.setChannelData({objectId:e,collection:a,channelId:s,data:{connections:t}}).then(n=>{var u;return((u=n.data)==null?void 0:u.connections)??[]}),{populateCache:!0,revalidate:!1,optimisticData:t})}catch{c(l("msTeamsChannelSetError")||"")}o(!1)},updating:h,loading:q||f,error:C}}module.exports=D;
|
|
2
2
|
//# sourceMappingURL=useConnectedMsTeamsChannels.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const m=require("../context/KnockMsTeamsProvider.js"),o=require("react");require("../../i18n/context/KnockI18nProvider.js");const T=require("@knocklabs/client"),_=require("../../core/context/KnockProvider.js");require("
|
|
1
|
+
"use strict";const m=require("../context/KnockMsTeamsProvider.js"),o=require("react");require("../../i18n/context/KnockI18nProvider.js");const T=require("@knocklabs/client"),_=require("../../core/context/KnockProvider.js");require("fast-deep-equal");require("date-fns");require("swr/infinite");require("swr");const d="https://login.microsoftonline.com/organizations/adminconsent",h="/providers/ms-teams/authenticate";function C(c,i){const e=_.useKnockClient(),{setConnectionStatus:n,knockMsTeamsChannelId:t,tenantId:s,setActionLabel:a}=m.useKnockMsTeamsClient(),u=o.useMemo(()=>e.host+h,[e.host]),k=o.useCallback(()=>{const r={state:JSON.stringify({redirect_url:i,ms_teams_tenant_object:{object_id:s,collection:T.TENANT_OBJECT_COLLECTION},channel_id:t,public_key:e.apiKey,user_token:e.userToken}),client_id:c,redirect_uri:u};return`${d}?${new URLSearchParams(r)}`},[i,s,t,e.apiKey,e.userToken,c,u]),l=o.useCallback(async()=>{a(null),n("disconnecting");try{const r=await e.msTeams.revokeAccessToken({tenant:s,knockChannelId:t});n(r==="ok"?"disconnected":"error")}catch{n("error")}},[n,e.msTeams,s,t,a]);return{buildMsTeamsAuthUrl:k,disconnectFromMsTeams:l}}module.exports=C;
|
|
2
2
|
//# sourceMappingURL=useMsTeamsAuth.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const u=require("swr"),f=require("../../core/context/KnockProvider.js");require("@knocklabs/client");require("react");require("
|
|
1
|
+
"use strict";const u=require("swr"),f=require("../../core/context/KnockProvider.js");require("@knocklabs/client");require("react");require("fast-deep-equal");require("date-fns");const d=require("../context/KnockMsTeamsProvider.js"),k=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},C=k(u),h="MS_TEAMS_CHANNELS";function m({teamId:e,queryOptions:n}){const t=f.useKnockClient(),{knockMsTeamsChannelId:a,tenantId:c}=d.useKnockMsTeamsClient(),l=()=>t.msTeams.getChannels({knockChannelId:a,tenant:c,teamId:e,queryOptions:{$filter:n==null?void 0:n.filter,$select:n==null?void 0:n.select}}),{data:s,isLoading:o,isValidating:r,mutate:i}=C.default(e?[h,e]:null,l,{revalidateOnFocus:!1});return{data:(s==null?void 0:s.ms_teams_channels)??[],isLoading:o||r,refetch:()=>i()}}module.exports=m;
|
|
2
2
|
//# sourceMappingURL=useMsTeamsChannels.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const r=require("react"),S=require("swr/infinite"),h=require("../../core/context/KnockProvider.js");require("@knocklabs/client");require("
|
|
1
|
+
"use strict";const r=require("react"),S=require("swr/infinite"),h=require("../../core/context/KnockProvider.js");require("@knocklabs/client");require("fast-deep-equal");require("date-fns");const g=require("../context/KnockMsTeamsProvider.js"),E=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},I=E(S),P=1e3,_="MS_TEAMS_TEAMS";function x(e,n){return e===0?[_,""]:n&&["",null].includes(n.skip_token)?null:[_,n.skip_token??""]}function R({queryOptions:e={}}){const n=h.useKnockClient(),{knockMsTeamsChannelId:u,tenantId:T,connectionStatus:l}=g.useKnockMsTeamsClient(),M=t=>n.msTeams.getTeams({knockChannelId:u,tenant:T,queryOptions:{$skiptoken:t==null?void 0:t[1],$top:e==null?void 0:e.limitPerPage,$filter:e==null?void 0:e.filter,$select:e==null?void 0:e.select}}),{data:s,error:o,isLoading:c,isValidating:a,setSize:f,mutate:C}=I.default(x,M,{initialSize:0,revalidateOnFocus:!1,revalidateFirstPage:!1}),m=s==null?void 0:s.at(-1),k=m===void 0||!!m.skip_token,i=r.useMemo(()=>(s??[]).flatMap(t=>t==null?void 0:t.ms_teams_teams).filter(t=>!!t),[s]),d=(e==null?void 0:e.maxCount)||P;return r.useEffect(()=>{l==="connected"&&!o&&k&&!c&&!a&&i.length<d&&f(t=>t+1)},[i.length,f,k,c,a,d,o,l]),{data:i,isLoading:c||a,refetch:()=>C()}}module.exports=R;
|
|
2
2
|
//# sourceMappingURL=useMsTeamsTeams.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMsTeamsTeams.js","sources":["../../../../../src/modules/ms-teams/hooks/useMsTeamsTeams.ts"],"sourcesContent":["import { GetMsTeamsTeamsResponse, MsTeamsTeam } from \"@knocklabs/client\";\nimport { useEffect, useMemo } from \"react\";\nimport useSWRInfinite from \"swr/infinite\";\n\nimport { useKnockClient } from \"../../core\";\nimport { useKnockMsTeamsClient } from \"../context\";\nimport { MsTeamsTeamQueryOptions } from \"../interfaces\";\n\nconst MAX_COUNT = 1000;\n\nconst QUERY_KEY = \"MS_TEAMS_TEAMS\";\n\ntype
|
|
1
|
+
{"version":3,"file":"useMsTeamsTeams.js","sources":["../../../../../src/modules/ms-teams/hooks/useMsTeamsTeams.ts"],"sourcesContent":["import { GetMsTeamsTeamsResponse, MsTeamsTeam } from \"@knocklabs/client\";\nimport { useEffect, useMemo } from \"react\";\nimport useSWRInfinite from \"swr/infinite\";\n\nimport { useKnockClient } from \"../../core\";\nimport { useKnockMsTeamsClient } from \"../context\";\nimport { MsTeamsTeamQueryOptions } from \"../interfaces\";\n\nconst MAX_COUNT = 1000;\n\nconst QUERY_KEY = \"MS_TEAMS_TEAMS\";\n\ntype UseMsTeamsTeamsOptions = {\n queryOptions?: MsTeamsTeamQueryOptions;\n};\n\ntype UseMsTeamsTeamsOutput = {\n data: MsTeamsTeam[];\n isLoading: boolean;\n refetch: () => void;\n};\n\ntype QueryKey = [key: string, skiptoken: string] | null;\n\nfunction getQueryKey(\n pageIndex: number,\n previousPageData: GetMsTeamsTeamsResponse,\n): QueryKey {\n // First page so just pass empty\n if (pageIndex === 0) {\n return [QUERY_KEY, \"\"];\n }\n\n // If there's no more data then return an empty next skiptoken\n if (previousPageData && [\"\", null].includes(previousPageData.skip_token)) {\n return null;\n }\n\n // Next skiptoken exists so pass it\n return [QUERY_KEY, previousPageData.skip_token ?? \"\"];\n}\n\nfunction useMsTeamsTeams({\n queryOptions = {},\n}: UseMsTeamsTeamsOptions): UseMsTeamsTeamsOutput {\n const knock = useKnockClient();\n const { knockMsTeamsChannelId, tenantId, connectionStatus } =\n useKnockMsTeamsClient();\n\n const fetchTeams = (queryKey: QueryKey) =>\n knock.msTeams.getTeams({\n knockChannelId: knockMsTeamsChannelId,\n tenant: tenantId,\n queryOptions: {\n $skiptoken: queryKey?.[1],\n $top: queryOptions?.limitPerPage,\n $filter: queryOptions?.filter,\n $select: queryOptions?.select,\n },\n });\n\n const { data, error, isLoading, isValidating, setSize, mutate } =\n useSWRInfinite<GetMsTeamsTeamsResponse>(getQueryKey, fetchTeams, {\n initialSize: 0,\n revalidateOnFocus: false,\n revalidateFirstPage: false,\n });\n\n const lastPage = data?.at(-1);\n const hasNextPage = lastPage === undefined || !!lastPage.skip_token;\n\n const teams = useMemo(\n () =>\n (data ?? [])\n .flatMap((page) => page?.ms_teams_teams)\n .filter((team) => !!team),\n [data],\n );\n\n const maxCount = queryOptions?.maxCount || MAX_COUNT;\n\n useEffect(() => {\n if (\n connectionStatus === \"connected\" &&\n !error &&\n hasNextPage &&\n !isLoading &&\n !isValidating &&\n teams.length < maxCount\n ) {\n // Fetch a page at a time until we have nothing else left to fetch\n // or we've already hit the max amount of teams to fetch\n setSize((size) => size + 1);\n }\n }, [\n teams.length,\n setSize,\n hasNextPage,\n isLoading,\n isValidating,\n maxCount,\n error,\n connectionStatus,\n ]);\n\n return {\n data: teams,\n isLoading: isLoading || isValidating,\n refetch: () => mutate(),\n };\n}\n\nexport default useMsTeamsTeams;\n"],"names":["MAX_COUNT","QUERY_KEY","getQueryKey","pageIndex","previousPageData","includes","skip_token","useMsTeamsTeams","queryOptions","knock","useKnockClient","knockMsTeamsChannelId","tenantId","connectionStatus","useKnockMsTeamsClient","fetchTeams","queryKey","msTeams","getTeams","knockChannelId","tenant","$skiptoken","$top","limitPerPage","$filter","filter","$select","select","data","error","isLoading","isValidating","setSize","mutate","useSWRInfinite","initialSize","revalidateOnFocus","revalidateFirstPage","lastPage","at","hasNextPage","undefined","teams","useMemo","flatMap","page","ms_teams_teams","team","maxCount","useEffect","length","size","refetch"],"mappings":"kTAQMA,EAAY,IAEZC,EAAY,iBAclB,SAASC,EACPC,EACAC,EACU,CAEV,OAAID,IAAc,EACT,CAACF,EAAW,EAAE,EAInBG,GAAoB,CAAC,GAAI,IAAI,EAAEC,SAASD,EAAiBE,UAAU,EAC9D,KAIF,CAACL,EAAWG,EAAiBE,YAAc,EAAE,CACtD,CAEA,SAASC,EAAgB,CACvBC,aAAAA,EAAe,CAAA,CACO,EAA0B,CAChD,MAAMC,EAAQC,EAAAA,eAAe,EACvB,CAAEC,sBAAAA,EAAuBC,SAAAA,EAAUC,iBAAAA,GACvCC,wBAAsB,EAElBC,EAAcC,GAClBP,EAAMQ,QAAQC,SAAS,CACrBC,eAAgBR,EAChBS,OAAQR,EACRJ,aAAc,CACZa,WAAYL,GAAAA,YAAAA,EAAW,GACvBM,KAAMd,GAAAA,YAAAA,EAAce,aACpBC,QAAShB,GAAAA,YAAAA,EAAciB,OACvBC,QAASlB,GAAAA,YAAAA,EAAcmB,MAAAA,CACzB,CACD,EAEG,CAAEC,KAAAA,EAAMC,MAAAA,EAAOC,UAAAA,EAAWC,aAAAA,EAAcC,QAAAA,EAASC,OAAAA,CAAAA,EACrDC,EAAwChC,QAAAA,EAAaa,EAAY,CAC/DoB,YAAa,EACbC,kBAAmB,GACnBC,oBAAqB,EAAA,CACtB,EAEGC,EAAWV,GAAAA,YAAAA,EAAMW,GAAG,IACpBC,EAAcF,IAAaG,QAAa,CAAC,CAACH,EAAShC,WAEnDoC,EAAQC,EAAAA,QACZ,KACGf,GAAQ,IACNgB,QAAkBC,GAAAA,GAAAA,YAAAA,EAAMC,cAAc,EACtCrB,UAAiB,CAAC,CAACsB,CAAI,EAC5B,CAACnB,CAAI,CACP,EAEMoB,GAAWxC,GAAAA,YAAAA,EAAcwC,WAAYhD,EAE3CiD,OAAAA,EAAAA,UAAU,IAAM,CAEZpC,IAAqB,aACrB,CAACgB,GACDW,GACA,CAACV,GACD,CAACC,GACDW,EAAMQ,OAASF,GAING,EAAAA,GAASA,EAAO,CAAC,CAE9B,EAAG,CACDT,EAAMQ,OACNlB,EACAQ,EACAV,EACAC,EACAiB,EACAnB,EACAhB,CAAgB,CACjB,EAEM,CACLe,KAAMc,EACNZ,UAAWA,GAAaC,EACxBqB,QAASA,IAAMnB,EAAO,CACxB,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("../hooks/useSlackConnectionStatus.js"),b=require("react");require("swr/infinite");const f=require("../../core/context/KnockProvider.js");require("@knocklabs/client");require("
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("../hooks/useSlackConnectionStatus.js"),b=require("react");require("swr/infinite");const f=require("../../core/context/KnockProvider.js");require("@knocklabs/client");require("fast-deep-equal");const v=require("../../core/utils.js");require("swr");require("../../i18n/context/KnockI18nProvider.js");function C(e){if(e&&typeof e=="object"&&"default"in e)return e;const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const o=C(b),i=o.createContext(null),P=e=>{const{knockSlackChannelId:t,children:r}=e,n="tenantId"in e?e.tenantId:e.tenant,u=f.useKnockClient(),{connectionStatus:c,setConnectionStatus:l,errorLabel:a,setErrorLabel:s,actionLabel:k,setActionLabel:d}=S(u,t,n);return o.createElement(i.Provider,{key:v.slackProviderKey({knockSlackChannelId:t,tenantId:n,connectionStatus:c,errorLabel:a}),value:{connectionStatus:c,setConnectionStatus:l,errorLabel:a,setErrorLabel:s,actionLabel:k,setActionLabel:d,knockSlackChannelId:t,tenant:n,tenantId:n}},r)},q=()=>{const e=o.useContext(i);if(e===void 0)throw new Error("useKnockSlackClient must be used within a KnockSlackProvider");return e};exports.KnockSlackProvider=P;exports.useKnockSlackClient=q;
|
|
2
2
|
//# sourceMappingURL=KnockSlackProvider.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const q=require("../context/KnockSlackProvider.js"),i=require("react");require("../../i18n/context/KnockI18nProvider.js");const g=require("../../i18n/hooks/useTranslations.js");require("swr/infinite");const E=require("../../core/context/KnockProvider.js");require("@knocklabs/client");require("
|
|
1
|
+
"use strict";const q=require("../context/KnockSlackProvider.js"),i=require("react");require("../../i18n/context/KnockI18nProvider.js");const g=require("../../i18n/hooks/useTranslations.js");require("swr/infinite");const E=require("../../core/context/KnockProvider.js");require("@knocklabs/client");require("fast-deep-equal");require("date-fns");const _=require("swr"),D=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},K=D(_),R="SLACK_CONNECTED_CHANNELS";function y({slackChannelsRecipientObject:{objectId:e,collection:a}}){const{t:l}=g.useTranslations(),c=E.useKnockClient(),{connectionStatus:d,knockSlackChannelId:s}=q.useKnockSlackClient(),[C,r]=i.useState(null),[h,o]=i.useState(!1),{data:k,mutate:p,isValidating:S,isLoading:f}=K.default(d==="connected"?[R,s,a,e]:null,async()=>c.objects.getChannelData({collection:a,objectId:e,channelId:s}).then(t=>{var n;return((n=t.data)==null?void 0:n.connections)??[]}).catch(()=>[]),{onSuccess:()=>{r(null)}});return{data:k??null,updateConnectedChannels:async t=>{o(!0);try{await p(()=>c.objects.setChannelData({objectId:e,collection:a,channelId:s,data:{connections:t}}).then(n=>{var u;return((u=n.data)==null?void 0:u.connections)??[]}),{populateCache:!0,revalidate:!1,optimisticData:t})}catch{r(l("slackChannelSetError")||"")}o(!1)},updating:h,loading:f||S,error:C}}module.exports=y;
|
|
2
2
|
//# sourceMappingURL=useConnectedSlackChannels.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const _=require("../context/KnockSlackProvider.js"),k=require("react");require("../../i18n/context/KnockI18nProvider.js");require("swr/infinite");const S=require("../../core/context/KnockProvider.js"),d=require("@knocklabs/client");require("
|
|
1
|
+
"use strict";const _=require("../context/KnockSlackProvider.js"),k=require("react");require("../../i18n/context/KnockI18nProvider.js");require("swr/infinite");const S=require("../../core/context/KnockProvider.js"),d=require("@knocklabs/client");require("fast-deep-equal");require("date-fns");require("swr");const C="https://slack.com/oauth/v2/authorize",l=["chat:write","chat:write.public","channels:read","groups:read"];function A(s,a,o){const e=S.useKnockClient(),{setConnectionStatus:c,knockSlackChannelId:n,tenantId:r,setActionLabel:i}=_.useKnockSlackClient(),u=o&&o.length>0?Array.from(new Set(l.concat(o))):l,h=k.useCallback(async()=>{i(null),c("disconnecting");try{const t=await e.slack.revokeAccessToken({tenant:r,knockChannelId:n});c(t==="ok"?"disconnected":"error")}catch{c("error")}},[c,e.slack,r,n,i]);return{buildSlackAuthUrl:k.useCallback(()=>{const t={state:JSON.stringify({redirect_url:a,access_token_object:{object_id:r,collection:d.TENANT_OBJECT_COLLECTION},channel_id:n,public_key:e.apiKey,user_token:e.userToken}),client_id:s,scope:u.join(",")};return`${C}?${new URLSearchParams(t)}`},[a,r,n,e.apiKey,e.userToken,s,u]),disconnectFromSlack:h}}module.exports=A;
|
|
2
2
|
//# sourceMappingURL=useSlackAuth.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const P=require("../context/KnockSlackProvider.js"),d=require("react");require("../../i18n/context/KnockI18nProvider.js");const
|
|
1
|
+
"use strict";const P=require("../context/KnockSlackProvider.js"),d=require("react");require("../../i18n/context/KnockI18nProvider.js");const m=require("swr/infinite"),x=require("../../core/context/KnockProvider.js");require("@knocklabs/client");require("fast-deep-equal");require("date-fns");require("swr");const I=n=>n&&typeof n=="object"&&"default"in n?n:{default:n},L=I(m),N=1e3,g=200,A="private_channel,public_channel",C="SLACK_CHANNELS";function R(n,e){return n===0?[C,""]:e&&["",null].includes(e.next_cursor)?null:[C,e.next_cursor??""]}function M({queryOptions:n}){const e=x.useKnockClient(),{knockSlackChannelId:_,tenantId:h,connectionStatus:i}=P.useKnockSlackClient(),S=t=>e.slack.getChannels({tenant:h,knockChannelId:_,queryOptions:{...n,cursor:t==null?void 0:t[1],limit:(n==null?void 0:n.limitPerPage)||g,types:(n==null?void 0:n.types)||A}}),{data:c,error:r,isLoading:l,isValidating:a,setSize:o,mutate:E}=L.default(R,S,{initialSize:0,revalidateFirstPage:!1}),u=c==null?void 0:c.at(-1),f=u===void 0||!!u.next_cursor,s=d.useMemo(()=>(c??[]).flatMap(t=>t==null?void 0:t.slack_channels).filter(t=>!!t),[c]),k=(n==null?void 0:n.maxCount)||N;return d.useEffect(()=>{i==="connected"&&!r&&f&&!l&&!a&&s.length<k&&o(t=>t+1)},[s.length,o,f,l,a,k,r,i]),{data:s,isLoading:l||a,refetch:()=>E()}}module.exports=M;
|
|
2
2
|
//# sourceMappingURL=useSlackChannels.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSlackChannels.js","sources":["../../../../../src/modules/slack/hooks/useSlackChannels.ts"],"sourcesContent":["import { SlackChannelQueryOptions, useKnockSlackClient } from \"..\";\nimport { GetSlackChannelsResponse, SlackChannel } from \"@knocklabs/client\";\nimport { useEffect, useMemo } from \"react\";\nimport useSWRInfinite from \"swr/infinite\";\n\nimport { useKnockClient } from \"../../core\";\n\nconst MAX_COUNT = 1000;\nconst LIMIT_PER_PAGE = 200;\nconst CHANNEL_TYPES = \"private_channel,public_channel\";\n\nconst QUERY_KEY = \"SLACK_CHANNELS\";\n\ntype
|
|
1
|
+
{"version":3,"file":"useSlackChannels.js","sources":["../../../../../src/modules/slack/hooks/useSlackChannels.ts"],"sourcesContent":["import { SlackChannelQueryOptions, useKnockSlackClient } from \"..\";\nimport { GetSlackChannelsResponse, SlackChannel } from \"@knocklabs/client\";\nimport { useEffect, useMemo } from \"react\";\nimport useSWRInfinite from \"swr/infinite\";\n\nimport { useKnockClient } from \"../../core\";\n\nconst MAX_COUNT = 1000;\nconst LIMIT_PER_PAGE = 200;\nconst CHANNEL_TYPES = \"private_channel,public_channel\";\n\nconst QUERY_KEY = \"SLACK_CHANNELS\";\n\ntype UseSlackChannelsOptions = {\n queryOptions?: SlackChannelQueryOptions;\n};\n\ntype UseSlackChannelOutput = {\n data: SlackChannel[];\n isLoading: boolean;\n refetch: () => void;\n};\n\ntype QueryKey = [key: string, cursor: string] | null;\n\nfunction getQueryKey(\n pageIndex: number,\n previousPageData: GetSlackChannelsResponse,\n): QueryKey {\n // First page so just pass empty\n if (pageIndex === 0) {\n return [QUERY_KEY, \"\"];\n }\n\n // If there's no more data then return an empty next cursor\n if (previousPageData && [\"\", null].includes(previousPageData.next_cursor)) {\n return null;\n }\n\n // Next cursor exists so pass it\n return [QUERY_KEY, previousPageData.next_cursor ?? \"\"];\n}\n\nfunction useSlackChannels({\n queryOptions,\n}: UseSlackChannelsOptions): UseSlackChannelOutput {\n const knock = useKnockClient();\n const { knockSlackChannelId, tenantId, connectionStatus } =\n useKnockSlackClient();\n\n const fetchChannels = (queryKey: QueryKey) => {\n return knock.slack.getChannels({\n tenant: tenantId,\n knockChannelId: knockSlackChannelId,\n queryOptions: {\n ...queryOptions,\n cursor: queryKey?.[1],\n limit: queryOptions?.limitPerPage || LIMIT_PER_PAGE,\n types: queryOptions?.types || CHANNEL_TYPES,\n },\n });\n };\n\n const { data, error, isLoading, isValidating, setSize, mutate } =\n useSWRInfinite<GetSlackChannelsResponse>(getQueryKey, fetchChannels, {\n initialSize: 0,\n revalidateFirstPage: false,\n });\n\n const lastPage = data?.at(-1);\n const hasNextPage = lastPage === undefined || !!lastPage.next_cursor;\n\n const slackChannels: SlackChannel[] = useMemo(\n () =>\n (data ?? [])\n .flatMap((page) => page?.slack_channels)\n .filter((channel) => !!channel),\n [data],\n );\n\n const maxCount = queryOptions?.maxCount || MAX_COUNT;\n\n useEffect(() => {\n if (\n connectionStatus === \"connected\" &&\n !error &&\n hasNextPage &&\n !isLoading &&\n !isValidating &&\n slackChannels.length < maxCount\n ) {\n // Fetch a page at a time until we have nothing else left to fetch\n // or we've already hit the max amount of channels to fetch\n setSize((size) => size + 1);\n }\n }, [\n slackChannels.length,\n setSize,\n hasNextPage,\n isLoading,\n isValidating,\n maxCount,\n error,\n connectionStatus,\n ]);\n\n return {\n data: slackChannels,\n isLoading: isLoading || isValidating,\n refetch: () => mutate(),\n };\n}\n\nexport default useSlackChannels;\n"],"names":["MAX_COUNT","LIMIT_PER_PAGE","CHANNEL_TYPES","QUERY_KEY","getQueryKey","pageIndex","previousPageData","includes","next_cursor","useSlackChannels","queryOptions","knock","useKnockClient","knockSlackChannelId","tenantId","connectionStatus","useKnockSlackClient","fetchChannels","queryKey","slack","getChannels","tenant","knockChannelId","cursor","limit","limitPerPage","types","data","error","isLoading","isValidating","setSize","mutate","useSWRInfinite","initialSize","revalidateFirstPage","lastPage","at","hasNextPage","undefined","slackChannels","useMemo","flatMap","page","slack_channels","filter","channel","maxCount","useEffect","length","size","refetch"],"mappings":"wXAOMA,EAAY,IACZC,EAAiB,IACjBC,EAAgB,iCAEhBC,EAAY,iBAclB,SAASC,EACPC,EACAC,EACU,CAEV,OAAID,IAAc,EACT,CAACF,EAAW,EAAE,EAInBG,GAAoB,CAAC,GAAI,IAAI,EAAEC,SAASD,EAAiBE,WAAW,EAC/D,KAIF,CAACL,EAAWG,EAAiBE,aAAe,EAAE,CACvD,CAEA,SAASC,EAAiB,CACxBC,aAAAA,CACuB,EAA0B,CACjD,MAAMC,EAAQC,EAAAA,eAAe,EACvB,CAAEC,oBAAAA,EAAqBC,SAAAA,EAAUC,iBAAAA,GACrCC,sBAAoB,EAEhBC,EAAiBC,GACdP,EAAMQ,MAAMC,YAAY,CAC7BC,OAAQP,EACRQ,eAAgBT,EAChBH,aAAc,CACZ,GAAGA,EACHa,OAAQL,GAAAA,YAAAA,EAAW,GACnBM,OAAOd,GAAAA,YAAAA,EAAce,eAAgBxB,EACrCyB,OAAOhB,GAAAA,YAAAA,EAAcgB,QAASxB,CAAAA,CAChC,CACD,EAGG,CAAEyB,KAAAA,EAAMC,MAAAA,EAAOC,UAAAA,EAAWC,aAAAA,EAAcC,QAAAA,EAASC,OAAAA,CAAAA,EACrDC,EAAyC7B,QAAAA,EAAaa,EAAe,CACnEiB,YAAa,EACbC,oBAAqB,EAAA,CACtB,EAEGC,EAAWT,GAAAA,YAAAA,EAAMU,GAAG,IACpBC,EAAcF,IAAaG,QAAa,CAAC,CAACH,EAAS5B,YAEnDgC,EAAgCC,EAAAA,QACpC,KACGd,GAAQ,IACNe,QAAkBC,GAAAA,GAAAA,YAAAA,EAAMC,cAAc,EACtCC,UAAoB,CAAC,CAACC,CAAO,EAClC,CAACnB,CAAI,CACP,EAEMoB,GAAWrC,GAAAA,YAAAA,EAAcqC,WAAY/C,EAE3CgD,OAAAA,EAAAA,UAAU,IAAM,CAEZjC,IAAqB,aACrB,CAACa,GACDU,GACA,CAACT,GACD,CAACC,GACDU,EAAcS,OAASF,GAIdG,EAAAA,GAASA,EAAO,CAAC,CAE9B,EAAG,CACDV,EAAcS,OACdlB,EACAO,EACAT,EACAC,EACAiB,EACAnB,EACAb,CAAgB,CACjB,EAEM,CACLY,KAAMa,EACNX,UAAWA,GAAaC,EACxBqB,QAASA,IAAMnB,EAAO,CACxB,CACF"}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1,61 +1,66 @@
|
|
|
1
1
|
import { KnockProvider as t, useKnockClient as r } from "./modules/core/context/KnockProvider.mjs";
|
|
2
|
-
import { default as
|
|
2
|
+
import { default as a } from "./modules/core/hooks/useAuthenticatedKnockClient.mjs";
|
|
3
3
|
import { default as f } from "./modules/core/hooks/useStableOptions.mjs";
|
|
4
4
|
import { FilterStatus as m } from "./modules/core/constants.mjs";
|
|
5
|
-
import { feedProviderKey as
|
|
6
|
-
import { KnockFeedProvider as
|
|
5
|
+
import { feedProviderKey as l, formatBadgeCount as i, formatTimestamp as c, msTeamsProviderKey as p, renderNodeOrFallback as x, slackProviderKey as k, toSentenceCase as C } from "./modules/core/utils.mjs";
|
|
6
|
+
import { KnockFeedProvider as S, useKnockFeed as T } from "./modules/feed/context/KnockFeedProvider.mjs";
|
|
7
7
|
import { default as P } from "./modules/feed/hooks/useNotifications.mjs";
|
|
8
8
|
import { default as M } from "./modules/feed/hooks/useFeedSettings.mjs";
|
|
9
9
|
import { useCreateNotificationStore as N, default as y } from "./modules/feed/hooks/useNotificationStore.mjs";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { default as w } from "./modules/ms-teams/hooks/
|
|
14
|
-
import { default as D } from "./modules/ms-teams/hooks/
|
|
15
|
-
import { default as
|
|
16
|
-
import {
|
|
17
|
-
import { default as R } from "./modules/
|
|
18
|
-
import {
|
|
19
|
-
import { default as
|
|
20
|
-
import { default as
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
10
|
+
import { KnockGuideContext as G, KnockGuideProvider as b } from "./modules/guide/context/KnockGuideProvider.mjs";
|
|
11
|
+
import { useGuide as I } from "./modules/guide/hooks/useGuide.mjs";
|
|
12
|
+
import { KnockMsTeamsProvider as B, useKnockMsTeamsClient as j } from "./modules/ms-teams/context/KnockMsTeamsProvider.mjs";
|
|
13
|
+
import { default as w } from "./modules/ms-teams/hooks/useMsTeamsConnectionStatus.mjs";
|
|
14
|
+
import { default as D } from "./modules/ms-teams/hooks/useMsTeamsAuth.mjs";
|
|
15
|
+
import { default as H } from "./modules/ms-teams/hooks/useMsTeamsTeams.mjs";
|
|
16
|
+
import { default as L } from "./modules/ms-teams/hooks/useMsTeamsChannels.mjs";
|
|
17
|
+
import { default as R } from "./modules/ms-teams/hooks/useConnectedMsTeamsChannels.mjs";
|
|
18
|
+
import { KnockSlackProvider as V, useKnockSlackClient as W } from "./modules/slack/context/KnockSlackProvider.mjs";
|
|
19
|
+
import { default as Y } from "./modules/slack/hooks/useSlackConnectionStatus.mjs";
|
|
20
|
+
import { default as _ } from "./modules/slack/hooks/useSlackChannels.mjs";
|
|
21
|
+
import { default as ee } from "./modules/slack/hooks/useConnectedSlackChannels.mjs";
|
|
22
|
+
import { default as te } from "./modules/slack/hooks/useSlackAuth.mjs";
|
|
23
|
+
import { I18nContext as se, KnockI18nProvider as ae } from "./modules/i18n/context/KnockI18nProvider.mjs";
|
|
24
|
+
import { useTranslations as fe } from "./modules/i18n/hooks/useTranslations.mjs";
|
|
25
|
+
import { locales as me } from "./modules/i18n/languages/index.mjs";
|
|
24
26
|
export {
|
|
25
27
|
m as FilterStatus,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
b as
|
|
28
|
+
se as I18nContext,
|
|
29
|
+
S as KnockFeedProvider,
|
|
30
|
+
G as KnockGuideContext,
|
|
31
|
+
b as KnockGuideProvider,
|
|
32
|
+
ae as KnockI18nProvider,
|
|
33
|
+
B as KnockMsTeamsProvider,
|
|
30
34
|
t as KnockProvider,
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
V as KnockSlackProvider,
|
|
36
|
+
l as feedProviderKey,
|
|
33
37
|
i as formatBadgeCount,
|
|
34
38
|
c as formatTimestamp,
|
|
35
|
-
|
|
39
|
+
me as locales,
|
|
36
40
|
p as msTeamsProviderKey,
|
|
37
41
|
x as renderNodeOrFallback,
|
|
38
42
|
k as slackProviderKey,
|
|
39
43
|
C as toSentenceCase,
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
44
|
+
a as useAuthenticatedKnockClient,
|
|
45
|
+
R as useConnectedMsTeamsChannels,
|
|
46
|
+
ee as useConnectedSlackChannels,
|
|
43
47
|
N as useCreateNotificationStore,
|
|
44
48
|
M as useFeedSettings,
|
|
49
|
+
I as useGuide,
|
|
45
50
|
r as useKnockClient,
|
|
46
51
|
T as useKnockFeed,
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
52
|
+
j as useKnockMsTeamsClient,
|
|
53
|
+
W as useKnockSlackClient,
|
|
54
|
+
D as useMsTeamsAuth,
|
|
55
|
+
L as useMsTeamsChannels,
|
|
56
|
+
w as useMsTeamsConnectionStatus,
|
|
57
|
+
H as useMsTeamsTeams,
|
|
53
58
|
y as useNotificationStore,
|
|
54
59
|
P as useNotifications,
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
60
|
+
te as useSlackAuth,
|
|
61
|
+
_ as useSlackChannels,
|
|
62
|
+
Y as useSlackConnectionStatus,
|
|
58
63
|
f as useStableOptions,
|
|
59
|
-
|
|
64
|
+
fe as useTranslations
|
|
60
65
|
};
|
|
61
66
|
//# sourceMappingURL=index.mjs.map
|
package/dist/esm/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
import * as t from "react";
|
|
2
|
-
import { KnockI18nProvider as
|
|
3
|
-
import
|
|
4
|
-
import "
|
|
5
|
-
const
|
|
2
|
+
import { KnockI18nProvider as d } from "../../i18n/context/KnockI18nProvider.mjs";
|
|
3
|
+
import l from "../hooks/useAuthenticatedKnockClient.mjs";
|
|
4
|
+
import "fast-deep-equal";
|
|
5
|
+
const u = t.createContext(null), P = ({
|
|
6
6
|
apiKey: e,
|
|
7
7
|
host: o,
|
|
8
8
|
logLevel: n,
|
|
9
|
-
userId:
|
|
9
|
+
userId: i,
|
|
10
10
|
userToken: s,
|
|
11
11
|
onUserTokenExpiring: r,
|
|
12
12
|
timeBeforeExpirationInMs: c,
|
|
13
|
-
children:
|
|
13
|
+
children: k,
|
|
14
14
|
i18n: m
|
|
15
15
|
}) => {
|
|
16
|
-
const
|
|
16
|
+
const a = t.useMemo(() => ({
|
|
17
17
|
host: o,
|
|
18
18
|
onUserTokenExpiring: r,
|
|
19
19
|
timeBeforeExpirationInMs: c,
|
|
20
20
|
logLevel: n
|
|
21
|
-
}), [o, r, c, n]),
|
|
22
|
-
return /* @__PURE__ */ t.createElement(
|
|
23
|
-
knock:
|
|
24
|
-
} }, /* @__PURE__ */ t.createElement(
|
|
21
|
+
}), [o, r, c, n]), K = l(e, i, s, a);
|
|
22
|
+
return /* @__PURE__ */ t.createElement(u.Provider, { value: {
|
|
23
|
+
knock: K
|
|
24
|
+
} }, /* @__PURE__ */ t.createElement(d, { i18n: m }, k));
|
|
25
25
|
}, f = () => {
|
|
26
|
-
const e = t.useContext(
|
|
27
|
-
if (e
|
|
28
|
-
throw new Error("
|
|
26
|
+
const e = t.useContext(u);
|
|
27
|
+
if (!e)
|
|
28
|
+
throw new Error("useKnockClient must be used within a KnockProvider");
|
|
29
29
|
return e.knock;
|
|
30
30
|
};
|
|
31
31
|
export {
|
|
32
|
-
|
|
32
|
+
P as KnockProvider,
|
|
33
33
|
f as useKnockClient
|
|
34
34
|
};
|
|
35
35
|
//# sourceMappingURL=KnockProvider.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KnockProvider.mjs","sources":["../../../../../src/modules/core/context/KnockProvider.tsx"],"sourcesContent":["import Knock, { AuthenticateOptions, LogLevel } from \"@knocklabs/client\";\nimport * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\n\nimport { I18nContent, KnockI18nProvider } from \"../../i18n\";\nimport { useAuthenticatedKnockClient } from \"../hooks\";\n\nexport interface KnockProviderState {\n knock: Knock;\n}\n\nconst
|
|
1
|
+
{"version":3,"file":"KnockProvider.mjs","sources":["../../../../../src/modules/core/context/KnockProvider.tsx"],"sourcesContent":["import Knock, { AuthenticateOptions, LogLevel } from \"@knocklabs/client\";\nimport * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\n\nimport { I18nContent, KnockI18nProvider } from \"../../i18n\";\nimport { useAuthenticatedKnockClient } from \"../hooks\";\n\nexport interface KnockProviderState {\n knock: Knock;\n}\n\nconst KnockContext = React.createContext<KnockProviderState | null>(null);\n\nexport interface KnockProviderProps {\n // Knock client props\n apiKey: string;\n host?: string;\n // Authentication props\n userId: Knock[\"userId\"];\n userToken?: Knock[\"userToken\"];\n onUserTokenExpiring?: AuthenticateOptions[\"onUserTokenExpiring\"];\n timeBeforeExpirationInMs?: AuthenticateOptions[\"timeBeforeExpirationInMs\"];\n // i18n translations\n i18n?: I18nContent;\n logLevel?: LogLevel;\n}\n\nexport const KnockProvider: React.FC<PropsWithChildren<KnockProviderProps>> = ({\n apiKey,\n host,\n logLevel,\n userId,\n userToken,\n onUserTokenExpiring,\n timeBeforeExpirationInMs,\n children,\n i18n,\n}) => {\n // We memoize the options here so that we don't create a new object on every re-render\n const authenticateOptions = React.useMemo(\n () => ({\n host,\n onUserTokenExpiring,\n timeBeforeExpirationInMs,\n logLevel,\n }),\n [host, onUserTokenExpiring, timeBeforeExpirationInMs, logLevel],\n );\n\n const knock = useAuthenticatedKnockClient(\n apiKey,\n userId,\n userToken,\n authenticateOptions,\n );\n\n return (\n <KnockContext.Provider\n value={{\n knock,\n }}\n >\n <KnockI18nProvider i18n={i18n}>{children}</KnockI18nProvider>\n </KnockContext.Provider>\n );\n};\n\nexport const useKnockClient = (): Knock => {\n const context = React.useContext(KnockContext);\n if (!context) {\n throw new Error(\"useKnockClient must be used within a KnockProvider\");\n }\n return context.knock;\n};\n"],"names":["KnockContext","React","createContext","KnockProvider","apiKey","host","logLevel","userId","userToken","onUserTokenExpiring","timeBeforeExpirationInMs","children","i18n","authenticateOptions","useMemo","knock","useAuthenticatedKnockClient","KnockI18nProvider","useKnockClient","context","useContext","Error"],"mappings":";;;;AAWA,MAAMA,IAAeC,EAAMC,cAAyC,IAAI,GAgB3DC,IAAiEA,CAAC;AAAA,EAC7EC,QAAAA;AAAAA,EACAC,MAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAC,QAAAA;AAAAA,EACAC,WAAAA;AAAAA,EACAC,qBAAAA;AAAAA,EACAC,0BAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAC,MAAAA;AACF,MAAM;AAEEC,QAAAA,IAAsBZ,EAAMa,QAChC,OAAO;AAAA,IACLT,MAAAA;AAAAA,IACAI,qBAAAA;AAAAA,IACAC,0BAAAA;AAAAA,IACAJ,UAAAA;AAAAA,MAEF,CAACD,GAAMI,GAAqBC,GAA0BJ,CAAQ,CAChE,GAEMS,IAAQC,EACZZ,GACAG,GACAC,GACAK,CACF;AAEA,SACG,gBAAAZ,EAAA,cAAAD,EAAa,UAAb,EACC,OAAO;AAAA,IACLe,OAAAA;AAAAA,EAAAA,EAGF,GAAA,gBAAAd,EAAA,cAACgB,GAAkB,EAAA,MAAAL,EAAA,GAAaD,CAAS,CAC3C;AAEJ,GAEaO,IAAiBA,MAAa;AACnCC,QAAAA,IAAUlB,EAAMmB,WAAWpB,CAAY;AAC7C,MAAI,CAACmB;AACG,UAAA,IAAIE,MAAM,oDAAoD;AAEtE,SAAOF,EAAQJ;AACjB;"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
function c(
|
|
4
|
-
const t =
|
|
5
|
-
return
|
|
6
|
-
const
|
|
7
|
-
return
|
|
8
|
-
}, [
|
|
1
|
+
import u from "fast-deep-equal";
|
|
2
|
+
import { useRef as n, useMemo as f } from "react";
|
|
3
|
+
function c(e) {
|
|
4
|
+
const t = n();
|
|
5
|
+
return f(() => {
|
|
6
|
+
const r = t.current;
|
|
7
|
+
return r && u(e, r) ? r : (t.current = e, e);
|
|
8
|
+
}, [e]);
|
|
9
9
|
}
|
|
10
10
|
export {
|
|
11
11
|
c as default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useStableOptions.mjs","sources":["../../../../../src/modules/core/hooks/useStableOptions.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"useStableOptions.mjs","sources":["../../../../../src/modules/core/hooks/useStableOptions.ts"],"sourcesContent":["import fastDeepEqual from \"fast-deep-equal\";\nimport { useMemo, useRef } from \"react\";\n\nexport default function useStableOptions<T>(options: T): T {\n const optionsRef = useRef<T>();\n\n return useMemo(() => {\n const currentOptions = optionsRef.current;\n\n if (currentOptions && fastDeepEqual(options, currentOptions)) {\n return currentOptions;\n }\n\n optionsRef.current = options;\n return options;\n }, [options]);\n}\n"],"names":["useStableOptions","options","optionsRef","useRef","useMemo","currentOptions","current","fastDeepEqual"],"mappings":";;AAGA,SAAwBA,EAAoBC,GAAe;AACzD,QAAMC,IAAaC,EAAU;AAE7B,SAAOC,EAAQ,MAAM;AACnB,UAAMC,IAAiBH,EAAWI;AAElC,WAAID,KAAkBE,EAAcN,GAASI,CAAc,IAClDA,KAGTH,EAAWI,UAAUL,GACdA;AAAAA,EAAAA,GACN,CAACA,CAAO,CAAC;AACd;"}
|