@chatbotkit/react 1.18.4 → 1.19.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 (68) hide show
  1. package/dist/cjs/actions/complete.cjs +1 -2
  2. package/dist/cjs/actions/complete.d.ts +7 -7
  3. package/dist/cjs/components/AutoScroller.cjs +1 -2
  4. package/dist/cjs/components/AutoScroller.d.ts +3 -3
  5. package/dist/cjs/components/AutoTextarea.cjs +1 -2
  6. package/dist/cjs/components/ChatInput.cjs +1 -2
  7. package/dist/cjs/components/ChatInput.d.ts +1 -1
  8. package/dist/cjs/components/ChatMessage.cjs +1 -2
  9. package/dist/cjs/components/ChatMessage.d.ts +1 -1
  10. package/dist/cjs/components/ChatMessages.cjs +1 -2
  11. package/dist/cjs/components/ConversationManager.cjs +2 -2
  12. package/dist/cjs/components/ConversationManager.d.ts +3 -3
  13. package/dist/cjs/hooks/useConversationManager.cjs +1 -2
  14. package/dist/cjs/hooks/useConversationManager.d.ts +2 -2
  15. package/dist/cjs/hooks/useConversationManagerRemote.cjs +1 -2
  16. package/dist/cjs/hooks/useConversationManagerState.cjs +1 -2
  17. package/dist/cjs/hooks/useConversationManagerState.d.ts +5 -5
  18. package/dist/cjs/hooks/useConversationManagerStateReducer.cjs +3 -4
  19. package/dist/cjs/hooks/useConversationManagerStateReducer.d.ts +6 -6
  20. package/dist/cjs/hooks/useDOMQuerySelector.cjs +35 -14
  21. package/dist/cjs/hooks/useDOMQuerySelector.d.ts +4 -3
  22. package/dist/cjs/hooks/useDeps.cjs +11 -0
  23. package/dist/cjs/hooks/useDeps.d.ts +1 -0
  24. package/dist/cjs/hooks/useWidgetInstance.cjs +25 -5
  25. package/dist/cjs/hooks/useWidgetInstance.d.ts +3 -3
  26. package/dist/cjs/hooks/useWidgetInstanceFunctions.cjs +4 -4
  27. package/dist/cjs/hooks/useWidgetInstanceFunctions.d.ts +3 -2
  28. package/dist/cjs/hooks/useWidgetInstanceNotifications.cjs +4 -4
  29. package/dist/cjs/hooks/useWidgetInstanceNotifications.d.ts +3 -2
  30. package/dist/cjs/utils/it.cjs +1 -2
  31. package/dist/cjs/utils/object.cjs +1 -2
  32. package/dist/cjs/utils/stream.cjs +8 -4
  33. package/dist/cjs/utils/string.cjs +3 -4
  34. package/dist/cjs/utils/string.d.ts +2 -2
  35. package/dist/esm/actions/complete.d.ts +8 -8
  36. package/dist/esm/components/AutoScroller.d.ts +6 -6
  37. package/dist/esm/components/AutoTextarea.d.ts +1 -1
  38. package/dist/esm/components/ChatInput.d.ts +2 -2
  39. package/dist/esm/components/ChatMessage.d.ts +1 -1
  40. package/dist/esm/components/ConversationManager.d.ts +3 -3
  41. package/dist/esm/hooks/useConversationManager.d.ts +3 -3
  42. package/dist/esm/hooks/useConversationManagerRemote.d.ts +2 -2
  43. package/dist/esm/hooks/useConversationManagerState.d.ts +6 -6
  44. package/dist/esm/hooks/useConversationManagerStateReducer.d.ts +8 -8
  45. package/dist/esm/hooks/useDOMQuerySelector.d.ts +5 -4
  46. package/dist/esm/hooks/useDOMQuerySelector.js +33 -12
  47. package/dist/esm/hooks/useDeps.d.ts +1 -0
  48. package/dist/esm/hooks/useDeps.js +8 -0
  49. package/dist/esm/hooks/useWidgetInstance.d.ts +3 -3
  50. package/dist/esm/hooks/useWidgetInstance.js +22 -3
  51. package/dist/esm/hooks/useWidgetInstanceFunctions.d.ts +4 -3
  52. package/dist/esm/hooks/useWidgetInstanceFunctions.js +3 -2
  53. package/dist/esm/hooks/useWidgetInstanceNotifications.d.ts +4 -3
  54. package/dist/esm/hooks/useWidgetInstanceNotifications.js +3 -2
  55. package/dist/esm/utils/stream.d.ts +2 -2
  56. package/dist/esm/utils/stream.js +5 -1
  57. package/dist/esm/utils/string.d.ts +3 -3
  58. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  59. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  60. package/package.json +33 -48
  61. package/dist/cjs/hooks/useWidgetQuerySelector.cjs +0 -44
  62. package/dist/cjs/hooks/useWidgetQuerySelector.d.ts +0 -5
  63. package/dist/cjs/utils/error.cjs +0 -10
  64. package/dist/cjs/utils/error.d.ts +0 -4
  65. package/dist/esm/hooks/useWidgetQuerySelector.d.ts +0 -5
  66. package/dist/esm/hooks/useWidgetQuerySelector.js +0 -39
  67. package/dist/esm/utils/error.d.ts +0 -4
  68. package/dist/esm/utils/error.js +0 -6
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.replaceWithCoordinates = exports.replaceBetween = exports.getRandomId = void 0;
3
+ exports.getRandomId = getRandomId;
4
+ exports.replaceBetween = replaceBetween;
5
+ exports.replaceWithCoordinates = replaceWithCoordinates;
4
6
  function getRandomId(prefix) {
5
7
  return `${prefix || ''}${Math.random().toString(32).slice(2)}`;
6
8
  }
