@yext/chat-ui-react 0.7.0-alpha.38.4 → 0.7.0-alpha.38.6

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 (136) hide show
  1. package/THIRD-PARTY-NOTICES +9 -9
  2. package/lib/commonjs/package.json.js +1 -1
  3. package/lib/commonjs/src/components/ChatHeader.d.ts +2 -2
  4. package/lib/commonjs/src/components/ChatHeader.d.ts.map +1 -1
  5. package/lib/commonjs/src/components/ChatHeader.js +12 -6
  6. package/lib/commonjs/src/components/ChatHeader.js.map +1 -1
  7. package/lib/commonjs/src/components/ChatInput.d.ts +2 -2
  8. package/lib/commonjs/src/components/ChatInput.d.ts.map +1 -1
  9. package/lib/commonjs/src/components/ChatInput.js +10 -8
  10. package/lib/commonjs/src/components/ChatInput.js.map +1 -1
  11. package/lib/commonjs/src/components/ChatPanel.d.ts +2 -2
  12. package/lib/commonjs/src/components/ChatPanel.d.ts.map +1 -1
  13. package/lib/commonjs/src/components/ChatPanel.js +18 -7
  14. package/lib/commonjs/src/components/ChatPanel.js.map +1 -1
  15. package/lib/commonjs/src/components/ChatPopUp.d.ts +2 -2
  16. package/lib/commonjs/src/components/ChatPopUp.d.ts.map +1 -1
  17. package/lib/commonjs/src/components/ChatPopUp.js +14 -7
  18. package/lib/commonjs/src/components/ChatPopUp.js.map +1 -1
  19. package/lib/commonjs/src/components/FeedbackButtons.d.ts +2 -1
  20. package/lib/commonjs/src/components/FeedbackButtons.d.ts.map +1 -1
  21. package/lib/commonjs/src/components/FeedbackButtons.js +11 -6
  22. package/lib/commonjs/src/components/FeedbackButtons.js.map +1 -1
  23. package/lib/commonjs/src/components/LoadingDots.d.ts +2 -1
  24. package/lib/commonjs/src/components/LoadingDots.d.ts.map +1 -1
  25. package/lib/commonjs/src/components/LoadingDots.js +9 -2
  26. package/lib/commonjs/src/components/LoadingDots.js.map +1 -1
  27. package/lib/commonjs/src/components/Markdown.d.ts +2 -1
  28. package/lib/commonjs/src/components/Markdown.d.ts.map +1 -1
  29. package/lib/commonjs/src/components/Markdown.js +5 -5
  30. package/lib/commonjs/src/components/Markdown.js.map +1 -1
  31. package/lib/commonjs/src/components/MessageBubble.d.ts +2 -1
  32. package/lib/commonjs/src/components/MessageBubble.d.ts.map +1 -1
  33. package/lib/commonjs/src/components/MessageBubble.js +11 -2
  34. package/lib/commonjs/src/components/MessageBubble.js.map +1 -1
  35. package/lib/commonjs/src/hooks/useComposedCssClasses.js +2 -2
  36. package/lib/commonjs/src/hooks/useDefaultHandleApiError.js +2 -2
  37. package/lib/commonjs/src/hooks/useReportAnalyticsEvent.js +2 -2
  38. package/lib/commonjs/src/icons/Arrow.d.ts.map +1 -1
  39. package/lib/commonjs/src/icons/Arrow.js +8 -2
  40. package/lib/commonjs/src/icons/Arrow.js.map +1 -1
  41. package/lib/commonjs/src/icons/Chat.d.ts.map +1 -1
  42. package/lib/commonjs/src/icons/Chat.js +12 -2
  43. package/lib/commonjs/src/icons/Chat.js.map +1 -1
  44. package/lib/commonjs/src/icons/Cross.d.ts.map +1 -1
  45. package/lib/commonjs/src/icons/Cross.js +8 -2
  46. package/lib/commonjs/src/icons/Cross.js.map +1 -1
  47. package/lib/commonjs/src/icons/DualSync.d.ts.map +1 -1
  48. package/lib/commonjs/src/icons/DualSync.js +8 -2
  49. package/lib/commonjs/src/icons/DualSync.js.map +1 -1
  50. package/lib/commonjs/src/icons/ThumbsDown.d.ts.map +1 -1
  51. package/lib/commonjs/src/icons/ThumbsDown.js +7 -2
  52. package/lib/commonjs/src/icons/ThumbsDown.js.map +1 -1
  53. package/lib/commonjs/src/icons/ThumbsDownFill.d.ts.map +1 -1
  54. package/lib/commonjs/src/icons/ThumbsDownFill.js +7 -2
  55. package/lib/commonjs/src/icons/ThumbsDownFill.js.map +1 -1
  56. package/lib/commonjs/src/icons/ThumbsUp.d.ts.map +1 -1
  57. package/lib/commonjs/src/icons/ThumbsUp.js +7 -2
  58. package/lib/commonjs/src/icons/ThumbsUp.js.map +1 -1
  59. package/lib/commonjs/src/icons/ThumbsUpFill.d.ts.map +1 -1
  60. package/lib/commonjs/src/icons/ThumbsUpFill.js +7 -2
  61. package/lib/commonjs/src/icons/ThumbsUpFill.js.map +1 -1
  62. package/lib/esm/index.d.ts +6 -8
  63. package/lib/esm/package.json.mjs +1 -1
  64. package/lib/esm/src/components/ChatHeader.d.ts +2 -2
  65. package/lib/esm/src/components/ChatHeader.d.ts.map +1 -1
  66. package/lib/esm/src/components/ChatHeader.mjs +5 -3
  67. package/lib/esm/src/components/ChatHeader.mjs.map +1 -1
  68. package/lib/esm/src/components/ChatInput.d.ts +2 -2
  69. package/lib/esm/src/components/ChatInput.d.ts.map +1 -1
  70. package/lib/esm/src/components/ChatInput.mjs +5 -4
  71. package/lib/esm/src/components/ChatInput.mjs.map +1 -1
  72. package/lib/esm/src/components/ChatPanel.d.ts +2 -2
  73. package/lib/esm/src/components/ChatPanel.d.ts.map +1 -1
  74. package/lib/esm/src/components/ChatPanel.mjs +10 -3
  75. package/lib/esm/src/components/ChatPanel.mjs.map +1 -1
  76. package/lib/esm/src/components/ChatPopUp.d.ts +2 -2
  77. package/lib/esm/src/components/ChatPopUp.d.ts.map +1 -1
  78. package/lib/esm/src/components/ChatPopUp.mjs +6 -3
  79. package/lib/esm/src/components/ChatPopUp.mjs.map +1 -1
  80. package/lib/esm/src/components/FeedbackButtons.d.ts +2 -1
  81. package/lib/esm/src/components/FeedbackButtons.d.ts.map +1 -1
  82. package/lib/esm/src/components/FeedbackButtons.mjs +4 -3
  83. package/lib/esm/src/components/FeedbackButtons.mjs.map +1 -1
  84. package/lib/esm/src/components/LoadingDots.d.ts +2 -1
  85. package/lib/esm/src/components/LoadingDots.d.ts.map +1 -1
  86. package/lib/esm/src/components/LoadingDots.mjs +5 -2
  87. package/lib/esm/src/components/LoadingDots.mjs.map +1 -1
  88. package/lib/esm/src/components/Markdown.d.ts +2 -1
  89. package/lib/esm/src/components/Markdown.d.ts.map +1 -1
  90. package/lib/esm/src/components/Markdown.mjs +3 -4
  91. package/lib/esm/src/components/Markdown.mjs.map +1 -1
  92. package/lib/esm/src/components/MessageBubble.d.ts +2 -1
  93. package/lib/esm/src/components/MessageBubble.d.ts.map +1 -1
  94. package/lib/esm/src/components/MessageBubble.mjs +7 -2
  95. package/lib/esm/src/components/MessageBubble.mjs.map +1 -1
  96. package/lib/esm/src/icons/Arrow.d.ts.map +1 -1
  97. package/lib/esm/src/icons/Arrow.mjs +4 -2
  98. package/lib/esm/src/icons/Arrow.mjs.map +1 -1
  99. package/lib/esm/src/icons/Chat.d.ts.map +1 -1
  100. package/lib/esm/src/icons/Chat.mjs +8 -2
  101. package/lib/esm/src/icons/Chat.mjs.map +1 -1
  102. package/lib/esm/src/icons/Cross.d.ts.map +1 -1
  103. package/lib/esm/src/icons/Cross.mjs +4 -2
  104. package/lib/esm/src/icons/Cross.mjs.map +1 -1
  105. package/lib/esm/src/icons/DualSync.d.ts.map +1 -1
  106. package/lib/esm/src/icons/DualSync.mjs +4 -2
  107. package/lib/esm/src/icons/DualSync.mjs.map +1 -1
  108. package/lib/esm/src/icons/ThumbsDown.d.ts.map +1 -1
  109. package/lib/esm/src/icons/ThumbsDown.mjs +3 -2
  110. package/lib/esm/src/icons/ThumbsDown.mjs.map +1 -1
  111. package/lib/esm/src/icons/ThumbsDownFill.d.ts.map +1 -1
  112. package/lib/esm/src/icons/ThumbsDownFill.mjs +3 -2
  113. package/lib/esm/src/icons/ThumbsDownFill.mjs.map +1 -1
  114. package/lib/esm/src/icons/ThumbsUp.d.ts.map +1 -1
  115. package/lib/esm/src/icons/ThumbsUp.mjs +3 -2
  116. package/lib/esm/src/icons/ThumbsUp.mjs.map +1 -1
  117. package/lib/esm/src/icons/ThumbsUpFill.d.ts.map +1 -1
  118. package/lib/esm/src/icons/ThumbsUpFill.mjs +3 -2
  119. package/lib/esm/src/icons/ThumbsUpFill.mjs.map +1 -1
  120. package/package.json +3 -3
  121. package/src/components/ChatHeader.tsx +1 -1
  122. package/src/components/ChatInput.tsx +1 -1
  123. package/src/components/ChatPanel.tsx +1 -1
  124. package/src/components/ChatPopUp.tsx +1 -1
  125. package/src/components/FeedbackButtons.tsx +1 -1
  126. package/src/components/LoadingDots.tsx +1 -0
  127. package/src/components/Markdown.tsx +1 -1
  128. package/src/components/MessageBubble.tsx +1 -0
  129. package/src/icons/Arrow.tsx +2 -0
  130. package/src/icons/Chat.tsx +2 -0
  131. package/src/icons/Cross.tsx +2 -0
  132. package/src/icons/DualSync.tsx +2 -0
  133. package/src/icons/ThumbsDown.tsx +2 -0
  134. package/src/icons/ThumbsDownFill.tsx +2 -0
  135. package/src/icons/ThumbsUp.tsx +2 -0
  136. package/src/icons/ThumbsUpFill.tsx +2 -0
@@ -132,7 +132,7 @@ MIT License
132
132
 
133
133
  The following npm package may be included in this product:
134
134
 
135
- - @yext/analytics@0.6.2
135
+ - @yext/analytics@0.6.4
136
136
 
137
137
  This package contains the following license and notice below:
138
138
 
@@ -173,9 +173,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
173
173
 
174
174
  The following npm packages may be included in this product:
175
175
 
