@knocklabs/react-core 0.3.0-rc.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/CHANGELOG.md +41 -4
  2. package/dist/cjs/index.js +1 -1
  3. package/dist/cjs/modules/core/context/KnockProvider.js +1 -1
  4. package/dist/cjs/modules/core/context/KnockProvider.js.map +1 -1
  5. package/dist/cjs/modules/core/hooks/useAuthenticatedKnockClient.js.map +1 -1
  6. package/dist/cjs/modules/core/utils.js +1 -1
  7. package/dist/cjs/modules/core/utils.js.map +1 -1
  8. package/dist/cjs/modules/feed/context/KnockFeedProvider.js +1 -1
  9. package/dist/cjs/modules/feed/context/KnockFeedProvider.js.map +1 -1
  10. package/dist/cjs/modules/i18n/languages/en.js +1 -1
  11. package/dist/cjs/modules/i18n/languages/en.js.map +1 -1
  12. package/dist/cjs/modules/i18n/languages/index.js.map +1 -1
  13. package/dist/cjs/modules/ms-teams/context/KnockMsTeamsProvider.js +2 -0
  14. package/dist/cjs/modules/ms-teams/context/KnockMsTeamsProvider.js.map +1 -0
  15. package/dist/cjs/modules/ms-teams/hooks/useMsTeamsAuth.js +2 -0
  16. package/dist/cjs/modules/ms-teams/hooks/useMsTeamsAuth.js.map +1 -0
  17. package/dist/cjs/modules/ms-teams/hooks/useMsTeamsConnectionStatus.js +2 -0
  18. package/dist/cjs/modules/ms-teams/hooks/useMsTeamsConnectionStatus.js.map +1 -0
  19. package/dist/cjs/modules/slack/hooks/useConnectedSlackChannels.js.map +1 -1
  20. package/dist/cjs/modules/slack/hooks/useSlackAuth.js +1 -1
  21. package/dist/cjs/modules/slack/hooks/useSlackAuth.js.map +1 -1
  22. package/dist/cjs/modules/slack/hooks/useSlackConnectionStatus.js.map +1 -1
  23. package/dist/esm/index.mjs +42 -40
  24. package/dist/esm/index.mjs.map +1 -1
  25. package/dist/esm/modules/core/context/KnockProvider.mjs +14 -14
  26. package/dist/esm/modules/core/context/KnockProvider.mjs.map +1 -1
  27. package/dist/esm/modules/core/hooks/useAuthenticatedKnockClient.mjs.map +1 -1
  28. package/dist/esm/modules/core/utils.mjs +13 -4
  29. package/dist/esm/modules/core/utils.mjs.map +1 -1
  30. package/dist/esm/modules/feed/context/KnockFeedProvider.mjs +13 -19
  31. package/dist/esm/modules/feed/context/KnockFeedProvider.mjs.map +1 -1
  32. package/dist/esm/modules/i18n/languages/en.mjs +9 -0
  33. package/dist/esm/modules/i18n/languages/en.mjs.map +1 -1
  34. package/dist/esm/modules/i18n/languages/index.mjs.map +1 -1
  35. package/dist/esm/modules/ms-teams/context/KnockMsTeamsProvider.mjs +45 -0
  36. package/dist/esm/modules/ms-teams/context/KnockMsTeamsProvider.mjs.map +1 -0
  37. package/dist/esm/modules/ms-teams/hooks/useMsTeamsAuth.mjs +51 -0
  38. package/dist/esm/modules/ms-teams/hooks/useMsTeamsAuth.mjs.map +1 -0
  39. package/dist/esm/modules/ms-teams/hooks/useMsTeamsConnectionStatus.mjs +38 -0
  40. package/dist/esm/modules/ms-teams/hooks/useMsTeamsConnectionStatus.mjs.map +1 -0
  41. package/dist/esm/modules/slack/hooks/useConnectedSlackChannels.mjs +2 -2
  42. package/dist/esm/modules/slack/hooks/useConnectedSlackChannels.mjs.map +1 -1
  43. package/dist/esm/modules/slack/hooks/useSlackAuth.mjs.map +1 -1
  44. package/dist/esm/modules/slack/hooks/useSlackConnectionStatus.mjs.map +1 -1
  45. package/dist/types/index.d.ts +1 -1
  46. package/dist/types/index.d.ts.map +1 -1
  47. package/dist/types/modules/core/context/KnockProvider.d.ts +2 -3
  48. package/dist/types/modules/core/context/KnockProvider.d.ts.map +1 -1
  49. package/dist/types/modules/core/hooks/useAuthenticatedKnockClient.d.ts +1 -2
  50. package/dist/types/modules/core/hooks/useAuthenticatedKnockClient.d.ts.map +1 -1
  51. package/dist/types/modules/core/utils.d.ts +8 -3
  52. package/dist/types/modules/core/utils.d.ts.map +1 -1
  53. package/dist/types/modules/feed/context/KnockFeedProvider.d.ts +0 -1
  54. package/dist/types/modules/feed/context/KnockFeedProvider.d.ts.map +1 -1
  55. package/dist/types/modules/feed/hooks/useFeedSettings.d.ts +0 -1
  56. package/dist/types/modules/feed/hooks/useNotificationStore.d.ts +0 -1
  57. package/dist/types/modules/feed/hooks/useNotifications.d.ts +0 -1
  58. package/dist/types/modules/i18n/context/KnockI18nProvider.d.ts +0 -1
  59. package/dist/types/modules/i18n/languages/de.d.ts +0 -1
  60. package/dist/types/modules/i18n/languages/en.d.ts +0 -1
  61. package/dist/types/modules/i18n/languages/en.d.ts.map +1 -1
  62. package/dist/types/modules/i18n/languages/index.d.ts +9 -0
  63. package/dist/types/modules/i18n/languages/index.d.ts.map +1 -1
  64. package/dist/types/modules/ms-teams/context/KnockMsTeamsProvider.d.ts +20 -0
  65. package/dist/types/modules/ms-teams/context/KnockMsTeamsProvider.d.ts.map +1 -0
  66. package/dist/types/modules/ms-teams/context/index.d.ts +2 -0
  67. package/dist/types/modules/ms-teams/context/index.d.ts.map +1 -0
  68. package/dist/types/modules/ms-teams/hooks/index.d.ts +3 -0
  69. package/dist/types/modules/ms-teams/hooks/index.d.ts.map +1 -0
  70. package/dist/types/modules/ms-teams/hooks/useMsTeamsAuth.d.ts +7 -0
  71. package/dist/types/modules/ms-teams/hooks/useMsTeamsAuth.d.ts.map +1 -0
  72. package/dist/types/modules/ms-teams/hooks/useMsTeamsConnectionStatus.d.ts +13 -0
  73. package/dist/types/modules/ms-teams/hooks/useMsTeamsConnectionStatus.d.ts.map +1 -0
  74. package/dist/types/modules/ms-teams/index.d.ts.map +1 -0
  75. package/dist/types/modules/slack/hooks/useConnectedSlackChannels.d.ts +0 -1
  76. package/dist/types/modules/slack/hooks/useSlackChannels.d.ts +0 -1
  77. package/dist/types/modules/slack/hooks/useSlackConnectionStatus.d.ts +0 -1
  78. package/package.json +11 -12
  79. package/src/index.ts +1 -1
  80. package/src/modules/core/context/KnockProvider.tsx +10 -10
  81. package/src/modules/core/hooks/useAuthenticatedKnockClient.ts +4 -4
  82. package/src/modules/core/utils.ts +23 -3
  83. package/src/modules/feed/context/KnockFeedProvider.tsx +6 -11
  84. package/src/modules/i18n/languages/en.ts +10 -0
  85. package/src/modules/i18n/languages/index.ts +9 -0
  86. package/src/modules/ms-teams/context/KnockMsTeamsProvider.tsx +74 -0
  87. package/src/modules/ms-teams/context/index.ts +1 -0
  88. package/src/modules/ms-teams/hooks/index.ts +2 -0
  89. package/src/modules/ms-teams/hooks/useMsTeamsAuth.ts +84 -0
  90. package/src/modules/ms-teams/hooks/useMsTeamsConnectionStatus.ts +82 -0
  91. package/src/modules/ms-teams/index.ts +2 -0
  92. package/src/modules/slack/hooks/useConnectedSlackChannels.ts +1 -1
  93. package/src/modules/slack/hooks/useSlackAuth.ts +1 -1
  94. package/src/modules/slack/hooks/useSlackConnectionStatus.ts +1 -1
  95. package/dist/cjs/modules/in-app-messages/context/KnockInAppMessagesChannelProvider.js +0 -2
  96. package/dist/cjs/modules/in-app-messages/context/KnockInAppMessagesChannelProvider.js.map +0 -1
  97. package/dist/cjs/modules/in-app-messages/hooks/useInAppMessages.js +0 -2
  98. package/dist/cjs/modules/in-app-messages/hooks/useInAppMessages.js.map +0 -1
  99. package/dist/esm/modules/in-app-messages/context/KnockInAppMessagesChannelProvider.mjs +0 -33
  100. package/dist/esm/modules/in-app-messages/context/KnockInAppMessagesChannelProvider.mjs.map +0 -1
  101. package/dist/esm/modules/in-app-messages/hooks/useInAppMessages.mjs +0 -41
  102. package/dist/esm/modules/in-app-messages/hooks/useInAppMessages.mjs.map +0 -1
  103. package/dist/types/modules/in-app-messages/context/KnockInAppMessagesChannelProvider.d.ts +0 -16
  104. package/dist/types/modules/in-app-messages/context/KnockInAppMessagesChannelProvider.d.ts.map +0 -1
  105. package/dist/types/modules/in-app-messages/context/index.d.ts +0 -2
  106. package/dist/types/modules/in-app-messages/context/index.d.ts.map +0 -1
  107. package/dist/types/modules/in-app-messages/hooks/index.d.ts +0 -2
  108. package/dist/types/modules/in-app-messages/hooks/index.d.ts.map +0 -1
  109. package/dist/types/modules/in-app-messages/hooks/useInAppMessages.d.ts +0 -21
  110. package/dist/types/modules/in-app-messages/hooks/useInAppMessages.d.ts.map +0 -1
  111. package/dist/types/modules/in-app-messages/index.d.ts.map +0 -1
  112. package/src/modules/in-app-messages/context/KnockInAppMessagesChannelProvider.tsx +0 -68
  113. package/src/modules/in-app-messages/context/index.ts +0 -1
  114. package/src/modules/in-app-messages/hooks/index.ts +0 -1
  115. package/src/modules/in-app-messages/hooks/useInAppMessages.ts +0 -89
  116. package/src/modules/in-app-messages/index.ts +0 -3
  117. /package/dist/types/modules/{in-app-messages → ms-teams}/index.d.ts +0 -0
@@ -1,11 +1,11 @@
1
- import { parseISO as o, intlFormatDistance as c } from "date-fns";
1
+ import { parseISO as a, intlFormatDistance as i } from "date-fns";
2
2
  function u(e) {
3
3
  return e > 9 ? "9+" : e;
4
4
  }
