@chatbotkit/react 1.18.3 → 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 (69) hide show
  1. package/dist/cjs/actions/complete.cjs +2 -3
  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/actions/complete.js +1 -1
  37. package/dist/esm/components/AutoScroller.d.ts +6 -6
  38. package/dist/esm/components/AutoTextarea.d.ts +1 -1
  39. package/dist/esm/components/ChatInput.d.ts +2 -2
  40. package/dist/esm/components/ChatMessage.d.ts +1 -1
  41. package/dist/esm/components/ConversationManager.d.ts +3 -3
  42. package/dist/esm/hooks/useConversationManager.d.ts +3 -3
  43. package/dist/esm/hooks/useConversationManagerRemote.d.ts +2 -2
  44. package/dist/esm/hooks/useConversationManagerState.d.ts +6 -6
  45. package/dist/esm/hooks/useConversationManagerStateReducer.d.ts +8 -8
  46. package/dist/esm/hooks/useDOMQuerySelector.d.ts +5 -4
  47. package/dist/esm/hooks/useDOMQuerySelector.js +33 -12
  48. package/dist/esm/hooks/useDeps.d.ts +1 -0
  49. package/dist/esm/hooks/useDeps.js +8 -0
  50. package/dist/esm/hooks/useWidgetInstance.d.ts +3 -3
  51. package/dist/esm/hooks/useWidgetInstance.js +22 -3
  52. package/dist/esm/hooks/useWidgetInstanceFunctions.d.ts +4 -3
  53. package/dist/esm/hooks/useWidgetInstanceFunctions.js +3 -2
  54. package/dist/esm/hooks/useWidgetInstanceNotifications.d.ts +4 -3
  55. package/dist/esm/hooks/useWidgetInstanceNotifications.js +3 -2
  56. package/dist/esm/utils/stream.d.ts +2 -2
  57. package/dist/esm/utils/stream.js +5 -1
  58. package/dist/esm/utils/string.d.ts +3 -3
  59. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  60. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  61. package/package.json +33 -48
  62. package/dist/cjs/hooks/useWidgetQuerySelector.cjs +0 -44
  63. package/dist/cjs/hooks/useWidgetQuerySelector.d.ts +0 -5
  64. package/dist/cjs/utils/error.cjs +0 -10
  65. package/dist/cjs/utils/error.d.ts +0 -4
  66. package/dist/esm/hooks/useWidgetQuerySelector.d.ts +0 -5
  67. package/dist/esm/hooks/useWidgetQuerySelector.js +0 -39
  68. package/dist/esm/utils/error.d.ts +0 -4
  69. package/dist/esm/utils/error.js +0 -6
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.streamComplete = void 0;
3
+ exports.streamComplete = streamComplete;
4
4
  const react_1 = require("react");
5
5
  const it_js_1 = require("../utils/it.cjs");
6
6
  const stream_js_1 = require("../utils/stream.cjs");
@@ -64,13 +64,13 @@ async function* complete({ client, messages, functions, maxRecusion = 50, ...opt
64
64
  }
65
65
  }