176
- - @yext/chat-core@0.5.3
177
- - @yext/chat-headless-react@0.5.6
178
- - @yext/chat-headless@0.5.6
176
+ - @yext/chat-core@0.7.0-alpha.23
177
+ - @yext/chat-headless-react@0.6.0-alpha.38.3
178
+ - @yext/chat-headless@0.7.0-alpha.38.2
179
179
 
180
180
  These packages each contain the following license and notice below:
181
181
 
@@ -830,7 +830,7 @@ THE SOFTWARE.
830
830
 
831
831
  The following npm package may be included in this product:
832
832
 
833
- - layerr@2.0.0
833
+ - layerr@2.0.1
834
834
 
835
835
  This package contains the following license and notice below:
836
836
 
@@ -1299,8 +1299,8 @@ SOFTWARE.
1299
1299
 
1300
1300
  The following npm packages may be included in this product:
1301
1301
 
1302
- - react-redux@8.1.1
1303
- - redux-thunk@2.4.2
1302
+ - react-redux@8.1.2
1303
+ - redux@4.2.1
1304
1304
 
1305
1305
  These packages each contain the following license and notice below:
1306
1306
 
@@ -1359,7 +1359,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1359
1359
 
1360
1360
  The following npm package may be included in this product:
1361
1361
 
1362
- - redux@4.2.1
1362
+ - redux-thunk@2.4.2
1363
1363
 
1364
1364
  This package contains the following license and notice below:
1365
1365
 
@@ -1786,7 +1786,7 @@ THE SOFTWARE.
1786
1786
 
1787
1787
  The following npm package may be included in this product:
1788
1788
 
1789
- - ulidx@2.0.0
1789
+ - ulidx@2.1.0
1790
1790
 
1791
1791
  This package contains the following license and notice below:
1792
1792
 
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.7.0-alpha.38.4";
3
+ var version = "0.7.0-alpha.38.6";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.js.map
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from "react";
2
2
  /**
3
3
  * The CSS class interface for the {@link ChatHeader} component.
4
4
  *
@@ -49,5 +49,5 @@ export interface ChatHeaderProps {
49
49
  *
50
50
  * @param props - {@link ChatHeaderProps}
51
51
  */
52
- export declare function ChatHeader({ title, showRestartButton, restartButtonIcon, showCloseButton, closeButtonIcon, onClose, customCssClasses, }: ChatHeaderProps): import("react/jsx-runtime").JSX.Element;
52
+ export declare function ChatHeader({ title, showRestartButton, restartButtonIcon, showCloseButton, closeButtonIcon, onClose, customCssClasses, }: ChatHeaderProps): React.JSX.Element;
53
53
  //# sourceMappingURL=ChatHeader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChatHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/ChatHeader.tsx"],"names":[],"mappings":";AAQA;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAcD;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,2CAA2C;IAC3C,iBAAiB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAChC,yCAAyC;IACzC,eAAe,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC9B,0DAA0D;IAC1D,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;CACzC;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,OAAO,EACP,gBAAgB,GACjB,EAAE,eAAe,2CAgDjB"}
1
+ {"version":3,"file":"ChatHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/ChatHeader.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAK7D;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAcD;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,2CAA2C;IAC3C,iBAAiB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAChC,yCAAyC;IACzC,eAAe,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC9B,0DAA0D;IAC1D,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;CACzC;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,OAAO,EACP,gBAAgB,GACjB,EAAE,eAAe,qBAgDjB"}
@@ -1,14 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var jsxRuntime = require('react/jsx-runtime.js');
4
3
  var chatHeadlessReact = require('@yext/chat-headless-react');
5
4
  var DualSync = require('../icons/DualSync.js');
6
5
  var useComposedCssClasses = require('../hooks/useComposedCssClasses.js');
7
- var react = require('react');
6
+ var React = require('react');
8
7
  var tailwindMerge = require('tailwind-merge');
9
8
  var Cross = require('../icons/Cross.js');
10
9
  var withStylelessCssClasses = require('../utils/withStylelessCssClasses.js');
11
10
 
