@knocklabs/react-core 0.6.14 → 0.7.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.
Files changed (220) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/cjs/index.js +2 -0
  3. package/dist/cjs/index.js.map +1 -0
  4. package/dist/cjs/modules/core/constants.js +2 -0
  5. package/dist/cjs/modules/core/constants.js.map +1 -0
  6. package/dist/cjs/modules/core/context/KnockProvider.js +2 -0
  7. package/dist/cjs/modules/core/context/KnockProvider.js.map +1 -0
  8. package/dist/cjs/modules/core/hooks/useAuthenticatedKnockClient.js +2 -0
  9. package/dist/cjs/modules/core/hooks/useAuthenticatedKnockClient.js.map +1 -0
  10. package/dist/cjs/modules/core/hooks/useStableOptions.js +2 -0
  11. package/dist/cjs/modules/core/hooks/useStableOptions.js.map +1 -0
  12. package/dist/cjs/modules/core/utils.js +2 -0
  13. package/dist/cjs/modules/core/utils.js.map +1 -0
  14. package/dist/cjs/modules/feed/context/KnockFeedProvider.js +2 -0
  15. package/dist/cjs/modules/feed/context/KnockFeedProvider.js.map +1 -0
  16. package/dist/cjs/modules/feed/hooks/useFeedSettings.js +2 -0
  17. package/dist/cjs/modules/feed/hooks/useFeedSettings.js.map +1 -0
  18. package/dist/cjs/modules/feed/hooks/useNotificationStore.js +2 -0
  19. package/dist/cjs/modules/feed/hooks/useNotificationStore.js.map +1 -0
  20. package/dist/cjs/modules/feed/hooks/useNotifications.js +2 -0
  21. package/dist/cjs/modules/feed/hooks/useNotifications.js.map +1 -0
  22. package/dist/cjs/modules/guide/context/KnockGuideProvider.js +2 -0
  23. package/dist/cjs/modules/guide/context/KnockGuideProvider.js.map +1 -0
  24. package/dist/cjs/modules/guide/hooks/useGuide.js +2 -0
  25. package/dist/cjs/modules/guide/hooks/useGuide.js.map +1 -0
  26. package/dist/cjs/modules/guide/hooks/useGuideContext.js +2 -0
  27. package/dist/cjs/modules/guide/hooks/useGuideContext.js.map +1 -0
  28. package/dist/cjs/modules/i18n/context/KnockI18nProvider.js +2 -0
  29. package/dist/cjs/modules/i18n/context/KnockI18nProvider.js.map +1 -0
  30. package/dist/cjs/modules/i18n/hooks/useTranslations.js +2 -0
  31. package/dist/cjs/modules/i18n/hooks/useTranslations.js.map +1 -0
  32. package/dist/cjs/modules/i18n/languages/de.js +2 -0
  33. package/dist/cjs/modules/i18n/languages/de.js.map +1 -0
  34. package/dist/cjs/modules/i18n/languages/en.js +2 -0
  35. package/dist/cjs/modules/i18n/languages/en.js.map +1 -0
  36. package/dist/cjs/modules/i18n/languages/index.js +2 -0
  37. package/dist/cjs/modules/i18n/languages/index.js.map +1 -0
  38. package/dist/cjs/modules/ms-teams/context/KnockMsTeamsProvider.js +2 -0
  39. package/dist/cjs/modules/ms-teams/context/KnockMsTeamsProvider.js.map +1 -0
  40. package/dist/cjs/modules/ms-teams/hooks/useConnectedMsTeamsChannels.js +2 -0
  41. package/dist/cjs/modules/ms-teams/hooks/useConnectedMsTeamsChannels.js.map +1 -0
  42. package/dist/cjs/modules/ms-teams/hooks/useMsTeamsAuth.js +2 -0
  43. package/dist/cjs/modules/ms-teams/hooks/useMsTeamsAuth.js.map +1 -0
  44. package/dist/cjs/modules/ms-teams/hooks/useMsTeamsChannels.js +2 -0
  45. package/dist/cjs/modules/ms-teams/hooks/useMsTeamsChannels.js.map +1 -0
  46. package/dist/cjs/modules/ms-teams/hooks/useMsTeamsConnectionStatus.js +2 -0
  47. package/dist/cjs/modules/ms-teams/hooks/useMsTeamsConnectionStatus.js.map +1 -0
  48. package/dist/cjs/modules/ms-teams/hooks/useMsTeamsTeams.js +2 -0
  49. package/dist/cjs/modules/ms-teams/hooks/useMsTeamsTeams.js.map +1 -0
  50. package/dist/cjs/modules/slack/context/KnockSlackProvider.js +2 -0
  51. package/dist/cjs/modules/slack/context/KnockSlackProvider.js.map +1 -0
  52. package/dist/cjs/modules/slack/hooks/useConnectedSlackChannels.js +2 -0
  53. package/dist/cjs/modules/slack/hooks/useConnectedSlackChannels.js.map +1 -0
  54. package/dist/cjs/modules/slack/hooks/useSlackAuth.js +2 -0
  55. package/dist/cjs/modules/slack/hooks/useSlackAuth.js.map +1 -0
  56. package/dist/cjs/modules/slack/hooks/useSlackChannels.js +2 -0
  57. package/dist/cjs/modules/slack/hooks/useSlackChannels.js.map +1 -0
  58. package/dist/cjs/modules/slack/hooks/useSlackConnectionStatus.js +2 -0
  59. package/dist/cjs/modules/slack/hooks/useSlackConnectionStatus.js.map +1 -0
  60. package/dist/esm/index.mjs +66 -0
  61. package/dist/esm/index.mjs.map +1 -0
  62. package/dist/esm/modules/core/constants.mjs +5 -0
  63. package/dist/esm/modules/core/constants.mjs.map +1 -0
  64. package/dist/esm/modules/core/context/KnockProvider.mjs +35 -0
  65. package/dist/esm/modules/core/context/KnockProvider.mjs.map +1 -0
  66. package/dist/esm/modules/core/hooks/useAuthenticatedKnockClient.mjs +29 -0
  67. package/dist/esm/modules/core/hooks/useAuthenticatedKnockClient.mjs.map +1 -0
  68. package/dist/esm/modules/core/hooks/useStableOptions.mjs +13 -0
  69. package/dist/esm/modules/core/hooks/useStableOptions.mjs.map +1 -0
  70. package/dist/esm/modules/core/utils.mjs +49 -0
  71. package/dist/esm/modules/core/utils.mjs.map +1 -0
  72. package/dist/esm/modules/feed/context/KnockFeedProvider.mjs +37 -0
  73. package/dist/esm/modules/feed/context/KnockFeedProvider.mjs.map +1 -0
  74. package/dist/esm/modules/feed/hooks/useFeedSettings.mjs +23 -0
  75. package/dist/esm/modules/feed/hooks/useFeedSettings.mjs.map +1 -0
  76. package/dist/esm/modules/feed/hooks/useNotificationStore.mjs +12 -0
  77. package/dist/esm/modules/feed/hooks/useNotificationStore.mjs.map +1 -0
  78. package/dist/esm/modules/feed/hooks/useNotifications.mjs +34 -0
  79. package/dist/esm/modules/feed/hooks/useNotifications.mjs.map +1 -0
  80. package/dist/esm/modules/guide/context/KnockGuideProvider.mjs +33 -0
  81. package/dist/esm/modules/guide/context/KnockGuideProvider.mjs.map +1 -0
  82. package/dist/esm/modules/guide/hooks/useGuide.mjs +21 -0
  83. package/dist/esm/modules/guide/hooks/useGuide.mjs.map +1 -0
  84. package/dist/esm/modules/guide/hooks/useGuideContext.mjs +12 -0
  85. package/dist/esm/modules/guide/hooks/useGuideContext.mjs.map +1 -0
  86. package/dist/esm/modules/i18n/context/KnockI18nProvider.mjs +11 -0
  87. package/dist/esm/modules/i18n/context/KnockI18nProvider.mjs.map +1 -0
  88. package/dist/esm/modules/i18n/hooks/useTranslations.mjs +17 -0
  89. package/dist/esm/modules/i18n/hooks/useTranslations.mjs.map +1 -0
  90. package/dist/esm/modules/i18n/languages/de.mjs +39 -0
  91. package/dist/esm/modules/i18n/languages/de.mjs.map +1 -0
  92. package/dist/esm/modules/i18n/languages/en.mjs +51 -0
  93. package/dist/esm/modules/i18n/languages/en.mjs.map +1 -0
  94. package/dist/esm/modules/i18n/languages/index.mjs +10 -0
  95. package/dist/esm/modules/i18n/languages/index.mjs.map +1 -0
  96. package/dist/esm/modules/ms-teams/context/KnockMsTeamsProvider.mjs +48 -0
  97. package/dist/esm/modules/ms-teams/context/KnockMsTeamsProvider.mjs.map +1 -0
  98. package/dist/esm/modules/ms-teams/hooks/useConnectedMsTeamsChannels.mjs +78 -0
  99. package/dist/esm/modules/ms-teams/hooks/useConnectedMsTeamsChannels.mjs.map +1 -0
  100. package/dist/esm/modules/ms-teams/hooks/useMsTeamsAuth.mjs +53 -0
  101. package/dist/esm/modules/ms-teams/hooks/useMsTeamsAuth.mjs.map +1 -0
  102. package/dist/esm/modules/ms-teams/hooks/useMsTeamsChannels.mjs +41 -0
  103. package/dist/esm/modules/ms-teams/hooks/useMsTeamsChannels.mjs.map +1 -0
  104. package/dist/esm/modules/ms-teams/hooks/useMsTeamsConnectionStatus.mjs +38 -0
  105. package/dist/esm/modules/ms-teams/hooks/useMsTeamsConnectionStatus.mjs.map +1 -0
  106. package/dist/esm/modules/ms-teams/hooks/useMsTeamsTeams.mjs +51 -0
  107. package/dist/esm/modules/ms-teams/hooks/useMsTeamsTeams.mjs.map +1 -0
  108. package/dist/esm/modules/slack/context/KnockSlackProvider.mjs +49 -0
  109. package/dist/esm/modules/slack/context/KnockSlackProvider.mjs.map +1 -0
  110. package/dist/esm/modules/slack/hooks/useConnectedSlackChannels.mjs +78 -0
  111. package/dist/esm/modules/slack/hooks/useConnectedSlackChannels.mjs.map +1 -0
  112. package/dist/esm/modules/slack/hooks/useSlackAuth.mjs +68 -0
  113. package/dist/esm/modules/slack/hooks/useSlackAuth.mjs.map +1 -0
  114. package/dist/esm/modules/slack/hooks/useSlackChannels.mjs +52 -0
  115. package/dist/esm/modules/slack/hooks/useSlackChannels.mjs.map +1 -0
  116. package/dist/esm/modules/slack/hooks/useSlackConnectionStatus.mjs +47 -0
  117. package/dist/esm/modules/slack/hooks/useSlackConnectionStatus.mjs.map +1 -0
  118. package/dist/types/index.d.ts +8 -0
  119. package/dist/types/index.d.ts.map +1 -0
  120. package/dist/types/interfaces.d.ts +5 -0
  121. package/dist/types/interfaces.d.ts.map +1 -0
  122. package/dist/types/modules/core/constants.d.ts +8 -0
  123. package/dist/types/modules/core/constants.d.ts.map +1 -0
  124. package/dist/types/modules/core/context/KnockProvider.d.ts +41 -0
  125. package/dist/types/modules/core/context/KnockProvider.d.ts.map +1 -0
  126. package/dist/types/modules/core/context/index.d.ts +2 -0
  127. package/dist/types/modules/core/context/index.d.ts.map +1 -0
  128. package/dist/types/modules/core/hooks/index.d.ts +3 -0
  129. package/dist/types/modules/core/hooks/index.d.ts.map +1 -0
  130. package/dist/types/modules/core/hooks/useAuthenticatedKnockClient.d.ts +14 -0
  131. package/dist/types/modules/core/hooks/useAuthenticatedKnockClient.d.ts.map +1 -0
  132. package/dist/types/modules/core/hooks/useStableOptions.d.ts +2 -0
  133. package/dist/types/modules/core/hooks/useStableOptions.d.ts.map +1 -0
  134. package/dist/types/modules/core/index.d.ts +5 -0
  135. package/dist/types/modules/core/index.d.ts.map +1 -0
  136. package/dist/types/modules/core/utils.d.ts +24 -0
  137. package/dist/types/modules/core/utils.d.ts.map +1 -0
  138. package/dist/types/modules/feed/context/KnockFeedProvider.d.ts +19 -0
  139. package/dist/types/modules/feed/context/KnockFeedProvider.d.ts.map +1 -0
  140. package/dist/types/modules/feed/context/index.d.ts +2 -0
  141. package/dist/types/modules/feed/context/index.d.ts.map +1 -0
  142. package/dist/types/modules/feed/hooks/index.d.ts +4 -0
  143. package/dist/types/modules/feed/hooks/index.d.ts.map +1 -0
  144. package/dist/types/modules/feed/hooks/useFeedSettings.d.ts +12 -0
  145. package/dist/types/modules/feed/hooks/useFeedSettings.d.ts.map +1 -0
  146. package/dist/types/modules/feed/hooks/useNotificationStore.d.ts +34 -0
  147. package/dist/types/modules/feed/hooks/useNotificationStore.d.ts.map +1 -0
  148. package/dist/types/modules/feed/hooks/useNotifications.d.ts +4 -0
  149. package/dist/types/modules/feed/hooks/useNotifications.d.ts.map +1 -0
  150. package/dist/types/modules/feed/index.d.ts +3 -0
  151. package/dist/types/modules/feed/index.d.ts.map +1 -0
  152. package/dist/types/modules/guide/context/KnockGuideProvider.d.ts +19 -0
  153. package/dist/types/modules/guide/context/KnockGuideProvider.d.ts.map +1 -0
  154. package/dist/types/modules/guide/context/index.d.ts +2 -0
  155. package/dist/types/modules/guide/context/index.d.ts.map +1 -0
  156. package/dist/types/modules/guide/hooks/index.d.ts +2 -0
  157. package/dist/types/modules/guide/hooks/index.d.ts.map +1 -0
  158. package/dist/types/modules/guide/hooks/useGuide.d.ts +9 -0
  159. package/dist/types/modules/guide/hooks/useGuide.d.ts.map +1 -0
  160. package/dist/types/modules/guide/hooks/useGuideContext.d.ts +7 -0
  161. package/dist/types/modules/guide/hooks/useGuideContext.d.ts.map +1 -0
  162. package/dist/types/modules/guide/index.d.ts +3 -0
  163. package/dist/types/modules/guide/index.d.ts.map +1 -0
  164. package/dist/types/modules/i18n/context/KnockI18nProvider.d.ts +8 -0
  165. package/dist/types/modules/i18n/context/KnockI18nProvider.d.ts.map +1 -0
  166. package/dist/types/modules/i18n/context/index.d.ts +2 -0
  167. package/dist/types/modules/i18n/context/index.d.ts.map +1 -0
  168. package/dist/types/modules/i18n/hooks/index.d.ts +2 -0
  169. package/dist/types/modules/i18n/hooks/index.d.ts.map +1 -0
  170. package/dist/types/modules/i18n/hooks/useTranslations.d.ts +5 -0
  171. package/dist/types/modules/i18n/hooks/useTranslations.d.ts.map +1 -0
  172. package/dist/types/modules/i18n/index.d.ts +4 -0
  173. package/dist/types/modules/i18n/index.d.ts.map +1 -0
  174. package/dist/types/modules/i18n/languages/de.d.ts +4 -0
  175. package/dist/types/modules/i18n/languages/de.d.ts.map +1 -0
  176. package/dist/types/modules/i18n/languages/en.d.ts +4 -0
  177. package/dist/types/modules/i18n/languages/en.d.ts.map +1 -0
  178. package/dist/types/modules/i18n/languages/index.d.ts +54 -0
  179. package/dist/types/modules/i18n/languages/index.d.ts.map +1 -0
  180. package/dist/types/modules/ms-teams/context/KnockMsTeamsProvider.d.ts +20 -0
  181. package/dist/types/modules/ms-teams/context/KnockMsTeamsProvider.d.ts.map +1 -0
  182. package/dist/types/modules/ms-teams/context/index.d.ts +2 -0
  183. package/dist/types/modules/ms-teams/context/index.d.ts.map +1 -0
  184. package/dist/types/modules/ms-teams/hooks/index.d.ts +6 -0
  185. package/dist/types/modules/ms-teams/hooks/index.d.ts.map +1 -0
  186. package/dist/types/modules/ms-teams/hooks/useConnectedMsTeamsChannels.d.ts +15 -0
  187. package/dist/types/modules/ms-teams/hooks/useConnectedMsTeamsChannels.d.ts.map +1 -0
  188. package/dist/types/modules/ms-teams/hooks/useMsTeamsAuth.d.ts +7 -0
  189. package/dist/types/modules/ms-teams/hooks/useMsTeamsAuth.d.ts.map +1 -0
  190. package/dist/types/modules/ms-teams/hooks/useMsTeamsChannels.d.ts +14 -0
  191. package/dist/types/modules/ms-teams/hooks/useMsTeamsChannels.d.ts.map +1 -0
  192. package/dist/types/modules/ms-teams/hooks/useMsTeamsConnectionStatus.d.ts +13 -0
  193. package/dist/types/modules/ms-teams/hooks/useMsTeamsConnectionStatus.d.ts.map +1 -0
  194. package/dist/types/modules/ms-teams/hooks/useMsTeamsTeams.d.ts +13 -0
  195. package/dist/types/modules/ms-teams/hooks/useMsTeamsTeams.d.ts.map +1 -0
  196. package/dist/types/modules/ms-teams/index.d.ts +4 -0
  197. package/dist/types/modules/ms-teams/index.d.ts.map +1 -0
  198. package/dist/types/modules/ms-teams/interfaces.d.ts +11 -0
  199. package/dist/types/modules/ms-teams/interfaces.d.ts.map +1 -0
  200. package/dist/types/modules/slack/context/KnockSlackProvider.d.ts +30 -0
  201. package/dist/types/modules/slack/context/KnockSlackProvider.d.ts.map +1 -0
  202. package/dist/types/modules/slack/context/index.d.ts +2 -0
  203. package/dist/types/modules/slack/context/index.d.ts.map +1 -0
  204. package/dist/types/modules/slack/hooks/index.d.ts +5 -0
  205. package/dist/types/modules/slack/hooks/index.d.ts.map +1 -0
  206. package/dist/types/modules/slack/hooks/useConnectedSlackChannels.d.ts +15 -0
  207. package/dist/types/modules/slack/hooks/useConnectedSlackChannels.d.ts.map +1 -0
  208. package/dist/types/modules/slack/hooks/useSlackAuth.d.ts +11 -0
  209. package/dist/types/modules/slack/hooks/useSlackAuth.d.ts.map +1 -0
  210. package/dist/types/modules/slack/hooks/useSlackChannels.d.ts +13 -0
  211. package/dist/types/modules/slack/hooks/useSlackChannels.d.ts.map +1 -0
  212. package/dist/types/modules/slack/hooks/useSlackConnectionStatus.d.ts +13 -0
  213. package/dist/types/modules/slack/hooks/useSlackConnectionStatus.d.ts.map +1 -0
  214. package/dist/types/modules/slack/index.d.ts +4 -0
  215. package/dist/types/modules/slack/index.d.ts.map +1 -0
  216. package/dist/types/modules/slack/interfaces.d.ts +10 -0
  217. package/dist/types/modules/slack/interfaces.d.ts.map +1 -0
  218. package/package.json +3 -2
  219. package/src/modules/core/context/KnockProvider.tsx +36 -7
  220. package/src/modules/core/hooks/useAuthenticatedKnockClient.ts +47 -7