7
- exports.getRandomId = getRandomId;
8
9
  function replaceBetween(input, begin, end, replacement) {
9
10
  return input.substring(0, begin) + replacement + input.substring(end);
10
11
  }
11
- exports.replaceBetween = replaceBetween;
12
12
  function replaceWithCoordinates(input, replacements) {
13
13
  const output = [];
14
14
  let currentIndex = 0;
@@ -37,4 +37,3 @@ function replaceWithCoordinates(input, replacements) {
37
37
  output.push(input);
38
38
  return output;
39
39
  }
40
- exports.replaceWithCoordinates = replaceWithCoordinates;
@@ -1,8 +1,8 @@
1
1
  export function getRandomId(prefix?: string): string;
2
2
  export function replaceBetween(input: string, begin: number, end: number, replacement: string): string;
3
- export function replaceWithCoordinates(input: string, replacements: [string, string][]): (string | {
3
+ export function replaceWithCoordinates(input: string, replacements: [string, string][]): ({
4
4
  begin: number;
5
5
  end: number;
6
6
  input: string;
7
7
  output: string;
8
- })[];
8
+ } | string)[];
@@ -1,7 +1,7 @@
1
- export function streamComplete(options: Options): import('../utils/stream.js').StreamResult;
1
+ export function streamComplete(options: Options): import("../utils/stream.js").StreamResult;
2
2
  export default complete;
3
- export type ReactElement = import('react').ReactElement;
4
- export type ReactNode = import('react').ReactNode;
3
+ export type ReactElement = import("react").ReactElement;
4
+ export type ReactNode = import("react").ReactNode;
5
5
  export type Item = {
6
6
  type: string;
7
7
  data: object;
@@ -15,12 +15,12 @@ export type ValidatingParametersSchema = {
15
15
  }>;
16
16
  };
17
17
  export type InputMessage = {
18
- type: 'bot' | 'user' | 'reasoning' | 'context' | 'instruction' | 'backstory' | 'activity';
18
+ type: "bot" | "user" | "reasoning" | "context" | "instruction" | "backstory" | "activity";
19
19
  text: string;
20
20
  meta?: Record<string, any>;
21
21
  };
22
22
  export type OutputMessage = {
23
- type: 'bot' | 'activity';
23
+ type: "bot" | "activity";
24
24
  text: string;
25
25
  meta?: Record<string, any>;
26
26
  };
@@ -47,15 +47,15 @@ export type InputFunction = {
47
47
  name: string;
48
48
  description: string;
49
49
  parameters: BasicParametersSchema | ValidatingParametersSchema;
50
- handler?: ((args: HandlerArgs, options: HandlerOptions) => Promise<HandlerResult>) | undefined;
50
+ handler?: (args: HandlerArgs, options: HandlerOptions) => Promise<HandlerResult>;
51
51
  };
52
52
  export type OnItemHandler = (arg0: Item) => any;
53
53
  export type OnStartHandler = () => any;
54
54
  export type OnFinishHandler = (arg0: {
55
55
  messages: Message[];
56
56
  }) => any;
57
- export type Options = Omit<import('@chatbotkit/sdk/conversation/v1.js').ConversationCompleteRequest, 'messages' | 'functions'> & {
58
- client: import('@chatbotkit/sdk').ConversationClient;
57
+ export type Options = Omit<import("@chatbotkit/sdk/conversation/v1.js").ConversationCompleteRequest, "messages" | "functions"> & {
58
+ client: import("@chatbotkit/sdk").ConversationClient;
59
59
  messages: InputMessage[];
60
60
  functions?: (InputFunction | (() => InputFunction | Promise<InputFunction>))[];
61
61
  maxRecusion?: number;
@@ -1,9 +1,9 @@
1
1
  export function AutoScroller(props?: {
2
+ anchor?: "top" | "bottom";
3
+ childList?: boolean;
4
+ subtree?: boolean;
5
+ block?: "start" | "end";
6
+ delay?: number;
2
7
  [name: string]: any;
3
- anchor?: "bottom" | "top" | undefined;
4
- childList?: boolean | undefined;
5
- subtree?: boolean | undefined;
6
- block?: "end" | "start" | undefined;
7
- delay?: number | undefined;
8
- } | undefined): import("react/jsx-runtime").JSX.Element;
8
+ }): import("react/jsx-runtime").JSX.Element;
9
9
  export default AutoScroller;
@@ -1,6 +1,6 @@
1
1
  export function AutoTextarea(props?: {
2
2
  [name: string]: any;
3
- } | undefined, forwardedRef?: React.Ref<HTMLTextAreaElement> | undefined): import("react/jsx-runtime").JSX.Element;
3
+ }, forwardedRef?: React.Ref<HTMLTextAreaElement>): import("react/jsx-runtime").JSX.Element;
4
4
  declare const _default: React.ForwardRefExoticComponent<Omit<{
5
5
  [name: string]: any;
6
6
  }, "ref"> & React.RefAttributes<HTMLTextAreaElement>>;