5
5
  function l(e, t = {}) {
6
6
  try {
7
- const r = o(e);
8
- return c(r, /* @__PURE__ */ new Date(), {
7
+ const r = a(e);
8
+ return i(r, /* @__PURE__ */ new Date(), {
9
9
  locale: t.locale
10
10
  });
11
11
  } catch {
@@ -27,12 +27,21 @@ function s({
27
27
  connectionStatus: r,
28
28
  errorLabel: n
29
29
  }) {
30
- return [e, t, r, n].filter((a) => a != null).join("-");
30
+ return [e, t, r, n].filter((o) => o != null).join("-");
31
+ }
32
+ function v({
33
+ knockMsTeamsChannelId: e,
34
+ tenantId: t,
35
+ connectionStatus: r,
36
+ errorLabel: n
37
+ }) {
38
+ return [e, t, r, n].filter((o) => o != null).join("-");
31
39
  }
32
40
  export {
33
41
  m as feedProviderKey,
34
42
  u as formatBadgeCount,
35
43
  l as formatTimestamp,
44
+ v as msTeamsProviderKey,
36
45
  f as renderNodeOrFallback,
37
46
  s as slackProviderKey,
38
47
  d as toSentenceCase
@@ -1 +1 @@
1
- {"version":3,"file":"utils.mjs","sources":["../../../../src/modules/core/utils.ts"],"sourcesContent":["import { FeedClientOptions } from \"@knocklabs/client\";\nimport { intlFormatDistance, parseISO } from \"date-fns\";\nimport { ReactNode } from \"react\";\n\nexport function formatBadgeCount(count: number): string | number {\n return count > 9 ? \"9+\" : count;\n}\n\ntype FormatTimestampOptions = {\n locale?: string | string[];\n};\n\nexport function formatTimestamp(\n ts: string,\n options: FormatTimestampOptions = {},\n) {\n try {\n const parsedTs = parseISO(ts);\n const formatted = intlFormatDistance(parsedTs, new Date(), {\n locale: options.locale,\n });\n\n return formatted;\n } catch (e) {\n return ts;\n }\n}\n\nexport function toSentenceCase(string: string): string {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport function renderNodeOrFallback(node: ReactNode, fallback: ReactNode) {\n return node !== undefined ? node : fallback;\n}\n\n/*\n Used to build a consistent key for the KnockFeedProvider so that React knows when\n to trigger a re-render of the context when a key property changes.\n*/\nexport function feedProviderKey(\n userId: string | undefined,\n feedId: string,\n options: FeedClientOptions = {},\n) {\n return [\n userId,\n feedId,\n options.source,\n options.tenant,\n options.has_tenant,\n options.archived,\n ]\n .filter((f) => f !== null && f !== undefined)\n .join(\"-\");\n}\n\n/*\n Used to build a consistent key for the KnockSlackProvider so that React knows when\n to trigger a re-render of the context when a key property changes.\n*/\nexport function slackProviderKey({\n knockSlackChannelId,\n tenant,\n connectionStatus,\n errorLabel,\n}: {\n knockSlackChannelId: string;\n tenant: string;\n connectionStatus: string;\n errorLabel: string | null;\n}) {\n return [knockSlackChannelId, tenant, connectionStatus, errorLabel]\n .filter((f) => f !== null && f !== undefined)\n .join(\"-\");\n}\n"],"names":["formatBadgeCount","count","formatTimestamp","ts","options","parsedTs","parseISO","formatted","intlFormatDistance","Date","locale","toSentenceCase","string","charAt","toUpperCase","slice","renderNodeOrFallback","node","fallback","undefined","feedProviderKey","userId","feedId","source","tenant","has_tenant","archived","filter","f","join","slackProviderKey","knockSlackChannelId","connectionStatus","errorLabel"],"mappings":";AAIO,SAASA,EAAiBC,GAAgC;AACxDA,SAAAA,IAAQ,IAAI,OAAOA;AAC5B;AAMO,SAASC,EACdC,GACAC,IAAkC,IAClC;AACI,MAAA;AACIC,UAAAA,IAAWC,EAASH,CAAE;AAKrBI,WAJWC,EAAmBH,GAAU,oBAAII,QAAQ;AAAA,MACzDC,QAAQN,EAAQM;AAAAA,IAAAA,CACjB;AAAA,UAGS;AACHP,WAAAA;AAAAA,EACT;AACF;AAEO,SAASQ,EAAeC,GAAwB;AAC9CA,SAAAA,EAAOC,OAAO,CAAC,EAAEC,gBAAgBF,EAAOG,MAAM,CAAC;AACxD;AAEgBC,SAAAA,EAAqBC,GAAiBC,GAAqB;AAClED,SAAAA,MAASE,SAAYF,IAAOC;AACrC;AAMO,SAASE,EACdC,GACAC,GACAlB,IAA6B,CAAA,GAC7B;AACO,SAAA,CACLiB,GACAC,GACAlB,EAAQmB,QACRnB,EAAQoB,QACRpB,EAAQqB,YACRrB,EAAQsB,QAAQ,EAEfC,OAAQC,OAAMA,KAAM,IAAuB,EAC3CC,KAAK,GAAG;AACb;AAMO,SAASC,EAAiB;AAAA,EAC/BC,qBAAAA;AAAAA,EACAP,QAAAA;AAAAA,EACAQ,kBAAAA;AAAAA,EACAC,YAAAA;AAMF,GAAG;AACD,SAAO,CAACF,GAAqBP,GAAQQ,GAAkBC,CAAU,EAC9DN,OAAQC,CAAMA,MAAAA,KAAM,IAAuB,EAC3CC,KAAK,GAAG;AACb;"}
1
+ {"version":3,"file":"utils.mjs","sources":["../../../../src/modules/core/utils.ts"],"sourcesContent":["import Knock, { FeedClientOptions } from \"@knocklabs/client\";\nimport { intlFormatDistance, parseISO } from \"date-fns\";\nimport { ReactNode } from \"react\";\n\nexport function formatBadgeCount(count: number): string | number {\n return count > 9 ? \"9+\" : count;\n}\n\ntype FormatTimestampOptions = {\n locale?: string | string[];\n};\n\nexport function formatTimestamp(\n ts: string,\n options: FormatTimestampOptions = {},\n) {\n try {\n const parsedTs = parseISO(ts);\n const formatted = intlFormatDistance(parsedTs, new Date(), {\n locale: options.locale,\n });\n\n return formatted;\n } catch (_e) {\n return ts;\n }\n}\n\nexport function toSentenceCase(string: string): string {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport function renderNodeOrFallback(node: ReactNode, fallback: ReactNode) {\n return node !== undefined ? node : fallback;\n}\n\n/*\n Used to build a consistent key for the KnockFeedProvider so that React knows when\n to trigger a re-render of the context when a key property changes.\n*/\nexport function feedProviderKey(\n userId: Knock[\"userId\"],\n feedId: string,\n options: FeedClientOptions = {},\n) {\n return [\n userId,\n feedId,\n options.source,\n options.tenant,\n options.has_tenant,\n options.archived,\n ]\n .filter((f) => f !== null && f !== undefined)\n .join(\"-\");\n}\n\n/*\n Used to build a consistent key for the KnockSlackProvider so that React knows when\n to trigger a re-render of the context when a key property changes.\n*/\nexport function slackProviderKey({\n knockSlackChannelId,\n tenant,\n connectionStatus,\n errorLabel,\n}: {\n knockSlackChannelId: string;\n tenant: string;\n connectionStatus: string;\n errorLabel: string | null;\n}) {\n return [knockSlackChannelId, tenant, connectionStatus, errorLabel]\n .filter((f) => f !== null && f !== undefined)\n .join(\"-\");\n}\n\n/*\n Used to build a consistent key for the KnockMsTeamsProvider so that React knows when\n to trigger a re-render of the context when a key property changes.\n*/\nexport function msTeamsProviderKey({\n knockMsTeamsChannelId,\n tenantId,\n connectionStatus,\n errorLabel,\n}: {\n knockMsTeamsChannelId: string;\n tenantId: string;\n connectionStatus: string;\n errorLabel: string | null;\n}) {\n return [knockMsTeamsChannelId, tenantId, connectionStatus, errorLabel]\n .filter((f) => f !== null && f !== undefined)\n .join(\"-\");\n}\n"],"names":["formatBadgeCount","count","formatTimestamp","ts","options","parsedTs","parseISO","formatted","intlFormatDistance","Date","locale","toSentenceCase","string","charAt","toUpperCase","slice","renderNodeOrFallback","node","fallback","undefined","feedProviderKey","userId","feedId","source","tenant","has_tenant","archived","filter","f","join","slackProviderKey","knockSlackChannelId","connectionStatus","errorLabel","msTeamsProviderKey","knockMsTeamsChannelId","tenantId"],"mappings":";AAIO,SAASA,EAAiBC,GAAgC;AACxDA,SAAAA,IAAQ,IAAI,OAAOA;AAC5B;AAMO,SAASC,EACdC,GACAC,IAAkC,IAClC;AACI,MAAA;AACIC,UAAAA,IAAWC,EAASH,CAAE;AAKrBI,WAJWC,EAAmBH,GAAU,oBAAII,QAAQ;AAAA,MACzDC,QAAQN,EAAQM;AAAAA,IAAAA,CACjB;AAAA,UAGU;AACJP,WAAAA;AAAAA,EACT;AACF;AAEO,SAASQ,EAAeC,GAAwB;AAC9CA,SAAAA,EAAOC,OAAO,CAAC,EAAEC,gBAAgBF,EAAOG,MAAM,CAAC;AACxD;AAEgBC,SAAAA,EAAqBC,GAAiBC,GAAqB;AAClED,SAAAA,MAASE,SAAYF,IAAOC;AACrC;AAMO,SAASE,EACdC,GACAC,GACAlB,IAA6B,CAAA,GAC7B;AACO,SAAA,CACLiB,GACAC,GACAlB,EAAQmB,QACRnB,EAAQoB,QACRpB,EAAQqB,YACRrB,EAAQsB,QAAQ,EAEfC,OAAQC,OAAMA,KAAM,IAAuB,EAC3CC,KAAK,GAAG;AACb;AAMO,SAASC,EAAiB;AAAA,EAC/BC,qBAAAA;AAAAA,EACAP,QAAAA;AAAAA,EACAQ,kBAAAA;AAAAA,EACAC,YAAAA;AAMF,GAAG;AACD,SAAO,CAACF,GAAqBP,GAAQQ,GAAkBC,CAAU,EAC9DN,OAAQC,CAAMA,MAAAA,KAAM,IAAuB,EAC3CC,KAAK,GAAG;AACb;AAMO,SAASK,EAAmB;AAAA,EACjCC,uBAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAJ,kBAAAA;AAAAA,EACAC,YAAAA;AAMF,GAAG;AACD,SAAO,CAACE,GAAuBC,GAAUJ,GAAkBC,CAAU,EAClEN,OAAQC,CAAMA,MAAAA,KAAM,IAAuB,EAC3CC,KAAK,GAAG;AACb;"}
@@ -1,37 +1,31 @@
1
- import * as r from "react";
2
- import { useKnockClient as m } from "../../core/context/KnockProvider.mjs";
1
+ import * as t from "react";
2
+ import { useKnockClient as u } from "../../core/context/KnockProvider.mjs";
3
3
  import "@knocklabs/client";
4
4
  import "zustand/shallow";
5
- import { feedProviderKey as u } from "../../core/utils.mjs";
6
- import k from "../hooks/useNotifications.mjs";
7
- import { useCreateNotificationStore as a } from "../hooks/useNotificationStore.mjs";
8
- const i = r.createContext(void 0), F = ({
5
+ import { feedProviderKey as d } from "../../core/utils.mjs";
6
+ import a from "../hooks/useNotifications.mjs";
7
+ import { useCreateNotificationStore as f } from "../hooks/useNotificationStore.mjs";
8
+ const i = t.createContext(void 0), F = ({
9
9
  feedId: e,
10
10
  children: c,
11
- defaultFeedOptions: t = {},
11
+ defaultFeedOptions: r = {},
12
12
  colorMode: s = "light"
13
13
  }) => {
14
- let o;
15
- try {
16
- o = m();
17
- } catch {
18
- throw new Error("KnockFeedProvider must be used within a KnockProvider.");
19
- }
20
- const n = k(o, e, t), d = a(n);
21
- return /* @__PURE__ */ r.createElement(i.Provider, { key: u(o.userId, e, t), value: {
14
+ const o = u(), n = a(o, e, r), m = f(n);
15
+ return /* @__PURE__ */ t.createElement(i.Provider, { key: d(o.userId, e, r), value: {
22
16
  knock: o,
23
17
  feedClient: n,
24
- useFeedStore: d,
18
+ useFeedStore: m,
25
19
  colorMode: s
26
20
  } }, c);
27
- }, P = () => {
28
- const e = r.useContext(i);
21
+ }, l = () => {
22
+ const e = t.useContext(i);
29
23
  if (!e)
30
24
  throw new Error("useKnockFeed must be used within a KnockFeedProvider");
31
25
  return e;
32
26
  };
33
27
  export {
34
28
  F as KnockFeedProvider,
35
- P as useKnockFeed
29
+ l as useKnockFeed
36
30
  };
37
31
  //# sourceMappingURL=KnockFeedProvider.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"KnockFeedProvider.mjs","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 { 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<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 (error) {\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":";;;;;;;AAsBA,MAAMA,IAAmBC,EAAMC,cAE7BC,MAAS,GAaEC,IAETA,CAAC;AAAA,EAAEC,QAAAA;AAAAA,EAAQC,UAAAA;AAAAA,EAAUC,oBAAAA,IAAqB,CAAC;AAAA,EAAGC,WAAAA,IAAY;AAAQ,MAAM;AACtEC,MAAAA;AACA,MAAA;AACFA,IAAAA,IAAQC,EAAe;AAAA,UACT;AACR,UAAA,IAAIC,MAAM,wDAAwD;AAAA,EAC1E;AAEA,QAAMC,IAAaC,EAAiBJ,GAAOJ,GAAQE,CAAkB,GAC/DO,IAAeC,EAA2BH,CAAU;AAGxD,SAAA,gBAAAX,EAAA,cAACD,EAAiB,UAAjB,EACC,KAAKgB,EAAgBP,EAAMQ,QAAQZ,GAAQE,CAAkB,GAC7D,OAAO;AAAA,IACLE,OAAAA;AAAAA,IACAG,YAAAA;AAAAA,IACAE,cAAAA;AAAAA,IACAN,WAAAA;AAAAA,EAAAA,KAGDF,CACH;AAEJ,GAEaY,IAAeA,MAA8B;AAClDC,QAAAA,IAAUlB,EAAMmB,WAAWpB,CAAgB;AACjD,MAAI,CAACmB;AACG,UAAA,IAAIR,MAAM,sDAAsD;AAGjEQ,SAAAA;AACT;"}
1
+ {"version":3,"file":"KnockFeedProvider.mjs","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 { 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<FeedStoreState>;\n colorMode: ColorMode;\n}\n\nconst FeedStateContext = 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 const knock = useKnockClient();\n const feedClient = useNotifications(knock, feedId, defaultFeedOptions);\n const useFeedStore = useCreateNotificationStore(feedClient);\n\n return (\n <FeedStateContext.Provider\n key={feedProviderKey(knock.userId, feedId, defaultFeedOptions)}\n value={{\n knock,\n feedClient,\n useFeedStore,\n colorMode,\n }}\n >\n {children}\n </FeedStateContext.Provider>\n );\n};\n\nexport const useKnockFeed = (): KnockFeedProviderState => {\n const context = React.useContext(FeedStateContext);\n\n if (!context) {\n throw new Error(\"useKnockFeed must be used within a KnockFeedProvider\");\n }\n\n return context;\n};\n"],"names":["FeedStateContext","React","createContext","undefined","KnockFeedProvider","feedId","children","defaultFeedOptions","colorMode","knock","useKnockClient","feedClient","useNotifications","useFeedStore","useCreateNotificationStore","feedProviderKey","userId","useKnockFeed","context","useContext","Error"],"mappings":";;;;;;;AAsBA,MAAMA,IAAmBC,EAAMC,cAE7BC,MAAS,GAaEC,IAETA,CAAC;AAAA,EAAEC,QAAAA;AAAAA,EAAQC,UAAAA;AAAAA,EAAUC,oBAAAA,IAAqB,CAAC;AAAA,EAAGC,WAAAA,IAAY;AAAQ,MAAM;AAC1E,QAAMC,IAAQC,KACRC,IAAaC,EAAiBH,GAAOJ,GAAQE,CAAkB,GAC/DM,IAAeC,EAA2BH,CAAU;AAGxD,SAAA,gBAAAV,EAAA,cAACD,EAAiB,UAAjB,EACC,KAAKe,EAAgBN,EAAMO,QAAQX,GAAQE,CAAkB,GAC7D,OAAO;AAAA,IACLE,OAAAA;AAAAA,IACAE,YAAAA;AAAAA,IACAE,cAAAA;AAAAA,IACAL,WAAAA;AAAAA,EAAAA,KAGDF,CACH;AAEJ,GAEaW,IAAeA,MAA8B;AAClDC,QAAAA,IAAUjB,EAAMkB,WAAWnB,CAAgB;AAEjD,MAAI,CAACkB;AACG,UAAA,IAAIE,MAAM,sDAAsD;AAGjEF,SAAAA;AACT;"}
@@ -10,6 +10,15 @@ const n = {
10
10
  unread: "Unread",
11
11
  read: "Read",
12
12
  unseen: "Unseen",
13
+ msTeamsConnect: "Connect to Microsoft Teams",
14
+ msTeamsConnected: "Connected",
15
+ msTeamsConnecting: "Connecting to Microsoft Teams…",
16
+ msTeamsConnectContainerDescription: "Connect to get notifications in Microsoft Teams",
17
+ msTeamsDisconnect: "Disconnect",
18
+ msTeamsDisconnecting: "Disconnecting from Microsoft Teams…",
19
+ msTeamsError: "Error",
20
+ msTeamsReconnect: "Reconnect",
21
+ msTeamsTenantIdNotSet: "Microsoft Teams tenant ID not set.",
13
22
  slackConnectChannel: "Connect channel",
14
23
  slackChannelId: "Slack channel ID",
15
24
  slackConnecting: "Connecting to Slack...",
@@ -1 +1 @@
1
- {"version":3,"file":"en.mjs","sources":["../../../../../src/modules/i18n/languages/en.ts"],"sourcesContent":["import { I18nContent } from \".\";\n\nconst en: I18nContent = {\n translations: {\n archiveNotification: \"Archive this notification\",\n archiveRead: \"Archive Read\",\n markAllAsRead: \"Mark all as read\",\n notifications: \"Notifications\",\n emptyFeedTitle: \"No notifications yet\",\n emptyFeedBody: \"We'll let you know when we've got something new for you.\",\n all: \"All\",\n unread: \"Unread\",\n read: \"Read\",\n unseen: \"Unseen\",\n slackConnectChannel: \"Connect channel\",\n slackChannelId: \"Slack channel ID\",\n slackConnecting: \"Connecting to Slack...\",\n slackDisconnecting: \"Disconnecting...\",\n slackConnect: \"Connect to Slack\",\n slackConnected: \"Connected\",\n slackConnectContainerDescription:\n \"Connect to get notifications in your Slack workspace.\",\n slackSearchbarDisconnected: \"Slack is not connected.\",\n slackSearchbarMultipleChannels: \"Multiple channels connected\",\n slackSearchbarNoChannelsConnected: \"Search channels\",\n slackSearchbarNoChannelsFound: \"No slack channels.\",\n slackSearchbarChannelsError: \"Error fetching channels.\",\n slackSearchChannels: \"Search channels\",\n slackConnectionErrorExists:\n \"Try reconnecting to Slack to find and select channels from your workspace.\",\n slackConnectionErrorOccurred:\n \"There was an error connecting to Slack. Try reconnecting to find and select channels from your workspace.\",\n slackChannelAlreadyConnected: \"Error: already connected\",\n slackError: \"Error\",\n slackDisconnect: \"Disconnect\",\n slackChannelSetError: \"Error setting channel.\",\n slackAccessTokenNotSet: \"Access token not set.\",\n slackReconnect: \"Reconnect\",\n },\n locale: \"en\",\n};\n\nexport default en;\n"],"names":["en","translations","archiveNotification","archiveRead","markAllAsRead","notifications","emptyFeedTitle","emptyFeedBody","all","unread","read","unseen","slackConnectChannel","slackChannelId","slackConnecting","slackDisconnecting","slackConnect","slackConnected","slackConnectContainerDescription","slackSearchbarDisconnected","slackSearchbarMultipleChannels","slackSearchbarNoChannelsConnected","slackSearchbarNoChannelsFound","slackSearchbarChannelsError","slackSearchChannels","slackConnectionErrorExists","slackConnectionErrorOccurred","slackChannelAlreadyConnected","slackError","slackDisconnect","slackChannelSetError","slackAccessTokenNotSet","slackReconnect","locale"],"mappings":"AAEA,MAAMA,IAAkB;AAAA,EACtBC,cAAc;AAAA,IACZC,qBAAqB;AAAA,IACrBC,aAAa;AAAA,IACbC,eAAe;AAAA,IACfC,eAAe;AAAA,IACfC,gBAAgB;AAAA,IAChBC,eAAe;AAAA,IACfC,KAAK;AAAA,IACLC,QAAQ;AAAA,IACRC,MAAM;AAAA,IACNC,QAAQ;AAAA,IACRC,qBAAqB;AAAA,IACrBC,gBAAgB;AAAA,IAChBC,iBAAiB;AAAA,IACjBC,oBAAoB;AAAA,IACpBC,cAAc;AAAA,IACdC,gBAAgB;AAAA,IAChBC,kCACE;AAAA,IACFC,4BAA4B;AAAA,IAC5BC,gCAAgC;AAAA,IAChCC,mCAAmC;AAAA,IACnCC,+BAA+B;AAAA,IAC/BC,6BAA6B;AAAA,IAC7BC,qBAAqB;AAAA,IACrBC,4BACE;AAAA,IACFC,8BACE;AAAA,IACFC,8BAA8B;AAAA,IAC9BC,YAAY;AAAA,IACZC,iBAAiB;AAAA,IACjBC,sBAAsB;AAAA,IACtBC,wBAAwB;AAAA,IACxBC,gBAAgB;AAAA,EAClB;AAAA,EACAC,QAAQ;AACV;"}
1
+ {"version":3,"file":"en.mjs","sources":["../../../../../src/modules/i18n/languages/en.ts"],"sourcesContent":["import { I18nContent } from \".\";\n\nconst en: I18nContent = {\n translations: {\n archiveNotification: \"Archive this notification\",\n archiveRead: \"Archive Read\",\n markAllAsRead: \"Mark all as read\",\n notifications: \"Notifications\",\n emptyFeedTitle: \"No notifications yet\",\n emptyFeedBody: \"We'll let you know when we've got something new for you.\",\n all: \"All\",\n unread: \"Unread\",\n read: \"Read\",\n unseen: \"Unseen\",\n msTeamsConnect: \"Connect to Microsoft Teams\",\n msTeamsConnected: \"Connected\",\n msTeamsConnecting: \"Connecting to Microsoft Teams…\",\n msTeamsConnectContainerDescription:\n \"Connect to get notifications in Microsoft Teams\",\n msTeamsDisconnect: \"Disconnect\",\n msTeamsDisconnecting: \"Disconnecting from Microsoft Teams…\",\n msTeamsError: \"Error\",\n msTeamsReconnect: \"Reconnect\",\n msTeamsTenantIdNotSet: \"Microsoft Teams tenant ID not set.\",\n slackConnectChannel: \"Connect channel\",\n slackChannelId: \"Slack channel ID\",\n slackConnecting: \"Connecting to Slack...\",\n slackDisconnecting: \"Disconnecting...\",\n slackConnect: \"Connect to Slack\",\n slackConnected: \"Connected\",\n slackConnectContainerDescription:\n \"Connect to get notifications in your Slack workspace.\",\n slackSearchbarDisconnected: \"Slack is not connected.\",\n slackSearchbarMultipleChannels: \"Multiple channels connected\",\n slackSearchbarNoChannelsConnected: \"Search channels\",\n slackSearchbarNoChannelsFound: \"No slack channels.\",\n slackSearchbarChannelsError: \"Error fetching channels.\",\n slackSearchChannels: \"Search channels\",\n slackConnectionErrorExists:\n \"Try reconnecting to Slack to find and select channels from your workspace.\",\n slackConnectionErrorOccurred:\n \"There was an error connecting to Slack. Try reconnecting to find and select channels from your workspace.\",\n slackChannelAlreadyConnected: \"Error: already connected\",\n slackError: \"Error\",\n slackDisconnect: \"Disconnect\",\n slackChannelSetError: \"Error setting channel.\",\n slackAccessTokenNotSet: \"Access token not set.\",\n slackReconnect: \"Reconnect\",\n },\n locale: \"en\",\n};\n\nexport default en;\n"],"names":["en","translations","archiveNotification","archiveRead","markAllAsRead","notifications","emptyFeedTitle","emptyFeedBody","all","unread","read","unseen","msTeamsConnect","msTeamsConnected","msTeamsConnecting","msTeamsConnectContainerDescription","msTeamsDisconnect","msTeamsDisconnecting","msTeamsError","msTeamsReconnect","msTeamsTenantIdNotSet","slackConnectChannel","slackChannelId","slackConnecting","slackDisconnecting","slackConnect","slackConnected","slackConnectContainerDescription","slackSearchbarDisconnected","slackSearchbarMultipleChannels","slackSearchbarNoChannelsConnected","slackSearchbarNoChannelsFound","slackSearchbarChannelsError","slackSearchChannels","slackConnectionErrorExists","slackConnectionErrorOccurred","slackChannelAlreadyConnected","slackError","slackDisconnect","slackChannelSetError","slackAccessTokenNotSet","slackReconnect","locale"],"mappings":"AAEA,MAAMA,IAAkB;AAAA,EACtBC,cAAc;AAAA,IACZC,qBAAqB;AAAA,IACrBC,aAAa;AAAA,IACbC,eAAe;AAAA,IACfC,eAAe;AAAA,IACfC,gBAAgB;AAAA,IAChBC,eAAe;AAAA,IACfC,KAAK;AAAA,IACLC,QAAQ;AAAA,IACRC,MAAM;AAAA,IACNC,QAAQ;AAAA,IACRC,gBAAgB;AAAA,IAChBC,kBAAkB;AAAA,IAClBC,mBAAmB;AAAA,IACnBC,oCACE;AAAA,IACFC,mBAAmB;AAAA,IACnBC,sBAAsB;AAAA,IACtBC,cAAc;AAAA,IACdC,kBAAkB;AAAA,IAClBC,uBAAuB;AAAA,IACvBC,qBAAqB;AAAA,IACrBC,gBAAgB;AAAA,IAChBC,iBAAiB;AAAA,IACjBC,oBAAoB;AAAA,IACpBC,cAAc;AAAA,IACdC,gBAAgB;AAAA,IAChBC,kCACE;AAAA,IACFC,4BAA4B;AAAA,IAC5BC,gCAAgC;AAAA,IAChCC,mCAAmC;AAAA,IACnCC,+BAA+B;AAAA,IAC/BC,6BAA6B;AAAA,IAC7BC,qBAAqB;AAAA,IACrBC,4BACE;AAAA,IACFC,8BACE;AAAA,IACFC,8BAA8B;AAAA,IAC9BC,YAAY;AAAA,IACZC,iBAAiB;AAAA,IACjBC,sBAAsB;AAAA,IACtBC,wBAAwB;AAAA,IACxBC,gBAAgB;AAAA,EAClB;AAAA,EACAC,QAAQ;AACV;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../src/modules/i18n/languages/index.ts"],"sourcesContent":["import de from \"./de\";\nimport en from \"./en\";\n\nexport interface Translations {\n readonly archiveRead: string;\n readonly emptyFeedTitle: string;\n readonly emptyFeedBody: string;\n readonly notifications: string;\n readonly poweredBy: string;\n readonly markAllAsRead: string;\n readonly archiveNotification: string;\n readonly all: string;\n readonly unread: string;\n readonly read: string;\n readonly unseen: string;\n readonly slackConnectChannel: string;\n readonly slackChannelId: string;\n readonly slackConnecting: string;\n readonly slackDisconnecting: string;\n readonly slackConnect: string;\n readonly slackConnected: string;\n readonly slackConnectContainerDescription: string;\n readonly slackSearchbarDisconnected: string;\n readonly slackSearchbarMultipleChannels: string;\n readonly slackSearchbarNoChannelsConnected: string;\n readonly slackSearchbarNoChannelsFound: string;\n readonly slackSearchbarChannelsError: string;\n readonly slackSearchChannels: string;\n readonly slackConnectionErrorOccurred: string;\n readonly slackConnectionErrorExists: string;\n readonly slackChannelAlreadyConnected: string;\n readonly slackError: string;\n readonly slackDisconnect: string;\n readonly slackChannelSetError: string;\n readonly slackAccessTokenNotSet: string;\n readonly slackReconnect: string;\n}\n\nexport interface I18nContent {\n readonly translations: Partial<Translations>;\n readonly locale: string;\n}\n\nexport const locales = { en, de };\n"],"names":["locales","en","de"],"mappings":";;AA2CO,MAAMA,IAAU;AAAA,EAAEC,IAAAA;AAAAA,EAAIC,IAAAA;AAAG;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../src/modules/i18n/languages/index.ts"],"sourcesContent":["import de from \"./de\";\nimport en from \"./en\";\n\nexport interface Translations {\n readonly archiveRead: string;\n readonly emptyFeedTitle: string;\n readonly emptyFeedBody: string;\n readonly notifications: string;\n readonly poweredBy: string;\n readonly markAllAsRead: string;\n readonly archiveNotification: string;\n readonly all: string;\n readonly unread: string;\n readonly read: string;\n readonly unseen: string;\n readonly msTeamsConnect: string;\n readonly msTeamsConnected: string;\n readonly msTeamsConnecting: string;\n readonly msTeamsConnectContainerDescription: string;\n readonly msTeamsDisconnect: string;\n readonly msTeamsDisconnecting: string;\n readonly msTeamsError: string;\n readonly msTeamsReconnect: string;\n readonly msTeamsTenantIdNotSet: string;\n readonly slackConnectChannel: string;\n readonly slackChannelId: string;\n readonly slackConnecting: string;\n readonly slackDisconnecting: string;\n readonly slackConnect: string;\n readonly slackConnected: string;\n readonly slackConnectContainerDescription: string;\n readonly slackSearchbarDisconnected: string;\n readonly slackSearchbarMultipleChannels: string;\n readonly slackSearchbarNoChannelsConnected: string;\n readonly slackSearchbarNoChannelsFound: string;\n readonly slackSearchbarChannelsError: string;\n readonly slackSearchChannels: string;\n readonly slackConnectionErrorOccurred: string;\n readonly slackConnectionErrorExists: string;\n readonly slackChannelAlreadyConnected: string;\n readonly slackError: string;\n readonly slackDisconnect: string;\n readonly slackChannelSetError: string;\n readonly slackAccessTokenNotSet: string;\n readonly slackReconnect: string;\n}\n\nexport interface I18nContent {\n readonly translations: Partial<Translations>;\n readonly locale: string;\n}\n\nexport const locales = { en, de };\n"],"names":["locales","en","de"],"mappings":";;AAoDO,MAAMA,IAAU;AAAA,EAAEC,IAAAA;AAAAA,EAAIC,IAAAA;AAAG;"}
@@ -0,0 +1,45 @@
1
+ import * as o from "react";
2
+ import { useKnockClient as p } from "../../core/context/KnockProvider.mjs";
3
+ import "@knocklabs/client";
4
+ import "zustand/shallow";
5
+ import { msTeamsProviderKey as v } from "../../core/utils.mjs";
6
+ import C from "../hooks/useMsTeamsConnectionStatus.mjs";
7
+ const n = o.createContext(null), T = ({
8
+ knockMsTeamsChannelId: e,
9
+ tenantId: t,
10
+ children: i
11
+ }) => {
12
+ const c = p(), {
13
+ connectionStatus: r,
14
+ setConnectionStatus: m,
15
+ errorLabel: s,
16
+ setErrorLabel: a,
17
+ actionLabel: u,
18
+ setActionLabel: l
19
+ } = C(c, e, t);
20
+ return /* @__PURE__ */ o.createElement(n.Provider, { key: v({
21
+ knockMsTeamsChannelId: e,
22
+ tenantId: t,
23
+ connectionStatus: r,
24
+ errorLabel: s
25
+ }), value: {
26
+ connectionStatus: r,
27
+ setConnectionStatus: m,
28
+ errorLabel: s,
29
+ setErrorLabel: a,
30
+ actionLabel: u,
31
+ setActionLabel: l,
32
+ knockMsTeamsChannelId: e,
33
+ tenantId: t
34
+ } }, i);
35
+ }, k = () => {
36
+ const e = o.useContext(n);
37
+ if (!e)
38
+ throw new Error("useKnockMsTeamsClient must be used within a KnockMsTeamsProvider");
39
+ return e;
40
+ };
41
+ export {
42
+ T as KnockMsTeamsProvider,
43
+ k as useKnockMsTeamsClient
44
+ };
45
+ //# sourceMappingURL=KnockMsTeamsProvider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KnockMsTeamsProvider.mjs","sources":["../../../../../src/modules/ms-teams/context/KnockMsTeamsProvider.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\n\nimport { useKnockClient } from \"../../core\";\nimport { msTeamsProviderKey } from \"../../core/utils\";\nimport { useMsTeamsConnectionStatus } from \"../hooks\";\nimport { ConnectionStatus } from \"../hooks/useMsTeamsConnectionStatus\";\n\nexport interface KnockMsTeamsProviderState {\n knockMsTeamsChannelId: string;\n tenantId: string;\n connectionStatus: ConnectionStatus;\n setConnectionStatus: (connectionStatus: ConnectionStatus) => void;\n errorLabel: string | null;\n setErrorLabel: (label: string) => void;\n actionLabel: string | null;\n setActionLabel: (label: string | null) => void;\n}\n\nconst MsTeamsProviderStateContext =\n React.createContext<KnockMsTeamsProviderState | null>(null);\n\nexport interface KnockMsTeamsProviderProps {\n knockMsTeamsChannelId: string;\n tenantId: string;\n}\n\nexport const KnockMsTeamsProvider: React.FC<\n PropsWithChildren<KnockMsTeamsProviderProps>\n> = ({ knockMsTeamsChannelId, tenantId, children }) => {\n const knock = useKnockClient();\n\n const {\n connectionStatus,\n setConnectionStatus,\n errorLabel,\n setErrorLabel,\n actionLabel,\n setActionLabel,\n } = useMsTeamsConnectionStatus(knock, knockMsTeamsChannelId, tenantId);\n\n return (\n <MsTeamsProviderStateContext.Provider\n key={msTeamsProviderKey({\n knockMsTeamsChannelId,\n tenantId,\n connectionStatus,\n errorLabel,\n })}\n value={{\n connectionStatus,\n setConnectionStatus,\n errorLabel,\n setErrorLabel,\n actionLabel,\n setActionLabel,\n knockMsTeamsChannelId,\n tenantId,\n }}\n >\n {children}\n </MsTeamsProviderStateContext.Provider>\n );\n};\n\nexport const useKnockMsTeamsClient = (): KnockMsTeamsProviderState => {\n const context = React.useContext(MsTeamsProviderStateContext);\n if (!context) {\n throw new Error(\n \"useKnockMsTeamsClient must be used within a KnockMsTeamsProvider\",\n );\n }\n return context;\n};\n"],"names":["MsTeamsProviderStateContext","React","createContext","KnockMsTeamsProvider","knockMsTeamsChannelId","tenantId","children","knock","useKnockClient","connectionStatus","setConnectionStatus","errorLabel","setErrorLabel","actionLabel","setActionLabel","useMsTeamsConnectionStatus","msTeamsProviderKey","useKnockMsTeamsClient","context","useContext","Error"],"mappings":";;;;;;AAmBA,MAAMA,IACJC,EAAMC,cAAgD,IAAI,GAO/CC,IAETA,CAAC;AAAA,EAAEC,uBAAAA;AAAAA,EAAuBC,UAAAA;AAAAA,EAAUC,UAAAA;AAAS,MAAM;AACrD,QAAMC,IAAQC,KAER;AAAA,IACJC,kBAAAA;AAAAA,IACAC,qBAAAA;AAAAA,IACAC,YAAAA;AAAAA,IACAC,eAAAA;AAAAA,IACAC,aAAAA;AAAAA,IACAC,gBAAAA;AAAAA,EACEC,IAAAA,EAA2BR,GAAOH,GAAuBC,CAAQ;AAErE,SACG,gBAAAJ,EAAA,cAAAD,EAA4B,UAA5B,EACC,KAAKgB,EAAmB;AAAA,IACtBZ,uBAAAA;AAAAA,IACAC,UAAAA;AAAAA,IACAI,kBAAAA;AAAAA,IACAE,YAAAA;AAAAA,EACD,CAAA,GACD,OAAO;AAAA,IACLF,kBAAAA;AAAAA,IACAC,qBAAAA;AAAAA,IACAC,YAAAA;AAAAA,IACAC,eAAAA;AAAAA,IACAC,aAAAA;AAAAA,IACAC,gBAAAA;AAAAA,IACAV,uBAAAA;AAAAA,IACAC,UAAAA;AAAAA,EAAAA,KAGDC,CACH;AAEJ,GAEaW,IAAwBA,MAAiC;AAC9DC,QAAAA,IAAUjB,EAAMkB,WAAWnB,CAA2B;AAC5D,MAAI,CAACkB;AACG,UAAA,IAAIE,MACR,kEACF;AAEKF,SAAAA;AACT;"}
@@ -0,0 +1,51 @@
1
+ import { useKnockMsTeamsClient as T } from "../context/KnockMsTeamsProvider.mjs";
2
+ import { useMemo as _, useCallback as m } from "react";
3
+ import "../../i18n/context/KnockI18nProvider.mjs";
4
+ import { TENANT_OBJECT_COLLECTION as k } from "@knocklabs/client";
5
+ import { useKnockClient as d } from "../../core/context/KnockProvider.mjs";
6
+ import "zustand/shallow";
7
+ import "date-fns";
8
+ const p = "https://login.microsoftonline.com/organizations/adminconsent", h = "/providers/ms-teams/authenticate";
9
+ function y(r, c) {
10
+ const e = d(), {
11
+ setConnectionStatus: t,
12
+ knockMsTeamsChannelId: n,
13
+ tenantId: o,
14
+ setActionLabel: i
15
+ } = T(), a = _(() => e.host + h, [e.host]), u = m(() => {
16
+ const s = {
17
+ state: JSON.stringify({
18
+ redirect_url: c,
19
+ ms_teams_tenant_object: {
20
+ object_id: o,
21
+ collection: k
22
+ },
23
+ channel_id: n,
24
+ public_key: e.apiKey,
25
+ user_token: e.userToken
26
+ }),
27
+ client_id: r,
28
+ redirect_uri: a
29
+ };
30
+ return `${p}?${new URLSearchParams(s)}`;
31
+ }, [c, o, n, e.apiKey, e.userToken, r, a]), l = m(async () => {
32
+ i(null), t("disconnecting");
33
+ try {
34
+ const s = await e.msTeams.revokeAccessToken({
35
+ tenant: o,
36
+ knockChannelId: n
37
+ });
38
+ t(s === "ok" ? "disconnected" : "error");
39
+ } catch {
40
+ t("error");
41
+ }
42
+ }, [t, e.msTeams, o, n, i]);
43
+ return {
44
+ buildMsTeamsAuthUrl: u,
45
+ disconnectFromMsTeams: l
46
+ };
47
+ }
48
+ export {
49
+ y as default
50
+ };
51
+ //# sourceMappingURL=useMsTeamsAuth.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMsTeamsAuth.mjs","sources":["../../../../../src/modules/ms-teams/hooks/useMsTeamsAuth.ts"],"sourcesContent":["import { useKnockMsTeamsClient } from \"..\";\nimport { TENANT_OBJECT_COLLECTION } from \"@knocklabs/client\";\nimport { useCallback, useMemo } from \"react\";\n\nimport { useKnockClient } from \"../../core\";\n\nconst MS_TEAMS_ADMINCONSENT_URL =\n \"https://login.microsoftonline.com/organizations/adminconsent\";\n\nconst AUTH_REDIRECT_PATH = \"/providers/ms-teams/authenticate\";\n\ninterface UseMsTeamsAuthOutput {\n buildMsTeamsAuthUrl: () => string;\n disconnectFromMsTeams: () => void;\n}\n\nfunction useMsTeamsAuth(\n msTeamsBotId: string,\n redirectUrl?: string,\n): UseMsTeamsAuthOutput {\n const knock = useKnockClient();\n const {\n setConnectionStatus,\n knockMsTeamsChannelId,\n tenantId,\n setActionLabel,\n } = useKnockMsTeamsClient();\n\n const authRedirectUri = useMemo(\n () => knock.host + AUTH_REDIRECT_PATH,\n [knock.host],\n );\n\n const buildMsTeamsAuthUrl = useCallback(() => {\n const rawParams = {\n state: JSON.stringify({\n redirect_url: redirectUrl,\n ms_teams_tenant_object: {\n object_id: tenantId,\n collection: TENANT_OBJECT_COLLECTION,\n },\n channel_id: knockMsTeamsChannelId,\n public_key: knock.apiKey,\n user_token: knock.userToken,\n }),\n client_id: msTeamsBotId,\n redirect_uri: authRedirectUri,\n };\n return `${MS_TEAMS_ADMINCONSENT_URL}?${new URLSearchParams(rawParams)}`;\n }, [\n redirectUrl,\n tenantId,\n knockMsTeamsChannelId,\n knock.apiKey,\n knock.userToken,\n msTeamsBotId,\n authRedirectUri,\n ]);\n\n const disconnectFromMsTeams = useCallback(async () => {\n setActionLabel(null);\n setConnectionStatus(\"disconnecting\");\n try {\n const revokeResult = await knock.msTeams.revokeAccessToken({\n tenant: tenantId,\n knockChannelId: knockMsTeamsChannelId,\n });\n\n setConnectionStatus(revokeResult === \"ok\" ? \"disconnected\" : \"error\");\n } catch (_error) {\n setConnectionStatus(\"error\");\n }\n }, [\n setConnectionStatus,\n knock.msTeams,\n tenantId,\n knockMsTeamsChannelId,\n setActionLabel,\n ]);\n\n return { buildMsTeamsAuthUrl, disconnectFromMsTeams };\n}\n\nexport default useMsTeamsAuth;\n"],"names":["MS_TEAMS_ADMINCONSENT_URL","AUTH_REDIRECT_PATH","useMsTeamsAuth","msTeamsBotId","redirectUrl","knock","useKnockClient","setConnectionStatus","knockMsTeamsChannelId","tenantId","setActionLabel","useKnockMsTeamsClient","authRedirectUri","useMemo","host","buildMsTeamsAuthUrl","useCallback","rawParams","state","JSON","stringify","redirect_url","ms_teams_tenant_object","object_id","collection","TENANT_OBJECT_COLLECTION","channel_id","public_key","apiKey","user_token","userToken","client_id","redirect_uri","URLSearchParams","disconnectFromMsTeams","revokeResult","msTeams","revokeAccessToken","tenant","knockChannelId"],"mappings":";;;;;;;AAMA,MAAMA,IACJ,gEAEIC,IAAqB;AAO3B,SAASC,EACPC,GACAC,GACsB;AACtB,QAAMC,IAAQC,KACR;AAAA,IACJC,qBAAAA;AAAAA,IACAC,uBAAAA;AAAAA,IACAC,UAAAA;AAAAA,IACAC,gBAAAA;AAAAA,MACEC,EAAsB,GAEpBC,IAAkBC,EACtB,MAAMR,EAAMS,OAAOb,GACnB,CAACI,EAAMS,IAAI,CACb,GAEMC,IAAsBC,EAAY,MAAM;AAC5C,UAAMC,IAAY;AAAA,MAChBC,OAAOC,KAAKC,UAAU;AAAA,QACpBC,cAAcjB;AAAAA,QACdkB,wBAAwB;AAAA,UACtBC,WAAWd;AAAAA,UACXe,YAAYC;AAAAA,QACd;AAAA,QACAC,YAAYlB;AAAAA,QACZmB,YAAYtB,EAAMuB;AAAAA,QAClBC,YAAYxB,EAAMyB;AAAAA,MAAAA,CACnB;AAAA,MACDC,WAAW5B;AAAAA,MACX6B,cAAcpB;AAAAA,IAAAA;AAEhB,WAAO,GAAGZ,CAAyB,IAAI,IAAIiC,gBAAgBhB,CAAS,CAAC;AAAA,EACvE,GAAG,CACDb,GACAK,GACAD,GACAH,EAAMuB,QACNvB,EAAMyB,WACN3B,GACAS,CAAe,CAChB,GAEKsB,IAAwBlB,EAAY,YAAY;AACpDN,IAAAA,EAAe,IAAI,GACnBH,EAAoB,eAAe;AAC/B,QAAA;AACF,YAAM4B,IAAe,MAAM9B,EAAM+B,QAAQC,kBAAkB;AAAA,QACzDC,QAAQ7B;AAAAA,QACR8B,gBAAgB/B;AAAAA,MAAAA,CACjB;AAEmB2B,MAAAA,EAAAA,MAAiB,OAAO,iBAAiB,OAAO;AAAA,YACrD;AACf5B,MAAAA,EAAoB,OAAO;AAAA,IAC7B;AAAA,EAAA,GACC,CACDA,GACAF,EAAM+B,SACN3B,GACAD,GACAE,CAAc,CACf;AAEM,SAAA;AAAA,IAAEK,qBAAAA;AAAAA,IAAqBmB,uBAAAA;AAAAA,EAAAA;AAChC;"}
@@ -0,0 +1,38 @@
1
+ import { useState as o, useEffect as T } from "react";
2
+ import "../../i18n/context/KnockI18nProvider.mjs";
3
+ import { useTranslations as p } from "../../i18n/hooks/useTranslations.mjs";
4
+ function R(c, s, r) {
5
+ const {
6
+ t: a
7
+ } = p(), [n, t] = o("connecting"), [l, d] = o(null), [h, S] = o(null);
8
+ return T(() => {
9
+ (async () => {
10
+ var u, i, m, f;
11
+ if (n === "connecting")
12
+ try {
13
+ const e = await c.msTeams.authCheck({
14
+ tenant: r,
15
+ knockChannelId: s
16
+ });
17
+ if (((u = e.connection) == null ? void 0 : u.ok) === !0)
18
+ return t("connected");
19
+ if (((i = e.connection) == null ? void 0 : i.ok) === !1 || e.code === "ERR_BAD_REQUEST" && ((f = (m = e.response) == null ? void 0 : m.data) == null ? void 0 : f.message) === a("msTeamsTenantIdNotSet"))
20
+ return t("disconnected");
21
+ t("error");
22
+ } catch {
23
+ t("error");
24
+ }
25
+ })();
26
+ }, [n, r, s, c.msTeams, a]), {
27
+ connectionStatus: n,
28
+ setConnectionStatus: t,
29
+ errorLabel: l,
30
+ setErrorLabel: d,
31
+ actionLabel: h,
32
+ setActionLabel: S
33
+ };
34
+ }
35
+ export {
36
+ R as default
37
+ };
38
+ //# sourceMappingURL=useMsTeamsConnectionStatus.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMsTeamsConnectionStatus.mjs","sources":["../../../../../src/modules/ms-teams/hooks/useMsTeamsConnectionStatus.ts"],"sourcesContent":["import Knock from \"@knocklabs/client\";\nimport { useEffect, useState } from \"react\";\n\nimport { useTranslations } from \"../../i18n\";\n\nexport type ConnectionStatus =\n | \"connecting\"\n | \"connected\"\n | \"disconnected\"\n | \"error\"\n | \"disconnecting\";\n\ntype UseMsTeamsConnectionStatusOutput = {\n connectionStatus: ConnectionStatus;\n setConnectionStatus: (status: ConnectionStatus) => void;\n errorLabel: string | null;\n setErrorLabel: (errorLabel: string) => void;\n actionLabel: string | null;\n setActionLabel: (actionLabel: string | null) => void;\n};\n\nfunction useMsTeamsConnectionStatus(\n knock: Knock,\n knockMsTeamsChannelId: string,\n tenantId: string,\n): UseMsTeamsConnectionStatusOutput {\n const { t } = useTranslations();\n\n const [connectionStatus, setConnectionStatus] =\n useState<ConnectionStatus>(\"connecting\");\n const [errorLabel, setErrorLabel] = useState<string | null>(null);\n const [actionLabel, setActionLabel] = useState<string | null>(null);\n\n useEffect(() => {\n const checkAuthStatus = async () => {\n if (connectionStatus !== \"connecting\") return;\n\n try {\n const authRes = await knock.msTeams.authCheck({\n tenant: tenantId,\n knockChannelId: knockMsTeamsChannelId,\n });\n\n if (authRes.connection?.ok === true) {\n return setConnectionStatus(\"connected\");\n }\n\n if (authRes.connection?.ok === false) {\n return setConnectionStatus(\"disconnected\");\n }\n\n // This is a normal response for a tenant that doesn't have\n // ms_teams_tenant_id set on it, meaning it's not connected to MS Teams,\n // so we give it a \"disconnected\" status instead of an error status.\n if (\n authRes.code === \"ERR_BAD_REQUEST\" &&\n authRes.response?.data?.message === t(\"msTeamsTenantIdNotSet\")\n ) {\n return setConnectionStatus(\"disconnected\");\n }\n\n // This is for any Knock errors that would require a reconnect.\n setConnectionStatus(\"error\");\n } catch (_error) {\n setConnectionStatus(\"error\");\n }\n };\n\n checkAuthStatus();\n }, [connectionStatus, tenantId, knockMsTeamsChannelId, knock.msTeams, t]);\n\n return {\n connectionStatus,\n setConnectionStatus,\n errorLabel,\n setErrorLabel,\n actionLabel,\n setActionLabel,\n };\n}\n\nexport default useMsTeamsConnectionStatus;\n"],"names":["useMsTeamsConnectionStatus","knock","knockMsTeamsChannelId","tenantId","t","useTranslations","connectionStatus","setConnectionStatus","useState","errorLabel","setErrorLabel","actionLabel","setActionLabel","useEffect","authRes","msTeams","authCheck","tenant","knockChannelId","connection","ok","code","response","data","message"],"mappings":";;;AAqBA,SAASA,EACPC,GACAC,GACAC,GACkC;AAC5B,QAAA;AAAA,IAAEC,GAAAA;AAAAA,MAAMC,EAAgB,GAExB,CAACC,GAAkBC,CAAmB,IAC1CC,EAA2B,YAAY,GACnC,CAACC,GAAYC,CAAa,IAAIF,EAAwB,IAAI,GAC1D,CAACG,GAAaC,CAAc,IAAIJ,EAAwB,IAAI;AAElEK,SAAAA,EAAU,MAAM;AAmCE,KAlCQ,YAAY;;AAClC,UAAIP,MAAqB;AAErB,YAAA;AACF,gBAAMQ,IAAU,MAAMb,EAAMc,QAAQC,UAAU;AAAA,YAC5CC,QAAQd;AAAAA,YACRe,gBAAgBhB;AAAAA,UAAAA,CACjB;AAEGY,gBAAAA,IAAAA,EAAQK,eAARL,gBAAAA,EAAoBM,QAAO;AAC7B,mBAAOb,EAAoB,WAAW;AAWtCO,gBAREA,IAAAA,EAAQK,eAARL,gBAAAA,EAAoBM,QAAO,MAQ7BN,EAAQO,SAAS,uBACjBP,KAAAA,IAAAA,EAAQQ,aAARR,gBAAAA,EAAkBS,SAAlBT,gBAAAA,EAAwBU,aAAYpB,EAAE,uBAAuB;AAE7D,mBAAOG,EAAoB,cAAc;AAI3CA,UAAAA,EAAoB,OAAO;AAAA,gBACZ;AACfA,UAAAA,EAAoB,OAAO;AAAA,QAC7B;AAAA,IAAA;EAGc,GACf,CAACD,GAAkBH,GAAUD,GAAuBD,EAAMc,SAASX,CAAC,CAAC,GAEjE;AAAA,IACLE,kBAAAA;AAAAA,IACAC,qBAAAA;AAAAA,IACAE,YAAAA;AAAAA,IACAC,eAAAA;AAAAA,IACAC,aAAAA;AAAAA,IACAC,gBAAAA;AAAAA,EAAAA;AAEJ;"}
@@ -7,7 +7,7 @@ import { useKnockClient as j } from "../../core/context/KnockProvider.mjs";
7
7
  import "@knocklabs/client";
8
8
  import "zustand/shallow";
9
9
  import "date-fns";
10
- function q({
10
+ function _({
11
11
  slackChannelsRecipientObject: {
12
12
  objectId: e,
13
13
  collection: a
@@ -56,6 +56,6 @@ function q({
56
56
  };
57
57
  }
58
58
  export {
59
- q as default
59
+ _ as default
60
60
  };
61
61
  //# sourceMappingURL=useConnectedSlackChannels.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useConnectedSlackChannels.mjs","sources":["../../../../../src/modules/slack/hooks/useConnectedSlackChannels.ts"],"sourcesContent":["import { ContainerObject, useKnockSlackClient } from \"..\";\nimport { SlackChannelConnection } from \"@knocklabs/client\";\nimport { useCallback, useEffect, useState } from \"react\";\n\nimport { useKnockClient } from \"../../core\";\nimport { useTranslations } from \"../../i18n\";\n\ntype UseSlackChannelsProps = {\n slackChannelsRecipientObject: ContainerObject;\n};\n\ntype UseSlackChannelOutput = {\n data: SlackChannelConnection[] | null;\n updateConnectedChannels: (\n connectedChannels: SlackChannelConnection[],\n ) => void;\n loading: boolean;\n error: string | null;\n updating: boolean;\n};\n\nfunction useConnectedSlackChannels({\n slackChannelsRecipientObject: { objectId, collection },\n}: UseSlackChannelsProps): UseSlackChannelOutput {\n const { t } = useTranslations();\n const knock = useKnockClient();\n const { connectionStatus, knockSlackChannelId } = useKnockSlackClient();\n const [connectedChannels, setConnectedChannels] = useState<\n null | SlackChannelConnection[]\n >(null);\n const [error, setError] = useState<string | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [isUpdating, setIsUpdating] = useState(false);\n\n const fetchAndSetConnectedChannels = useCallback(() => {\n setIsLoading(true);\n const getConnectedChannels = async () =>\n await knock.objects.getChannelData({\n collection,\n objectId,\n channelId: knockSlackChannelId,\n });\n\n getConnectedChannels()\n .then((res) => {\n if (res?.data?.connections) {\n setConnectedChannels(res?.data?.connections);\n } else {\n setConnectedChannels([]);\n }\n setError(null);\n setIsLoading(false);\n })\n .catch(() => {\n setConnectedChannels([]);\n setError(null);\n setIsLoading(false);\n });\n }, [collection, knock.objects, knockSlackChannelId, objectId]);\n\n useEffect(() => {\n if (\n connectionStatus === \"connected\" &&\n !connectedChannels &&\n !error &&\n !isLoading\n ) {\n fetchAndSetConnectedChannels();\n }\n }, [\n connectedChannels,\n fetchAndSetConnectedChannels,\n isLoading,\n error,\n connectionStatus,\n ]);\n\n const updateConnectedChannels = async (\n channelsToSendToKnock: SlackChannelConnection[],\n ) => {\n setIsUpdating(true);\n try {\n await knock.objects.setChannelData({\n objectId,\n collection,\n channelId: knockSlackChannelId,\n data: { connections: channelsToSendToKnock },\n });\n fetchAndSetConnectedChannels();\n } catch (error) {\n setError(t(\"slackChannelSetError\") || \"\");\n }\n setIsUpdating(false);\n };\n\n return {\n data: connectedChannels,\n updateConnectedChannels,\n updating: isUpdating,\n loading: isLoading,\n error,\n };\n}\n\nexport default useConnectedSlackChannels;\n"],"names":["useConnectedSlackChannels","slackChannelsRecipientObject","objectId","collection","t","useTranslations","knock","useKnockClient","connectionStatus","knockSlackChannelId","useKnockSlackClient","connectedChannels","setConnectedChannels","useState","error","setError","isLoading","setIsLoading","isUpdating","setIsUpdating","fetchAndSetConnectedChannels","useCallback","objects","getChannelData","channelId","then","res","data","connections","catch","useEffect","updateConnectedChannels","channelsToSendToKnock","setChannelData","updating","loading"],"mappings":";;;;;;;;;AAqBA,SAASA,EAA0B;AAAA,EACjCC,8BAA8B;AAAA,IAAEC,UAAAA;AAAAA,IAAUC,YAAAA;AAAAA,EAAW;AAChC,GAA0B;AACzC,QAAA;AAAA,IAAEC,GAAAA;AAAAA,MAAMC,EAAgB,GACxBC,IAAQC,KACR;AAAA,IAAEC,kBAAAA;AAAAA,IAAkBC,qBAAAA;AAAAA,MAAwBC,EAAoB,GAChE,CAACC,GAAmBC,CAAoB,IAAIC,EAEhD,IAAI,GACA,CAACC,GAAOC,CAAQ,IAAIF,EAAwB,IAAI,GAChD,CAACG,GAAWC,CAAY,IAAIJ,EAAS,EAAK,GAC1C,CAACK,GAAYC,CAAa,IAAIN,EAAS,EAAK,GAE5CO,IAA+BC,EAAY,MAAM;AACrDJ,IAAAA,EAAa,EAAI,IACY,YAC3B,MAAMX,EAAMgB,QAAQC,eAAe;AAAA,MACjCpB,YAAAA;AAAAA,MACAD,UAAAA;AAAAA,MACAsB,WAAWf;AAAAA,IAAAA,CACZ,GAEkB,EAClBgB,KAAMC,CAAQA,MAAA;;AACTA,OAAAA,IAAAA,KAAAA,gBAAAA,EAAKC,SAALD,QAAAA,EAAWE,cACQF,GAAAA,IAAAA,KAAAA,gBAAAA,EAAKC,SAALD,gBAAAA,EAAWE,WAAW,IAE3ChB,EAAqB,CAAE,CAAA,GAEzBG,EAAS,IAAI,GACbE,EAAa,EAAK;AAAA,IAAA,CACnB,EACAY,MAAM,MAAM;AACXjB,MAAAA,EAAqB,CAAE,CAAA,GACvBG,EAAS,IAAI,GACbE,EAAa,EAAK;AAAA,IAAA,CACnB;AAAA,EAAA,GACF,CAACd,GAAYG,EAAMgB,SAASb,GAAqBP,CAAQ,CAAC;AAE7D4B,SAAAA,EAAU,MAAM;AACd,IACEtB,MAAqB,eACrB,CAACG,KACD,CAACG,KACD,CAACE,KAE4BI;EAC/B,GACC,CACDT,GACAS,GACAJ,GACAF,GACAN,CAAgB,CACjB,GAoBM;AAAA,IACLmB,MAAMhB;AAAAA,IACNoB,yBApB8B,OAC9BC,MACG;AACHb,MAAAA,EAAc,EAAI;AACd,UAAA;AACIb,cAAAA,EAAMgB,QAAQW,eAAe;AAAA,UACjC/B,UAAAA;AAAAA,UACAC,YAAAA;AAAAA,UACAqB,WAAWf;AAAAA,UACXkB,MAAM;AAAA,YAAEC,aAAaI;AAAAA,UAAsB;AAAA,QAAA,CAC5C,GAC4BZ;cACf;AACLhB,QAAAA,EAAAA,EAAE,sBAAsB,KAAK,EAAE;AAAA,MAC1C;AACAe,MAAAA,EAAc,EAAK;AAAA,IAAA;AAAA,IAMnBe,UAAUhB;AAAAA,IACViB,SAASnB;AAAAA,IACTF,OAAAA;AAAAA,EAAAA;AAEJ;"}
1
+ {"version":3,"file":"useConnectedSlackChannels.mjs","sources":["../../../../../src/modules/slack/hooks/useConnectedSlackChannels.ts"],"sourcesContent":["import { ContainerObject, useKnockSlackClient } from \"..\";\nimport { SlackChannelConnection } from \"@knocklabs/client\";\nimport { useCallback, useEffect, useState } from \"react\";\n\nimport { useKnockClient } from \"../../core\";\nimport { useTranslations } from \"../../i18n\";\n\ntype UseSlackChannelsProps = {\n slackChannelsRecipientObject: ContainerObject;\n};\n\ntype UseSlackChannelOutput = {\n data: SlackChannelConnection[] | null;\n updateConnectedChannels: (\n connectedChannels: SlackChannelConnection[],\n ) => void;\n loading: boolean;\n error: string | null;\n updating: boolean;\n};\n\nfunction useConnectedSlackChannels({\n slackChannelsRecipientObject: { objectId, collection },\n}: UseSlackChannelsProps): UseSlackChannelOutput {\n const { t } = useTranslations();\n const knock = useKnockClient();\n const { connectionStatus, knockSlackChannelId } = useKnockSlackClient();\n const [connectedChannels, setConnectedChannels] = useState<\n null | SlackChannelConnection[]\n >(null);\n const [error, setError] = useState<string | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [isUpdating, setIsUpdating] = useState(false);\n\n const fetchAndSetConnectedChannels = useCallback(() => {\n setIsLoading(true);\n const getConnectedChannels = async () =>\n await knock.objects.getChannelData({\n collection,\n objectId,\n channelId: knockSlackChannelId,\n });\n\n getConnectedChannels()\n .then((res) => {\n if (res?.data?.connections) {\n setConnectedChannels(res?.data?.connections);\n } else {\n setConnectedChannels([]);\n }\n setError(null);\n setIsLoading(false);\n })\n .catch(() => {\n setConnectedChannels([]);\n setError(null);\n setIsLoading(false);\n });\n }, [collection, knock.objects, knockSlackChannelId, objectId]);\n\n useEffect(() => {\n if (\n connectionStatus === \"connected\" &&\n !connectedChannels &&\n !error &&\n !isLoading\n ) {\n fetchAndSetConnectedChannels();\n }\n }, [\n connectedChannels,\n fetchAndSetConnectedChannels,\n isLoading,\n error,\n connectionStatus,\n ]);\n\n const updateConnectedChannels = async (\n channelsToSendToKnock: SlackChannelConnection[],\n ) => {\n setIsUpdating(true);\n try {\n await knock.objects.setChannelData({\n objectId,\n collection,\n channelId: knockSlackChannelId,\n data: { connections: channelsToSendToKnock },\n });\n fetchAndSetConnectedChannels();\n } catch (_error) {\n setError(t(\"slackChannelSetError\") || \"\");\n }\n setIsUpdating(false);\n };\n\n return {\n data: connectedChannels,\n updateConnectedChannels,\n updating: isUpdating,\n loading: isLoading,\n error,\n };\n}\n\nexport default useConnectedSlackChannels;\n"],"names":["useConnectedSlackChannels","slackChannelsRecipientObject","objectId","collection","t","useTranslations","knock","useKnockClient","connectionStatus","knockSlackChannelId","useKnockSlackClient","connectedChannels","setConnectedChannels","useState","error","setError","isLoading","setIsLoading","isUpdating","setIsUpdating","fetchAndSetConnectedChannels","useCallback","objects","getChannelData","channelId","then","res","data","connections","catch","useEffect","updateConnectedChannels","channelsToSendToKnock","setChannelData","updating","loading"],"mappings":";;;;;;;;;AAqBA,SAASA,EAA0B;AAAA,EACjCC,8BAA8B;AAAA,IAAEC,UAAAA;AAAAA,IAAUC,YAAAA;AAAAA,EAAW;AAChC,GAA0B;AACzC,QAAA;AAAA,IAAEC,GAAAA;AAAAA,MAAMC,EAAgB,GACxBC,IAAQC,KACR;AAAA,IAAEC,kBAAAA;AAAAA,IAAkBC,qBAAAA;AAAAA,MAAwBC,EAAoB,GAChE,CAACC,GAAmBC,CAAoB,IAAIC,EAEhD,IAAI,GACA,CAACC,GAAOC,CAAQ,IAAIF,EAAwB,IAAI,GAChD,CAACG,GAAWC,CAAY,IAAIJ,EAAS,EAAK,GAC1C,CAACK,GAAYC,CAAa,IAAIN,EAAS,EAAK,GAE5CO,IAA+BC,EAAY,MAAM;AACrDJ,IAAAA,EAAa,EAAI,IACY,YAC3B,MAAMX,EAAMgB,QAAQC,eAAe;AAAA,MACjCpB,YAAAA;AAAAA,MACAD,UAAAA;AAAAA,MACAsB,WAAWf;AAAAA,IAAAA,CACZ,GAEkB,EAClBgB,KAAMC,CAAQA,MAAA;;AACTA,OAAAA,IAAAA,KAAAA,gBAAAA,EAAKC,SAALD,QAAAA,EAAWE,cACQF,GAAAA,IAAAA,KAAAA,gBAAAA,EAAKC,SAALD,gBAAAA,EAAWE,WAAW,IAE3ChB,EAAqB,CAAE,CAAA,GAEzBG,EAAS,IAAI,GACbE,EAAa,EAAK;AAAA,IAAA,CACnB,EACAY,MAAM,MAAM;AACXjB,MAAAA,EAAqB,CAAE,CAAA,GACvBG,EAAS,IAAI,GACbE,EAAa,EAAK;AAAA,IAAA,CACnB;AAAA,EAAA,GACF,CAACd,GAAYG,EAAMgB,SAASb,GAAqBP,CAAQ,CAAC;AAE7D4B,SAAAA,EAAU,MAAM;AACd,IACEtB,MAAqB,eACrB,CAACG,KACD,CAACG,KACD,CAACE,KAE4BI;EAC/B,GACC,CACDT,GACAS,GACAJ,GACAF,GACAN,CAAgB,CACjB,GAoBM;AAAA,IACLmB,MAAMhB;AAAAA,IACNoB,yBApB8B,OAC9BC,MACG;AACHb,MAAAA,EAAc,EAAI;AACd,UAAA;AACIb,cAAAA,EAAMgB,QAAQW,eAAe;AAAA,UACjC/B,UAAAA;AAAAA,UACAC,YAAAA;AAAAA,UACAqB,WAAWf;AAAAA,UACXkB,MAAM;AAAA,YAAEC,aAAaI;AAAAA,UAAsB;AAAA,QAAA,CAC5C,GAC4BZ;cACd;AACNhB,QAAAA,EAAAA,EAAE,sBAAsB,KAAK,EAAE;AAAA,MAC1C;AACAe,MAAAA,EAAc,EAAK;AAAA,IAAA;AAAA,IAMnBe,UAAUhB;AAAAA,IACViB,SAASnB;AAAAA,IACTF,OAAAA;AAAAA,EAAAA;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSlackAuth.mjs","sources":["../../../../../src/modules/slack/hooks/useSlackAuth.ts"],"sourcesContent":["import { useKnockSlackClient } from \"..\";\nimport { TENANT_OBJECT_COLLECTION } from \"@knocklabs/client\";\nimport { useCallback } from \"react\";\n\nimport { useKnockClient } from \"../../core\";\n\nconst SLACK_AUTHORIZE_URL = \"https://slack.com/oauth/v2/authorize\";\nconst DEFAULT_SLACK_SCOPES = [\n \"chat:write\",\n \"chat:write.public\",\n \"channels:read\",\n \"groups:read\",\n];\n\ntype UseSlackAuthOutput = {\n buildSlackAuthUrl: () => string;\n disconnectFromSlack: () => void;\n};\n\nfunction useSlackAuth(\n slackClientId: string,\n redirectUrl?: string,\n additionalScopes?: string[],\n): UseSlackAuthOutput {\n const knock = useKnockClient();\n const { setConnectionStatus, knockSlackChannelId, tenant, setActionLabel } =\n useKnockSlackClient();\n\n const combinedScopes =\n additionalScopes && additionalScopes.length > 0\n ? Array.from(new Set(DEFAULT_SLACK_SCOPES.concat(additionalScopes)))\n : DEFAULT_SLACK_SCOPES;\n\n const disconnectFromSlack = useCallback(async () => {\n setActionLabel(null);\n setConnectionStatus(\"disconnecting\");\n try {\n const revoke = await knock.slack.revokeAccessToken({\n tenant,\n knockChannelId: knockSlackChannelId,\n });\n\n if (revoke === \"ok\") {\n setConnectionStatus(\"disconnected\");\n } else {\n setConnectionStatus(\"error\");\n }\n } catch (error) {\n setConnectionStatus(\"error\");\n }\n }, [\n setConnectionStatus,\n knock.slack,\n tenant,\n knockSlackChannelId,\n setActionLabel,\n ]);\n\n const buildSlackAuthUrl = useCallback(() => {\n const rawParams = {\n state: JSON.stringify({\n redirect_url: redirectUrl,\n access_token_object: {\n object_id: tenant,\n collection: TENANT_OBJECT_COLLECTION,\n },\n channel_id: knockSlackChannelId,\n public_key: knock.apiKey,\n user_token: knock.userToken,\n }),\n client_id: slackClientId,\n scope: combinedScopes.join(\",\"),\n };\n return `${SLACK_AUTHORIZE_URL}?${new URLSearchParams(rawParams)}`;\n }, [\n redirectUrl,\n tenant,\n knockSlackChannelId,\n knock.apiKey,\n knock.userToken,\n slackClientId,\n combinedScopes,\n ]);\n\n return {\n buildSlackAuthUrl,\n disconnectFromSlack,\n };\n}\n\nexport default useSlackAuth;\n"],"names":["SLACK_AUTHORIZE_URL","DEFAULT_SLACK_SCOPES","useSlackAuth","slackClientId","redirectUrl","additionalScopes","knock","useKnockClient","setConnectionStatus","knockSlackChannelId","tenant","setActionLabel","useKnockSlackClient","combinedScopes","length","Array","from","Set","concat","disconnectFromSlack","useCallback","revoke","slack","revokeAccessToken","knockChannelId","buildSlackAuthUrl","rawParams","state","JSON","stringify","redirect_url","access_token_object","object_id","collection","TENANT_OBJECT_COLLECTION","channel_id","public_key","apiKey","user_token","userToken","client_id","scope","join","URLSearchParams"],"mappings":";;;;;;;;AAMA,MAAMA,IAAsB,wCACtBC,IAAuB,CAC3B,cACA,qBACA,iBACA,aAAa;AAQf,SAASC,EACPC,GACAC,GACAC,GACoB;AACpB,QAAMC,IAAQC,KACR;AAAA,IAAEC,qBAAAA;AAAAA,IAAqBC,qBAAAA;AAAAA,IAAqBC,QAAAA;AAAAA,IAAQC,gBAAAA;AAAAA,MACxDC,EAAoB,GAEhBC,IACJR,KAAoBA,EAAiBS,SAAS,IAC1CC,MAAMC,KAAK,IAAIC,IAAIhB,EAAqBiB,OAAOb,CAAgB,CAAC,CAAC,IACjEJ,GAEAkB,IAAsBC,EAAY,YAAY;AAClDT,IAAAA,EAAe,IAAI,GACnBH,EAAoB,eAAe;AAC/B,QAAA;AACF,YAAMa,IAAS,MAAMf,EAAMgB,MAAMC,kBAAkB;AAAA,QACjDb,QAAAA;AAAAA,QACAc,gBAAgBf;AAAAA,MAAAA,CACjB;AAED,MACED,EADEa,MAAW,OACO,iBAEA,OAFc;AAAA,YAItB;AACdb,MAAAA,EAAoB,OAAO;AAAA,IAC7B;AAAA,EAAA,GACC,CACDA,GACAF,EAAMgB,OACNZ,GACAD,GACAE,CAAc,CACf;AA4BM,SAAA;AAAA,IACLc,mBA3BwBL,EAAY,MAAM;AAC1C,YAAMM,IAAY;AAAA,QAChBC,OAAOC,KAAKC,UAAU;AAAA,UACpBC,cAAc1B;AAAAA,UACd2B,qBAAqB;AAAA,YACnBC,WAAWtB;AAAAA,YACXuB,YAAYC;AAAAA,UACd;AAAA,UACAC,YAAY1B;AAAAA,UACZ2B,YAAY9B,EAAM+B;AAAAA,UAClBC,YAAYhC,EAAMiC;AAAAA,QAAAA,CACnB;AAAA,QACDC,WAAWrC;AAAAA,QACXsC,OAAO5B,EAAe6B,KAAK,GAAG;AAAA,MAAA;AAEhC,aAAO,GAAG1C,CAAmB,IAAI,IAAI2C,gBAAgBjB,CAAS,CAAC;AAAA,IACjE,GAAG,CACDtB,GACAM,GACAD,GACAH,EAAM+B,QACN/B,EAAMiC,WACNpC,GACAU,CAAc,CACf;AAAA,IAICM,qBAAAA;AAAAA,EAAAA;AAEJ;"}
1
+ {"version":3,"file":"useSlackAuth.mjs","sources":["../../../../../src/modules/slack/hooks/useSlackAuth.ts"],"sourcesContent":["import { useKnockSlackClient } from \"..\";\nimport { TENANT_OBJECT_COLLECTION } from \"@knocklabs/client\";\nimport { useCallback } from \"react\";\n\nimport { useKnockClient } from \"../../core\";\n\nconst SLACK_AUTHORIZE_URL = \"https://slack.com/oauth/v2/authorize\";\nconst DEFAULT_SLACK_SCOPES = [\n \"chat:write\",\n \"chat:write.public\",\n \"channels:read\",\n \"groups:read\",\n];\n\ntype UseSlackAuthOutput = {\n buildSlackAuthUrl: () => string;\n disconnectFromSlack: () => void;\n};\n\nfunction useSlackAuth(\n slackClientId: string,\n redirectUrl?: string,\n additionalScopes?: string[],\n): UseSlackAuthOutput {\n const knock = useKnockClient();\n const { setConnectionStatus, knockSlackChannelId, tenant, setActionLabel } =\n useKnockSlackClient();\n\n const combinedScopes =\n additionalScopes && additionalScopes.length > 0\n ? Array.from(new Set(DEFAULT_SLACK_SCOPES.concat(additionalScopes)))\n : DEFAULT_SLACK_SCOPES;\n\n const disconnectFromSlack = useCallback(async () => {\n setActionLabel(null);\n setConnectionStatus(\"disconnecting\");\n try {\n const revoke = await knock.slack.revokeAccessToken({\n tenant,\n knockChannelId: knockSlackChannelId,\n });\n\n if (revoke === \"ok\") {\n setConnectionStatus(\"disconnected\");\n } else {\n setConnectionStatus(\"error\");\n }\n } catch (_error) {\n setConnectionStatus(\"error\");\n }\n }, [\n setConnectionStatus,\n knock.slack,\n tenant,\n knockSlackChannelId,\n setActionLabel,\n ]);\n\n const buildSlackAuthUrl = useCallback(() => {\n const rawParams = {\n state: JSON.stringify({\n redirect_url: redirectUrl,\n access_token_object: {\n object_id: tenant,\n collection: TENANT_OBJECT_COLLECTION,\n },\n channel_id: knockSlackChannelId,\n public_key: knock.apiKey,\n user_token: knock.userToken,\n }),\n client_id: slackClientId,\n scope: combinedScopes.join(\",\"),\n };\n return `${SLACK_AUTHORIZE_URL}?${new URLSearchParams(rawParams)}`;\n }, [\n redirectUrl,\n tenant,\n knockSlackChannelId,\n knock.apiKey,\n knock.userToken,\n slackClientId,\n combinedScopes,\n ]);\n\n return {\n buildSlackAuthUrl,\n disconnectFromSlack,\n };\n}\n\nexport default useSlackAuth;\n"],"names":["SLACK_AUTHORIZE_URL","DEFAULT_SLACK_SCOPES","useSlackAuth","slackClientId","redirectUrl","additionalScopes","knock","useKnockClient","setConnectionStatus","knockSlackChannelId","tenant","setActionLabel","useKnockSlackClient","combinedScopes","length","Array","from","Set","concat","disconnectFromSlack","useCallback","revoke","slack","revokeAccessToken","knockChannelId","buildSlackAuthUrl","rawParams","state","JSON","stringify","redirect_url","access_token_object","object_id","collection","TENANT_OBJECT_COLLECTION","channel_id","public_key","apiKey","user_token","userToken","client_id","scope","join","URLSearchParams"],"mappings":";;;;;;;;AAMA,MAAMA,IAAsB,wCACtBC,IAAuB,CAC3B,cACA,qBACA,iBACA,aAAa;AAQf,SAASC,EACPC,GACAC,GACAC,GACoB;AACpB,QAAMC,IAAQC,KACR;AAAA,IAAEC,qBAAAA;AAAAA,IAAqBC,qBAAAA;AAAAA,IAAqBC,QAAAA;AAAAA,IAAQC,gBAAAA;AAAAA,MACxDC,EAAoB,GAEhBC,IACJR,KAAoBA,EAAiBS,SAAS,IAC1CC,MAAMC,KAAK,IAAIC,IAAIhB,EAAqBiB,OAAOb,CAAgB,CAAC,CAAC,IACjEJ,GAEAkB,IAAsBC,EAAY,YAAY;AAClDT,IAAAA,EAAe,IAAI,GACnBH,EAAoB,eAAe;AAC/B,QAAA;AACF,YAAMa,IAAS,MAAMf,EAAMgB,MAAMC,kBAAkB;AAAA,QACjDb,QAAAA;AAAAA,QACAc,gBAAgBf;AAAAA,MAAAA,CACjB;AAED,MACED,EADEa,MAAW,OACO,iBAEA,OAFc;AAAA,YAIrB;AACfb,MAAAA,EAAoB,OAAO;AAAA,IAC7B;AAAA,EAAA,GACC,CACDA,GACAF,EAAMgB,OACNZ,GACAD,GACAE,CAAc,CACf;AA4BM,SAAA;AAAA,IACLc,mBA3BwBL,EAAY,MAAM;AAC1C,YAAMM,IAAY;AAAA,QAChBC,OAAOC,KAAKC,UAAU;AAAA,UACpBC,cAAc1B;AAAAA,UACd2B,qBAAqB;AAAA,YACnBC,WAAWtB;AAAAA,YACXuB,YAAYC;AAAAA,UACd;AAAA,UACAC,YAAY1B;AAAAA,UACZ2B,YAAY9B,EAAM+B;AAAAA,UAClBC,YAAYhC,EAAMiC;AAAAA,QAAAA,CACnB;AAAA,QACDC,WAAWrC;AAAAA,QACXsC,OAAO5B,EAAe6B,KAAK,GAAG;AAAA,MAAA;AAEhC,aAAO,GAAG1C,CAAmB,IAAI,IAAI2C,gBAAgBjB,CAAS,CAAC;AAAA,IACjE,GAAG,CACDtB,GACAM,GACAD,GACAH,EAAM+B,QACN/B,EAAMiC,WACNpC,GACAU,CAAc,CACf;AAAA,IAICM,qBAAAA;AAAAA,EAAAA;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSlackConnectionStatus.mjs","sources":["../../../../../src/modules/slack/hooks/useSlackConnectionStatus.ts"],"sourcesContent":["import Knock from \"@knocklabs/client\";\nimport { useEffect, useState } from \"react\";\n\nimport { useTranslations } from \"../../i18n\";\n\nexport type ConnectionStatus =\n | \"connecting\"\n | \"connected\"\n | \"disconnected\"\n | \"error\"\n | \"disconnecting\";\n\ntype UseSlackConnectionStatusOutput = {\n connectionStatus: ConnectionStatus;\n setConnectionStatus: (status: ConnectionStatus) => void;\n errorLabel: string | null;\n setErrorLabel: (errorLabel: string) => void;\n actionLabel: string | null;\n setActionLabel: (actionLabel: string | null) => void;\n};\n\n/**\n * Transforms a slack error message into\n * a formatted one. Slack error messages: https://api.slack.com/methods/auth.test#errors\n *\n * Ex.: \"account_inactive\" -> \"Account inactive\"\n */\nconst formatSlackErrorMessage = (errorMessage: string) => {\n const firstLetter = errorMessage.substring(0, 1).toUpperCase();\n const rest = errorMessage.substring(1);\n return firstLetter?.concat(rest).replace(\"_\", \" \");\n};\n\nfunction useSlackConnectionStatus(\n knock: Knock,\n knockSlackChannelId: string,\n tenant: string,\n): UseSlackConnectionStatusOutput {\n const { t } = useTranslations();\n const [connectionStatus, setConnectionStatus] =\n useState<ConnectionStatus>(\"connecting\");\n const [errorLabel, setErrorLabel] = useState<string | null>(null);\n const [actionLabel, setActionLabel] = useState<string | null>(null);\n\n useEffect(() => {\n const checkAuthStatus = async () => {\n if (connectionStatus !== \"connecting\") return;\n\n try {\n const authRes = await knock.slack.authCheck({\n tenant,\n knockChannelId: knockSlackChannelId,\n });\n\n if (authRes.connection?.ok) {\n return setConnectionStatus(\"connected\");\n }\n\n if (!authRes.connection?.ok) {\n return setConnectionStatus(\"disconnected\");\n }\n\n // This is a normal response for a tenant that doesn't have an access\n // token set on it, meaning it's not connected to Slack, so we\n // give it a \"disconnected\" status instead of an error status.\n if (\n authRes.code === \"ERR_BAD_REQUEST\" &&\n authRes.response?.data?.message === t(\"slackAccessTokenNotSet\")\n ) {\n return setConnectionStatus(\"disconnected\");\n }\n\n // This is for an error coming directly from Slack.\n if (!authRes.connection?.ok && authRes.connection?.error) {\n const errorLabel = formatSlackErrorMessage(authRes.connection?.error);\n setErrorLabel(errorLabel);\n setConnectionStatus(\"error\");\n return;\n }\n\n // This is for any Knock errors that would require a reconnect.\n\n setConnectionStatus(\"error\");\n } catch (error) {\n setConnectionStatus(\"error\");\n }\n };\n\n checkAuthStatus();\n }, [connectionStatus, tenant, knockSlackChannelId, knock.slack, t]);\n\n return {\n connectionStatus,\n setConnectionStatus,\n errorLabel,\n setErrorLabel,\n actionLabel,\n setActionLabel,\n };\n}\n\nexport default useSlackConnectionStatus;\n"],"names":["formatSlackErrorMessage","errorMessage","firstLetter","substring","toUpperCase","rest","concat","replace","useSlackConnectionStatus","knock","knockSlackChannelId","tenant","t","useTranslations","connectionStatus","setConnectionStatus","useState","errorLabel","setErrorLabel","actionLabel","setActionLabel","useEffect","authRes","slack","authCheck","knockChannelId","connection","ok","code","response","data","message","error"],"mappings":";;;AA2BA,MAAMA,IAA0BA,CAACC,MAAyB;AACxD,QAAMC,IAAcD,EAAaE,UAAU,GAAG,CAAC,EAAEC,eAC3CC,IAAOJ,EAAaE,UAAU,CAAC;AACrC,SAAOD,KAAAA,gBAAAA,EAAaI,OAAOD,GAAME,QAAQ,KAAK;AAChD;AAEA,SAASC,EACPC,GACAC,GACAC,GACgC;AAC1B,QAAA;AAAA,IAAEC,GAAAA;AAAAA,MAAMC,EAAgB,GACxB,CAACC,GAAkBC,CAAmB,IAC1CC,EAA2B,YAAY,GACnC,CAACC,GAAYC,CAAa,IAAIF,EAAwB,IAAI,GAC1D,CAACG,GAAaC,CAAc,IAAIJ,EAAwB,IAAI;AAElEK,SAAAA,EAAU,MAAM;AA4CE,KA3CQ,YAAY;;AAClC,UAAIP,MAAqB;AAErB,YAAA;AACF,gBAAMQ,IAAU,MAAMb,EAAMc,MAAMC,UAAU;AAAA,YAC1Cb,QAAAA;AAAAA,YACAc,gBAAgBf;AAAAA,UAAAA,CACjB;AAEGY,eAAAA,IAAAA,EAAQI,eAARJ,QAAAA,EAAoBK;AACtB,mBAAOZ,EAAoB,WAAW;AAWtCO,cARE,GAACA,IAAAA,EAAQI,eAARJ,QAAAA,EAAoBK,OAQvBL,EAAQM,SAAS,uBACjBN,KAAAA,IAAAA,EAAQO,aAARP,gBAAAA,EAAkBQ,SAAlBR,gBAAAA,EAAwBS,aAAYnB,EAAE,wBAAwB;AAE9D,mBAAOG,EAAoB,cAAc;AAI3C,cAAI,GAACO,IAAAA,EAAQI,eAARJ,QAAAA,EAAoBK,SAAML,IAAAA,EAAQI,eAARJ,QAAAA,EAAoBU,QAAO;AACxD,kBAAMf,IAAajB,GAAwBsB,IAAAA,EAAQI,eAARJ,gBAAAA,EAAoBU,KAAK;AACpEd,YAAAA,EAAcD,CAAU,GACxBF,EAAoB,OAAO;AAC3B;AAAA,UACF;AAIAA,UAAAA,EAAoB,OAAO;AAAA,gBACb;AACdA,UAAAA,EAAoB,OAAO;AAAA,QAC7B;AAAA,IAAA;EAGc,GACf,CAACD,GAAkBH,GAAQD,GAAqBD,EAAMc,OAAOX,CAAC,CAAC,GAE3D;AAAA,IACLE,kBAAAA;AAAAA,IACAC,qBAAAA;AAAAA,IACAE,YAAAA;AAAAA,IACAC,eAAAA;AAAAA,IACAC,aAAAA;AAAAA,IACAC,gBAAAA;AAAAA,EAAAA;AAEJ;"}
1
+ {"version":3,"file":"useSlackConnectionStatus.mjs","sources":["../../../../../src/modules/slack/hooks/useSlackConnectionStatus.ts"],"sourcesContent":["import Knock from \"@knocklabs/client\";\nimport { useEffect, useState } from \"react\";\n\nimport { useTranslations } from \"../../i18n\";\n\nexport type ConnectionStatus =\n | \"connecting\"\n | \"connected\"\n | \"disconnected\"\n | \"error\"\n | \"disconnecting\";\n\ntype UseSlackConnectionStatusOutput = {\n connectionStatus: ConnectionStatus;\n setConnectionStatus: (status: ConnectionStatus) => void;\n errorLabel: string | null;\n setErrorLabel: (errorLabel: string) => void;\n actionLabel: string | null;\n setActionLabel: (actionLabel: string | null) => void;\n};\n\n/**\n * Transforms a slack error message into\n * a formatted one. Slack error messages: https://api.slack.com/methods/auth.test#errors\n *\n * Ex.: \"account_inactive\" -> \"Account inactive\"\n */\nconst formatSlackErrorMessage = (errorMessage: string) => {\n const firstLetter = errorMessage.substring(0, 1).toUpperCase();\n const rest = errorMessage.substring(1);\n return firstLetter?.concat(rest).replace(\"_\", \" \");\n};\n\nfunction useSlackConnectionStatus(\n knock: Knock,\n knockSlackChannelId: string,\n tenant: string,\n): UseSlackConnectionStatusOutput {\n const { t } = useTranslations();\n const [connectionStatus, setConnectionStatus] =\n useState<ConnectionStatus>(\"connecting\");\n const [errorLabel, setErrorLabel] = useState<string | null>(null);\n const [actionLabel, setActionLabel] = useState<string | null>(null);\n\n useEffect(() => {\n const checkAuthStatus = async () => {\n if (connectionStatus !== \"connecting\") return;\n\n try {\n const authRes = await knock.slack.authCheck({\n tenant,\n knockChannelId: knockSlackChannelId,\n });\n\n if (authRes.connection?.ok) {\n return setConnectionStatus(\"connected\");\n }\n\n if (!authRes.connection?.ok) {\n return setConnectionStatus(\"disconnected\");\n }\n\n // This is a normal response for a tenant that doesn't have an access\n // token set on it, meaning it's not connected to Slack, so we\n // give it a \"disconnected\" status instead of an error status.\n if (\n authRes.code === \"ERR_BAD_REQUEST\" &&\n authRes.response?.data?.message === t(\"slackAccessTokenNotSet\")\n ) {\n return setConnectionStatus(\"disconnected\");\n }\n\n // This is for an error coming directly from Slack.\n if (!authRes.connection?.ok && authRes.connection?.error) {\n const errorLabel = formatSlackErrorMessage(authRes.connection?.error);\n setErrorLabel(errorLabel);\n setConnectionStatus(\"error\");\n return;\n }\n\n // This is for any Knock errors that would require a reconnect.\n\n setConnectionStatus(\"error\");\n } catch (_error) {\n setConnectionStatus(\"error\");\n }\n };\n\n checkAuthStatus();\n }, [connectionStatus, tenant, knockSlackChannelId, knock.slack, t]);\n\n return {\n connectionStatus,\n setConnectionStatus,\n errorLabel,\n setErrorLabel,\n actionLabel,\n setActionLabel,\n };\n}\n\nexport default useSlackConnectionStatus;\n"],"names":["formatSlackErrorMessage","errorMessage","firstLetter","substring","toUpperCase","rest","concat","replace","useSlackConnectionStatus","knock","knockSlackChannelId","tenant","t","useTranslations","connectionStatus","setConnectionStatus","useState","errorLabel","setErrorLabel","actionLabel","setActionLabel","useEffect","authRes","slack","authCheck","knockChannelId","connection","ok","code","response","data","message","error"],"mappings":";;;AA2BA,MAAMA,IAA0BA,CAACC,MAAyB;AACxD,QAAMC,IAAcD,EAAaE,UAAU,GAAG,CAAC,EAAEC,eAC3CC,IAAOJ,EAAaE,UAAU,CAAC;AACrC,SAAOD,KAAAA,gBAAAA,EAAaI,OAAOD,GAAME,QAAQ,KAAK;AAChD;AAEA,SAASC,EACPC,GACAC,GACAC,GACgC;AAC1B,QAAA;AAAA,IAAEC,GAAAA;AAAAA,MAAMC,EAAgB,GACxB,CAACC,GAAkBC,CAAmB,IAC1CC,EAA2B,YAAY,GACnC,CAACC,GAAYC,CAAa,IAAIF,EAAwB,IAAI,GAC1D,CAACG,GAAaC,CAAc,IAAIJ,EAAwB,IAAI;AAElEK,SAAAA,EAAU,MAAM;AA4CE,KA3CQ,YAAY;;AAClC,UAAIP,MAAqB;AAErB,YAAA;AACF,gBAAMQ,IAAU,MAAMb,EAAMc,MAAMC,UAAU;AAAA,YAC1Cb,QAAAA;AAAAA,YACAc,gBAAgBf;AAAAA,UAAAA,CACjB;AAEGY,eAAAA,IAAAA,EAAQI,eAARJ,QAAAA,EAAoBK;AACtB,mBAAOZ,EAAoB,WAAW;AAWtCO,cARE,GAACA,IAAAA,EAAQI,eAARJ,QAAAA,EAAoBK,OAQvBL,EAAQM,SAAS,uBACjBN,KAAAA,IAAAA,EAAQO,aAARP,gBAAAA,EAAkBQ,SAAlBR,gBAAAA,EAAwBS,aAAYnB,EAAE,wBAAwB;AAE9D,mBAAOG,EAAoB,cAAc;AAI3C,cAAI,GAACO,IAAAA,EAAQI,eAARJ,QAAAA,EAAoBK,SAAML,IAAAA,EAAQI,eAARJ,QAAAA,EAAoBU,QAAO;AACxD,kBAAMf,IAAajB,GAAwBsB,IAAAA,EAAQI,eAARJ,gBAAAA,EAAoBU,KAAK;AACpEd,YAAAA,EAAcD,CAAU,GACxBF,EAAoB,OAAO;AAC3B;AAAA,UACF;AAIAA,UAAAA,EAAoB,OAAO;AAAA,gBACZ;AACfA,UAAAA,EAAoB,OAAO;AAAA,QAC7B;AAAA,IAAA;EAGc,GACf,CAACD,GAAkBH,GAAQD,GAAqBD,EAAMc,OAAOX,CAAC,CAAC,GAE3D;AAAA,IACLE,kBAAAA;AAAAA,IACAC,qBAAAA;AAAAA,IACAE,YAAAA;AAAAA,IACAC,eAAAA;AAAAA,IACAC,aAAAA;AAAAA,IACAC,gBAAAA;AAAAA,EAAAA;AAEJ;"}
@@ -1,6 +1,6 @@
1
1
  export * from './modules/core';
2
2
  export * from './modules/feed';
3
- export * from './modules/in-app-messages';
3
+ export * from './modules/ms-teams';
4
4
  export * from './modules/slack';
5
5
  export * from './modules/i18n';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import { default as Knock, AuthenticateOptions, LogLevel } from '@knocklabs/client';
2
2
  import { PropsWithChildren } from 'react';
3
3
  import { I18nContent } from '../../i18n';
4
-
5
4
  import * as React from "react";
6
5
  export interface KnockProviderState {
7
6
  knock: Knock;
@@ -9,8 +8,8 @@ export interface KnockProviderState {
9
8
  export interface KnockProviderProps {
10
9
  apiKey: string;
11
10
  host?: string;
12
- userId: string;
13
- userToken?: string;
11
+ userId: Knock["userId"];
12
+ userToken?: Knock["userToken"];
14
13
  onUserTokenExpiring?: AuthenticateOptions["onUserTokenExpiring"];
15
14
  timeBeforeExpirationInMs?: AuthenticateOptions["timeBeforeExpirationInMs"];
16
15
  i18n?: I18nContent;
@@ -1 +1 @@
1
- {"version":3,"file":"KnockProvider.d.ts","sourceRoot":"","sources":["../../../../../src/modules/core/context/KnockProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAqB,MAAM,YAAY,CAAC;AAG5D,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,KAAK,CAAC;CACd;AAID,MAAM,WAAW,kBAAkB;IAEjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;IACjE,wBAAwB,CAAC,EAAE,mBAAmB,CAAC,0BAA0B,CAAC,CAAC;IAG3E,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAsCzE,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,KAMjC,CAAC"}
1
+ {"version":3,"file":"KnockProvider.d.ts","sourceRoot":"","sources":["../../../../../src/modules/core/context/KnockProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAqB,MAAM,YAAY,CAAC;AAG5D,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,KAAK,CAAC;CACd;AAMD,MAAM,WAAW,kBAAkB;IAEjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,SAAS,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC/B,mBAAmB,CAAC,EAAE,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;IACjE,wBAAwB,CAAC,EAAE,mBAAmB,CAAC,0BAA0B,CAAC,CAAC;IAE3E,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAsCzE,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,KAMjC,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import { default as Knock, AuthenticateOptions, KnockOptions } from '@knocklabs/client';
2
-
3
2
  export type AuthenticatedKnockClientOptions = KnockOptions & AuthenticateOptions;
4
- declare function useAuthenticatedKnockClient(apiKey: string, userId: string, userToken?: string, options?: AuthenticatedKnockClientOptions): Knock;
3
+ declare function useAuthenticatedKnockClient(apiKey: string, userId: Knock["userId"], userToken?: Knock["userToken"], options?: AuthenticatedKnockClientOptions): Knock;
5
4
  export default useAuthenticatedKnockClient;
6
5
  //# sourceMappingURL=useAuthenticatedKnockClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAuthenticatedKnockClient.d.ts","sourceRoot":"","sources":["../../../../../src/modules/core/hooks/useAuthenticatedKnockClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAiB7E,MAAM,MAAM,+BAA+B,GAAG,YAAY,GACxD,mBAAmB,CAAC;AAEtB,iBAAS,2BAA2B,CAClC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE,+BAAoC,SAiC9C;AAED,eAAe,2BAA2B,CAAC"}
1
+ {"version":3,"file":"useAuthenticatedKnockClient.d.ts","sourceRoot":"","sources":["../../../../../src/modules/core/hooks/useAuthenticatedKnockClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAiB7E,MAAM,MAAM,+BAA+B,GAAG,YAAY,GACxD,mBAAmB,CAAC;AAEtB,iBAAS,2BAA2B,CAClC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,EACvB,SAAS,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,EAC9B,OAAO,GAAE,+BAAoC,SAiC9C;AAED,eAAe,2BAA2B,CAAC"}
@@ -1,6 +1,5 @@
1
- import { FeedClientOptions } from '@knocklabs/client';
1
+ import { default as Knock, FeedClientOptions } from '@knocklabs/client';
2
2
  import { ReactNode } from 'react';
3
-
4
3
  export declare function formatBadgeCount(count: number): string | number;
5
4
  type FormatTimestampOptions = {
6
5
  locale?: string | string[];
@@ -8,12 +7,18 @@ type FormatTimestampOptions = {
8
7
  export declare function formatTimestamp(ts: string, options?: FormatTimestampOptions): string;
9
8
  export declare function toSentenceCase(string: string): string;
10
9
  export declare function renderNodeOrFallback(node: ReactNode, fallback: ReactNode): ReactNode;
11
- export declare function feedProviderKey(userId: string | undefined, feedId: string, options?: FeedClientOptions): string;
10
+ export declare function feedProviderKey(userId: Knock["userId"], feedId: string, options?: FeedClientOptions): string;
12
11
  export declare function slackProviderKey({ knockSlackChannelId, tenant, connectionStatus, errorLabel, }: {
13
12
  knockSlackChannelId: string;
14
13
  tenant: string;
15
14
  connectionStatus: string;
16
15
  errorLabel: string | null;
17
16
  }): string;
17
+ export declare function msTeamsProviderKey({ knockMsTeamsChannelId, tenantId, connectionStatus, errorLabel, }: {
18
+ knockMsTeamsChannelId: string;
19
+ tenantId: string;
20
+ connectionStatus: string;
21
+ errorLabel: string | null;
22
+ }): string;
18
23
  export {};
19
24
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/modules/core/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE/D;AAED,KAAK,sBAAsB,GAAG;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,wBAAgB,eAAe,CAC7B,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,sBAA2B,UAYrC;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,aAExE;AAMD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,iBAAsB,UAYhC;AAMD,wBAAgB,gBAAgB,CAAC,EAC/B,mBAAmB,EACnB,MAAM,EACN,gBAAgB,EAChB,UAAU,GACX,EAAE;IACD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,UAIA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/modules/core/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE/D;AAED,KAAK,sBAAsB,GAAG;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,wBAAgB,eAAe,CAC7B,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,sBAA2B,UAYrC;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,aAExE;AAMD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,iBAAsB,UAYhC;AAMD,wBAAgB,gBAAgB,CAAC,EAC/B,mBAAmB,EACnB,MAAM,EACN,gBAAgB,EAChB,UAAU,GACX,EAAE;IACD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,UAIA;AAMD,wBAAgB,kBAAkB,CAAC,EACjC,qBAAqB,EACrB,QAAQ,EACR,gBAAgB,EAChB,UAAU,GACX,EAAE;IACD,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,UAIA"}
@@ -2,7 +2,6 @@ import { default as Knock, Feed, FeedClientOptions, FeedStoreState } from '@knoc
2
2
  import { PropsWithChildren } from 'react';
3
3
  import { UseBoundStore } from 'zustand';
4
4
  import { ColorMode } from '../../core/constants';
5
-
6
5
  import * as React from "react";
7
6
  export interface KnockFeedProviderState {
8
7
  knock: Knock;
@@ -1 +1 @@
1
- {"version":3,"file":"KnockFeedProvider.d.ts","sourceRoot":"","sources":["../../../../../src/modules/feed/context/KnockFeedProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,IAAI,EACJ,iBAAiB,EACjB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAKjD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,IAAI,CAAC;IACjB,YAAY,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC5C,SAAS,EAAE,SAAS,CAAC;CACtB;AAMD,MAAM,WAAW,sBAAsB;IAErC,MAAM,EAAE,MAAM,CAAC;IAGf,SAAS,CAAC,EAAE,SAAS,CAAC;IAGtB,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;CACxC;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CACtC,iBAAiB,CAAC,sBAAsB,CAAC,CAyB1C,CAAC;AAEF,eAAO,MAAM,YAAY,QAAO,sBAO/B,CAAC"}
1
+ {"version":3,"file":"KnockFeedProvider.d.ts","sourceRoot":"","sources":["../../../../../src/modules/feed/context/KnockFeedProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,IAAI,EACJ,iBAAiB,EACjB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAKjD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,IAAI,CAAC;IACjB,YAAY,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC5C,SAAS,EAAE,SAAS,CAAC;CACtB;AAMD,MAAM,WAAW,sBAAsB;IAErC,MAAM,EAAE,MAAM,CAAC;IAGf,SAAS,CAAC,EAAE,SAAS,CAAC;IAGtB,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;CACxC;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CACtC,iBAAiB,CAAC,sBAAsB,CAAC,CAmB1C,CAAC;AAEF,eAAO,MAAM,YAAY,QAAO,sBAQ/B,CAAC"}
@@ -1,5 +1,4 @@
1
1
  import { Feed } from '@knocklabs/client';
2
-
3
2
  export type FeedSettings = {
4
3
  features: {
5
4
  branding_required: boolean;
@@ -1,6 +1,5 @@
1
1
  import { Feed, FeedStoreState } from '@knocklabs/client';
2
2
  import { StateSelector } from 'zustand';
3
-
4
3
  declare function useCreateNotificationStore(feedClient: Feed): import('zustand').UseBoundStore<FeedStoreState, import('zustand').StoreApi<FeedStoreState>>;
5
4
  declare function useNotificationStore(feedClient: Feed, selector?: StateSelector<FeedStoreState, FeedStoreState>): FeedStoreState;
6
5
  export { useCreateNotificationStore };
@@ -1,5 +1,4 @@
1
1
  import { default as Knock, Feed, FeedClientOptions } from '@knocklabs/client';
2
-
3
2
  declare function useNotifications(knock: Knock, feedChannelId: string, options?: FeedClientOptions): Feed;
4
3
  export default useNotifications;
5
4
  //# sourceMappingURL=useNotifications.d.ts.map
@@ -1,6 +1,5 @@
1
1
  import { default as React, FunctionComponent, PropsWithChildren } from 'react';
2
2
  import { I18nContent } from '../languages';
3
-
4
3
  export declare const I18nContext: React.Context<I18nContent>;
5
4
  export interface KnockI18nProviderProps {
6
5
  i18n?: I18nContent;
@@ -1,5 +1,4 @@
1
1
  import { I18nContent } from '.';
2
-
3
2
  declare const de: I18nContent;
4
3
  export default de;
5
4
  //# sourceMappingURL=de.d.ts.map