66
66
  for await (const item of it) {
67
- yield item;
68
67
  if (options.onItem) {
69
68
  const result = await options.onItem(item);
70
69
  if (result && typeof result === 'object' && 'type' in result) {
71
70
  yield result;
72
71
  }
73
72
  }
73
+ yield item;
74
74
  const { type, data } = item;
75
75
  if (type === 'message') {
76
76
  const message = data;
@@ -206,5 +206,4 @@ async function* complete({ client, messages, functions, maxRecusion = 50, ...opt
206
206
  function streamComplete(options) {
207
207
  return (0, stream_js_1.stream)(complete(options));
208
208
  }
209
- exports.streamComplete = streamComplete;
210
209
  exports.default = complete;
@@ -1,7 +1,7 @@
1
- export function streamComplete(options: Options): import('../utils/stream.cjs').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
  };
@@ -54,8 +54,8 @@ export type OnStartHandler = () => any;
54
54
  export type OnFinishHandler = (arg0: {
55
55
  messages: Message[];
56
56
  }) => any;
57
- export type Options = Omit<any, 'messages' | 'functions'> & {
58
- client: import('@chatbotkit/sdk').ConversationClient;
57
+ export type Options = Omit<any, "messages" | "functions"> & {
58
+ client: import("@chatbotkit/sdk").ConversationClient;
59
59
  messages: InputMessage[];
60
60
  functions?: (InputFunction | (() => InputFunction | Promise<InputFunction>))[];
61
61
  maxRecusion?: number;
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.AutoScroller = void 0;
4
+ exports.AutoScroller = AutoScroller;
5
5
  const tslib_1 = require("tslib");
6
6
  const jsx_runtime_1 = require("react/jsx-runtime");
7
7
  const react_1 = tslib_1.__importStar(require("react"));
@@ -53,5 +53,4 @@ function AutoScroller(props) {
53
53
  }, [disabled]);
54
54
  return ((0, jsx_runtime_1.jsxs)("div", { ref: rootRef, ...rest, children: [anchor === 'top' ? (0, jsx_runtime_1.jsx)(AutoScrollAnchor, {}, "top") : null, children, anchor === 'bottom' ? (0, jsx_runtime_1.jsx)(AutoScrollAnchor, {}, "bottom") : null] }));
55
55
  }
56
- exports.AutoScroller = AutoScroller;
57
56
  exports.default = AutoScroller;
@@ -1,9 +1,9 @@
1
1
  export function AutoScroller(props?: {
2
- [name: string]: any;
3
- anchor?: 'top' | 'bottom';
2
+ anchor?: "top" | "bottom";
4
3
  childList?: boolean;
5
4
  subtree?: boolean;
6
- block?: 'start' | 'end';
5
+ block?: "start" | "end";
7
6
  delay?: number;
7
+ [name: string]: any;
8
8
  }): import("react/jsx-runtime").JSX.Element;
9
9
  export default AutoScroller;
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.AutoTextarea = void 0;
4
+ exports.AutoTextarea = AutoTextarea;
5
5
  const tslib_1 = require("tslib");
6
6
  const jsx_runtime_1 = require("react/jsx-runtime");
7
7
  const react_1 = tslib_1.__importStar(require("react"));
@@ -59,5 +59,4 @@ function AutoTextarea(props, forwardedRef) {
59
59
  }, []);
60
60
  return (0, jsx_runtime_1.jsx)("textarea", { ref: localRef, rows: 1, ...props });
61
61
  }
62
- exports.AutoTextarea = AutoTextarea;
63
62
  exports.default = (0, react_1.forwardRef)(AutoTextarea);
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.ChatInput = void 0;
4
+ exports.ChatInput = ChatInput;
5
5
  const tslib_1 = require("tslib");
6
6
  const jsx_runtime_1 = require("react/jsx-runtime");
7
7
  const AutoTextarea_js_1 = tslib_1.__importDefault(require("./AutoTextarea.cjs"));
@@ -17,5 +17,4 @@ function ChatInput(props) {
17
17
  }
18
18
  return (0, jsx_runtime_1.jsx)(AutoTextarea_js_1.default, { ...rest, onKeyDown: handleOnKeyDown });
19
19
  }
20
- exports.ChatInput = ChatInput;
21
20
  exports.default = ChatInput;
@@ -1,6 +1,6 @@
1
1
  export function ChatInput(props: {
2
- [name: string]: any;
3
2
  onSubmit: () => void;
4
3
  modifierKey?: boolean;
4
+ [name: string]: any;
5
5
  }): import("react/jsx-runtime.js").JSX.Element;
6
6
  export default ChatInput;
@@ -1,7 +1,7 @@
1
1
  'use any';
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.ChatMessage = void 0;
4
+ exports.ChatMessage = ChatMessage;
5
5
  const tslib_1 = require("tslib");
6
6
  const jsx_runtime_1 = require("react/jsx-runtime");
7
7
  const react_1 = require("react");
@@ -22,4 +22,3 @@ function ChatMessage(props) {
22
22
  }, [customComponents]);
23
23
  return ((0, jsx_runtime_1.jsxs)("div", { ...rest, children: [(0, jsx_runtime_1.jsx)(react_markdown_1.default, { remarkPlugins: remarkPlugins, rehypePlugins: rehypePlugins, components: components, children: text }), children] }));
24
24
  }