@@ -1,6 +1,6 @@
1
1
  export function ChatInput(props: {
2
- [name: string]: any;
3
2
  onSubmit: () => void;
4
- modifierKey?: boolean | undefined;
3
+ modifierKey?: boolean;
4
+ [name: string]: any;
5
5
  }): import("react/jsx-runtime").JSX.Element;
6
6
  export default ChatInput;
@@ -1,3 +1,3 @@
1
1
  export function ChatMessage(props: {
2
2
  text: string;
3
- } & Pick<import("../../node_modules/react-markdown/lib/index.js").Options, "components" | "rehypePlugins" | "remarkPlugins"> & import("react").HTMLProps<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
3
+ } & Pick<import("react-markdown").Options, "remarkPlugins" | "rehypePlugins" | "components"> & import("react").HTMLProps<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
- export function ConversationManager({ children, ...options }: import('../hooks/useConversationManager.js').UseConversationManagerOptions & {
2
- children: import('react').ReactNode;
3
- }): import('react').ReactElement;
1
+ export function ConversationManager({ children, ...options }: import("../hooks/useConversationManager.js").UseConversationManagerOptions & {
2
+ children: import("react").ReactNode;
3
+ }): import("react").ReactElement;
4
4
  export const ConversationContext: import("react").Context<import("../hooks/useConversationManager.js").UseConversationManagerResult>;