@@ -0,0 +1,68 @@
1
+ import { useKnockSlackClient as S } from "../context/KnockSlackProvider.mjs";
2
+ import { useCallback as u } from "react";
3
+ import "../../i18n/context/KnockI18nProvider.mjs";
4
+ import "swr/infinite";
5
+ import { useKnockClient as _ } from "../../core/context/KnockProvider.mjs";
6
+ import { TENANT_OBJECT_COLLECTION as h } from "@knocklabs/client";
7
+ import "fast-deep-equal";
8
+ import "date-fns";
9
+ import "swr";
10
+ const A = "https://slack.com/oauth/v2/authorize", a = ["chat:write", "chat:write.public", "channels:read", "groups:read"];
11
+ function f(e) {
12
+ return e ? Array.isArray(e) ? {
13
+ scopes: a,
14
+ additionalScopes: e
15
+ } : {
16
+ scopes: e.scopes ?? a,
17
+ additionalScopes: e.additionalScopes ?? []
18
+ } : {
19
+ scopes: a,
20
+ additionalScopes: []
21
+ };
22
+ }
23
+ function I(e, s, k) {
24
+ const o = _(), {
25
+ setConnectionStatus: c,
26
+ knockSlackChannelId: t,
27
+ tenantId: n,
28
+ setActionLabel: i
29
+ } = S(), {
30
+ scopes: d,
31
+ additionalScopes: p
32
+ } = f(k), l = Array.from(new Set(d.concat(p))), m = u(async () => {
33
+ i(null), c("disconnecting");
34
+ try {
35
+ const r = await o.slack.revokeAccessToken({
36
+ tenant: n,
37
+ knockChannelId: t
38
+ });
39
+ c(r === "ok" ? "disconnected" : "error");
40
+ } catch {
41
+ c("error");
42
+ }
43
+ }, [c, o.slack, n, t, i]);
44
+ return {
45
+ buildSlackAuthUrl: u(() => {
46
+ const r = {
47
+ state: JSON.stringify({
48
+ redirect_url: s,
49
+ access_token_object: {
50
+ object_id: n,
51
+ collection: h
52
+ },
53
+ channel_id: t,
54
+ public_key: o.apiKey,
55
+ user_token: o.userToken
56
+ }),
57
+ client_id: e,
58
+ scope: l.join(",")
59
+ };
60
+ return `${A}?${new URLSearchParams(r)}`;
61
+ }, [s, n, t, o.apiKey, o.userToken, e, l]),
62
+ disconnectFromSlack: m
63
+ };
64
+ }
65
+ export {
66
+ I as default
67
+ };
68
+ //# sourceMappingURL=useSlackAuth.mjs.map
@@ -0,0 +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\ntype UseSlackAuthOptions = {\n // When provided, the default scopes will be overridden with the provided scopes\n scopes?: string[];\n // Additional scopes to add to the default scopes\n additionalScopes?: string[];\n};\n\n// Here we normalize the options to be a single object with scopes and additionalScopes\n// The \"options\" parameter can be an array of scopes, an object with scopes and additionalScopes, or undefined\n// We handle the array case because it was the previous way to pass options so we're being backward compatible\nfunction normalizeOptions(options?: UseSlackAuthOptions | string[]): {\n scopes: string[];\n additionalScopes: string[];\n} {\n if (!options) {\n return { scopes: DEFAULT_SLACK_SCOPES, additionalScopes: [] };\n }\n\n if (Array.isArray(options)) {\n return { scopes: DEFAULT_SLACK_SCOPES, additionalScopes: options };\n }\n\n return {\n scopes: options.scopes ?? DEFAULT_SLACK_SCOPES,\n additionalScopes: options.additionalScopes ?? [],\n };\n}\n\nfunction useSlackAuth(\n slackClientId: string,\n redirectUrl?: string,\n options?: UseSlackAuthOptions | string[],\n): UseSlackAuthOutput {\n const knock = useKnockClient();\n const { setConnectionStatus, knockSlackChannelId, tenantId, setActionLabel } =\n useKnockSlackClient();\n\n const { scopes, additionalScopes } = normalizeOptions(options);\n const combinedScopes = Array.from(new Set(scopes.concat(additionalScopes)));\n\n const disconnectFromSlack = useCallback(async () => {\n setActionLabel(null);\n setConnectionStatus(\"disconnecting\");\n try {\n const revoke = await knock.slack.revokeAccessToken({\n tenant: tenantId,\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 tenantId,\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: tenantId,\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 tenantId,\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","normalizeOptions","options","Array","isArray","scopes","additionalScopes","useSlackAuth","slackClientId","redirectUrl","knock","useKnockClient","setConnectionStatus","knockSlackChannelId","tenantId","setActionLabel","useKnockSlackClient","combinedScopes","from","Set","concat","disconnectFromSlack","useCallback","revoke","slack","revokeAccessToken","tenant","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;AAkBf,SAASC,EAAiBC,GAGxB;AACA,SAAKA,IAIDC,MAAMC,QAAQF,CAAO,IAChB;AAAA,IAAEG,QAAQL;AAAAA,IAAsBM,kBAAkBJ;AAAAA,EAAQ,IAG5D;AAAA,IACLG,QAAQH,EAAQG,UAAUL;AAAAA,IAC1BM,kBAAkBJ,EAAQI,oBAAoB,CAAA;AAAA,EAChD,IAVS;AAAA,IAAED,QAAQL;AAAAA,IAAsBM,kBAAkB,CAAA;AAAA,EAAG;AAWhE;AAEA,SAASC,EACPC,GACAC,GACAP,GACoB;AACpB,QAAMQ,IAAQC,EAAe,GACvB;AAAA,IAAEC,qBAAAA;AAAAA,IAAqBC,qBAAAA;AAAAA,IAAqBC,UAAAA;AAAAA,IAAUC,gBAAAA;AAAAA,MAC1DC,EAAoB,GAEhB;AAAA,IAAEX,QAAAA;AAAAA,IAAQC,kBAAAA;AAAAA,EAAAA,IAAqBL,EAAiBC,CAAO,GACvDe,IAAiBd,MAAMe,KAAK,IAAIC,IAAId,EAAOe,OAAOd,CAAgB,CAAC,CAAC,GAEpEe,IAAsBC,EAAY,YAAY;AAClDP,IAAAA,EAAe,IAAI,GACnBH,EAAoB,eAAe;AAC/B,QAAA;AACF,YAAMW,IAAS,MAAMb,EAAMc,MAAMC,kBAAkB;AAAA,QACjDC,QAAQZ;AAAAA,QACRa,gBAAgBd;AAAAA,MAAAA,CACjB;AAED,MACED,EADEW,MAAW,OACO,iBAEA,OAFc;AAAA,YAIrB;AACfX,MAAAA,EAAoB,OAAO;AAAA,IAAA;AAAA,EAC7B,GACC,CACDA,GACAF,EAAMc,OACNV,GACAD,GACAE,CAAc,CACf;AA4BM,SAAA;AAAA,IACLa,mBA3BwBN,EAAY,MAAM;AAC1C,YAAMO,IAAY;AAAA,QAChBC,OAAOC,KAAKC,UAAU;AAAA,UACpBC,cAAcxB;AAAAA,UACdyB,qBAAqB;AAAA,YACnBC,WAAWrB;AAAAA,YACXsB,YAAYC;AAAAA,UACd;AAAA,UACAC,YAAYzB;AAAAA,UACZ0B,YAAY7B,EAAM8B;AAAAA,UAClBC,YAAY/B,EAAMgC;AAAAA,QAAAA,CACnB;AAAA,QACDC,WAAWnC;AAAAA,QACXoC,OAAO3B,EAAe4B,KAAK,GAAG;AAAA,MAChC;AACA,aAAO,GAAG9C,CAAmB,IAAI,IAAI+C,gBAAgBjB,CAAS,CAAC;AAAA,IACjE,GAAG,CACDpB,GACAK,GACAD,GACAH,EAAM8B,QACN9B,EAAMgC,WACNlC,GACAS,CAAc,CACf;AAAA,IAICI,qBAAAA;AAAAA,EACF;AACF;"}
@@ -0,0 +1,52 @@
1
+ import { useKnockSlackClient as E } from "../context/KnockSlackProvider.mjs";
2
+ import { useMemo as u, useEffect as x } from "react";
3
+ import "../../i18n/context/KnockI18nProvider.mjs";
4
+ import I from "swr/infinite";
5
+ import { useKnockClient as L } from "../../core/context/KnockProvider.mjs";
6
+ import "@knocklabs/client";
7
+ import "fast-deep-equal";
8
+ import "date-fns";
9
+ import "swr";
10
+ const N = 1e3, P = 200, g = "private_channel,public_channel", k = "SLACK_CHANNELS";
11
+ function A(n, c) {
12
+ return n === 0 ? [k, ""] : c && ["", null].includes(c.next_cursor) ? null : [k, c.next_cursor ?? ""];
13
+ }
14
+ function v({
15
+ queryOptions: n
16
+ }) {
17
+ const c = L(), {
18
+ knockSlackChannelId: C,
19
+ tenantId: _,
20
+ connectionStatus: s
21
+ } = E(), d = (t) => c.slack.getChannels({
22
+ tenant: _,
23
+ knockChannelId: C,
24
+ queryOptions: {
25
+ ...n,
26
+ cursor: t == null ? void 0 : t[1],
27
+ limit: (n == null ? void 0 : n.limitPerPage) || P,
28
+ types: (n == null ? void 0 : n.types) || g
29
+ }
30
+ }), {
31
+ data: l,
32
+ error: i,
33
+ isLoading: e,
34
+ isValidating: a,
35
+ setSize: r,
36
+ mutate: S
37
+ } = I(A, d, {
38
+ initialSize: 0,
39
+ revalidateFirstPage: !1
40
+ }), m = l == null ? void 0 : l.at(-1), f = m === void 0 || !!m.next_cursor, o = u(() => (l ?? []).flatMap((t) => t == null ? void 0 : t.slack_channels).filter((t) => !!t), [l]), h = (n == null ? void 0 : n.maxCount) || N;
41
+ return x(() => {
42
+ s === "connected" && !i && f && !e && !a && o.length < h && r((t) => t + 1);
43
+ }, [o.length, r, f, e, a, h, i, s]), {
44
+ data: o,
45
+ isLoading: e || a,
46
+ refetch: () => S()
47
+ };
48
+ }
49
+ export {
50
+ v as default
51
+ };
52
+ //# sourceMappingURL=useSlackChannels.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSlackChannels.mjs","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":";;;;;;;;;AAOA,MAAMA,IAAY,KACZC,IAAiB,KACjBC,IAAgB,kCAEhBC,IAAY;AAclB,SAASC,EACPC,GACAC,GACU;AAEV,SAAID,MAAc,IACT,CAACF,GAAW,EAAE,IAInBG,KAAoB,CAAC,IAAI,IAAI,EAAEC,SAASD,EAAiBE,WAAW,IAC/D,OAIF,CAACL,GAAWG,EAAiBE,eAAe,EAAE;AACvD;AAEA,SAASC,EAAiB;AAAA,EACxBC,cAAAA;AACuB,GAA0B;AACjD,QAAMC,IAAQC,EAAe,GACvB;AAAA,IAAEC,qBAAAA;AAAAA,IAAqBC,UAAAA;AAAAA,IAAUC,kBAAAA;AAAAA,MACrCC,EAAoB,GAEhBC,IAAgBA,CAACC,MACdP,EAAMQ,MAAMC,YAAY;AAAA,IAC7BC,QAAQP;AAAAA,IACRQ,gBAAgBT;AAAAA,IAChBH,cAAc;AAAA,MACZ,GAAGA;AAAAA,MACHa,QAAQL,KAAAA,gBAAAA,EAAW;AAAA,MACnBM,QAAOd,KAAAA,gBAAAA,EAAce,iBAAgBxB;AAAAA,MACrCyB,QAAOhB,KAAAA,gBAAAA,EAAcgB,UAASxB;AAAAA,IAAAA;AAAAA,EAChC,CACD,GAGG;AAAA,IAAEyB,MAAAA;AAAAA,IAAMC,OAAAA;AAAAA,IAAOC,WAAAA;AAAAA,IAAWC,cAAAA;AAAAA,IAAcC,SAAAA;AAAAA,IAASC,QAAAA;AAAAA,EAAAA,IACrDC,EAAyC7B,GAAaa,GAAe;AAAA,IACnEiB,aAAa;AAAA,IACbC,qBAAqB;AAAA,EAAA,CACtB,GAEGC,IAAWT,KAAAA,gBAAAA,EAAMU,GAAG,KACpBC,IAAcF,MAAaG,UAAa,CAAC,CAACH,EAAS5B,aAEnDgC,IAAgCC,EACpC,OACGd,KAAQ,IACNe,QAASC,CAASA,MAAAA,KAAAA,gBAAAA,EAAMC,cAAc,EACtCC,OAAQC,OAAY,CAAC,CAACA,CAAO,GAClC,CAACnB,CAAI,CACP,GAEMoB,KAAWrC,KAAAA,gBAAAA,EAAcqC,aAAY/C;AAE3CgD,SAAAA,EAAU,MAAM;AAEZjC,IAAAA,MAAqB,eACrB,CAACa,KACDU,KACA,CAACT,KACD,CAACC,KACDU,EAAcS,SAASF,KAIdG,EAAAA,CAAAA,MAASA,IAAO,CAAC;AAAA,EAE9B,GAAG,CACDV,EAAcS,QACdlB,GACAO,GACAT,GACAC,GACAiB,GACAnB,GACAb,CAAgB,CACjB,GAEM;AAAA,IACLY,MAAMa;AAAAA,IACNX,WAAWA,KAAaC;AAAAA,IACxBqB,SAASA,MAAMnB,EAAO;AAAA,EACxB;AACF;"}
@@ -0,0 +1,47 @@
1
+ import { useState as s, useEffect as g } from "react";
2
+ import "../../i18n/context/KnockI18nProvider.mjs";
3
+ import { useTranslations as A } from "../../i18n/hooks/useTranslations.mjs";
4
+ const C = (o) => {
5
+ const e = o.substring(0, 1).toUpperCase(), c = o.substring(1);
6
+ return e == null ? void 0 : e.concat(c).replace("_", " ");
7
+ };
8
+ function y(o, e, c) {
9
+ const {
10
+ t: a
11
+ } = A(), [r, n] = s("connecting"), [b, i] = s(null), [d, m] = s(null);
12
+ return g(() => {
13
+ (async () => {
14
+ var u, l, f, k, S, h, p;
15
+ if (r === "connecting")
16
+ try {
17
+ const t = await o.slack.authCheck({
18
+ tenant: c,
19
+ knockChannelId: e
20
+ });
21
+ if ((u = t.connection) != null && u.ok)
22
+ return n("connected");
23
+ if (!((l = t.connection) != null && l.ok) || t.code === "ERR_BAD_REQUEST" && ((k = (f = t.response) == null ? void 0 : f.data) == null ? void 0 : k.message) === a("slackAccessTokenNotSet"))
24
+ return n("disconnected");
25
+ if (!((S = t.connection) != null && S.ok) && ((h = t.connection) != null && h.error)) {
26
+ const E = C((p = t.connection) == null ? void 0 : p.error);
27
+ i(E), n("error");
28
+ return;
29
+ }
30
+ n("error");
31
+ } catch {
32
+ n("error");
33
+ }
34
+ })();
35
+ }, [r, c, e, o.slack, a]), {
36
+ connectionStatus: r,
37
+ setConnectionStatus: n,
38
+ errorLabel: b,
39
+ setErrorLabel: i,
40
+ actionLabel: d,
41
+ setActionLabel: m
42
+ };
43
+ }
44
+ export {
45
+ y as default
46
+ };
47
+ //# sourceMappingURL=useSlackConnectionStatus.mjs.map
@@ -0,0 +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 tenantId: 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: tenantId,\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, tenantId, 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","tenantId","t","useTranslations","connectionStatus","setConnectionStatus","useState","errorLabel","setErrorLabel","actionLabel","setActionLabel","useEffect","authRes","slack","authCheck","tenant","knockChannelId","connection","ok","code","response","data","message","error"],"mappings":";;;AA2BA,MAAMA,IAA0BA,CAACC,MAAyB;AACxD,QAAMC,IAAcD,EAAaE,UAAU,GAAG,CAAC,EAAEC,YAAY,GACvDC,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,YAC1CC,QAAQd;AAAAA,YACRe,gBAAgBhB;AAAAA,UAAAA,CACjB;AAEGY,eAAAA,IAAAA,EAAQK,eAARL,QAAAA,EAAoBM;AACtB,mBAAOb,EAAoB,WAAW;AAWtCO,cARE,GAACA,IAAAA,EAAQK,eAARL,QAAAA,EAAoBM,OAQvBN,EAAQO,SAAS,uBACjBP,KAAAA,IAAAA,EAAQQ,aAARR,gBAAAA,EAAkBS,SAAlBT,gBAAAA,EAAwBU,aAAYpB,EAAE,wBAAwB;AAE9D,mBAAOG,EAAoB,cAAc;AAI3C,cAAI,GAACO,IAAAA,EAAQK,eAARL,QAAAA,EAAoBM,SAAMN,IAAAA,EAAQK,eAARL,QAAAA,EAAoBW,QAAO;AACxD,kBAAMhB,IAAajB,GAAwBsB,IAAAA,EAAQK,eAARL,gBAAAA,EAAoBW,KAAK;AACpEf,YAAAA,EAAcD,CAAU,GACxBF,EAAoB,OAAO;AAC3B;AAAA,UAAA;AAKFA,UAAAA,EAAoB,OAAO;AAAA,gBACZ;AACfA,UAAAA,EAAoB,OAAO;AAAA,QAAA;AAAA,IAE/B,GAEgB;AAAA,EAAA,GACf,CAACD,GAAkBH,GAAUD,GAAqBD,EAAMc,OAAOX,CAAC,CAAC,GAE7D;AAAA,IACLE,kBAAAA;AAAAA,IACAC,qBAAAA;AAAAA,IACAE,YAAAA;AAAAA,IACAC,eAAAA;AAAAA,IACAC,aAAAA;AAAAA,IACAC,gBAAAA;AAAAA,EACF;AACF;"}
@@ -0,0 +1,8 @@
1
+ export { FilterStatus, KnockProvider, feedProviderKey, formatBadgeCount, formatTimestamp, msTeamsProviderKey, renderNodeOrFallback, slackProviderKey, toSentenceCase, type ColorMode, type KnockProviderProps, type KnockProviderState, useAuthenticatedKnockClient, useKnockClient, useStableOptions, } from './modules/core';
2
+ export { KnockFeedProvider, type KnockFeedProviderProps, type KnockFeedProviderState, type Selector, useCreateNotificationStore, useFeedSettings, useKnockFeed, useNotificationStore, useNotifications, } from './modules/feed';
3
+ export { KnockGuideProvider, KnockGuideContext, useGuide, } from './modules/guide';
4
+ export { type MsTeamsChannelQueryOptions, type MsTeamsTeamQueryOptions, KnockMsTeamsProvider, type KnockMsTeamsProviderProps, type KnockMsTeamsProviderState, useConnectedMsTeamsChannels, useKnockMsTeamsClient, useMsTeamsAuth, useMsTeamsChannels, useMsTeamsConnectionStatus, useMsTeamsTeams, } from './modules/ms-teams';
5
+ export { KnockSlackProvider, type ContainerObject, type KnockSlackProviderProps, type KnockSlackProviderState, type SlackChannelQueryOptions, useConnectedSlackChannels, useKnockSlackClient, useSlackAuth, useSlackChannels, useSlackConnectionStatus, } from './modules/slack';
6
+ export { I18nContext, KnockI18nProvider, locales, type I18nContent, type KnockI18nProviderProps, type Translations, useTranslations, } from './modules/i18n';
7
+ export { type RecipientObject } from './interfaces';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,2BAA2B,EAC3B,cAAc,EACd,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,EACb,0BAA0B,EAC1B,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,QAAQ,GACT,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,2BAA2B,EAC3B,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,yBAAyB,EACzB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,OAAO,EACP,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,5 @@
1
+ export type RecipientObject = {
2
+ objectId: string;
3
+ collection: string;
4
+ };
5
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare enum FilterStatus {
2
+ All = "all",
3
+ Read = "read",
4
+ Unseen = "unseen",
5
+ Unread = "unread"
6
+ }
7
+ export type ColorMode = "light" | "dark";
8
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/modules/core/constants.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY;IACtB,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { default as Knock, AuthenticateOptions, LogLevel, UserWithProperties } from '@knocklabs/client';
2
+ import { PropsWithChildren } from 'react';
3
+ import { I18nContent } from '../../i18n';
4
+ import * as React from "react";
5
+ export interface KnockProviderState {
6
+ knock: Knock;
7
+ }
8
+ export type KnockProviderProps = {
9
+ apiKey: string | undefined;
10
+ host?: string;
11
+ userToken?: Knock["userToken"];
12
+ onUserTokenExpiring?: AuthenticateOptions["onUserTokenExpiring"];
13
+ timeBeforeExpirationInMs?: AuthenticateOptions["timeBeforeExpirationInMs"];
14
+ i18n?: I18nContent;
15
+ logLevel?: LogLevel;
16
+ } & ({
17
+ /**
18
+ * @deprecated The `userId` prop is deprecated and will be removed in a future version.
19
+ * Please pass the `user` prop instead containing an `id` value.
20
+ * example:
21
+ * ```ts
22
+ * <KnockProvider user={{ id: "user_123" }}></KnockProvider>
23
+ * ```
24
+ */
25
+ userId: Knock["userId"];
26
+ user?: never;
27
+ } | {
28
+ user: UserWithProperties;
29
+ /**
30
+ * @deprecated The `userId` prop is deprecated and will be removed in a future version.
31
+ * Please pass the `user` prop instead containing an `id` value.
32
+ * example:
33
+ * ```ts
34
+ * <KnockProvider user={{ id: "user_123" }}></KnockProvider>
35
+ * ```
36
+ */
37
+ userId?: never;
38
+ });
39
+ export declare const KnockProvider: React.FC<PropsWithChildren<KnockProviderProps>>;
40
+ export declare const useKnockClient: () => Knock;
41
+ //# sourceMappingURL=KnockProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KnockProvider.d.ts","sourceRoot":"","sources":["../../../../../src/modules/core/context/KnockProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,mBAAmB,EACnB,QAAQ,EACR,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAC3B,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,MAAM,kBAAkB,GAAG;IAE/B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,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,GAAG,CACA;IACE;;;;;;;OAOG;IACH,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,IAAI,CAAC,EAAE,KAAK,CAAC;CACd,GACD;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB,CACJ,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAoCzE,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,KAMjC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { KnockProvider, useKnockClient, type KnockProviderProps, type KnockProviderState, } from './KnockProvider';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/modules/core/context/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { default as useAuthenticatedKnockClient } from './useAuthenticatedKnockClient';
2
+ export { default as useStableOptions } from './useStableOptions';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/modules/core/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { default as Knock, AuthenticateOptions, KnockOptions, UserId, UserIdOrUserWithProperties } from '@knocklabs/client';
2
+ export type AuthenticatedKnockClientOptions = KnockOptions & AuthenticateOptions;
3
+ /**
4
+ * @deprecated Passing `userId` as a `string` is deprecated and will be removed in a future version.
5
+ * Please pass a `user` object instead containing an `id` value.
6
+ * example:
7
+ * ```ts
8
+ * useAuthenticatedKnockClient("pk_test_12345", { id: "user_123" });
9
+ * ```
10
+ */
11
+ declare function useAuthenticatedKnockClient(apiKey: string, userIdOrUserWithProperties: UserId, userToken?: Knock["userToken"], options?: AuthenticatedKnockClientOptions): Knock;
12
+ declare function useAuthenticatedKnockClient(apiKey: string, userIdOrUserWithProperties: UserIdOrUserWithProperties, userToken?: Knock["userToken"], options?: AuthenticatedKnockClientOptions): Knock;
13
+ export default useAuthenticatedKnockClient;
14
+ //# sourceMappingURL=useAuthenticatedKnockClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAuthenticatedKnockClient.d.ts","sourceRoot":"","sources":["../../../../../src/modules/core/hooks/useAuthenticatedKnockClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,mBAAmB,EACnB,YAAY,EACZ,MAAM,EACN,0BAA0B,EAC3B,MAAM,mBAAmB,CAAC;AAiB3B,MAAM,MAAM,+BAA+B,GAAG,YAAY,GACxD,mBAAmB,CAAC;AAEtB;;;;;;;GAOG;AACH,iBAAS,2BAA2B,CAClC,MAAM,EAAE,MAAM,EACd,0BAA0B,EAAE,MAAM,EAClC,SAAS,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,EAC9B,OAAO,CAAC,EAAE,+BAA+B,GACxC,KAAK,CAAC;AACT,iBAAS,2BAA2B,CAClC,MAAM,EAAE,MAAM,EACd,0BAA0B,EAAE,0BAA0B,EACtD,SAAS,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,EAC9B,OAAO,CAAC,EAAE,+BAA+B,GACxC,KAAK,CAAC;AAuDT,eAAe,2BAA2B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export default function useStableOptions<T>(options: T): T;
2
+ //# sourceMappingURL=useStableOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useStableOptions.d.ts","sourceRoot":"","sources":["../../../../../src/modules/core/hooks/useStableOptions.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAazD"}
@@ -0,0 +1,5 @@
1
+ export { KnockProvider, useKnockClient, type KnockProviderProps, type KnockProviderState, } from './context';
2
+ export { useAuthenticatedKnockClient, useStableOptions } from './hooks';
3
+ export { FilterStatus, type ColorMode } from './constants';
4
+ export { formatBadgeCount, formatTimestamp, toSentenceCase, renderNodeOrFallback, feedProviderKey, slackProviderKey, msTeamsProviderKey, } from './utils';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { default as Knock, FeedClientOptions } from '@knocklabs/client';
2
+ import { ReactNode } from 'react';
3
+ export declare function formatBadgeCount(count: number): string | number;
4
+ type FormatTimestampOptions = {
5
+ locale?: string | string[];
6
+ };
7
+ export declare function formatTimestamp(ts: string, options?: FormatTimestampOptions): string;
8
+ export declare function toSentenceCase(string: string): string;
9
+ export declare function renderNodeOrFallback(node: ReactNode, fallback: ReactNode): ReactNode;
10
+ export declare function feedProviderKey(userId: Knock["userId"], feedId: string, options?: FeedClientOptions): string;
11
+ export declare function slackProviderKey({ knockSlackChannelId, tenantId, connectionStatus, errorLabel, }: {
12
+ knockSlackChannelId: string;
13
+ tenantId: string;
14
+ connectionStatus: string;
15
+ errorLabel: string | null;
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;
23
+ export {};
24
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
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,QAAQ,EACR,gBAAgB,EAChB,UAAU,GACX,EAAE;IACD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,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"}
@@ -0,0 +1,19 @@
1
+ import { default as Knock, Feed, FeedClientOptions } from '@knocklabs/client';
2
+ import { PropsWithChildren } from 'react';
3
+ import { ColorMode } from '../../core/constants';
4
+ import { useCreateNotificationStore } from '../hooks';
5
+ import * as React from "react";
6
+ export interface KnockFeedProviderState {
7
+ knock: Knock;
8
+ feedClient: Feed;
9
+ useFeedStore: ReturnType<typeof useCreateNotificationStore>;
10
+ colorMode: ColorMode;
11
+ }
12
+ export interface KnockFeedProviderProps {
13
+ feedId: string | undefined;
14
+ colorMode?: ColorMode;
15
+ defaultFeedOptions?: FeedClientOptions;
16
+ }
17
+ export declare const KnockFeedProvider: React.FC<PropsWithChildren<KnockFeedProviderProps>>;
18
+ export declare const useKnockFeed: () => KnockFeedProviderState;
19
+ //# sourceMappingURL=KnockFeedProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KnockFeedProvider.d.ts","sourceRoot":"","sources":["../../../../../src/modules/feed/context/KnockFeedProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAGtD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,IAAI,CAAC;IACjB,YAAY,EAAE,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC;IAC5D,SAAS,EAAE,SAAS,CAAC;CACtB;AAMD,MAAM,WAAW,sBAAsB;IAErC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAG3B,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"}
@@ -0,0 +1,2 @@
1
+ export * from './KnockFeedProvider';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/modules/feed/context/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { default as useNotifications } from './useNotifications';
2
+ export { default as useFeedSettings } from './useFeedSettings';
3
+ export { default as useNotificationStore, useCreateNotificationStore, type Selector, } from './useNotificationStore';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/modules/feed/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EACL,OAAO,IAAI,oBAAoB,EAC/B,0BAA0B,EAC1B,KAAK,QAAQ,GACd,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { Feed } from '@knocklabs/client';
2
+ export type FeedSettings = {
3
+ features: {
4
+ branding_required: boolean;
5
+ };
6
+ };
7
+ declare function useFeedSettings(feedClient: Feed): {
8
+ settings: FeedSettings | null;
9
+ loading: boolean;
10
+ };
11
+ export default useFeedSettings;
12
+ //# sourceMappingURL=useFeedSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFeedSettings.d.ts","sourceRoot":"","sources":["../../../../../src/modules/feed/hooks/useFeedSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAGzC,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE;QACR,iBAAiB,EAAE,OAAO,CAAC;KAC5B,CAAC;CACH,CAAC;AAEF,iBAAS,eAAe,CAAC,UAAU,EAAE,IAAI,GAAG;IAC1C,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;CAClB,CA+BA;AAED,eAAe,eAAe,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { Feed, FeedStoreState } from '@knocklabs/client';
2
+ export type Selector<T> = (state: FeedStoreState) => T;
3
+ /**
4
+ * Create a hook factory that provides access to the TanStack Store with optional selector support.
5
+ * This pattern allows for flexible store access with or without selectors while maintaining
6
+ * type safety. The selector can be passed either to useCreateNotificationStore or
7
+ * useNotificationStore, with the latter taking precedence.
8
+ */
9
+ declare function useCreateNotificationStore(feedClient: Feed): <T = FeedStoreState>(selector?: Selector<T>) => T;
10
+ /**
11
+ * A hook used to access content within the notification store.
12
+ *
13
+ * @example
14
+ *
15
+ * ```ts
16
+ * const { items, metadata } = useNotificationStore(feedClient);
17
+ * ```
18
+ *
19
+ * A selector can be used to access a subset of the store state.
20
+ *
21
+ * @example
22
+ *
23
+ * ```ts
24
+ * const { items, metadata } = useNotificationStore(feedClient, (state) => ({
25
+ * items: state.items,
26
+ * metadata: state.metadata,
27
+ * }));
28
+ * ```
29
+ */
30
+ declare function useNotificationStore(feedClient: Feed): FeedStoreState;
31
+ declare function useNotificationStore<T>(feedClient: Feed, selector: Selector<T>): T;
32
+ export { useCreateNotificationStore };
33
+ export default useNotificationStore;
34
+ //# sourceMappingURL=useNotificationStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNotificationStore.d.ts","sourceRoot":"","sources":["../../../../../src/modules/feed/hooks/useNotificationStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAG9D,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,KAAK,CAAC,CAAC;AAEvD;;;;;GAKG;AACH,iBAAS,0BAA0B,CAAC,UAAU,EAAE,IAAI,IAC1C,CAAC,GAAG,cAAc,EAAE,WAAW,QAAQ,CAAC,CAAC,CAAC,OASnD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,iBAAS,oBAAoB,CAAC,UAAU,EAAE,IAAI,GAAG,cAAc,CAAC;AAChE,iBAAS,oBAAoB,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAS7E,OAAO,EAAE,0BAA0B,EAAE,CAAC;AACtC,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { default as Knock, Feed, FeedClientOptions } from '@knocklabs/client';
2
+ declare function useNotifications(knock: Knock, feedChannelId: string, options?: FeedClientOptions): Feed;
3
+ export default useNotifications;
4
+ //# sourceMappingURL=useNotifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNotifications.d.ts","sourceRoot":"","sources":["../../../../../src/modules/feed/hooks/useNotifications.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAUnE,iBAAS,gBAAgB,CACvB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,iBAAsB,GAC9B,IAAI,CAgDN;AAED,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { KnockFeedProvider, useKnockFeed, type KnockFeedProviderState, type KnockFeedProviderProps, } from './context';
2
+ export { useNotifications, useFeedSettings, useNotificationStore, useCreateNotificationStore, type Selector, } from './hooks';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/feed/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,GAC5B,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,0BAA0B,EAC1B,KAAK,QAAQ,GACd,MAAM,SAAS,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { KnockGuideClient, KnockGuideTargetParams } from '@knocklabs/client';
2
+ import { ColorMode } from '../../core/constants';
3
+ import * as React from "react";
4
+ type KnockGuideProviderValue = {
5
+ client: KnockGuideClient;
6
+ colorMode: ColorMode;
7
+ };
8
+ export declare const KnockGuideContext: React.Context<KnockGuideProviderValue | undefined>;
9
+ type Props = {
10
+ channelId: string;
11
+ readyToTarget: boolean;
12
+ listenForUpdates?: boolean;
13
+ colorMode?: ColorMode;
14
+ targetParams?: KnockGuideTargetParams;
15
+ trackLocationFromWindow?: boolean;
16
+ };
17
+ export declare const KnockGuideProvider: React.FC<React.PropsWithChildren<Props>>;
18
+ export {};
19
+ //# sourceMappingURL=KnockGuideProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KnockGuideProvider.d.ts","sourceRoot":"","sources":["../../../../../src/modules/guide/context/KnockGuideProvider.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,KAAK,uBAAuB,GAAG;IAC7B,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,iBAAiB,oDAElB,CAAC;AAEb,KAAK,KAAK,GAAG;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CA4CvE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { KnockGuideProvider, KnockGuideContext } from './KnockGuideProvider';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/modules/guide/context/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { useGuide } from './useGuide';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/modules/guide/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { KnockGuide, KnockGuideFilterParams, KnockGuideStep } from '@knocklabs/client';
2
+ import { UseGuideContextReturn } from './useGuideContext';
3
+ interface UseGuideReturn extends UseGuideContextReturn {
4
+ guide: KnockGuide | undefined;
5
+ step: KnockGuideStep | undefined;
6
+ }
7
+ export declare const useGuide: (filters: KnockGuideFilterParams) => UseGuideReturn;
8
+ export {};
9
+ //# sourceMappingURL=useGuide.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGuide.d.ts","sourceRoot":"","sources":["../../../../../src/modules/guide/hooks/useGuide.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,sBAAsB,EACtB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,qBAAqB,EAAmB,MAAM,mBAAmB,CAAC;AAE3E,UAAU,cAAe,SAAQ,qBAAqB;IACpD,KAAK,EAAE,UAAU,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,cAAc,GAAG,SAAS,CAAC;CAClC;AAED,eAAO,MAAM,QAAQ,GAAI,SAAS,sBAAsB,KAAG,cAkB1D,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { KnockGuideClient } from '@knocklabs/client';
2
+ export interface UseGuideContextReturn {
3
+ client: KnockGuideClient;
4
+ colorMode: "light" | "dark";
5
+ }
6
+ export declare const useGuideContext: () => UseGuideContextReturn;
7
+ //# sourceMappingURL=useGuideContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGuideContext.d.ts","sourceRoot":"","sources":["../../../../../src/modules/guide/hooks/useGuideContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAKrD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,eAAe,QAAO,qBAOlC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { KnockGuideProvider, KnockGuideContext } from './context';
2
+ export { useGuide } from './hooks';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/guide/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { default as React, FunctionComponent, PropsWithChildren } from 'react';
2
+ import { I18nContent } from '../languages';
3
+ export declare const I18nContext: React.Context<I18nContent>;
4
+ export interface KnockI18nProviderProps {
5
+ i18n?: I18nContent;
6
+ }
7
+ export declare const KnockI18nProvider: FunctionComponent<PropsWithChildren<KnockI18nProviderProps>>;
8
+ //# sourceMappingURL=KnockI18nProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KnockI18nProvider.d.ts","sourceRoot":"","sources":["../../../../../src/modules/i18n/context/KnockI18nProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAW,MAAM,cAAc,CAAC;AAEpD,eAAO,MAAM,WAAW,4BAA+C,CAAC;AAExE,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,eAAO,MAAM,iBAAiB,EAAE,iBAAiB,CAC/C,iBAAiB,CAAC,sBAAsB,CAAC,CAG1C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { KnockI18nProvider, I18nContext, type KnockI18nProviderProps, } from './KnockI18nProvider';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/modules/i18n/context/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,KAAK,sBAAsB,GAC5B,MAAM,qBAAqB,CAAC"}