11
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
+
13
+ var React__default = /*#__PURE__*/_interopDefault(React);
14
+
12
15
  const builtInCssClasses = withStylelessCssClasses.withStylelessCssClasses("Header", {
13
16
  container: "w-full pl-4 pr-3 py-3 flex justify-between bg-gradient-to-tr from-blue-600 to-blue-800",
14
17
  title: "text-white text-xl font-medium truncate pr-1",
@@ -28,10 +31,10 @@ const builtInCssClasses = withStylelessCssClasses.withStylelessCssClasses("Heade
28
31
  function ChatHeader({ title, showRestartButton, restartButtonIcon, showCloseButton, closeButtonIcon, onClose, customCssClasses, }) {
29
32
  const chat = chatHeadlessReact.useChatActions();
30
33
  const cssClasses = useComposedCssClasses.useComposedCssClasses(builtInCssClasses, customCssClasses);
31
- const [isSpinning, setIsSpinning] = react.useState(false);
34
+ const [isSpinning, setIsSpinning] = React.useState(false);
32
35
  const restartButtonCssClasses = tailwindMerge.twMerge(cssClasses.restartButton, isSpinning ? "animate-[spin_0.3s_linear]" : "hover:scale-110");
33
- const clearTimerRef = react.useRef();
34
- const onRestart = react.useCallback(async () => {
36
+ const clearTimerRef = React.useRef();
37
+ const onRestart = React.useCallback(async () => {
35
38
  clearTimeout(clearTimerRef.current);
36
39
  setIsSpinning(true);
37
40
  clearTimerRef.current = setTimeout(() => {
@@ -39,7 +42,10 @@ function ChatHeader({ title, showRestartButton, restartButtonIcon, showCloseButt
39
42
  }, 1000);
40
43
  chat.restartConversation();
41
44
  }, [chat]);
42
- return (jsxRuntime.jsxs("div", { className: cssClasses.container, children: [jsxRuntime.jsx("h1", { className: cssClasses.title, children: title }), showRestartButton && (jsxRuntime.jsx("button", { "aria-label": "Restart Conversation", onClick: onRestart, className: restartButtonCssClasses, children: restartButtonIcon ?? (jsxRuntime.jsx(DualSync.DualSyncIcon, { className: cssClasses.restartButtonIcon })) })), showCloseButton && (jsxRuntime.jsx("button", { "aria-label": "Close Chat", onClick: onClose, className: cssClasses.closeButton, children: closeButtonIcon ?? (jsxRuntime.jsx(Cross.CrossIcon, { className: cssClasses.closeButtonIcon })) }))] }));
45
+ return (React__default.default.createElement("div", { className: cssClasses.container },
46
+ React__default.default.createElement("h1", { className: cssClasses.title }, title),
47
+ showRestartButton && (React__default.default.createElement("button", { "aria-label": "Restart Conversation", onClick: onRestart, className: restartButtonCssClasses }, restartButtonIcon ?? (React__default.default.createElement(DualSync.DualSyncIcon, { className: cssClasses.restartButtonIcon })))),
48
+ showCloseButton && (React__default.default.createElement("button", { "aria-label": "Close Chat", onClick: onClose, className: cssClasses.closeButton }, closeButtonIcon ?? (React__default.default.createElement(Cross.CrossIcon, { className: cssClasses.closeButtonIcon }))))));
43
49
  }
44
50
 
45
51
  exports.ChatHeader = ChatHeader;
@@ -1 +1 @@
1
- {"version":3,"file":"ChatHeader.js","sources":["../../../../src/components/ChatHeader.tsx"],"sourcesContent":["import { useChatActions } from \"@yext/chat-headless-react\";\nimport { DualSyncIcon } from \"../icons/DualSync\";\nimport { useComposedCssClasses } from \"../hooks/useComposedCssClasses\";\nimport { useCallback, useRef, useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { CrossIcon } from \"../icons/Cross\";\nimport { withStylelessCssClasses } from \"../utils/withStylelessCssClasses\";\n\n/**\n * The CSS class interface for the {@link ChatHeader} component.\n *\n * @public\n */\nexport interface ChatHeaderCssClasses {\n container?: string;\n title?: string;\n restartButton?: string;\n restartButtonIcon?: string;\n closeButton?: string;\n closeButtonIcon?: string;\n}\n\nconst builtInCssClasses: Readonly<ChatHeaderCssClasses> =\n withStylelessCssClasses(\"Header\", {\n container:\n \"w-full pl-4 pr-3 py-3 flex justify-between bg-gradient-to-tr from-blue-600 to-blue-800\",\n title: \"text-white text-xl font-medium truncate pr-1\",\n restartButton: \"w-8 h-8 ml-auto shrink-0 flex justify-center items-center\",\n restartButtonIcon: \"text-white stroke-[0.2] w-[26px] h-[26px]\",\n closeButton:\n \"w-8 h-8 hover:scale-110 shrink-0 flex justify-center items-center\",\n closeButtonIcon: \"text-white w-[26px] h-[26px]\",\n });\n\n/**\n * The props for the {@link ChatHeader} component.\n *\n * @public\n */\nexport interface ChatHeaderProps {\n /**\n * The headers's title text, essentially how the chat window identifies itself to the user.\n */\n title: string;\n /**\n * Displays a restart button which allows the user to restart the conversation.\n * Defaults to false.\n */\n showRestartButton?: boolean;\n /**\n * Displays a close button which will invoke {@link ChatHeaderProps.onClose} on click.\n * Default to false.\n */\n showCloseButton?: boolean;\n /** A function which is called when the close button is clicked. */\n onClose?: () => void;\n /** Custom icon for for restart button. */\n restartButtonIcon?: JSX.Element;\n /** Custom icon for for close button. */\n closeButtonIcon?: JSX.Element;\n /** CSS classes for customizing the component styling. */\n customCssClasses?: ChatHeaderCssClasses;\n}\n\n/**\n * A component that renders the header of a chat bot panel,\n * including the title and a button to reset the conversation.\n *\n * @public\n *\n * @param props - {@link ChatHeaderProps}\n */\nexport function ChatHeader({\n title,\n showRestartButton,\n restartButtonIcon,\n showCloseButton,\n closeButtonIcon,\n onClose,\n customCssClasses,\n}: ChatHeaderProps) {\n const chat = useChatActions();\n\n const cssClasses = useComposedCssClasses(builtInCssClasses, customCssClasses);\n\n const [isSpinning, setIsSpinning] = useState(false);\n const restartButtonCssClasses = twMerge(\n cssClasses.restartButton,\n isSpinning ? \"animate-[spin_0.3s_linear]\" : \"hover:scale-110\"\n );\n\n const clearTimerRef = useRef<ReturnType<typeof setTimeout>>();\n const onRestart = useCallback(async () => {\n clearTimeout(clearTimerRef.current);\n setIsSpinning(true);\n clearTimerRef.current = setTimeout(() => {\n setIsSpinning(false);\n }, 1000);\n chat.restartConversation();\n }, [chat]);\n\n return (\n <div className={cssClasses.container}>\n <h1 className={cssClasses.title}>{title}</h1>\n {showRestartButton && (\n <button\n aria-label=\"Restart Conversation\"\n onClick={onRestart}\n className={restartButtonCssClasses}\n >\n {restartButtonIcon ?? (\n <DualSyncIcon className={cssClasses.restartButtonIcon} />\n )}\n </button>\n )}\n {showCloseButton && (\n <button\n aria-label=\"Close Chat\"\n onClick={onClose}\n className={cssClasses.closeButton}\n >\n {closeButtonIcon ?? (\n <CrossIcon className={cssClasses.closeButtonIcon} />\n )}\n </button>\n )}\n </div>\n );\n}\n"],"names":["withStylelessCssClasses","useChatActions","useComposedCssClasses","useState","twMerge","useRef","useCallback","_jsxs","_jsx","DualSyncIcon","CrossIcon"],"mappings":";;;;;;;;;;;AAsBA,MAAM,iBAAiB,GACrBA,+CAAuB,CAAC,QAAQ,EAAE;AAChC,IAAA,SAAS,EACP,wFAAwF;AAC1F,IAAA,KAAK,EAAE,8CAA8C;AACrD,IAAA,aAAa,EAAE,2DAA2D;AAC1E,IAAA,iBAAiB,EAAE,2CAA2C;AAC9D,IAAA,WAAW,EACT,mEAAmE;AACrE,IAAA,eAAe,EAAE,8BAA8B;AAChD,CAAA,CAAC,CAAC;AAgCL;;;;;;;AAOG;SACa,UAAU,CAAC,EACzB,KAAK,EACL,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,OAAO,EACP,gBAAgB,GACA,EAAA;AAChB,IAAA,MAAM,IAAI,GAAGC,gCAAc,EAAE,CAAC;IAE9B,MAAM,UAAU,GAAGC,2CAAqB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;IAE9E,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGC,cAAQ,CAAC,KAAK,CAAC,CAAC;AACpD,IAAA,MAAM,uBAAuB,GAAGC,qBAAO,CACrC,UAAU,CAAC,aAAa,EACxB,UAAU,GAAG,4BAA4B,GAAG,iBAAiB,CAC9D,CAAC;AAEF,IAAA,MAAM,aAAa,GAAGC,YAAM,EAAiC,CAAC;AAC9D,IAAA,MAAM,SAAS,GAAGC,iBAAW,CAAC,YAAW;AACvC,QAAA,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACpC,aAAa,CAAC,IAAI,CAAC,CAAC;AACpB,QAAA,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC,MAAK;YACtC,aAAa,CAAC,KAAK,CAAC,CAAC;SACtB,EAAE,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC7B,KAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAEX,IAAA,QACEC,eAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,UAAU,CAAC,SAAS,EAAA,QAAA,EAAA,CAClCC,cAAI,CAAA,IAAA,EAAA,EAAA,SAAS,EAAE,UAAU,CAAC,KAAK,EAAG,QAAA,EAAA,KAAK,GAAM,EAC5C,iBAAiB,KAChBA,yCACa,sBAAsB,EACjC,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,uBAAuB,YAEjC,iBAAiB,KAChBA,cAAC,CAAAC,qBAAY,IAAC,SAAS,EAAE,UAAU,CAAC,iBAAiB,EAAI,CAAA,CAC1D,EACM,CAAA,CACV,EACA,eAAe,KACdD,cAAA,CAAA,QAAA,EAAA,EAAA,YAAA,EACa,YAAY,EACvB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,UAAU,CAAC,WAAW,YAEhC,eAAe,KACdA,cAAC,CAAAE,eAAS,IAAC,SAAS,EAAE,UAAU,CAAC,eAAe,EAAI,CAAA,CACrD,GACM,CACV,CAAA,EAAA,CACG,EACN;AACJ;;;;"}
1
+ {"version":3,"file":"ChatHeader.js","sources":["../../../../src/components/ChatHeader.tsx"],"sourcesContent":["import { useChatActions } from \"@yext/chat-headless-react\";\nimport { DualSyncIcon } from \"../icons/DualSync\";\nimport { useComposedCssClasses } from \"../hooks/useComposedCssClasses\";\nimport React, { useCallback, useRef, useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { CrossIcon } from \"../icons/Cross\";\nimport { withStylelessCssClasses } from \"../utils/withStylelessCssClasses\";\n\n/**\n * The CSS class interface for the {@link ChatHeader} component.\n *\n * @public\n */\nexport interface ChatHeaderCssClasses {\n container?: string;\n title?: string;\n restartButton?: string;\n restartButtonIcon?: string;\n closeButton?: string;\n closeButtonIcon?: string;\n}\n\nconst builtInCssClasses: Readonly<ChatHeaderCssClasses> =\n withStylelessCssClasses(\"Header\", {\n container:\n \"w-full pl-4 pr-3 py-3 flex justify-between bg-gradient-to-tr from-blue-600 to-blue-800\",\n title: \"text-white text-xl font-medium truncate pr-1\",\n restartButton: \"w-8 h-8 ml-auto shrink-0 flex justify-center items-center\",\n restartButtonIcon: \"text-white stroke-[0.2] w-[26px] h-[26px]\",\n closeButton:\n \"w-8 h-8 hover:scale-110 shrink-0 flex justify-center items-center\",\n closeButtonIcon: \"text-white w-[26px] h-[26px]\",\n });\n\n/**\n * The props for the {@link ChatHeader} component.\n *\n * @public\n */\nexport interface ChatHeaderProps {\n /**\n * The headers's title text, essentially how the chat window identifies itself to the user.\n */\n title: string;\n /**\n * Displays a restart button which allows the user to restart the conversation.\n * Defaults to false.\n */\n showRestartButton?: boolean;\n /**\n * Displays a close button which will invoke {@link ChatHeaderProps.onClose} on click.\n * Default to false.\n */\n showCloseButton?: boolean;\n /** A function which is called when the close button is clicked. */\n onClose?: () => void;\n /** Custom icon for for restart button. */\n restartButtonIcon?: JSX.Element;\n /** Custom icon for for close button. */\n closeButtonIcon?: JSX.Element;\n /** CSS classes for customizing the component styling. */\n customCssClasses?: ChatHeaderCssClasses;\n}\n\n/**\n * A component that renders the header of a chat bot panel,\n * including the title and a button to reset the conversation.\n *\n * @public\n *\n * @param props - {@link ChatHeaderProps}\n */\nexport function ChatHeader({\n title,\n showRestartButton,\n restartButtonIcon,\n showCloseButton,\n closeButtonIcon,\n onClose,\n customCssClasses,\n}: ChatHeaderProps) {\n const chat = useChatActions();\n\n const cssClasses = useComposedCssClasses(builtInCssClasses, customCssClasses);\n\n const [isSpinning, setIsSpinning] = useState(false);\n const restartButtonCssClasses = twMerge(\n cssClasses.restartButton,\n isSpinning ? \"animate-[spin_0.3s_linear]\" : \"hover:scale-110\"\n );\n\n const clearTimerRef = useRef<ReturnType<typeof setTimeout>>();\n const onRestart = useCallback(async () => {\n clearTimeout(clearTimerRef.current);\n setIsSpinning(true);\n clearTimerRef.current = setTimeout(() => {\n setIsSpinning(false);\n }, 1000);\n chat.restartConversation();\n }, [chat]);\n\n return (\n <div className={cssClasses.container}>\n <h1 className={cssClasses.title}>{title}</h1>\n {showRestartButton && (\n <button\n aria-label=\"Restart Conversation\"\n onClick={onRestart}\n className={restartButtonCssClasses}\n >\n {restartButtonIcon ?? (\n <DualSyncIcon className={cssClasses.restartButtonIcon} />\n )}\n </button>\n )}\n {showCloseButton && (\n <button\n aria-label=\"Close Chat\"\n onClick={onClose}\n className={cssClasses.closeButton}\n >\n {closeButtonIcon ?? (\n <CrossIcon className={cssClasses.closeButtonIcon} />\n )}\n </button>\n )}\n </div>\n );\n}\n"],"names":["withStylelessCssClasses","useChatActions","useComposedCssClasses","useState","twMerge","useRef","useCallback","React","DualSyncIcon","CrossIcon"],"mappings":";;;;;;;;;;;;;;AAsBA,MAAM,iBAAiB,GACrBA,+CAAuB,CAAC,QAAQ,EAAE;AAChC,IAAA,SAAS,EACP,wFAAwF;AAC1F,IAAA,KAAK,EAAE,8CAA8C;AACrD,IAAA,aAAa,EAAE,2DAA2D;AAC1E,IAAA,iBAAiB,EAAE,2CAA2C;AAC9D,IAAA,WAAW,EACT,mEAAmE;AACrE,IAAA,eAAe,EAAE,8BAA8B;AAChD,CAAA,CAAC,CAAC;AAgCL;;;;;;;AAOG;SACa,UAAU,CAAC,EACzB,KAAK,EACL,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,OAAO,EACP,gBAAgB,GACA,EAAA;AAChB,IAAA,MAAM,IAAI,GAAGC,gCAAc,EAAE,CAAC;IAE9B,MAAM,UAAU,GAAGC,2CAAqB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;IAE9E,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGC,cAAQ,CAAC,KAAK,CAAC,CAAC;AACpD,IAAA,MAAM,uBAAuB,GAAGC,qBAAO,CACrC,UAAU,CAAC,aAAa,EACxB,UAAU,GAAG,4BAA4B,GAAG,iBAAiB,CAC9D,CAAC;AAEF,IAAA,MAAM,aAAa,GAAGC,YAAM,EAAiC,CAAC;AAC9D,IAAA,MAAM,SAAS,GAAGC,iBAAW,CAAC,YAAW;AACvC,QAAA,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACpC,aAAa,CAAC,IAAI,CAAC,CAAC;AACpB,QAAA,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC,MAAK;YACtC,aAAa,CAAC,KAAK,CAAC,CAAC;SACtB,EAAE,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC7B,KAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAEX,IAAA,QACEC,sBAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,UAAU,CAAC,SAAS,EAAA;AAClC,QAAAA,sBAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAE,UAAU,CAAC,KAAK,EAAA,EAAG,KAAK,CAAM;QAC5C,iBAAiB,KAChBA,sBAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,YAAA,EACa,sBAAsB,EACjC,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,uBAAuB,EAAA,EAEjC,iBAAiB,KAChBA,sBAAA,CAAA,aAAA,CAACC,qBAAY,EAAA,EAAC,SAAS,EAAE,UAAU,CAAC,iBAAiB,EAAA,CAAI,CAC1D,CACM,CACV;AACA,QAAA,eAAe,KACdD,sBACa,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,YAAA,EAAA,YAAY,EACvB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,UAAU,CAAC,WAAW,EAEhC,EAAA,eAAe,KACdA,sBAAC,CAAA,aAAA,CAAAE,eAAS,EAAC,EAAA,SAAS,EAAE,UAAU,CAAC,eAAe,EAAA,CAAI,CACrD,CACM,CACV,CACG,EACN;AACJ;;;;"}
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from "react";
2
2
  /**
3
3
  * The CSS class interface for the {@link ChatInput} component.
4
4
  *
@@ -49,5 +49,5 @@ export interface ChatInputProps {
49
49
  *
50
50
  * @param props - {@link ChatInputProps}
51
51
  */
52
- export declare function ChatInput({ placeholder, stream, inputAutoFocus, handleError, sendButtonIcon, customCssClasses, }: ChatInputProps): import("react/jsx-runtime").JSX.Element;
52
+ export declare function ChatInput({ placeholder, stream, inputAutoFocus, handleError, sendButtonIcon, customCssClasses, }: ChatInputProps): React.JSX.Element;
53
53
  //# sourceMappingURL=ChatInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../../../src/components/ChatInput.tsx"],"names":[],"mappings":";AAQA;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAaD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8DAA8D;IAC9D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,uCAAuC;IACvC,cAAc,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC7B,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CACxC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,EACxB,WAAiC,EACjC,MAAc,EACd,cAAsB,EACtB,WAAW,EACX,cAA8B,EAC9B,gBAAgB,GACjB,EAAE,cAAc,2CAyDhB"}
1
+ {"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../../../src/components/ChatInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAQrD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAaD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8DAA8D;IAC9D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,uCAAuC;IACvC,cAAc,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC7B,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CACxC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,EACxB,WAAiC,EACjC,MAAc,EACd,cAAsB,EACtB,WAAW,EACX,cAA8B,EAC9B,gBAAgB,GACjB,EAAE,cAAc,qBAyDhB"}
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var jsxRuntime = require('react/jsx-runtime.js');
4
- var react = require('react');
3
+ var React = require('react');
5
4
  var chatHeadlessReact = require('@yext/chat-headless-react');
6
5
  var Arrow = require('../icons/Arrow.js');
7
6
  var useComposedCssClasses = require('../hooks/useComposedCssClasses.js');
@@ -11,6 +10,7 @@ var withStylelessCssClasses = require('../utils/withStylelessCssClasses.js');
11
10
 
12
11
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
13
12
 
13
+ var React__default = /*#__PURE__*/_interopDefault(React);
14
14
  var TextareaAutosize__default = /*#__PURE__*/_interopDefault(TextareaAutosize);
15
15
 
16
16
  const builtInCssClasses = withStylelessCssClasses.withStylelessCssClasses("Input", {
@@ -29,20 +29,20 @@ const builtInCssClasses = withStylelessCssClasses.withStylelessCssClasses("Input
29
29
  *
30
30
  * @param props - {@link ChatInputProps}
31
31
  */
32
- function ChatInput({ placeholder = "Type a message...", stream = false, inputAutoFocus = false, handleError, sendButtonIcon = jsxRuntime.jsx(Arrow.ArrowIcon, {}), customCssClasses, }) {
32
+ function ChatInput({ placeholder = "Type a message...", stream = false, inputAutoFocus = false, handleError, sendButtonIcon = React__default.default.createElement(Arrow.ArrowIcon, null), customCssClasses, }) {
33
33
  const chat = chatHeadlessReact.useChatActions();
34
- const [input, setInput] = react.useState("");
34
+ const [input, setInput] = React.useState("");
35
35
  const canSendMessage = chatHeadlessReact.useChatState((state) => state.conversation.canSendMessage);
36
36
  const defaultHandleApiError = useDefaultHandleApiError.useDefaultHandleApiError();
37
37
  const cssClasses = useComposedCssClasses.useComposedCssClasses(builtInCssClasses, customCssClasses);
38
- const sendMessage = react.useCallback(async () => {
38
+ const sendMessage = React.useCallback(async () => {
39
39
  const res = stream
40
40
  ? chat.streamNextMessage(input)
41
41
  : chat.getNextMessage(input);
42
42
  setInput("");
43
43
  res.catch((e) => (handleError ? handleError(e) : defaultHandleApiError(e)));
44
44
  }, [chat, input, handleError, defaultHandleApiError, stream]);
45
- const handleKeyDown = react.useCallback((e) => {
45
+ const handleKeyDown = React.useCallback((e) => {
46
46
  if (!e.shiftKey && e.key === "Enter") {
47
47
  e.preventDefault();
48
48
  if (canSendMessage && input.trim().length !== 0) {
@@ -50,10 +50,12 @@ function ChatInput({ placeholder = "Type a message...", stream = false, inputAut
50
50
  }
51
51
  }
52
52
  }, [sendMessage, canSendMessage, input]);
53
- const onInputChange = react.useCallback((e) => {
53
+ const onInputChange = React.useCallback((e) => {
54
54
  setInput(e.target.value);
55
55
  }, []);
56
- return (jsxRuntime.jsxs("div", { className: cssClasses.container, children: [jsxRuntime.jsx(TextareaAutosize__default.default, { autoFocus: inputAutoFocus, onKeyDown: handleKeyDown, value: input, onChange: onInputChange, className: cssClasses.textArea, placeholder: placeholder }), jsxRuntime.jsx("button", { "aria-label": "Send Message", disabled: !canSendMessage || input.trim().length === 0, onClick: sendMessage, className: cssClasses.sendButton, children: sendButtonIcon })] }));
56
+ return (React__default.default.createElement("div", { className: cssClasses.container },
57
+ React__default.default.createElement(TextareaAutosize__default.default, { autoFocus: inputAutoFocus, onKeyDown: handleKeyDown, value: input, onChange: onInputChange, className: cssClasses.textArea, placeholder: placeholder }),
58
+ React__default.default.createElement("button", { "aria-label": "Send Message", disabled: !canSendMessage || input.trim().length === 0, onClick: sendMessage, className: cssClasses.sendButton }, sendButtonIcon)));
57
59
  }
58
60
 
59
61
  exports.ChatInput = ChatInput;
@@ -1 +1 @@
1
- {"version":3,"file":"ChatInput.js","sources":["../../../../src/components/ChatInput.tsx"],"sourcesContent":["import { useCallback, useState } from \"react\";\nimport { useChatActions, useChatState } from \"@yext/chat-headless-react\";\nimport { ArrowIcon } from \"../icons/Arrow\";\nimport { useComposedCssClasses } from \"../hooks\";\nimport TextareaAutosize from \"react-textarea-autosize\";\nimport { useDefaultHandleApiError } from \"../hooks/useDefaultHandleApiError\";\nimport { withStylelessCssClasses } from \"../utils/withStylelessCssClasses\";\n\n/**\n * The CSS class interface for the {@link ChatInput} component.\n *\n * @public\n */\nexport interface ChatInputCssClasses {\n container?: string;\n textArea?: string;\n sendButton?: string;\n}\n\nconst builtInCssClasses: ChatInputCssClasses = withStylelessCssClasses(\n \"Input\",\n {\n container: \"w-full h-fit flex flex-row relative @container\",\n textArea:\n \"w-full p-4 pr-12 border border-slate-300 rounded-3xl resize-none text-[13px] @[480px]:text-base placeholder:text-[13px] placeholder:@[480px]:text-base text-slate-900\",\n sendButton:\n \"rounded-full p-1.5 w-8 h-8 stroke-2 text-white bg-blue-600 disabled:bg-slate-200 hover:bg-blue-800 active:scale-90 transition-all absolute right-4 bottom-2.5 @[480px]:bottom-3.5\",\n }\n);\n\n/**\n * The props for the {@link ChatInput} component.\n *\n * @public\n */\nexport interface ChatInputProps {\n /**\n * The input's placeholder text when no text has been entered by the user.\n * Defaults to \"Type a message...\".\n */\n placeholder?: string;\n /**\n * Enable streaming behavior by making a request to Chat Streaming API.\n * This feature is experimental, and is subject to change.\n * Defaults to false.\n */\n stream?: boolean;\n /** Enable auto focus for the input box. Defaults to false. */\n inputAutoFocus?: boolean;\n /**\n * A function which is called when an error occurs from Chat API while processing the user's message.\n * By default, the error is logged to the console and an error message is added to state.\n */\n handleError?: (e: unknown) => void;\n /** Custom icon for the send button. */\n sendButtonIcon?: JSX.Element;\n /** CSS classes for customizing the component styling. */\n customCssClasses?: ChatInputCssClasses;\n}\n\n/**\n * A component that allows user to input message and send to Chat API.\n *\n * @remarks\n * Pressing \"Enter\" key will send the current message.\n * To add a newline, press \"Shift\" and \"Enter\".\n *\n * @public\n *\n * @param props - {@link ChatInputProps}\n */\nexport function ChatInput({\n placeholder = \"Type a message...\",\n stream = false,\n inputAutoFocus = false,\n handleError,\n sendButtonIcon = <ArrowIcon />,\n customCssClasses,\n}: ChatInputProps) {\n const chat = useChatActions();\n const [input, setInput] = useState(\"\");\n const canSendMessage = useChatState(\n (state) => state.conversation.canSendMessage\n );\n const defaultHandleApiError = useDefaultHandleApiError();\n\n const cssClasses = useComposedCssClasses(builtInCssClasses, customCssClasses);\n\n const sendMessage = useCallback(async () => {\n const res = stream\n ? chat.streamNextMessage(input)\n : chat.getNextMessage(input);\n setInput(\"\");\n res.catch((e) => (handleError ? handleError(e) : defaultHandleApiError(e)));\n }, [chat, input, handleError, defaultHandleApiError, stream]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (!e.shiftKey && e.key === \"Enter\") {\n e.preventDefault();\n if (canSendMessage && input.trim().length !== 0) {\n sendMessage();\n }\n }\n },\n [sendMessage, canSendMessage, input]\n );\n\n const onInputChange = useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setInput(e.target.value);\n },\n []\n );\n\n return (\n <div className={cssClasses.container}>\n <TextareaAutosize\n autoFocus={inputAutoFocus}\n onKeyDown={handleKeyDown}\n value={input}\n onChange={onInputChange}\n className={cssClasses.textArea}\n placeholder={placeholder}\n />\n <button\n aria-label=\"Send Message\"\n disabled={!canSendMessage || input.trim().length === 0}\n onClick={sendMessage}\n className={cssClasses.sendButton}\n >\n {sendButtonIcon}\n </button>\n </div>\n );\n}\n"],"names":["withStylelessCssClasses","_jsx","ArrowIcon","useChatActions","useState","useChatState","useDefaultHandleApiError","useComposedCssClasses","useCallback","_jsxs","TextareaAutosize"],"mappings":";;;;;;;;;;;;;;;AAmBA,MAAM,iBAAiB,GAAwBA,+CAAuB,CACpE,OAAO,EACP;AACE,IAAA,SAAS,EAAE,gDAAgD;AAC3D,IAAA,QAAQ,EACN,uKAAuK;AACzK,IAAA,UAAU,EACR,mLAAmL;AACtL,CAAA,CACF,CAAC;AAgCF;;;;;;;;;;AAUG;AACG,SAAU,SAAS,CAAC,EACxB,WAAW,GAAG,mBAAmB,EACjC,MAAM,GAAG,KAAK,EACd,cAAc,GAAG,KAAK,EACtB,WAAW,EACX,cAAc,GAAGC,cAAA,CAACC,eAAS,EAAA,EAAA,CAAG,EAC9B,gBAAgB,GACD,EAAA;AACf,IAAA,MAAM,IAAI,GAAGC,gCAAc,EAAE,CAAC;IAC9B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAGC,cAAQ,CAAC,EAAE,CAAC,CAAC;AACvC,IAAA,MAAM,cAAc,GAAGC,8BAAY,CACjC,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,CAAC,cAAc,CAC7C,CAAC;AACF,IAAA,MAAM,qBAAqB,GAAGC,iDAAwB,EAAE,CAAC;IAEzD,MAAM,UAAU,GAAGC,2CAAqB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;AAE9E,IAAA,MAAM,WAAW,GAAGC,iBAAW,CAAC,YAAW;QACzC,MAAM,GAAG,GAAG,MAAM;AAChB,cAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC/B,cAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/B,QAAQ,CAAC,EAAE,CAAC,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,KAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC;AAE9D,IAAA,MAAM,aAAa,GAAGA,iBAAW,CAC/B,CAAC,CAA2C,KAAI;QAC9C,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;YACpC,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,cAAc,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/C,gBAAA,WAAW,EAAE,CAAC;AACf,aAAA;AACF,SAAA;KACF,EACD,CAAC,WAAW,EAAE,cAAc,EAAE,KAAK,CAAC,CACrC,CAAC;AAEF,IAAA,MAAM,aAAa,GAAGA,iBAAW,CAC/B,CAAC,CAAyC,KAAI;AAC5C,QAAA,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC1B,EACD,EAAE,CACH,CAAC;AAEF,IAAA,QACEC,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,UAAU,CAAC,SAAS,EAClC,QAAA,EAAA,CAAAR,cAAA,CAACS,iCAAgB,EAAA,EACf,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,UAAU,CAAC,QAAQ,EAC9B,WAAW,EAAE,WAAW,EACxB,CAAA,EACFT,cACa,CAAA,QAAA,EAAA,EAAA,YAAA,EAAA,cAAc,EACzB,QAAQ,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EACtD,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,UAAU,CAAC,UAAU,EAE/B,QAAA,EAAA,cAAc,EACR,CAAA,CAAA,EAAA,CACL,EACN;AACJ;;;;"}
1
+ {"version":3,"file":"ChatInput.js","sources":["../../../../src/components/ChatInput.tsx"],"sourcesContent":["import React, { useCallback, useState } from \"react\";\nimport { useChatActions, useChatState } from \"@yext/chat-headless-react\";\nimport { ArrowIcon } from \"../icons/Arrow\";\nimport { useComposedCssClasses } from \"../hooks\";\nimport TextareaAutosize from \"react-textarea-autosize\";\nimport { useDefaultHandleApiError } from \"../hooks/useDefaultHandleApiError\";\nimport { withStylelessCssClasses } from \"../utils/withStylelessCssClasses\";\n\n/**\n * The CSS class interface for the {@link ChatInput} component.\n *\n * @public\n */\nexport interface ChatInputCssClasses {\n container?: string;\n textArea?: string;\n sendButton?: string;\n}\n\nconst builtInCssClasses: ChatInputCssClasses = withStylelessCssClasses(\n \"Input\",\n {\n container: \"w-full h-fit flex flex-row relative @container\",\n textArea:\n \"w-full p-4 pr-12 border border-slate-300 rounded-3xl resize-none text-[13px] @[480px]:text-base placeholder:text-[13px] placeholder:@[480px]:text-base text-slate-900\",\n sendButton:\n \"rounded-full p-1.5 w-8 h-8 stroke-2 text-white bg-blue-600 disabled:bg-slate-200 hover:bg-blue-800 active:scale-90 transition-all absolute right-4 bottom-2.5 @[480px]:bottom-3.5\",\n }\n);\n\n/**\n * The props for the {@link ChatInput} component.\n *\n * @public\n */\nexport interface ChatInputProps {\n /**\n * The input's placeholder text when no text has been entered by the user.\n * Defaults to \"Type a message...\".\n */\n placeholder?: string;\n /**\n * Enable streaming behavior by making a request to Chat Streaming API.\n * This feature is experimental, and is subject to change.\n * Defaults to false.\n */\n stream?: boolean;\n /** Enable auto focus for the input box. Defaults to false. */\n inputAutoFocus?: boolean;\n /**\n * A function which is called when an error occurs from Chat API while processing the user's message.\n * By default, the error is logged to the console and an error message is added to state.\n */\n handleError?: (e: unknown) => void;\n /** Custom icon for the send button. */\n sendButtonIcon?: JSX.Element;\n /** CSS classes for customizing the component styling. */\n customCssClasses?: ChatInputCssClasses;\n}\n\n/**\n * A component that allows user to input message and send to Chat API.\n *\n * @remarks\n * Pressing \"Enter\" key will send the current message.\n * To add a newline, press \"Shift\" and \"Enter\".\n *\n * @public\n *\n * @param props - {@link ChatInputProps}\n */\nexport function ChatInput({\n placeholder = \"Type a message...\",\n stream = false,\n inputAutoFocus = false,\n handleError,\n sendButtonIcon = <ArrowIcon />,\n customCssClasses,\n}: ChatInputProps) {\n const chat = useChatActions();\n const [input, setInput] = useState(\"\");\n const canSendMessage = useChatState(\n (state) => state.conversation.canSendMessage\n );\n const defaultHandleApiError = useDefaultHandleApiError();\n\n const cssClasses = useComposedCssClasses(builtInCssClasses, customCssClasses);\n\n const sendMessage = useCallback(async () => {\n const res = stream\n ? chat.streamNextMessage(input)\n : chat.getNextMessage(input);\n setInput(\"\");\n res.catch((e) => (handleError ? handleError(e) : defaultHandleApiError(e)));\n }, [chat, input, handleError, defaultHandleApiError, stream]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (!e.shiftKey && e.key === \"Enter\") {\n e.preventDefault();\n if (canSendMessage && input.trim().length !== 0) {\n sendMessage();\n }\n }\n },\n [sendMessage, canSendMessage, input]\n );\n\n const onInputChange = useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setInput(e.target.value);\n },\n []\n );\n\n return (\n <div className={cssClasses.container}>\n <TextareaAutosize\n autoFocus={inputAutoFocus}\n onKeyDown={handleKeyDown}\n value={input}\n onChange={onInputChange}\n className={cssClasses.textArea}\n placeholder={placeholder}\n />\n <button\n aria-label=\"Send Message\"\n disabled={!canSendMessage || input.trim().length === 0}\n onClick={sendMessage}\n className={cssClasses.sendButton}\n >\n {sendButtonIcon}\n </button>\n </div>\n );\n}\n"],"names":["withStylelessCssClasses","React","ArrowIcon","useChatActions","useState","useChatState","useDefaultHandleApiError","useComposedCssClasses","useCallback","TextareaAutosize"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from "react";
2
2
  import { MessageBubbleCssClasses, MessageBubbleProps } from "./MessageBubble";
3
3
  import { ChatInputCssClasses, ChatInputProps } from "./ChatInput";
4
4
  /**
@@ -36,5 +36,5 @@ export interface ChatPanelProps extends Omit<MessageBubbleProps, "customCssClass
36
36
  *
37
37
  * @param props - {@link ChatPanelProps}
38
38
  */
39
- export declare function ChatPanel(props: ChatPanelProps): import("react/jsx-runtime").JSX.Element;
39
+ export declare function ChatPanel(props: ChatPanelProps): React.JSX.Element;
40
40
  //# sourceMappingURL=ChatPanel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../../../src/components/ChatPanel.tsx"],"names":[],"mappings":";AAEA,OAAO,EAEL,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAa,mBAAmB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAO7E;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;CACnD;AAeD;;;;GAIG;AACH,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,SAAS,CAAC,EAC9D,IAAI,CAAC,cAAc,EAAE,kBAAkB,CAAC;IAC1C,kDAAkD;IAClD,MAAM,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACrB;;OAEG;IACH,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CACxC;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2CA6D9C"}
1
+ {"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../../../src/components/ChatPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,EAEL,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAa,mBAAmB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAO7E;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;CACnD;AAeD;;;;GAIG;AACH,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,SAAS,CAAC,EAC9D,IAAI,CAAC,cAAc,EAAE,kBAAkB,CAAC;IAC1C,kDAAkD;IAClD,MAAM,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACrB;;OAEG;IACH,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CACxC;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,qBA6D9C"}
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var jsxRuntime = require('react/jsx-runtime.js');
4
- var react = require('react');
3
+ var React = require('react');
5
4
  var chatHeadlessReact = require('@yext/chat-headless-react');
6
5
  var MessageBubble = require('./MessageBubble.js');
7
6
  var ChatInput = require('./ChatInput.js');
@@ -11,6 +10,10 @@ var useDefaultHandleApiError = require('../hooks/useDefaultHandleApiError.js');
11
10
  var withStylelessCssClasses = require('../utils/withStylelessCssClasses.js');
12
11
  var useReportAnalyticsEvent = require('../hooks/useReportAnalyticsEvent.js');
13
12
 
13
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
14
+
15
+ var React__default = /*#__PURE__*/_interopDefault(React);
16
+
14
17
  const builtInCssClasses = withStylelessCssClasses.withStylelessCssClasses("Panel", {
15
18
  container: "h-full w-full flex flex-col relative shadow-2xl bg-white",
16
19
  messagesScrollContainer: "flex flex-col mt-auto overflow-hidden",
@@ -38,13 +41,13 @@ function ChatPanel(props) {
38
41
  const cssClasses = useComposedCssClasses.useComposedCssClasses(builtInCssClasses, customCssClasses);
39
42
  const defaultHandleApiError = useDefaultHandleApiError.useDefaultHandleApiError();
40
43
  const reportAnalyticsEvent = useReportAnalyticsEvent.useReportAnalyticsEvent();
41
- react.useEffect(() => {
44
+ React.useEffect(() => {
42
45
  reportAnalyticsEvent({
43
46
  action: "CHAT_IMPRESSION",
44
47
  });
45
48
  }, [reportAnalyticsEvent]);
46
49
  // Fetch the first message on load, if there are no existing messages or a request being processed
47
- react.useEffect(() => {
50
+ React.useEffect(() => {
48
51
  if (messages.length !== 0 || !canSendMessage) {
49
52
  return;
50
53
  }
@@ -52,15 +55,23 @@ function ChatPanel(props) {
52
55
  const res = stream ? chat.streamNextMessage() : chat.getNextMessage();
53
56
  res.catch((e) => (handleError ? handleError(e) : defaultHandleApiError(e)));
54
57
  }, [chat, props, messages, defaultHandleApiError, canSendMessage]);
55
- const messagesRef = react.useRef(null);
58
+ const messagesRef = React.useRef(null);
56
59
  // Scroll to the bottom of the chat when the messages change
57
- react.useEffect(() => {
60
+ React.useEffect(() => {
58
61
  messagesRef.current?.scroll({
59
62
  top: messagesRef.current?.scrollHeight,
60
63
  behavior: "smooth",
61
64
  });
62
65
  }, [messages]);
63
- return (jsxRuntime.jsx("div", { className: "yext-chat", children: jsxRuntime.jsxs("div", { className: cssClasses.container, children: [header, jsxRuntime.jsx("div", { className: cssClasses.messagesScrollContainer, children: jsxRuntime.jsxs("div", { ref: messagesRef, className: cssClasses.messagesContainer, children: [messages.map((message, index) => (react.createElement(MessageBubble.MessageBubble, { ...props, customCssClasses: cssClasses.messageBubbleCssClasses, key: index, message: message }))), loading && jsxRuntime.jsx(LoadingDots.LoadingDots, {})] }) }), jsxRuntime.jsx("div", { className: cssClasses.inputContainer, children: jsxRuntime.jsx(ChatInput.ChatInput, { ...props, customCssClasses: cssClasses.inputCssClasses }) })] }) }));
66
+ return (React__default.default.createElement("div", { className: "yext-chat" },
67
+ React__default.default.createElement("div", { className: cssClasses.container },
68
+ header,
69
+ React__default.default.createElement("div", { className: cssClasses.messagesScrollContainer },
70
+ React__default.default.createElement("div", { ref: messagesRef, className: cssClasses.messagesContainer },
71
+ messages.map((message, index) => (React__default.default.createElement(MessageBubble.MessageBubble, { ...props, customCssClasses: cssClasses.messageBubbleCssClasses, key: index, message: message }))),
72
+ loading && React__default.default.createElement(LoadingDots.LoadingDots, null))),
73
+ React__default.default.createElement("div", { className: cssClasses.inputContainer },
74
+ React__default.default.createElement(ChatInput.ChatInput, { ...props, customCssClasses: cssClasses.inputCssClasses })))));
64
75
  }
65
76
 
66
77
  exports.ChatPanel = ChatPanel;
@@ -1 +1 @@
1
- {"version":3,"file":"ChatPanel.js","sources":["../../../../src/components/ChatPanel.tsx"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { useChatState, useChatActions } from \"@yext/chat-headless-react\";\nimport {\n MessageBubble,\n MessageBubbleCssClasses,\n MessageBubbleProps,\n} from \"./MessageBubble\";\nimport { ChatInput, ChatInputCssClasses, ChatInputProps } from \"./ChatInput\";\nimport { LoadingDots } from \"./LoadingDots\";\nimport { useComposedCssClasses } from \"../hooks\";\nimport { useDefaultHandleApiError } from \"../hooks/useDefaultHandleApiError\";\nimport { withStylelessCssClasses } from \"../utils/withStylelessCssClasses\";\nimport { useReportAnalyticsEvent } from \"../hooks/useReportAnalyticsEvent\";\n\n/**\n * The CSS class interface for the {@link ChatPanel} component.\n *\n * @public\n */\nexport interface ChatPanelCssClasses {\n container?: string;\n messagesContainer?: string;\n messagesScrollContainer?: string;\n inputContainer?: string;\n inputCssClasses?: ChatInputCssClasses;\n messageBubbleCssClasses?: MessageBubbleCssClasses;\n}\n\nconst builtInCssClasses: ChatPanelCssClasses = withStylelessCssClasses(\n \"Panel\",\n {\n container: \"h-full w-full flex flex-col relative shadow-2xl bg-white\",\n messagesScrollContainer: \"flex flex-col mt-auto overflow-hidden\",\n messagesContainer: \"flex flex-col gap-y-1 px-4 overflow-auto\",\n inputContainer: \"w-full p-4\",\n messageBubbleCssClasses: {\n topContainer: \"first:mt-4\",\n },\n }\n);\n\n/**\n * The props for the {@link ChatPanel} component.\n *\n * @public\n */\nexport interface ChatPanelProps\n extends Omit<MessageBubbleProps, \"customCssClasses\" | \"message\">,\n Omit<ChatInputProps, \"customCssClasses\"> {\n /** A header to render at the top of the panel. */\n header?: JSX.Element;\n /**\n * CSS classes for customizing the component styling.\n */\n customCssClasses?: ChatPanelCssClasses;\n}\n\n/**\n * A component that renders a full panel for chat bot interactions. This includes\n * the message bubbles for the conversation, input box with send button, and header\n * (if provided).\n *\n * @public\n *\n * @param props - {@link ChatPanelProps}\n */\nexport function ChatPanel(props: ChatPanelProps) {\n const { header, customCssClasses } = props;\n const chat = useChatActions();\n const messages = useChatState((state) => state.conversation.messages);\n const loading = useChatState((state) => state.conversation.isLoading);\n const canSendMessage = useChatState(\n (state) => state.conversation.canSendMessage\n );\n const cssClasses = useComposedCssClasses(builtInCssClasses, customCssClasses);\n const defaultHandleApiError = useDefaultHandleApiError();\n const reportAnalyticsEvent = useReportAnalyticsEvent();\n\n useEffect(() => {\n reportAnalyticsEvent({\n action: \"CHAT_IMPRESSION\",\n });\n }, [reportAnalyticsEvent]);\n\n // Fetch the first message on load, if there are no existing messages or a request being processed\n useEffect(() => {\n if (messages.length !== 0 || !canSendMessage) {\n return;\n }\n const { stream = false, handleError } = props;\n const res = stream ? chat.streamNextMessage() : chat.getNextMessage();\n res.catch((e) => (handleError ? handleError(e) : defaultHandleApiError(e)));\n }, [chat, props, messages, defaultHandleApiError, canSendMessage]);\n\n const messagesRef = useRef<HTMLDivElement>(null);\n\n // Scroll to the bottom of the chat when the messages change\n useEffect(() => {\n messagesRef.current?.scroll({\n top: messagesRef.current?.scrollHeight,\n behavior: \"smooth\",\n });\n }, [messages]);\n\n return (\n <div className=\"yext-chat\">\n <div className={cssClasses.container}>\n {header}\n <div className={cssClasses.messagesScrollContainer}>\n <div ref={messagesRef} className={cssClasses.messagesContainer}>\n {messages.map((message, index) => (\n <MessageBubble\n {...props}\n customCssClasses={cssClasses.messageBubbleCssClasses}\n key={index}\n message={message}\n />\n ))}\n {loading && <LoadingDots />}\n </div>\n </div>\n <div className={cssClasses.inputContainer}>\n <ChatInput {...props} customCssClasses={cssClasses.inputCssClasses} />\n </div>\n </div>\n </div>\n );\n}\n"],"names":["withStylelessCssClasses","useChatActions","useChatState","useComposedCssClasses","useDefaultHandleApiError","useReportAnalyticsEvent","useEffect","useRef","_jsx","_jsxs","_createElement","MessageBubble","LoadingDots","ChatInput"],"mappings":"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"}
1
+ {"version":3,"file":"ChatPanel.js","sources":["../../../../src/components/ChatPanel.tsx"],"sourcesContent":["import React, { useEffect, useRef } from \"react\";\nimport { useChatState, useChatActions } from \"@yext/chat-headless-react\";\nimport {\n MessageBubble,\n MessageBubbleCssClasses,\n MessageBubbleProps,\n} from \"./MessageBubble\";\nimport { ChatInput, ChatInputCssClasses, ChatInputProps } from \"./ChatInput\";\nimport { LoadingDots } from \"./LoadingDots\";\nimport { useComposedCssClasses } from \"../hooks\";\nimport { useDefaultHandleApiError } from \"../hooks/useDefaultHandleApiError\";\nimport { withStylelessCssClasses } from \"../utils/withStylelessCssClasses\";\nimport { useReportAnalyticsEvent } from \"../hooks/useReportAnalyticsEvent\";\n\n/**\n * The CSS class interface for the {@link ChatPanel} component.\n *\n * @public\n */\nexport interface ChatPanelCssClasses {\n container?: string;\n messagesContainer?: string;\n messagesScrollContainer?: string;\n inputContainer?: string;\n inputCssClasses?: ChatInputCssClasses;\n messageBubbleCssClasses?: MessageBubbleCssClasses;\n}\n\nconst builtInCssClasses: ChatPanelCssClasses = withStylelessCssClasses(\n \"Panel\",\n {\n container: \"h-full w-full flex flex-col relative shadow-2xl bg-white\",\n messagesScrollContainer: \"flex flex-col mt-auto overflow-hidden\",\n messagesContainer: \"flex flex-col gap-y-1 px-4 overflow-auto\",\n inputContainer: \"w-full p-4\",\n messageBubbleCssClasses: {\n topContainer: \"first:mt-4\",\n },\n }\n);\n\n/**\n * The props for the {@link ChatPanel} component.\n *\n * @public\n */\nexport interface ChatPanelProps\n extends Omit<MessageBubbleProps, \"customCssClasses\" | \"message\">,\n Omit<ChatInputProps, \"customCssClasses\"> {\n /** A header to render at the top of the panel. */\n header?: JSX.Element;\n /**\n * CSS classes for customizing the component styling.\n */\n customCssClasses?: ChatPanelCssClasses;\n}\n\n/**\n * A component that renders a full panel for chat bot interactions. This includes\n * the message bubbles for the conversation, input box with send button, and header\n * (if provided).\n *\n * @public\n *\n * @param props - {@link ChatPanelProps}\n */\nexport function ChatPanel(props: ChatPanelProps) {\n const { header, customCssClasses } = props;\n const chat = useChatActions();\n const messages = useChatState((state) => state.conversation.messages);\n const loading = useChatState((state) => state.conversation.isLoading);\n const canSendMessage = useChatState(\n (state) => state.conversation.canSendMessage\n );\n const cssClasses = useComposedCssClasses(builtInCssClasses, customCssClasses);\n const defaultHandleApiError = useDefaultHandleApiError();\n const reportAnalyticsEvent = useReportAnalyticsEvent();\n\n useEffect(() => {\n reportAnalyticsEvent({\n action: \"CHAT_IMPRESSION\",\n });\n }, [reportAnalyticsEvent]);\n\n // Fetch the first message on load, if there are no existing messages or a request being processed\n useEffect(() => {\n if (messages.length !== 0 || !canSendMessage) {\n return;\n }\n const { stream = false, handleError } = props;\n const res = stream ? chat.streamNextMessage() : chat.getNextMessage();\n res.catch((e) => (handleError ? handleError(e) : defaultHandleApiError(e)));\n }, [chat, props, messages, defaultHandleApiError, canSendMessage]);\n\n const messagesRef = useRef<HTMLDivElement>(null);\n\n // Scroll to the bottom of the chat when the messages change\n useEffect(() => {\n messagesRef.current?.scroll({\n top: messagesRef.current?.scrollHeight,\n behavior: \"smooth\",\n });\n }, [messages]);\n\n return (\n <div className=\"yext-chat\">\n <div className={cssClasses.container}>\n {header}\n <div className={cssClasses.messagesScrollContainer}>\n <div ref={messagesRef} className={cssClasses.messagesContainer}>\n {messages.map((message, index) => (\n <MessageBubble\n {...props}\n customCssClasses={cssClasses.messageBubbleCssClasses}\n key={index}\n message={message}\n />\n ))}\n {loading && <LoadingDots />}\n </div>\n </div>\n <div className={cssClasses.inputContainer}>\n <ChatInput {...props} customCssClasses={cssClasses.inputCssClasses} />\n </div>\n </div>\n </div>\n );\n}\n"],"names":["withStylelessCssClasses","useChatActions","useChatState","useComposedCssClasses","useDefaultHandleApiError","useReportAnalyticsEvent","useEffect","useRef","React","MessageBubble","LoadingDots","ChatInput"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from "react";
2
2
  import { ChatPanelCssClasses, ChatPanelProps } from "./ChatPanel";
3
3
  import { ChatHeaderCssClasses, ChatHeaderProps } from "./ChatHeader";
4
4
  /**
@@ -39,5 +39,5 @@ export interface ChatPopUpProps extends Omit<ChatHeaderProps, "showCloseButton"
39
39
  *
40
40
  * @param props - {@link ChatPanelProps}
41
41
  */
42
- export declare function ChatPopUp(props: ChatPopUpProps): import("react/jsx-runtime").JSX.Element;
42
+ export declare function ChatPopUp(props: ChatPopUpProps): React.JSX.Element;
43
43
  //# sourceMappingURL=ChatPopUp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChatPopUp.d.ts","sourceRoot":"","sources":["../../../../src/components/ChatPopUp.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAa,mBAAmB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAEL,oBAAoB,EACpB,eAAe,EAChB,MAAM,cAAc,CAAC;AAMtB;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,eAAe,CAAC,EAAE,mBAAmB,CAAC;CACvC;AA8BD;;;;GAIG;AACH,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,eAAe,EAAE,iBAAiB,GAAG,kBAAkB,CAAC,EACnE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,kBAAkB,CAAC;IACrD,0DAA0D;IAC1D,mBAAmB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAClC;;OAEG;IACH,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CACxC;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2CAkE9C"}
1
+ {"version":3,"file":"ChatPopUp.d.ts","sourceRoot":"","sources":["../../../../src/components/ChatPopUp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAEhE,OAAO,EAAa,mBAAmB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAEL,oBAAoB,EACpB,eAAe,EAChB,MAAM,cAAc,CAAC;AAMtB;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,eAAe,CAAC,EAAE,mBAAmB,CAAC;CACvC;AA8BD;;;;GAIG;AACH,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,eAAe,EAAE,iBAAiB,GAAG,kBAAkB,CAAC,EACnE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,kBAAkB,CAAC;IACrD,0DAA0D;IAC1D,mBAAmB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAClC;;OAEG;IACH,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CACxC;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,qBAkE9C"}
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var jsxRuntime = require('react/jsx-runtime.js');
4
- var react = require('react');
3
+ var React = require('react');
5
4
  var Chat = require('../icons/Chat.js');
6
5
  var ChatPanel = require('./ChatPanel.js');
7
6
  var ChatHeader = require('./ChatHeader.js');
@@ -10,6 +9,10 @@ var useComposedCssClasses = require('../hooks/useComposedCssClasses.js');
10
9
  var withStylelessCssClasses = require('../utils/withStylelessCssClasses.js');
11
10
  var useReportAnalyticsEvent = require('../hooks/useReportAnalyticsEvent.js');
12
11
 
12
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
13
+
14
+ var React__default = /*#__PURE__*/_interopDefault(React);
15
+
13
16
  const fixedPosition = "fixed bottom-6 right-4 lg:bottom-14 lg:right-10 z-50 ";
14
17
  const builtInCssClasses = withStylelessCssClasses.withStylelessCssClasses("PopUp", {
15
18
  container: "transition-all",
@@ -42,23 +45,27 @@ const builtInCssClasses = withStylelessCssClasses.withStylelessCssClasses("PopUp
42
45
  function ChatPopUp(props) {
43
46
  const { openPanelButtonIcon, customCssClasses, showRestartButton = true, onClose: customOnClose, title, } = props;
44
47
  const reportAnalyticsEvent = useReportAnalyticsEvent.useReportAnalyticsEvent();
45
- react.useEffect(() => {
48
+ React.useEffect(() => {
46
49
  reportAnalyticsEvent({
47
50
  action: "CHAT_IMPRESSION",
48
51
  });
49
52
  }, [reportAnalyticsEvent]);
50
- const [showChat, setShowChat] = react.useState(false);
51
- const onClick = react.useCallback(() => {
53
+ const [showChat, setShowChat] = React.useState(false);
54
+ const onClick = React.useCallback(() => {
52
55
  setShowChat(!showChat);
53
56
  }, [showChat]);
54
- const onClose = react.useCallback(() => {
57
+ const onClose = React.useCallback(() => {
55
58
  setShowChat(false);
56
59
  customOnClose?.();
57
60
  }, [customOnClose]);
58
61
  const cssClasses = useComposedCssClasses.useComposedCssClasses(builtInCssClasses, customCssClasses);
59
62
  const panelCssClasses = tailwindMerge.twMerge(cssClasses.panel, showChat ? cssClasses.panel__display : cssClasses.panel__hidden);
60
63
  const buttonCssClasses = tailwindMerge.twMerge(cssClasses.button, showChat ? cssClasses.button__hidden : cssClasses.button__display);
61
- return (jsxRuntime.jsx("div", { className: "yext-chat", children: jsxRuntime.jsxs("div", { className: cssClasses.container, children: [jsxRuntime.jsx("div", { className: panelCssClasses, "aria-label": "Chat Popup Panel", children: jsxRuntime.jsx(ChatPanel.ChatPanel, { ...props, customCssClasses: cssClasses.panelCssClasses, header: jsxRuntime.jsx(ChatHeader.ChatHeader, { title: title, showRestartButton: showRestartButton, showCloseButton: true, onClose: onClose, customCssClasses: cssClasses.headerCssClasses }) }) }), jsxRuntime.jsx("button", { "aria-label": "Chat Popup Button", onClick: onClick, className: buttonCssClasses, children: openPanelButtonIcon ?? (jsxRuntime.jsx(Chat.ChatIcon, { className: cssClasses.buttonIcon })) })] }) }));
64
+ return (React__default.default.createElement("div", { className: "yext-chat" },
65
+ React__default.default.createElement("div", { className: cssClasses.container },
66
+ React__default.default.createElement("div", { className: panelCssClasses, "aria-label": "Chat Popup Panel" },
67
+ React__default.default.createElement(ChatPanel.ChatPanel, { ...props, customCssClasses: cssClasses.panelCssClasses, header: React__default.default.createElement(ChatHeader.ChatHeader, { title: title, showRestartButton: showRestartButton, showCloseButton: true, onClose: onClose, customCssClasses: cssClasses.headerCssClasses }) })),
68
+ React__default.default.createElement("button", { "aria-label": "Chat Popup Button", onClick: onClick, className: buttonCssClasses }, openPanelButtonIcon ?? (React__default.default.createElement(Chat.ChatIcon, { className: cssClasses.buttonIcon }))))));
62
69
  }
63
70
 
64
71
  exports.ChatPopUp = ChatPopUp;
@@ -1 +1 @@
1
- {"version":3,"file":"ChatPopUp.js","sources":["../../../../src/components/ChatPopUp.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport { ChatIcon } from \"../icons/Chat\";\nimport { ChatPanel, ChatPanelCssClasses, ChatPanelProps } from \"./ChatPanel\";\nimport {\n ChatHeader,\n ChatHeaderCssClasses,\n ChatHeaderProps,\n} from \"./ChatHeader\";\nimport { twMerge } from \"tailwind-merge\";\nimport { useComposedCssClasses } from \"../hooks\";\nimport { withStylelessCssClasses } from \"../utils/withStylelessCssClasses\";\nimport { useReportAnalyticsEvent } from \"../hooks/useReportAnalyticsEvent\";\n\n/**\n * The CSS class interface for the {@link ChatPopUp} component.\n *\n * @public\n */\nexport interface ChatPopUpCssClasses {\n container?: string;\n panel?: string;\n panel__display?: string;\n panel__hidden?: string;\n button?: string;\n button__display?: string;\n button__hidden?: string;\n buttonIcon?: string;\n headerCssClasses?: ChatHeaderCssClasses;\n panelCssClasses?: ChatPanelCssClasses;\n}\n\nconst fixedPosition = \"fixed bottom-6 right-4 lg:bottom-14 lg:right-10 z-50 \";\nconst builtInCssClasses: ChatPopUpCssClasses = withStylelessCssClasses(\n \"PopUp\",\n {\n container: \"transition-all\",\n panel:\n fixedPosition +\n \"w-80 max-[480px]:right-0 max-[480px]:bottom-0 max-[480px]:w-full max-[480px]:h-full lg:w-96 h-[75vh]\",\n panel__display: \"duration-300 translate-y-0\",\n panel__hidden: \"duration-300 translate-y-[20%] opacity-0 invisible\",\n button:\n fixedPosition +\n \"p-2 w-12 h-12 lg:w-16 lg:h-16 flex justify-center items-center text-white shadow-xl rounded-full bg-gradient-to-br from-blue-600 to-blue-700 hover:-translate-y-2 duration-150\",\n button__display: \"duration-300 transform translate-y-0\",\n button__hidden:\n \"duration-300 transform translate-y-[20%] opacity-0 invisible\",\n buttonIcon: \"text-blue-600 w-[28px] h-[28px] lg:w-[40px] lg:h-[40px]\",\n headerCssClasses: {\n container: \"max-[480px]:rounded-none rounded-t-3xl\",\n },\n panelCssClasses: {\n container: \"max-[480px]:rounded-none rounded-3xl\",\n inputContainer: \"max-[480px]:rounded-none rounded-b-3xl\",\n messagesScrollContainer: \"rounded-b-3xl\",\n },\n }\n);\n\n/**\n * The props for the {@link ChatPopUp} component.\n *\n * @public\n */\nexport interface ChatPopUpProps\n extends Omit<ChatHeaderProps, \"showCloseButton\" | \"customCssClasses\">,\n Omit<ChatPanelProps, \"header\" | \"customCssClasses\"> {\n /** Custom icon for the popup button to open the panel. */\n openPanelButtonIcon?: JSX.Element;\n /**\n * CSS classes for customizing the component styling.\n */\n customCssClasses?: ChatPopUpCssClasses;\n}\n\n/**\n * A component that renders a popup button that displays and hides\n * a panel for chat bot interactions.\n *\n * @public\n *\n * @param props - {@link ChatPanelProps}\n */\nexport function ChatPopUp(props: ChatPopUpProps) {\n const {\n openPanelButtonIcon,\n customCssClasses,\n showRestartButton = true,\n onClose: customOnClose,\n title,\n } = props;\n const reportAnalyticsEvent = useReportAnalyticsEvent();\n\n useEffect(() => {\n reportAnalyticsEvent({\n action: \"CHAT_IMPRESSION\",\n });\n }, [reportAnalyticsEvent]);\n\n const [showChat, setShowChat] = useState(false);\n const onClick = useCallback(() => {\n setShowChat(!showChat);\n }, [showChat]);\n\n const onClose = useCallback(() => {\n setShowChat(false);\n customOnClose?.();\n }, [customOnClose]);\n\n const cssClasses = useComposedCssClasses(builtInCssClasses, customCssClasses);\n const panelCssClasses = twMerge(\n cssClasses.panel,\n showChat ? cssClasses.panel__display : cssClasses.panel__hidden\n );\n const buttonCssClasses = twMerge(\n cssClasses.button,\n showChat ? cssClasses.button__hidden : cssClasses.button__display\n );\n\n return (\n <div className=\"yext-chat\">\n <div className={cssClasses.container}>\n <div className={panelCssClasses} aria-label=\"Chat Popup Panel\">\n <ChatPanel\n {...props}\n customCssClasses={cssClasses.panelCssClasses}\n header={\n <ChatHeader\n title={title}\n showRestartButton={showRestartButton}\n showCloseButton={true}\n onClose={onClose}\n customCssClasses={cssClasses.headerCssClasses}\n />\n }\n />\n </div>\n <button\n aria-label=\"Chat Popup Button\"\n onClick={onClick}\n className={buttonCssClasses}\n >\n {openPanelButtonIcon ?? (\n <ChatIcon className={cssClasses.buttonIcon} />\n )}\n </button>\n </div>\n </div>\n );\n}\n"],"names":["withStylelessCssClasses","useReportAnalyticsEvent","useEffect","useState","useCallback","useComposedCssClasses","twMerge","_jsx","_jsxs","ChatPanel","ChatHeader","ChatIcon"],"mappings":"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"}
1
+ {"version":3,"file":"ChatPopUp.js","sources":["../../../../src/components/ChatPopUp.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from \"react\";\nimport { ChatIcon } from \"../icons/Chat\";\nimport { ChatPanel, ChatPanelCssClasses, ChatPanelProps } from \"./ChatPanel\";\nimport {\n ChatHeader,\n ChatHeaderCssClasses,\n ChatHeaderProps,\n} from \"./ChatHeader\";\nimport { twMerge } from \"tailwind-merge\";\nimport { useComposedCssClasses } from \"../hooks\";\nimport { withStylelessCssClasses } from \"../utils/withStylelessCssClasses\";\nimport { useReportAnalyticsEvent } from \"../hooks/useReportAnalyticsEvent\";\n\n/**\n * The CSS class interface for the {@link ChatPopUp} component.\n *\n * @public\n */\nexport interface ChatPopUpCssClasses {\n container?: string;\n panel?: string;\n panel__display?: string;\n panel__hidden?: string;\n button?: string;\n button__display?: string;\n button__hidden?: string;\n buttonIcon?: string;\n headerCssClasses?: ChatHeaderCssClasses;\n panelCssClasses?: ChatPanelCssClasses;\n}\n\nconst fixedPosition = \"fixed bottom-6 right-4 lg:bottom-14 lg:right-10 z-50 \";\nconst builtInCssClasses: ChatPopUpCssClasses = withStylelessCssClasses(\n \"PopUp\",\n {\n container: \"transition-all\",\n panel:\n fixedPosition +\n \"w-80 max-[480px]:right-0 max-[480px]:bottom-0 max-[480px]:w-full max-[480px]:h-full lg:w-96 h-[75vh]\",\n panel__display: \"duration-300 translate-y-0\",\n panel__hidden: \"duration-300 translate-y-[20%] opacity-0 invisible\",\n button:\n fixedPosition +\n \"p-2 w-12 h-12 lg:w-16 lg:h-16 flex justify-center items-center text-white shadow-xl rounded-full bg-gradient-to-br from-blue-600 to-blue-700 hover:-translate-y-2 duration-150\",\n button__display: \"duration-300 transform translate-y-0\",\n button__hidden:\n \"duration-300 transform translate-y-[20%] opacity-0 invisible\",\n buttonIcon: \"text-blue-600 w-[28px] h-[28px] lg:w-[40px] lg:h-[40px]\",\n headerCssClasses: {\n container: \"max-[480px]:rounded-none rounded-t-3xl\",\n },\n panelCssClasses: {\n container: \"max-[480px]:rounded-none rounded-3xl\",\n inputContainer: \"max-[480px]:rounded-none rounded-b-3xl\",\n messagesScrollContainer: \"rounded-b-3xl\",\n },\n }\n);\n\n/**\n * The props for the {@link ChatPopUp} component.\n *\n * @public\n */\nexport interface ChatPopUpProps\n extends Omit<ChatHeaderProps, \"showCloseButton\" | \"customCssClasses\">,\n Omit<ChatPanelProps, \"header\" | \"customCssClasses\"> {\n /** Custom icon for the popup button to open the panel. */\n openPanelButtonIcon?: JSX.Element;\n /**\n * CSS classes for customizing the component styling.\n */\n customCssClasses?: ChatPopUpCssClasses;\n}\n\n/**\n * A component that renders a popup button that displays and hides\n * a panel for chat bot interactions.\n *\n * @public\n *\n * @param props - {@link ChatPanelProps}\n */\nexport function ChatPopUp(props: ChatPopUpProps) {\n const {\n openPanelButtonIcon,\n customCssClasses,\n showRestartButton = true,\n onClose: customOnClose,\n title,\n } = props;\n const reportAnalyticsEvent = useReportAnalyticsEvent();\n\n useEffect(() => {\n reportAnalyticsEvent({\n action: \"CHAT_IMPRESSION\",\n });\n }, [reportAnalyticsEvent]);\n\n const [showChat, setShowChat] = useState(false);\n const onClick = useCallback(() => {\n setShowChat(!showChat);\n }, [showChat]);\n\n const onClose = useCallback(() => {\n setShowChat(false);\n customOnClose?.();\n }, [customOnClose]);\n\n const cssClasses = useComposedCssClasses(builtInCssClasses, customCssClasses);\n const panelCssClasses = twMerge(\n cssClasses.panel,\n showChat ? cssClasses.panel__display : cssClasses.panel__hidden\n );\n const buttonCssClasses = twMerge(\n cssClasses.button,\n showChat ? cssClasses.button__hidden : cssClasses.button__display\n );\n\n return (\n <div className=\"yext-chat\">\n <div className={cssClasses.container}>\n <div className={panelCssClasses} aria-label=\"Chat Popup Panel\">\n <ChatPanel\n {...props}\n customCssClasses={cssClasses.panelCssClasses}\n header={\n <ChatHeader\n title={title}\n showRestartButton={showRestartButton}\n showCloseButton={true}\n onClose={onClose}\n customCssClasses={cssClasses.headerCssClasses}\n />\n }\n />\n </div>\n <button\n aria-label=\"Chat Popup Button\"\n onClick={onClick}\n className={buttonCssClasses}\n >\n {openPanelButtonIcon ?? (\n <ChatIcon className={cssClasses.buttonIcon} />\n )}\n </button>\n </div>\n </div>\n );\n}\n"],"names":["withStylelessCssClasses","useReportAnalyticsEvent","useEffect","useState","useCallback","useComposedCssClasses","twMerge","React","ChatPanel","ChatHeader","ChatIcon"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import React from "react";
1
2
  /**
2
3
  * The CSS class interface for the FeedbackButtons component.
3
4
  *
@@ -29,6 +30,6 @@ interface FeedbackButtonsProps {
29
30
  *
30
31
  * @internal
31
32
  */
32
- export declare function FeedbackButtons({ customCssClasses, responseId, }: FeedbackButtonsProps): import("react/jsx-runtime").JSX.Element;
33
+ export declare function FeedbackButtons({ customCssClasses, responseId, }: FeedbackButtonsProps): React.JSX.Element;
33
34
  export {};
34
35
  //# sourceMappingURL=FeedbackButtons.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeedbackButtons.d.ts","sourceRoot":"","sources":["../../../../src/components/FeedbackButtons.tsx"],"names":[],"mappings":"AASA;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAgBD;;;;GAIG;AACH,UAAU,oBAAoB;IAC5B,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,yBAAyB,CAAC;CAC9C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAC9B,gBAAgB,EAChB,UAAU,GACX,EAAE,oBAAoB,2CA+CtB"}
1
+ {"version":3,"file":"FeedbackButtons.d.ts","sourceRoot":"","sources":["../../../../src/components/FeedbackButtons.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAOrD;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAgBD;;;;GAIG;AACH,UAAU,oBAAoB;IAC5B,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,yBAAyB,CAAC;CAC9C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAC9B,gBAAgB,EAChB,UAAU,GACX,EAAE,oBAAoB,qBA+CtB"}
@@ -1,15 +1,18 @@
1
1
  'use strict';
2
2
 
3
- var jsxRuntime = require('react/jsx-runtime.js');
4
3
  var ThumbsDown = require('../icons/ThumbsDown.js');
5
4
  var ThumbsUp = require('../icons/ThumbsUp.js');
6
- var react = require('react');
5
+ var React = require('react');
7
6
  var ThumbsUpFill = require('../icons/ThumbsUpFill.js');
8
7
  var ThumbsDownFill = require('../icons/ThumbsDownFill.js');
9
8
  var withStylelessCssClasses = require('../utils/withStylelessCssClasses.js');
10
9
  var useComposedCssClasses = require('../hooks/useComposedCssClasses.js');
11
10
  var useReportAnalyticsEvent = require('../hooks/useReportAnalyticsEvent.js');
12
11
 
12
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
13
+
14
+ var React__default = /*#__PURE__*/_interopDefault(React);
15
+
13
16
  const builtInCssClasses = withStylelessCssClasses.withStylelessCssClasses("FeedbackButtons", {
14
17
  container: "flex gap-x-1 absolute -right-1 -top-3 opacity-0 group-hover:opacity-100 duration-200",
15
18
  thumbsUpButton: "w-6 h-6 bg-gray-700 rounded-md flex justify-center items-center",
@@ -28,8 +31,8 @@ const builtInCssClasses = withStylelessCssClasses.withStylelessCssClasses("Feedb
28
31
  function FeedbackButtons({ customCssClasses, responseId, }) {
29
32
  const reportAnalyticsEvent = useReportAnalyticsEvent.useReportAnalyticsEvent();
30
33
  const cssClasses = useComposedCssClasses.useComposedCssClasses(builtInCssClasses, customCssClasses);
31
- const [selectedThumb, setSelectedThumb] = react.useState();
32
- const onClickThumbsUp = react.useCallback(() => {
34
+ const [selectedThumb, setSelectedThumb] = React.useState();
35
+ const onClickThumbsUp = React.useCallback(() => {
33
36
  setSelectedThumb("UP");
34
37
  reportAnalyticsEvent({
35
38
  action: "THUMBS_UP",
@@ -38,7 +41,7 @@ function FeedbackButtons({ customCssClasses, responseId, }) {
38
41
  },
39
42
  });
40
43
  }, [reportAnalyticsEvent, responseId]);
41
- const onClickThumbsDown = react.useCallback(() => {
44
+ const onClickThumbsDown = React.useCallback(() => {
42
45
  setSelectedThumb("DOWN");
43
46
  reportAnalyticsEvent({
44
47
  action: "THUMBS_DOWN",
@@ -47,7 +50,9 @@ function FeedbackButtons({ customCssClasses, responseId, }) {
47
50
  },
48
51
  });
49
52
  }, [reportAnalyticsEvent, responseId]);
50
- return (jsxRuntime.jsxs("div", { className: cssClasses.container, children: [jsxRuntime.jsx("button", { className: cssClasses.thumbsUpButton, onClick: onClickThumbsUp, children: selectedThumb === "UP" ? (jsxRuntime.jsx(ThumbsUpFill.ThumbsUpFillIcon, { className: cssClasses.thumbsUpFillIcon })) : (jsxRuntime.jsx(ThumbsUp.ThumbsUpIcon, { className: cssClasses.thumbsUpIcon })) }), jsxRuntime.jsx("button", { className: cssClasses.thumbsDownButton, onClick: onClickThumbsDown, children: selectedThumb === "DOWN" ? (jsxRuntime.jsx(ThumbsDownFill.ThumbsDownFillIcon, { className: cssClasses.thumbsDownFillIcon })) : (jsxRuntime.jsx(ThumbsDown.ThumbsDownIcon, { className: cssClasses.thumbsDownIcon })) })] }));
53
+ return (React__default.default.createElement("div", { className: cssClasses.container },
54
+ React__default.default.createElement("button", { className: cssClasses.thumbsUpButton, onClick: onClickThumbsUp }, selectedThumb === "UP" ? (React__default.default.createElement(ThumbsUpFill.ThumbsUpFillIcon, { className: cssClasses.thumbsUpFillIcon })) : (React__default.default.createElement(ThumbsUp.ThumbsUpIcon, { className: cssClasses.thumbsUpIcon }))),
55
+ React__default.default.createElement("button", { className: cssClasses.thumbsDownButton, onClick: onClickThumbsDown }, selectedThumb === "DOWN" ? (React__default.default.createElement(ThumbsDownFill.ThumbsDownFillIcon, { className: cssClasses.thumbsDownFillIcon })) : (React__default.default.createElement(ThumbsDown.ThumbsDownIcon, { className: cssClasses.thumbsDownIcon })))));
51
56
  }
52
57
 
53
58
  exports.FeedbackButtons = FeedbackButtons;