25
- exports.ChatMessage = ChatMessage;
@@ -1,3 +1,3 @@
1
1
  export function ChatMessage(props: {
2
2
  text: string;
3
- } & Pick<import("react-markdown/lib").Options, "remarkPlugins" | "rehypePlugins" | "components"> & 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,7 +1,7 @@
1
1
  'use client';
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.ChatMessages = void 0;
4
+ exports.ChatMessages = ChatMessages;
5
5
  const tslib_1 = require("tslib");
6
6
  const jsx_runtime_1 = require("react/jsx-runtime");
7
7
  const AutoScroller_js_1 = tslib_1.__importDefault(require("./AutoScroller.cjs"));
@@ -9,5 +9,4 @@ function ChatMessages(props) {
9
9
  const { ...rest } = props || {};
10
10
  return (0, jsx_runtime_1.jsx)(AutoScroller_js_1.default, { ...rest });
11
11
  }
12
- exports.ChatMessages = ChatMessages;
13
12
  exports.default = ChatMessages;
@@ -1,7 +1,8 @@
1
1
  'use client';
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.ConversationManager = exports.ConversationContext = void 0;
4
+ exports.ConversationContext = void 0;
5
+ exports.ConversationManager = ConversationManager;
5
6
  const tslib_1 = require("tslib");
6
7
  const jsx_runtime_1 = require("react/jsx-runtime");
7
8
  const react_1 = require("react");
@@ -23,5 +24,4 @@ function ConversationManager({ children, ...options }) {
23
24
  const manager = (0, useConversationManager_js_1.default)(options);
24
25
  return ((0, jsx_runtime_1.jsx)(exports.ConversationContext.Provider, { value: manager, children: children }));
25
26
  }
26
- exports.ConversationManager = ConversationManager;
27
27
  exports.default = ConversationManager;
@@ -1,5 +1,5 @@
1
- export function ConversationManager({ children, ...options }: import('../hooks/useConversationManager.cjs').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,7 +1,7 @@
1
1
  'use client';
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.useConversationManager = void 0;
4
+ exports.useConversationManager = useConversationManager;
5
5
  const tslib_1 = require("tslib");
6
6
  const react_1 = require("react");
7
7
  const useConversationManagerRemote_js_1 = tslib_1.__importDefault(require("./useConversationManagerRemote.cjs"));
@@ -128,5 +128,4 @@ function useConversationManager({ interactionMaxMessages = 100, ...conversationM
128
128
  request,
129
129
  };
130
130
  }
131
- exports.useConversationManager = useConversationManager;
132
131
  exports.default = useConversationManager;
@@ -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.cjs').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
  'use any';
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.useConversationManagerRemote = void 0;
4
+ exports.useConversationManagerRemote = useConversationManagerRemote;
5
5
  const react_1 = require("react");
6
6
  const object_js_1 = require("../utils/object.cjs");
7
7
  const stream_js_1 = require("../utils/stream.cjs");
@@ -88,5 +88,4 @@ function useConversationManagerRemote({ client: _client, endpoint, token, conver
88
88
  ]);
89
89
  return remote;
90
90
  }
91
- exports.useConversationManagerRemote = useConversationManagerRemote;
92
91
  exports.default = useConversationManagerRemote;
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.useConversationManagerState = void 0;
4
+ exports.useConversationManagerState = useConversationManagerState;
5
5
  const tslib_1 = require("tslib");
6
6
  const react_1 = require("react");
7
7
  const useConversationManagerStateReducer_js_1 = tslib_1.__importDefault(require("./useConversationManagerStateReducer.cjs"));
@@ -29,5 +29,4 @@ function useConversationManagerState(state) {
29
29
  },
30
30
  ];
31
31
  }
32
- exports.useConversationManagerState = useConversationManagerState;
33
32
  exports.default = useConversationManagerState;
@@ -1,9 +1,9 @@
1
1
  export function useConversationManagerState(state?: Partial<State>): [State, StateFunctions];
2
2
  export default useConversationManagerState;