5
5
  export default ConversationManager;
@@ -1,6 +1,6 @@
1
1
  export function useConversationManager({ interactionMaxMessages, ...conversationManagerRemoteOptions }: UseConversationManagerOptions): UseConversationManagerResult;
2
2
  export default useConversationManager;
3
- export type Message = import('@chatbotkit/sdk/conversation/v1').Message;
3
+ export type Message = import("@chatbotkit/sdk/conversation/v1").Message;
4
4
  export type SimpleMessage = Message & {
5
5
  id: string;
6
6
  createdAt: Date;
@@ -8,9 +8,9 @@ export type SimpleMessage = Message & {
8
8
  export type ComplexMessage = Message & {
9
9
  id: string;
10
10
  createdAt: Date;
11
- children?: import('react').ReactNode;
11
+ children?: import("react").ReactNode;
12
12
  };
13
- export type UseConversationManagerRemoteOptions = import('./useConversationManagerRemote.js').UseConversationManagerRemoteOptions;
13
+ export type UseConversationManagerRemoteOptions = import("./useConversationManagerRemote.js").UseConversationManagerRemoteOptions;
14
14
  export type UseConversationManagerOptions = UseConversationManagerRemoteOptions & {
15
15
  interactionMaxMessages?: number;
16
16
  };
@@ -1,7 +1,7 @@
1
1
  export function useConversationManagerRemote({ client: _client, endpoint, token, conversationId, stateful, botId, backstory, model, datasetId, skillsetId, privacy, moderation, ...rest }: UseConversationManagerRemoteOptions): UseConversationManagerRemoteResult;
2
2
  export default useConversationManagerRemote;
3
- export type Message = import('@chatbotkit/sdk/conversation/v1').Message;
4
- export type Model = import('@chatbotkit/sdk/model/v1').Model;
3
+ export type Message = import("@chatbotkit/sdk/conversation/v1").Message;
4
+ export type Model = import("@chatbotkit/sdk/model/v1").Model;
5
5
  export type EndpointURL = string;
6
6
  export type EndpointFunction = (options: any) => AsyncGenerator<any>;
7
7
  export type UseConversationManagerRemoteOptions = {
@@ -1,9 +1,9 @@
1
- export function useConversationManagerState(state?: Partial<import("./useConversationManagerStateReducer.js").State> | undefined): [State, StateFunctions];
1
+ export function useConversationManagerState(state?: Partial<State>): [State, StateFunctions];
2
2
  export default useConversationManagerState;
3
- export type State = import('./useConversationManagerStateReducer.js').State;
3
+ export type State = import("./useConversationManagerStateReducer.js").State;
4
4
  export type StateFunctions = {
5
- setThinking: (thinking: import('./useConversationManagerStateReducer.js').SetThinkingAction['data']['thinking']) => void;
6
- setTyping: (typing: import('./useConversationManagerStateReducer.js').SetTypingAction['data']['typing']) => void;
7
- appendText: (text: import('./useConversationManagerStateReducer.js').AppendTextAction['data']['text']) => void;
8
- appendMessage: (message: import('./useConversationManagerStateReducer.js').AppendMessageAction['data']['message']) => void;
5
+ setThinking: (thinking: import("./useConversationManagerStateReducer.js").SetThinkingAction["data"]["thinking"]) => void;
6
+ setTyping: (typing: import("./useConversationManagerStateReducer.js").SetTypingAction["data"]["typing"]) => void;
7
+ appendText: (text: import("./useConversationManagerStateReducer.js").AppendTextAction["data"]["text"]) => void;
8
+ appendMessage: (message: import("./useConversationManagerStateReducer.js").AppendMessageAction["data"]["message"]) => void;
9
9
  };
@@ -1,8 +1,8 @@
1
1
  export function conversationManagerStateReducer(state: State, action: Action): State;
2
- export function conversationManagerStateInitial(state?: Partial<State> | undefined): State;
3
- export function useConversationManagerStateReducer(state?: Partial<State> | undefined): [State, import('react').Dispatch<Action>];
2
+ export function conversationManagerStateInitial(state?: Partial<State>): State;
3
+ export function useConversationManagerStateReducer(state?: Partial<State>): [State, import("react").Dispatch<Action>];
4
4
  export default useConversationManagerStateReducer;
5
- export type Message = import('@chatbotkit/sdk/conversation/v1').Message & {
5
+ export type Message = import("@chatbotkit/sdk/conversation/v1").Message & {
6
6
  id: string;
7
7
  createdAt: Date;
8
8
  };
@@ -13,27 +13,27 @@ export type State = {
13
13
  messages: Message[];
14
14
  };
15
15
  export type SetThinkingAction = {
16
- type: 'setThinking';
16
+ type: "setThinking";
17
17
  data: {
18
18
  thinking: boolean;
19
19
  };
20
20
  };
21
21
  export type SetTypingAction = {
22
- type: 'setTyping';
22
+ type: "setTyping";
23
23
  data: {
24
24
  typing: boolean;
25
25
  };
26
26
  };
27
27
  export type AppendTextAction = {
28
- type: 'appendText';
28
+ type: "appendText";
29
29
  data: {
30
30
  text: string;
31
31
  };
32
32
  };
33
33
  export type AppendMessageAction = {
34
- type: 'appendMessage';
34
+ type: "appendMessage";
35
35
  data: {
36
- message: Omit<Message, 'id' | 'createdAt'> & {
36
+ message: Omit<Message, "id" | "createdAt"> & {
37
37
  id?: string;
38
38
  createdAt?: Date;
39
39
  };
@@ -1,4 +1,5 @@
1
- export function useDOMQuerySelector<T>(selector: string, options?: {
2
- waitForElements?: boolean | undefined;
3
- } | undefined): T[];
4
- export default useDOMQuerySelector;
1
+ export default function useDOMQuerySelector(selector: string | null | undefined, options?: {
2
+ waitForElements?: boolean;
3
+ disconnectOnFirstMatch?: boolean;
4
+ parent?: ParentNode;
5
+ }, deps?: any[]): Element[];
@@ -1,25 +1,46 @@
1
1
  import { useEffect, useState } from 'react';
2
- export function useDOMQuerySelector(selector, options) {
3
- const { waitForElements = false } = options || {};
2
+ import useDeps from './useDeps.js';
3
+ export default function useDOMQuerySelector(selector, options, deps) {
4
+ const { waitForElements = false, disconnectOnFirstMatch = true, parent = typeof document !== 'undefined'
5
+ ? document.documentElement
6
+ : undefined, } = options || {};
7
+ const thisDeps = useDeps(deps);
4
8
  const [elements, setElements] = useState(([]));
5
9
  useEffect(() => {
6
- const elements = document.querySelectorAll(selector);
7
- setElements((Array.from(elements)));
8
- if (!elements.length && waitForElements) {
10
+ if (!selector) {
11
+ return;
12
+ }
13
+ if (!parent) {
14
+ return;
15
+ }
16
+ const initialElements = parent.querySelectorAll(selector);
17
+ setElements(Array.from(initialElements));
18
+ if (!initialElements.length && waitForElements) {
9
19
  const observer = new MutationObserver(() => {
10
- const elements = document.querySelectorAll(selector);
20
+ const elements = parent.querySelectorAll(selector);
11
21
  if (elements.length) {
12
- observer.disconnect();
22
+ setElements(Array.from(elements));
23
+ if (disconnectOnFirstMatch) {
24
+ try {
25
+ observer.disconnect();
26
+ }
27
+ catch {
28
+ }
29
+ }
13
30
  }
14
- setElements((Array.from(elements)));
15
31
  });
16
- observer.observe(document.body, {
32
+ observer.observe(parent, {
17
33
  childList: true,
18
34
  subtree: true,
19
35
  });
20
- return () => observer.disconnect();
36
+ return () => {
37
+ try {
38
+ observer.disconnect();
39
+ }
40
+ catch {
41
+ }
42
+ };
21
43
  }
22
- }, [selector, waitForElements]);
44
+ }, [selector, waitForElements, disconnectOnFirstMatch, parent, thisDeps]);
23
45
  return elements;
24
46
  }
25
- export default useDOMQuerySelector;
@@ -0,0 +1 @@
1
+ export default function useDeps(deps?: any[]): number;
@@ -0,0 +1,8 @@
1
+ import { useEffect, useState } from 'react';
2
+ export default function useDeps(deps = []) {
3
+ const [depsId, setDepsId] = useState(0);
4
+ useEffect(() => {
5
+ setDepsId((prevId) => prevId + 1);
6
+ }, deps);
7
+ return depsId;
8
+ }
@@ -1,4 +1,4 @@
1
- export function useWidgetInstance(): ChatBotKitWidgetInstance | null;
1
+ export function useWidgetInstance(selector?: string, deps?: any[]): ChatBotKitWidgetInstance | null;
2
2
  export default useWidgetInstance;
3
3
  export type WidgetMessage = {
4
4
  id: string;
@@ -21,7 +21,7 @@ export type WidgetFunctionWithHandler = WidgetFunctionBase & {
21
21
  handler: (args: any) => any;
22
22
  };
23
23
  export type WidgetFunction = WidgetFunctionWithResult | WidgetFunctionWithHandler;
24
- export type WidgteRestartConversationFn = () => void;
24
+ export type WidgetRestartConversationFn = () => void;
25
25
  export type WidgetSendMessageFn = (options: string | (({
26
26
  message: string;
27
27
  } | {
@@ -36,6 +36,6 @@ export type ChatBotKitWidgetInstance = HTMLElement & {
36
36
  messages?: WidgetMessage[] | null;
37
37
  notifications?: Record<string, WidgetNotification> | null;
38
38
  functions?: Record<string, WidgetFunction> | null;
39
- restartConversation: WidgteRestartConversationFn;
39
+ restartConversation: WidgetRestartConversationFn;
40
40
  sendMessage: WidgetSendMessageFn;
41
41
  };
@@ -1,8 +1,27 @@
1
1
  'use client';
2
2
  import { useEffect, useState } from 'react';
3
- export function useWidgetInstance() {
4
- const [instance, setInstance] = useState(null);
3
+ import useDOMQuerySelector from './useDOMQuerySelector.js';
4
+ export function useWidgetInstance(selector, deps) {
5
+ const [instance, setInstance] = useState((null));
6
+ const [element] = useDOMQuerySelector(selector, { waitForElements: true }, deps);
5
7
  useEffect(() => {
8
+ if (element) {
9
+ const widgetElement = (element);
10
+ if (widgetElement.readyPromise) {
11
+ widgetElement.readyPromise.then(() => setInstance(widgetElement));
12
+ return;
13
+ }
14
+ {
15
+ const onReady = () => {
16
+ widgetElement.removeEventListener('ready', onReady);
17
+ setInstance(widgetElement);
18
+ };
19
+ widgetElement.addEventListener('ready', onReady);
20
+ return () => {
21
+ widgetElement?.removeEventListener?.('ready', onReady);
22
+ };
23
+ }
24
+ }
6
25
  if (window.chatbotkitWidget) {
7
26
  window.chatbotkitWidget.instancePromise.then((instance) => setInstance(instance));
8
27
  return;
@@ -14,7 +33,7 @@ export function useWidgetInstance() {
14
33
  return () => {
15
34
  window.removeEventListener('chatbotkitWidgetInit', onInit);
16
35
  };
17
- }, []);
36
+ }, [element]);
18
37
  return instance;
19
38
  }
20
39
  export default useWidgetInstance;
@@ -1,5 +1,6 @@
1
1
  export function useWidgetInstanceFunctions(params?: {
2
- functions?: Record<string, import("./useWidgetInstance.js").WidgetFunction> | null | undefined;
3
- } | undefined): void;
2
+ selector?: string;
3
+ functions?: Record<string, WidgetFunction> | null;
4
+ }, deps?: any[]): import("./useWidgetInstance.js").ChatBotKitWidgetInstance | null;
4
5
  export default useWidgetInstanceFunctions;
5
- export type WidgetFunction = import('./useWidgetInstance.js').WidgetFunction;
6
+ export type WidgetFunction = import("./useWidgetInstance.js").WidgetFunction;
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
  import { useEffect } from 'react';
3
3
  import useWidgetInstance from './useWidgetInstance.js';
4
- export function useWidgetInstanceFunctions(params) {
5
- const instance = useWidgetInstance();
4
+ export function useWidgetInstanceFunctions(params, deps) {
5
+ const instance = useWidgetInstance(params?.selector, deps);
6
6
  useEffect(() => {
7
7
  if (!instance) {
8
8
  return;
@@ -14,5 +14,6 @@ export function useWidgetInstanceFunctions(params) {
14
14
  ...params?.functions,
15
15
  };
16
16
  }, [params?.functions, instance]);
17
+ return instance;
17
18
  }
18
19
  export default useWidgetInstanceFunctions;
@@ -1,5 +1,6 @@
1
1
  export function useWidgetInstanceNotifications(params?: {
2
- notifications?: Record<string, import("./useWidgetInstance.js").WidgetNotification> | null | undefined;
3
- } | undefined): void;
2
+ selector?: string;
3
+ notifications?: Record<string, WidgetNotification> | null;
4
+ }, deps?: any[]): import("./useWidgetInstance.js").ChatBotKitWidgetInstance | null;
4
5
  export default useWidgetInstanceNotifications;
5
- export type WidgetNotification = import('./useWidgetInstance.js').WidgetNotification;
6
+ export type WidgetNotification = import("./useWidgetInstance.js").WidgetNotification;
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
  import { useEffect } from 'react';
3
3
  import useWidgetInstance from './useWidgetInstance.js';
4
- export function useWidgetInstanceNotifications(params) {
5
- const instance = useWidgetInstance();
4
+ export function useWidgetInstanceNotifications(params, deps) {
5
+ const instance = useWidgetInstance(params?.selector, deps);
6
6
  useEffect(() => {
7
7
  if (!instance) {
8
8
  return;
@@ -14,5 +14,6 @@ export function useWidgetInstanceNotifications(params) {
14
14
  ...params?.notifications,
15
15
  };
16
16
  }, [params?.notifications, instance]);
17
+ return instance;
17
18
  }
18
19
  export default useWidgetInstanceNotifications;
@@ -1,5 +1,5 @@
1
- export function stream(source: StreamSource, options?: Handlers | undefined): StreamResult;
2
- export function consume(source: ConsumeSource, options?: Handlers | undefined): ConsumeResult;
1
+ export function stream(source: StreamSource, options?: StreamOptions): StreamResult;
2
+ export function consume(source: ConsumeSource, options?: ConsumeOptions): ConsumeResult;
3
3
  export class StreamError extends Error {
4
4
  constructor(message: string, code: string);
5
5
  public code: string;
@@ -41,7 +41,11 @@ function consumeIt(source) {
41
41
  return {
42
42
  current: source,
43
43
  async next() {
44
- const { iteratorResult, next, error } = await this.current;
44
+ const result = await this.current;
45
+ if (!result || typeof result !== 'object') {
46
+ throw new StreamError('Invalid stream result', 'INVALID_STREAM_RESULT');
47
+ }
48
+ const { iteratorResult, next, error } = result;
45
49
  if (error) {
46
50
  if (typeof error === 'object') {
47
51
  throw new StreamError(error.message, error.code);
@@ -1,8 +1,8 @@
1
- export function getRandomId(prefix?: string | undefined): string;
1
+ export function getRandomId(prefix?: string): string;
2
2
  export function replaceBetween(input: string, begin: number, end: number, replacement: string): string;
3
- export function replaceWithCoordinates(input: string, replacements: [string, string][]): (string | {
3
+ export function replaceWithCoordinates(input: string, replacements: [string, string][]): ({
4
4
  begin: number;
5
5
  end: number;
6
6
  input: string;
7
7
  output: string;
8
- })[];
8
+ } | string)[];