3
- export type State = import('./useConversationManagerStateReducer.cjs').State;
3
+ export type State = import("./useConversationManagerStateReducer.js").State;
4
4
  export type StateFunctions = {
5
- setThinking: (thinking: import('./useConversationManagerStateReducer.cjs').SetThinkingAction['data']['thinking']) => void;
6
- setTyping: (typing: import('./useConversationManagerStateReducer.cjs').SetTypingAction['data']['typing']) => void;
7
- appendText: (text: import('./useConversationManagerStateReducer.cjs').AppendTextAction['data']['text']) => void;
8
- appendMessage: (message: import('./useConversationManagerStateReducer.cjs').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,7 +1,9 @@
1
1
  'use client';
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.useConversationManagerStateReducer = exports.conversationManagerStateInitial = exports.conversationManagerStateReducer = void 0;
4
+ exports.conversationManagerStateReducer = conversationManagerStateReducer;
5
+ exports.conversationManagerStateInitial = conversationManagerStateInitial;
6
+ exports.useConversationManagerStateReducer = useConversationManagerStateReducer;
5
7
  const react_1 = require("react");
6
8
  const string_js_1 = require("../utils/string.cjs");
7
9
  function conversationManagerStateReducer(state, action) {
@@ -98,7 +100,6 @@ function conversationManagerStateReducer(state, action) {
98
100
  }
99
101
  }
100
102
  }
101
- exports.conversationManagerStateReducer = conversationManagerStateReducer;
102
103
  function conversationManagerStateInitial(state) {
103
104
  return {
104
105
  message: null,
@@ -108,9 +109,7 @@ function conversationManagerStateInitial(state) {
108
109
  ...state,
109
110
  };
110
111
  }
111
- exports.conversationManagerStateInitial = conversationManagerStateInitial;
112
112
  function useConversationManagerStateReducer(state) {
113
113
  return (0, react_1.useReducer)(conversationManagerStateReducer, state, conversationManagerStateInitial);
114
114
  }
115
- exports.useConversationManagerStateReducer = useConversationManagerStateReducer;
116
115
  exports.default = useConversationManagerStateReducer;
@@ -1,6 +1,6 @@
1
1
  export function conversationManagerStateReducer(state: State, action: Action): State;
2
2
  export function conversationManagerStateInitial(state?: Partial<State>): State;
3
- export function useConversationManagerStateReducer(state?: Partial<State>): [State, import('react').Dispatch<Action>];
3
+ export function useConversationManagerStateReducer(state?: Partial<State>): [State, import("react").Dispatch<Action>];
4
4
  export default useConversationManagerStateReducer;
5
5
  export type Message = any & {
6
6
  id: string;
@@ -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,29 +1,50 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useDOMQuerySelector = void 0;
3
+ exports.default = useDOMQuerySelector;
4
+ const tslib_1 = require("tslib");
4
5
  const react_1 = require("react");
5
- function useDOMQuerySelector(selector, options) {
6
- const { waitForElements = false } = options || {};
6
+ const useDeps_js_1 = tslib_1.__importDefault(require("./useDeps.cjs"));
7
+ function useDOMQuerySelector(selector, options, deps) {
8
+ const { waitForElements = false, disconnectOnFirstMatch = true, parent = typeof document !== 'undefined'
9
+ ? document.documentElement
10
+ : undefined, } = options || {};
11
+ const thisDeps = (0, useDeps_js_1.default)(deps);
7
12
  const [elements, setElements] = (0, react_1.useState)(([]));
8
13
  (0, react_1.useEffect)(() => {
9
- const elements = document.querySelectorAll(selector);
10
- setElements((Array.from(elements)));
11
- if (!elements.length && waitForElements) {
14
+ if (!selector) {
15
+ return;
16
+ }
17
+ if (!parent) {
18
+ return;
19
+ }
20
+ const initialElements = parent.querySelectorAll(selector);
21
+ setElements(Array.from(initialElements));
22
+ if (!initialElements.length && waitForElements) {
12
23
  const observer = new MutationObserver(() => {
13
- const elements = document.querySelectorAll(selector);
24
+ const elements = parent.querySelectorAll(selector);
14
25
  if (elements.length) {
15
- observer.disconnect();
26
+ setElements(Array.from(elements));
27
+ if (disconnectOnFirstMatch) {
28
+ try {
29
+ observer.disconnect();
30
+ }
31
+ catch (_a) {
32
+ }
33
+ }
16
34
  }
17
- setElements((Array.from(elements)));
18
35
  });
19
- observer.observe(document.body, {
36
+ observer.observe(parent, {
20
37
  childList: true,
21
38
  subtree: true,
22
39
  });
23
- return () => observer.disconnect();
40
+ return () => {
41
+ try {
42
+ observer.disconnect();
43
+ }
44
+ catch (_a) {
45
+ }
46
+ };
24
47
  }
25
- }, [selector, waitForElements]);
48
+ }, [selector, waitForElements, disconnectOnFirstMatch, parent, thisDeps]);
26
49
  return elements;
27
50
  }
28
- exports.useDOMQuerySelector = useDOMQuerySelector;
29
- exports.default = useDOMQuerySelector;
@@ -1,4 +1,5 @@
1
- export function useDOMQuerySelector<T>(selector: string, options?: {
1
+ export default function useDOMQuerySelector(selector: string | null | undefined, options?: {
2
2
  waitForElements?: boolean;
3
- }): T[];
4
- export default useDOMQuerySelector;
3
+ disconnectOnFirstMatch?: boolean;
4
+ parent?: ParentNode;
5
+ }, deps?: any[]): Element[];
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = useDeps;
4
+ const react_1 = require("react");
5
+ function useDeps(deps = []) {
6
+ const [depsId, setDepsId] = (0, react_1.useState)(0);
7
+ (0, react_1.useEffect)(() => {
8
+ setDepsId((prevId) => prevId + 1);
9
+ }, deps);
10
+ return depsId;
11
+ }
@@ -0,0 +1 @@
1
+ export default function useDeps(deps?: any[]): number;
@@ -1,11 +1,32 @@
1
1
  'use client';
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.useWidgetInstance = void 0;
4
+ exports.useWidgetInstance = useWidgetInstance;
5
+ const tslib_1 = require("tslib");
5
6
  const react_1 = require("react");
6
- function useWidgetInstance() {
7
- const [instance, setInstance] = (0, react_1.useState)(null);
7
+ const useDOMQuerySelector_js_1 = tslib_1.__importDefault(require("./useDOMQuerySelector.cjs"));
8
+ function useWidgetInstance(selector, deps) {
9
+ const [instance, setInstance] = (0, react_1.useState)((null));
10
+ const [element] = (0, useDOMQuerySelector_js_1.default)(selector, { waitForElements: true }, deps);
8
11
  (0, react_1.useEffect)(() => {
12
+ if (element) {
13
+ const widgetElement = (element);
14
+ if (widgetElement.readyPromise) {
15
+ widgetElement.readyPromise.then(() => setInstance(widgetElement));
16
+ return;
17
+ }
18
+ {
19
+ const onReady = () => {
20
+ widgetElement.removeEventListener('ready', onReady);
21
+ setInstance(widgetElement);
22
+ };
23
+ widgetElement.addEventListener('ready', onReady);
24
+ return () => {
25
+ var _a;
26
+ (_a = widgetElement === null || widgetElement === void 0 ? void 0 : widgetElement.removeEventListener) === null || _a === void 0 ? void 0 : _a.call(widgetElement, 'ready', onReady);
27
+ };
28
+ }
29
+ }
9
30
  if (window.chatbotkitWidget) {
10
31
  window.chatbotkitWidget.instancePromise.then((instance) => setInstance(instance));
11
32
  return;
@@ -17,8 +38,7 @@ function useWidgetInstance() {
17
38
  return () => {
18
39
  window.removeEventListener('chatbotkitWidgetInit', onInit);
19
40
  };
20
- }, []);
41
+ }, [element]);
21
42
  return instance;
22
43
  }
23
- exports.useWidgetInstance = useWidgetInstance;
24
44
  exports.default = useWidgetInstance;
@@ -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,12 +1,12 @@
1
1
  'use client';
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.useWidgetInstanceFunctions = void 0;
4
+ exports.useWidgetInstanceFunctions = useWidgetInstanceFunctions;
5
5
  const tslib_1 = require("tslib");
6
6
  const react_1 = require("react");
7
7
  const useWidgetInstance_js_1 = tslib_1.__importDefault(require("./useWidgetInstance.cjs"));
8
- function useWidgetInstanceFunctions(params) {
9
- const instance = (0, useWidgetInstance_js_1.default)();
8
+ function useWidgetInstanceFunctions(params, deps) {
9
+ const instance = (0, useWidgetInstance_js_1.default)(params === null || params === void 0 ? void 0 : params.selector, deps);
10
10
  (0, react_1.useEffect)(() => {
11
11
  if (!instance) {
12
12
  return;
@@ -18,6 +18,6 @@ function useWidgetInstanceFunctions(params) {
18
18
  ...params === null || params === void 0 ? void 0 : params.functions,
19
19
  };
20
20
  }, [params === null || params === void 0 ? void 0 : params.functions, instance]);
21
+ return instance;
21
22
  }
22
- exports.useWidgetInstanceFunctions = useWidgetInstanceFunctions;
23
23
  exports.default = useWidgetInstanceFunctions;
@@ -1,5 +1,6 @@
1
1
  export function useWidgetInstanceFunctions(params?: {
2
+ selector?: string;
2
3
  functions?: Record<string, WidgetFunction> | null;
3
- }): void;
4
+ }, deps?: any[]): import("./useWidgetInstance.js").ChatBotKitWidgetInstance | null;
4
5
  export default useWidgetInstanceFunctions;
5
- export type WidgetFunction = import('./useWidgetInstance.cjs').WidgetFunction;
6
+ export type WidgetFunction = import("./useWidgetInstance.js").WidgetFunction;
@@ -1,12 +1,12 @@
1
1
  'use client';
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.useWidgetInstanceNotifications = void 0;
4
+ exports.useWidgetInstanceNotifications = useWidgetInstanceNotifications;
5
5
  const tslib_1 = require("tslib");
6
6
  const react_1 = require("react");
7
7
  const useWidgetInstance_js_1 = tslib_1.__importDefault(require("./useWidgetInstance.cjs"));
8
- function useWidgetInstanceNotifications(params) {
9
- const instance = (0, useWidgetInstance_js_1.default)();
8
+ function useWidgetInstanceNotifications(params, deps) {
9
+ const instance = (0, useWidgetInstance_js_1.default)(params === null || params === void 0 ? void 0 : params.selector, deps);
10
10
  (0, react_1.useEffect)(() => {
11
11
  if (!instance) {
12
12
  return;
@@ -18,6 +18,6 @@ function useWidgetInstanceNotifications(params) {
18
18
  ...params === null || params === void 0 ? void 0 : params.notifications,
19
19
  };
20
20
  }, [params === null || params === void 0 ? void 0 : params.notifications, instance]);
21
+ return instance;
21
22
  }
22
- exports.useWidgetInstanceNotifications = useWidgetInstanceNotifications;
23
23
  exports.default = useWidgetInstanceNotifications;
@@ -1,5 +1,6 @@
1
1
  export function useWidgetInstanceNotifications(params?: {
2
+ selector?: string;
2
3
  notifications?: Record<string, WidgetNotification> | null;
3
- }): void;
4
+ }, deps?: any[]): import("./useWidgetInstance.js").ChatBotKitWidgetInstance | null;
4
5
  export default useWidgetInstanceNotifications;
5
- export type WidgetNotification = import('./useWidgetInstance.cjs').WidgetNotification;
6
+ export type WidgetNotification = import("./useWidgetInstance.js").WidgetNotification;
@@ -1,9 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isAsyncGenerator = void 0;
3
+ exports.isAsyncGenerator = isAsyncGenerator;
4
4
  function isAsyncGenerator(value) {
5
5
  return (typeof value === 'object' &&
6
6
  value !== null &&
7
7
  typeof value[Symbol.asyncIterator] === 'function');
8
8
  }
9
- exports.isAsyncGenerator = isAsyncGenerator;
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cloneAndExtend = void 0;
3
+ exports.cloneAndExtend = cloneAndExtend;
4
4
  function cloneAndExtend(object, extension) {
5
5
  return Object.assign(Object.assign(Object.create(Object.getPrototypeOf(object)), object), extension);
6
6
  }
7
- exports.cloneAndExtend = cloneAndExtend;
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.consume = exports.stream = exports.StreamError = void 0;
3
+ exports.StreamError = void 0;
4
+ exports.stream = stream;
5
+ exports.consume = consume;
4
6
  class StreamError extends Error {
5
7
  constructor(message, code) {
6
8
  super(message);
@@ -39,14 +41,17 @@ function stream(source, options) {
39
41
  return result;
40
42
  });
41
43
  }
42
- exports.stream = stream;
43
44
  function consumeIt(source) {
44
45
  return {
45
46
  [Symbol.asyncIterator]: function () {
46
47
  return {
47
48
  current: source,
48
49
  async next() {
49
- const { iteratorResult, next, error } = await this.current;
50
+ const result = await this.current;
51
+ if (!result || typeof result !== 'object') {
52
+ throw new StreamError('Invalid stream result', 'INVALID_STREAM_RESULT');
53
+ }
54
+ const { iteratorResult, next, error } = result;
50
55
  if (error) {
51
56
  if (typeof error === 'object') {
52
57
  throw new StreamError(error.message, error.code);
@@ -73,4 +78,3 @@ async function* consume(source, options) {
73
78
  await options.onFinish();
74
79
  }
75
80
  }
76
- exports.consume = consume;