@yext/chat-ui-react 0.12.1 → 0.12.2
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.
- package/package.json +14 -3
- package/lib/bundle.css +0 -1
- package/lib/commonjs/package.json.js +0 -6
- package/lib/commonjs/package.json.js.map +0 -1
- package/lib/commonjs/src/components/ChatHeader.d.ts +0 -53
- package/lib/commonjs/src/components/ChatHeader.d.ts.map +0 -1
- package/lib/commonjs/src/components/ChatHeader.js +0 -52
- package/lib/commonjs/src/components/ChatHeader.js.map +0 -1
- package/lib/commonjs/src/components/ChatInput.d.ts +0 -60
- package/lib/commonjs/src/components/ChatInput.d.ts.map +0 -1
- package/lib/commonjs/src/components/ChatInput.js +0 -76
- package/lib/commonjs/src/components/ChatInput.js.map +0 -1
- package/lib/commonjs/src/components/ChatPanel.d.ts +0 -74
- package/lib/commonjs/src/components/ChatPanel.d.ts.map +0 -1
- package/lib/commonjs/src/components/ChatPanel.js +0 -178
- package/lib/commonjs/src/components/ChatPanel.js.map +0 -1
- package/lib/commonjs/src/components/ChatPopUp.d.ts +0 -76
- package/lib/commonjs/src/components/ChatPopUp.d.ts.map +0 -1
- package/lib/commonjs/src/components/ChatPopUp.js +0 -160
- package/lib/commonjs/src/components/ChatPopUp.js.map +0 -1
- package/lib/commonjs/src/components/FeedbackButtons.d.ts +0 -35
- package/lib/commonjs/src/components/FeedbackButtons.d.ts.map +0 -1
- package/lib/commonjs/src/components/FeedbackButtons.js +0 -59
- package/lib/commonjs/src/components/FeedbackButtons.js.map +0 -1
- package/lib/commonjs/src/components/InitialMessagePopUp.d.ts +0 -33
- package/lib/commonjs/src/components/InitialMessagePopUp.d.ts.map +0 -1
- package/lib/commonjs/src/components/InitialMessagePopUp.js +0 -44
- package/lib/commonjs/src/components/InitialMessagePopUp.js.map +0 -1
- package/lib/commonjs/src/components/LoadingDots.d.ts +0 -10
- package/lib/commonjs/src/components/LoadingDots.d.ts.map +0 -1
- package/lib/commonjs/src/components/LoadingDots.js +0 -23
- package/lib/commonjs/src/components/LoadingDots.js.map +0 -1
- package/lib/commonjs/src/components/Markdown.d.ts +0 -39
- package/lib/commonjs/src/components/Markdown.d.ts.map +0 -1
- package/lib/commonjs/src/components/Markdown.js +0 -72
- package/lib/commonjs/src/components/Markdown.js.map +0 -1
- package/lib/commonjs/src/components/MessageBubble.d.ts +0 -64
- package/lib/commonjs/src/components/MessageBubble.d.ts.map +0 -1
- package/lib/commonjs/src/components/MessageBubble.js +0 -77
- package/lib/commonjs/src/components/MessageBubble.js.map +0 -1
- package/lib/commonjs/src/components/MessageSuggestions.d.ts +0 -37
- package/lib/commonjs/src/components/MessageSuggestions.d.ts.map +0 -1
- package/lib/commonjs/src/components/MessageSuggestions.js +0 -55
- package/lib/commonjs/src/components/MessageSuggestions.js.map +0 -1
- package/lib/commonjs/src/components/index.d.ts +0 -14
- package/lib/commonjs/src/components/index.d.ts.map +0 -1
- package/lib/commonjs/src/hooks/index.d.ts +0 -3
- package/lib/commonjs/src/hooks/index.d.ts.map +0 -1
- package/lib/commonjs/src/hooks/useComposedCssClasses.d.ts +0 -30
- package/lib/commonjs/src/hooks/useComposedCssClasses.d.ts.map +0 -1
- package/lib/commonjs/src/hooks/useComposedCssClasses.js +0 -61
- package/lib/commonjs/src/hooks/useComposedCssClasses.js.map +0 -1
- package/lib/commonjs/src/hooks/useDefaultHandleApiError.d.ts +0 -8
- package/lib/commonjs/src/hooks/useDefaultHandleApiError.d.ts.map +0 -1
- package/lib/commonjs/src/hooks/useDefaultHandleApiError.js +0 -25
- package/lib/commonjs/src/hooks/useDefaultHandleApiError.js.map +0 -1
- package/lib/commonjs/src/hooks/useFetchInitialMessage.d.ts +0 -13
- package/lib/commonjs/src/hooks/useFetchInitialMessage.d.ts.map +0 -1
- package/lib/commonjs/src/hooks/useFetchInitialMessage.js +0 -41
- package/lib/commonjs/src/hooks/useFetchInitialMessage.js.map +0 -1
- package/lib/commonjs/src/hooks/useReportAnalyticsEvent.d.ts +0 -8
- package/lib/commonjs/src/hooks/useReportAnalyticsEvent.d.ts.map +0 -1
- package/lib/commonjs/src/hooks/useReportAnalyticsEvent.js +0 -21
- package/lib/commonjs/src/hooks/useReportAnalyticsEvent.js.map +0 -1
- package/lib/commonjs/src/hooks/useSendMessageWithRetries.d.ts +0 -17
- package/lib/commonjs/src/hooks/useSendMessageWithRetries.d.ts.map +0 -1
- package/lib/commonjs/src/hooks/useSendMessageWithRetries.js +0 -54
- package/lib/commonjs/src/hooks/useSendMessageWithRetries.js.map +0 -1
- package/lib/commonjs/src/icons/Arrow.d.ts +0 -3
- package/lib/commonjs/src/icons/Arrow.d.ts.map +0 -1
- package/lib/commonjs/src/icons/Arrow.js +0 -16
- package/lib/commonjs/src/icons/Arrow.js.map +0 -1
- package/lib/commonjs/src/icons/Chat.d.ts +0 -5
- package/lib/commonjs/src/icons/Chat.d.ts.map +0 -1
- package/lib/commonjs/src/icons/Chat.js +0 -20
- package/lib/commonjs/src/icons/Chat.js.map +0 -1
- package/lib/commonjs/src/icons/Cross.d.ts +0 -5
- package/lib/commonjs/src/icons/Cross.d.ts.map +0 -1
- package/lib/commonjs/src/icons/Cross.js +0 -16
- package/lib/commonjs/src/icons/Cross.js.map +0 -1
- package/lib/commonjs/src/icons/DualSync.d.ts +0 -5
- package/lib/commonjs/src/icons/DualSync.d.ts.map +0 -1
- package/lib/commonjs/src/icons/DualSync.js +0 -16
- package/lib/commonjs/src/icons/DualSync.js.map +0 -1
- package/lib/commonjs/src/icons/ThumbsDown.d.ts +0 -5
- package/lib/commonjs/src/icons/ThumbsDown.d.ts.map +0 -1
- package/lib/commonjs/src/icons/ThumbsDown.js +0 -15
- package/lib/commonjs/src/icons/ThumbsDown.js.map +0 -1
- package/lib/commonjs/src/icons/ThumbsDownFill.d.ts +0 -5
- package/lib/commonjs/src/icons/ThumbsDownFill.d.ts.map +0 -1
- package/lib/commonjs/src/icons/ThumbsDownFill.js +0 -15
- package/lib/commonjs/src/icons/ThumbsDownFill.js.map +0 -1
- package/lib/commonjs/src/icons/ThumbsUp.d.ts +0 -5
- package/lib/commonjs/src/icons/ThumbsUp.d.ts.map +0 -1
- package/lib/commonjs/src/icons/ThumbsUp.js +0 -15
- package/lib/commonjs/src/icons/ThumbsUp.js.map +0 -1
- package/lib/commonjs/src/icons/ThumbsUpFill.d.ts +0 -5
- package/lib/commonjs/src/icons/ThumbsUpFill.d.ts.map +0 -1
- package/lib/commonjs/src/icons/ThumbsUpFill.js +0 -15
- package/lib/commonjs/src/icons/ThumbsUpFill.js.map +0 -1
- package/lib/commonjs/src/index.d.ts +0 -3
- package/lib/commonjs/src/index.d.ts.map +0 -1
- package/lib/commonjs/src/index.js +0 -20
- package/lib/commonjs/src/index.js.map +0 -1
- package/lib/commonjs/src/tsdoc-metadata.json +0 -11
- package/lib/commonjs/src/utils/withStylelessCssClasses.d.ts +0 -17
- package/lib/commonjs/src/utils/withStylelessCssClasses.d.ts.map +0 -1
- package/lib/commonjs/src/utils/withStylelessCssClasses.js +0 -30
- package/lib/commonjs/src/utils/withStylelessCssClasses.js.map +0 -1
- package/lib/esm/index.d.ts +0 -411
- package/lib/esm/package.json.mjs +0 -4
- package/lib/esm/package.json.mjs.map +0 -1
- package/lib/esm/src/components/ChatHeader.d.ts +0 -53
- package/lib/esm/src/components/ChatHeader.d.ts.map +0 -1
- package/lib/esm/src/components/ChatHeader.mjs +0 -46
- package/lib/esm/src/components/ChatHeader.mjs.map +0 -1
- package/lib/esm/src/components/ChatInput.d.ts +0 -60
- package/lib/esm/src/components/ChatInput.d.ts.map +0 -1
- package/lib/esm/src/components/ChatInput.mjs +0 -69
- package/lib/esm/src/components/ChatInput.mjs.map +0 -1
- package/lib/esm/src/components/ChatPanel.d.ts +0 -74
- package/lib/esm/src/components/ChatPanel.d.ts.map +0 -1
- package/lib/esm/src/components/ChatPanel.mjs +0 -169
- package/lib/esm/src/components/ChatPanel.mjs.map +0 -1
- package/lib/esm/src/components/ChatPopUp.d.ts +0 -76
- package/lib/esm/src/components/ChatPopUp.d.ts.map +0 -1
- package/lib/esm/src/components/ChatPopUp.mjs +0 -154
- package/lib/esm/src/components/ChatPopUp.mjs.map +0 -1
- package/lib/esm/src/components/FeedbackButtons.d.ts +0 -35
- package/lib/esm/src/components/FeedbackButtons.d.ts.map +0 -1
- package/lib/esm/src/components/FeedbackButtons.mjs +0 -53
- package/lib/esm/src/components/FeedbackButtons.mjs.map +0 -1
- package/lib/esm/src/components/InitialMessagePopUp.d.ts +0 -33
- package/lib/esm/src/components/InitialMessagePopUp.d.ts.map +0 -1
- package/lib/esm/src/components/InitialMessagePopUp.mjs +0 -38
- package/lib/esm/src/components/InitialMessagePopUp.mjs.map +0 -1
- package/lib/esm/src/components/LoadingDots.d.ts +0 -10
- package/lib/esm/src/components/LoadingDots.d.ts.map +0 -1
- package/lib/esm/src/components/LoadingDots.mjs +0 -17
- package/lib/esm/src/components/LoadingDots.mjs.map +0 -1
- package/lib/esm/src/components/Markdown.d.ts +0 -39
- package/lib/esm/src/components/Markdown.d.ts.map +0 -1
- package/lib/esm/src/components/Markdown.mjs +0 -62
- package/lib/esm/src/components/Markdown.mjs.map +0 -1
- package/lib/esm/src/components/MessageBubble.d.ts +0 -64
- package/lib/esm/src/components/MessageBubble.d.ts.map +0 -1
- package/lib/esm/src/components/MessageBubble.mjs +0 -71
- package/lib/esm/src/components/MessageBubble.mjs.map +0 -1
- package/lib/esm/src/components/MessageSuggestions.d.ts +0 -37
- package/lib/esm/src/components/MessageSuggestions.d.ts.map +0 -1
- package/lib/esm/src/components/MessageSuggestions.mjs +0 -49
- package/lib/esm/src/components/MessageSuggestions.mjs.map +0 -1
- package/lib/esm/src/components/index.d.ts +0 -14
- package/lib/esm/src/components/index.d.ts.map +0 -1
- package/lib/esm/src/hooks/index.d.ts +0 -3
- package/lib/esm/src/hooks/index.d.ts.map +0 -1
- package/lib/esm/src/hooks/useComposedCssClasses.d.ts +0 -30
- package/lib/esm/src/hooks/useComposedCssClasses.d.ts.map +0 -1
- package/lib/esm/src/hooks/useComposedCssClasses.mjs +0 -59
- package/lib/esm/src/hooks/useComposedCssClasses.mjs.map +0 -1
- package/lib/esm/src/hooks/useDefaultHandleApiError.d.ts +0 -8
- package/lib/esm/src/hooks/useDefaultHandleApiError.d.ts.map +0 -1
- package/lib/esm/src/hooks/useDefaultHandleApiError.mjs +0 -23
- package/lib/esm/src/hooks/useDefaultHandleApiError.mjs.map +0 -1
- package/lib/esm/src/hooks/useFetchInitialMessage.d.ts +0 -13
- package/lib/esm/src/hooks/useFetchInitialMessage.d.ts.map +0 -1
- package/lib/esm/src/hooks/useFetchInitialMessage.mjs +0 -39
- package/lib/esm/src/hooks/useFetchInitialMessage.mjs.map +0 -1
- package/lib/esm/src/hooks/useReportAnalyticsEvent.d.ts +0 -8
- package/lib/esm/src/hooks/useReportAnalyticsEvent.d.ts.map +0 -1
- package/lib/esm/src/hooks/useReportAnalyticsEvent.mjs +0 -19
- package/lib/esm/src/hooks/useReportAnalyticsEvent.mjs.map +0 -1
- package/lib/esm/src/hooks/useSendMessageWithRetries.d.ts +0 -17
- package/lib/esm/src/hooks/useSendMessageWithRetries.d.ts.map +0 -1
- package/lib/esm/src/hooks/useSendMessageWithRetries.mjs +0 -52
- package/lib/esm/src/hooks/useSendMessageWithRetries.mjs.map +0 -1
- package/lib/esm/src/icons/Arrow.d.ts +0 -3
- package/lib/esm/src/icons/Arrow.d.ts.map +0 -1
- package/lib/esm/src/icons/Arrow.mjs +0 -10
- package/lib/esm/src/icons/Arrow.mjs.map +0 -1
- package/lib/esm/src/icons/Chat.d.ts +0 -5
- package/lib/esm/src/icons/Chat.d.ts.map +0 -1
- package/lib/esm/src/icons/Chat.mjs +0 -14
- package/lib/esm/src/icons/Chat.mjs.map +0 -1
- package/lib/esm/src/icons/Cross.d.ts +0 -5
- package/lib/esm/src/icons/Cross.d.ts.map +0 -1
- package/lib/esm/src/icons/Cross.mjs +0 -10
- package/lib/esm/src/icons/Cross.mjs.map +0 -1
- package/lib/esm/src/icons/DualSync.d.ts +0 -5
- package/lib/esm/src/icons/DualSync.d.ts.map +0 -1
- package/lib/esm/src/icons/DualSync.mjs +0 -10
- package/lib/esm/src/icons/DualSync.mjs.map +0 -1
- package/lib/esm/src/icons/ThumbsDown.d.ts +0 -5
- package/lib/esm/src/icons/ThumbsDown.d.ts.map +0 -1
- package/lib/esm/src/icons/ThumbsDown.mjs +0 -9
- package/lib/esm/src/icons/ThumbsDown.mjs.map +0 -1
- package/lib/esm/src/icons/ThumbsDownFill.d.ts +0 -5
- package/lib/esm/src/icons/ThumbsDownFill.d.ts.map +0 -1
- package/lib/esm/src/icons/ThumbsDownFill.mjs +0 -9
- package/lib/esm/src/icons/ThumbsDownFill.mjs.map +0 -1
- package/lib/esm/src/icons/ThumbsUp.d.ts +0 -5
- package/lib/esm/src/icons/ThumbsUp.d.ts.map +0 -1
- package/lib/esm/src/icons/ThumbsUp.mjs +0 -9
- package/lib/esm/src/icons/ThumbsUp.mjs.map +0 -1
- package/lib/esm/src/icons/ThumbsUpFill.d.ts +0 -5
- package/lib/esm/src/icons/ThumbsUpFill.d.ts.map +0 -1
- package/lib/esm/src/icons/ThumbsUpFill.mjs +0 -9
- package/lib/esm/src/icons/ThumbsUpFill.mjs.map +0 -1
- package/lib/esm/src/index.d.ts +0 -3
- package/lib/esm/src/index.d.ts.map +0 -1
- package/lib/esm/src/index.mjs +0 -8
- package/lib/esm/src/index.mjs.map +0 -1
- package/lib/esm/src/utils/withStylelessCssClasses.d.ts +0 -17
- package/lib/esm/src/utils/withStylelessCssClasses.d.ts.map +0 -1
- package/lib/esm/src/utils/withStylelessCssClasses.mjs +0 -28
- package/lib/esm/src/utils/withStylelessCssClasses.mjs.map +0 -1
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
/**
|
|
3
|
-
* The CSS class interface for the InitialMessagePopUp component.
|
|
4
|
-
*
|
|
5
|
-
* @public
|
|
6
|
-
*/
|
|
7
|
-
export interface InitialMessagePopUpCssClasses {
|
|
8
|
-
container?: string;
|
|
9
|
-
closeButton?: string;
|
|
10
|
-
closeButtonIcon?: string;
|
|
11
|
-
message?: string;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* The props for the {@link InitialMessagePopUp} component.
|
|
15
|
-
*
|
|
16
|
-
* @internal
|
|
17
|
-
*/
|
|
18
|
-
interface InitialMessagePopUpProps {
|
|
19
|
-
/** CSS classes for customizing the component styling. */
|
|
20
|
-
customCssClasses?: InitialMessagePopUpCssClasses;
|
|
21
|
-
/** Function to call when user click on the close button */
|
|
22
|
-
onClose: () => void;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* A component that renders a popup bubble displaying the initial message from chat bot.
|
|
26
|
-
*
|
|
27
|
-
* @internal
|
|
28
|
-
*
|
|
29
|
-
* @param props - {@link InitialMessagePopUpProps}
|
|
30
|
-
*/
|
|
31
|
-
export declare function InitialMessagePopUp({ onClose, customCssClasses, }: InitialMessagePopUpProps): React.JSX.Element;
|
|
32
|
-
export {};
|
|
33
|
-
//# sourceMappingURL=InitialMessagePopUp.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InitialMessagePopUp.d.ts","sourceRoot":"","sources":["../../../../src/components/InitialMessagePopUp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAMvC;;;;GAIG;AACH,MAAM,WAAW,6BAA6B;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,UAAU,wBAAwB;IAChC,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,6BAA6B,CAAC;IACjD,2DAA2D;IAC3D,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAWD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,gBAAgB,GACjB,EAAE,wBAAwB,qBA0B1B"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var React = require('react');
|
|
4
|
-
var Cross = require('../icons/Cross.js');
|
|
5
|
-
var useComposedCssClasses = require('../hooks/useComposedCssClasses.js');
|
|
6
|
-
var chatHeadlessReact = require('@yext/chat-headless-react');
|
|
7
|
-
var withStylelessCssClasses = require('../utils/withStylelessCssClasses.js');
|
|
8
|
-
|
|
9
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
-
|
|
11
|
-
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
12
|
-
|
|
13
|
-
const builtInCssClasses = withStylelessCssClasses.withStylelessCssClasses("InitialMessagePopUp", {
|
|
14
|
-
container: "flex gap-x-1 animate-fade-in",
|
|
15
|
-
closeButton: "bg-white w-4 h-4 rounded-full border border-slate-300",
|
|
16
|
-
closeButtonIcon: "",
|
|
17
|
-
message: "line-clamp-2 w-60 p-2.5 bg-white rounded-xl shadow-xl text-sm lg:text-base",
|
|
18
|
-
});
|
|
19
|
-
/**
|
|
20
|
-
* A component that renders a popup bubble displaying the initial message from chat bot.
|
|
21
|
-
*
|
|
22
|
-
* @internal
|
|
23
|
-
*
|
|
24
|
-
* @param props - {@link InitialMessagePopUpProps}
|
|
25
|
-
*/
|
|
26
|
-
function InitialMessagePopUp({ onClose, customCssClasses, }) {
|
|
27
|
-
const messages = chatHeadlessReact.useChatState((s) => s.conversation.messages);
|
|
28
|
-
const cssClasses = useComposedCssClasses.useComposedCssClasses(builtInCssClasses, customCssClasses);
|
|
29
|
-
const firstBotMessage = React.useMemo(() => {
|
|
30
|
-
return messages.length !== 0 && messages[0].source === chatHeadlessReact.MessageSource.BOT
|
|
31
|
-
? messages[0].text
|
|
32
|
-
: "";
|
|
33
|
-
}, [messages]);
|
|
34
|
-
if (firstBotMessage.length === 0) {
|
|
35
|
-
return React__default.default.createElement(React__default.default.Fragment, null);
|
|
36
|
-
}
|
|
37
|
-
return (React__default.default.createElement("div", { className: cssClasses.container },
|
|
38
|
-
React__default.default.createElement("button", { "aria-label": "Close Initial Message", onClick: onClose, className: cssClasses.closeButton },
|
|
39
|
-
React__default.default.createElement(Cross.CrossIcon, { className: cssClasses.closeButtonIcon })),
|
|
40
|
-
React__default.default.createElement("div", { className: cssClasses.message }, firstBotMessage)));
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
exports.InitialMessagePopUp = InitialMessagePopUp;
|
|
44
|
-
//# sourceMappingURL=InitialMessagePopUp.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InitialMessagePopUp.js","sources":["../../../../src/components/InitialMessagePopUp.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { CrossIcon } from \"../icons/Cross\";\nimport { useComposedCssClasses } from \"../hooks\";\nimport { withStylelessCssClasses } from \"../utils/withStylelessCssClasses\";\nimport { MessageSource, useChatState } from \"@yext/chat-headless-react\";\n\n/**\n * The CSS class interface for the InitialMessagePopUp component.\n *\n * @public\n */\nexport interface InitialMessagePopUpCssClasses {\n container?: string;\n closeButton?: string;\n closeButtonIcon?: string;\n message?: string;\n}\n\n/**\n * The props for the {@link InitialMessagePopUp} component.\n *\n * @internal\n */\ninterface InitialMessagePopUpProps {\n /** CSS classes for customizing the component styling. */\n customCssClasses?: InitialMessagePopUpCssClasses;\n /** Function to call when user click on the close button */\n onClose: () => void;\n}\n\nconst builtInCssClasses: InitialMessagePopUpCssClasses =\n withStylelessCssClasses(\"InitialMessagePopUp\", {\n container: \"flex gap-x-1 animate-fade-in\",\n closeButton: \"bg-white w-4 h-4 rounded-full border border-slate-300\",\n closeButtonIcon: \"\",\n message:\n \"line-clamp-2 w-60 p-2.5 bg-white rounded-xl shadow-xl text-sm lg:text-base\",\n });\n\n/**\n * A component that renders a popup bubble displaying the initial message from chat bot.\n *\n * @internal\n *\n * @param props - {@link InitialMessagePopUpProps}\n */\nexport function InitialMessagePopUp({\n onClose,\n customCssClasses,\n}: InitialMessagePopUpProps) {\n const messages = useChatState((s) => s.conversation.messages);\n const cssClasses = useComposedCssClasses(builtInCssClasses, customCssClasses);\n\n const firstBotMessage: string = useMemo(() => {\n return messages.length !== 0 && messages[0].source === MessageSource.BOT\n ? messages[0].text\n : \"\";\n }, [messages]);\n\n if (firstBotMessage.length === 0) {\n return <></>;\n }\n\n return (\n <div className={cssClasses.container}>\n <button\n aria-label=\"Close Initial Message\"\n onClick={onClose}\n className={cssClasses.closeButton}\n >\n <CrossIcon className={cssClasses.closeButtonIcon} />\n </button>\n <div className={cssClasses.message}>{firstBotMessage}</div>\n </div>\n );\n}\n"],"names":["withStylelessCssClasses","useChatState","useComposedCssClasses","useMemo","MessageSource","React","CrossIcon"],"mappings":";;;;;;;;;;;;AA8BA,MAAM,iBAAiB,GACrBA,+CAAuB,CAAC,qBAAqB,EAAE;AAC7C,IAAA,SAAS,EAAE,8BAA8B;AACzC,IAAA,WAAW,EAAE,uDAAuD;AACpE,IAAA,eAAe,EAAE,EAAE;AACnB,IAAA,OAAO,EACL,4EAA4E;AAC/E,CAAA,CAAC,CAAC;AAEL;;;;;;AAMG;SACa,mBAAmB,CAAC,EAClC,OAAO,EACP,gBAAgB,GACS,EAAA;AACzB,IAAA,MAAM,QAAQ,GAAGC,8BAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAGC,2CAAqB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;AAE9E,IAAA,MAAM,eAAe,GAAWC,aAAO,CAAC,MAAK;AAC3C,QAAA,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,KAAKC,+BAAa,CAAC,GAAG;AACtE,cAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;cAChB,EAAE,CAAC;AACT,KAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEf,IAAA,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,QAAA,OAAOC,2EAAK,CAAC;AACd,KAAA;AAED,IAAA,QACEA,sBAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,UAAU,CAAC,SAAS,EAAA;QAClCA,sBACa,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,YAAA,EAAA,uBAAuB,EAClC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,UAAU,CAAC,WAAW,EAAA;YAEjCA,sBAAC,CAAA,aAAA,CAAAC,eAAS,IAAC,SAAS,EAAE,UAAU,CAAC,eAAe,GAAI,CAC7C;QACTD,sBAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,UAAU,CAAC,OAAO,IAAG,eAAe,CAAO,CACvD,EACN;AACJ;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LoadingDots.d.ts","sourceRoot":"","sources":["../../../../src/components/LoadingDots.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,qBAWhE"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var React = require('react');
|
|
4
|
-
var tailwindMerge = require('tailwind-merge');
|
|
5
|
-
|
|
6
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
-
|
|
8
|
-
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* A component that signifies loading status.
|
|
12
|
-
*
|
|
13
|
-
* @internal
|
|
14
|
-
*/
|
|
15
|
-
function LoadingDots({ className }) {
|
|
16
|
-
return (React__default.default.createElement("div", { "aria-label": "Loading Indicator", className: tailwindMerge.twMerge("flex gap-1 p-2 animate-fade-in", className) },
|
|
17
|
-
React__default.default.createElement("div", { className: "w-2 h-2 bg-slate-500 rounded-full animate-[bounce_1s_infinite]" }),
|
|
18
|
-
React__default.default.createElement("div", { className: "w-2 h-2 bg-slate-500 rounded-full animate-[bounce_1s_infinite_0.3s]" }),
|
|
19
|
-
React__default.default.createElement("div", { className: "w-2 h-2 bg-slate-500 rounded-full animate-[bounce_1s_infinite_0.6s]" })));
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
exports.LoadingDots = LoadingDots;
|
|
23
|
-
//# sourceMappingURL=LoadingDots.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LoadingDots.js","sources":["../../../../src/components/LoadingDots.tsx"],"sourcesContent":["import React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * A component that signifies loading status.\n *\n * @internal\n */\nexport function LoadingDots({ className }: { className?: string }) {\n return (\n <div\n aria-label=\"Loading Indicator\"\n className={twMerge(\"flex gap-1 p-2 animate-fade-in\", className)}\n >\n <div className=\"w-2 h-2 bg-slate-500 rounded-full animate-[bounce_1s_infinite]\" />\n <div className=\"w-2 h-2 bg-slate-500 rounded-full animate-[bounce_1s_infinite_0.3s]\" />\n <div className=\"w-2 h-2 bg-slate-500 rounded-full animate-[bounce_1s_infinite_0.6s]\" />\n </div>\n );\n}\n"],"names":["React","twMerge"],"mappings":";;;;;;;;;AAGA;;;;AAIG;AACa,SAAA,WAAW,CAAC,EAAE,SAAS,EAA0B,EAAA;IAC/D,QACEA,sBACa,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,YAAA,EAAA,mBAAmB,EAC9B,SAAS,EAAEC,qBAAO,CAAC,gCAAgC,EAAE,SAAS,CAAC,EAAA;QAE/DD,sBAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,gEAAgE,EAAG,CAAA;QAClFA,sBAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,qEAAqE,EAAG,CAAA;AACvF,QAAAA,sBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qEAAqE,EAAG,CAAA,CACnF,EACN;AACJ;;;;"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
/**
|
|
3
|
-
* The CSS class interface for the Markdown component.
|
|
4
|
-
*
|
|
5
|
-
* @internal
|
|
6
|
-
*/
|
|
7
|
-
export interface MarkdownCssClasses {
|
|
8
|
-
container?: string;
|
|
9
|
-
link?: string;
|
|
10
|
-
}
|
|
11
|
-
interface MarkdownProps {
|
|
12
|
-
/** Stringified markdown. */
|
|
13
|
-
content: string;
|
|
14
|
-
/** The response ID correlates to the current message. */
|
|
15
|
-
responseId?: string;
|
|
16
|
-
/** CSS classes for customizing the component styling. */
|
|
17
|
-
customCssClasses?: MarkdownCssClasses;
|
|
18
|
-
/**
|
|
19
|
-
* Action to report for analytics event when a link is clicked.
|
|
20
|
-
* Defaults to 'CHAT_LINK_CLICK'.
|
|
21
|
-
*/
|
|
22
|
-
linkClickEvent?: "WEBSITE" | "CHAT_LINK_CLICK";
|
|
23
|
-
/** Link target open behavior on click. */
|
|
24
|
-
linkTarget?: string;
|
|
25
|
-
/** A callback which is called when a link is clicked. */
|
|
26
|
-
onLinkClick?: (href?: string) => void;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Renders Github-Flavored Markdown from the Knowledge Graph. This Markdown can include
|
|
30
|
-
* arbitrary HTML. Any HTML will be sanitized according to Rehype's default Schema.
|
|
31
|
-
*
|
|
32
|
-
* @remarks
|
|
33
|
-
* A link click will send a CHAT_LINK_CLICK analytics event
|
|
34
|
-
*
|
|
35
|
-
* @internal
|
|
36
|
-
*/
|
|
37
|
-
export declare function Markdown({ content, responseId, customCssClasses, linkClickEvent, linkTarget, onLinkClick, }: MarkdownProps): React.JSX.Element;
|
|
38
|
-
export {};
|
|
39
|
-
//# sourceMappingURL=Markdown.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../../../src/components/Markdown.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAevC;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAMD,UAAU,aAAa;IACrB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,kBAAkB,CAAC;IACtC;;;OAGG;IACH,cAAc,CAAC,EAAE,SAAS,GAAG,iBAAiB,CAAC;IAC/C,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,UAAU,EACV,gBAAgB,EAChB,cAAkC,EAClC,UAAU,EACV,WAAW,GACZ,EAAE,aAAa,qBAgDf"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var ReactMarkdown = require('react-markdown');
|
|
4
|
-
var remarkGfm = require('remark-gfm');
|
|
5
|
-
var rehypeRaw = require('rehype-raw');
|
|
6
|
-
var rehypeSanitize = require('rehype-sanitize');
|
|
7
|
-
var React = require('react');
|
|
8
|
-
var useReportAnalyticsEvent = require('../hooks/useReportAnalyticsEvent.js');
|
|
9
|
-
var useComposedCssClasses = require('../hooks/useComposedCssClasses.js');
|
|
10
|
-
|
|
11
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
-
|
|
13
|
-
var ReactMarkdown__default = /*#__PURE__*/_interopDefault(ReactMarkdown);
|
|
14
|
-
var remarkGfm__default = /*#__PURE__*/_interopDefault(remarkGfm);
|
|
15
|
-
var rehypeRaw__default = /*#__PURE__*/_interopDefault(rehypeRaw);
|
|
16
|
-
var rehypeSanitize__default = /*#__PURE__*/_interopDefault(rehypeSanitize);
|
|
17
|
-
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
18
|
-
|
|
19
|
-
// The Remark and Rehype plugins to use in conjunction with ReactMarkdown.
|
|
20
|
-
const unifiedPlugins = {
|
|
21
|
-
remark: [
|
|
22
|
-
remarkGfm__default.default, //renders Github-Flavored Markdown
|
|
23
|
-
],
|
|
24
|
-
rehype: [
|
|
25
|
-
rehypeRaw__default.default,
|
|
26
|
-
rehypeSanitize__default.default, //to sanitize HTML content
|
|
27
|
-
],
|
|
28
|
-
};
|
|
29
|
-
const builtInCssClasses = {
|
|
30
|
-
link: "cursor-pointer",
|
|
31
|
-
};
|
|
32
|
-
/**
|
|
33
|
-
* Renders Github-Flavored Markdown from the Knowledge Graph. This Markdown can include
|
|
34
|
-
* arbitrary HTML. Any HTML will be sanitized according to Rehype's default Schema.
|
|
35
|
-
*
|
|
36
|
-
* @remarks
|
|
37
|
-
* A link click will send a CHAT_LINK_CLICK analytics event
|
|
38
|
-
*
|
|
39
|
-
* @internal
|
|
40
|
-
*/
|
|
41
|
-
function Markdown({ content, responseId, customCssClasses, linkClickEvent = "CHAT_LINK_CLICK", linkTarget, onLinkClick, }) {
|
|
42
|
-
const reportAnalyticsEvent = useReportAnalyticsEvent.useReportAnalyticsEvent();
|
|
43
|
-
const cssClasses = useComposedCssClasses.useComposedCssClasses(builtInCssClasses, customCssClasses);
|
|
44
|
-
const components = React.useMemo(() => {
|
|
45
|
-
const createClickHandlerFn = (href) => () => {
|
|
46
|
-
reportAnalyticsEvent({
|
|
47
|
-
action: linkClickEvent,
|
|
48
|
-
destinationUrl: href,
|
|
49
|
-
chat: {
|
|
50
|
-
responseId,
|
|
51
|
-
},
|
|
52
|
-
});
|
|
53
|
-
onLinkClick?.(href);
|
|
54
|
-
};
|
|
55
|
-
return {
|
|
56
|
-
a: ({ node: _, children, ...props }) => {
|
|
57
|
-
return (React__default.default.createElement("a", { ...props, onClick: createClickHandlerFn(props.href), target: linkTarget, rel: "noopener noreferrer", className: cssClasses.link }, children));
|
|
58
|
-
},
|
|
59
|
-
};
|
|
60
|
-
}, [
|
|
61
|
-
reportAnalyticsEvent,
|
|
62
|
-
linkClickEvent,
|
|
63
|
-
responseId,
|
|
64
|
-
cssClasses,
|
|
65
|
-
linkTarget,
|
|
66
|
-
onLinkClick,
|
|
67
|
-
]);
|
|
68
|
-
return (React__default.default.createElement(ReactMarkdown__default.default, { className: cssClasses.container, children: content, remarkPlugins: unifiedPlugins.remark, rehypePlugins: unifiedPlugins.rehype, components: components }));
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
exports.Markdown = Markdown;
|
|
72
|
-
//# sourceMappingURL=Markdown.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Markdown.js","sources":["../../../../src/components/Markdown.tsx"],"sourcesContent":["import ReactMarkdown, {\n PluggableList,\n ReactMarkdownOptions,\n} from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport rehypeRaw from \"rehype-raw\";\nimport rehypeSanitize from \"rehype-sanitize\";\nimport React, { useMemo } from \"react\";\nimport { useReportAnalyticsEvent } from \"../hooks/useReportAnalyticsEvent\";\nimport { useComposedCssClasses } from \"../hooks/useComposedCssClasses\";\n\n// The Remark and Rehype plugins to use in conjunction with ReactMarkdown.\nconst unifiedPlugins: { remark?: PluggableList; rehype: PluggableList } = {\n remark: [\n remarkGfm, //renders Github-Flavored Markdown\n ],\n rehype: [\n rehypeRaw, //to support HTML embedded in markdown\n rehypeSanitize, //to sanitize HTML content\n ],\n};\n\n/**\n * The CSS class interface for the Markdown component.\n *\n * @internal\n */\nexport interface MarkdownCssClasses {\n container?: string;\n link?: string;\n}\n\nconst builtInCssClasses: MarkdownCssClasses = {\n link: \"cursor-pointer\",\n};\n\ninterface MarkdownProps {\n /** Stringified markdown. */\n content: string;\n /** The response ID correlates to the current message. */\n responseId?: string;\n /** CSS classes for customizing the component styling. */\n customCssClasses?: MarkdownCssClasses;\n /**\n * Action to report for analytics event when a link is clicked.\n * Defaults to 'CHAT_LINK_CLICK'.\n */\n linkClickEvent?: \"WEBSITE\" | \"CHAT_LINK_CLICK\";\n /** Link target open behavior on click. */\n linkTarget?: string;\n /** A callback which is called when a link is clicked. */\n onLinkClick?: (href?: string) => void;\n}\n\n/**\n * Renders Github-Flavored Markdown from the Knowledge Graph. This Markdown can include\n * arbitrary HTML. Any HTML will be sanitized according to Rehype's default Schema.\n *\n * @remarks\n * A link click will send a CHAT_LINK_CLICK analytics event\n *\n * @internal\n */\nexport function Markdown({\n content,\n responseId,\n customCssClasses,\n linkClickEvent = \"CHAT_LINK_CLICK\",\n linkTarget,\n onLinkClick,\n}: MarkdownProps) {\n const reportAnalyticsEvent = useReportAnalyticsEvent();\n const cssClasses = useComposedCssClasses(builtInCssClasses, customCssClasses);\n\n const components: ReactMarkdownOptions[\"components\"] = useMemo(() => {\n const createClickHandlerFn = (href?: string) => () => {\n reportAnalyticsEvent({\n action: linkClickEvent,\n destinationUrl: href,\n chat: {\n responseId,\n },\n });\n onLinkClick?.(href);\n };\n return {\n a: ({ node: _, children, ...props }) => {\n return (\n <a\n {...props}\n onClick={createClickHandlerFn(props.href)}\n target={linkTarget}\n rel=\"noopener noreferrer\"\n className={cssClasses.link}\n >\n {children}\n </a>\n );\n },\n };\n }, [\n reportAnalyticsEvent,\n linkClickEvent,\n responseId,\n cssClasses,\n linkTarget,\n onLinkClick,\n ]);\n\n return (\n <ReactMarkdown\n className={cssClasses.container}\n children={content}\n remarkPlugins={unifiedPlugins.remark}\n rehypePlugins={unifiedPlugins.rehype}\n components={components}\n />\n );\n}\n"],"names":["remarkGfm","rehypeRaw","rehypeSanitize","useReportAnalyticsEvent","useComposedCssClasses","useMemo","React","ReactMarkdown"],"mappings":";;;;;;;;;;;;;;;;;;AAWA;AACA,MAAM,cAAc,GAAsD;AACxE,IAAA,MAAM,EAAE;AACN,QAAAA,0BAAS;AACV,KAAA;AACD,IAAA,MAAM,EAAE;QACNC,0BAAS;AACT,QAAAC,+BAAc;AACf,KAAA;CACF,CAAC;AAYF,MAAM,iBAAiB,GAAuB;AAC5C,IAAA,IAAI,EAAE,gBAAgB;CACvB,CAAC;AAoBF;;;;;;;;AAQG;SACa,QAAQ,CAAC,EACvB,OAAO,EACP,UAAU,EACV,gBAAgB,EAChB,cAAc,GAAG,iBAAiB,EAClC,UAAU,EACV,WAAW,GACG,EAAA;AACd,IAAA,MAAM,oBAAoB,GAAGC,+CAAuB,EAAE,CAAC;IACvD,MAAM,UAAU,GAAGC,2CAAqB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;AAE9E,IAAA,MAAM,UAAU,GAAuCC,aAAO,CAAC,MAAK;QAClE,MAAM,oBAAoB,GAAG,CAAC,IAAa,KAAK,MAAK;AACnD,YAAA,oBAAoB,CAAC;AACnB,gBAAA,MAAM,EAAE,cAAc;AACtB,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,IAAI,EAAE;oBACJ,UAAU;AACX,iBAAA;AACF,aAAA,CAAC,CAAC;AACH,YAAA,WAAW,GAAG,IAAI,CAAC,CAAC;AACtB,SAAC,CAAC;QACF,OAAO;AACL,YAAA,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,KAAI;AACrC,gBAAA,QACEC,sBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,GACM,KAAK,EACT,OAAO,EAAE,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,EACzC,MAAM,EAAE,UAAU,EAClB,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAE,UAAU,CAAC,IAAI,EAAA,EAEzB,QAAQ,CACP,EACJ;aACH;SACF,CAAC;AACJ,KAAC,EAAE;QACD,oBAAoB;QACpB,cAAc;QACd,UAAU;QACV,UAAU;QACV,UAAU;QACV,WAAW;AACZ,KAAA,CAAC,CAAC;AAEH,IAAA,QACEA,sBAAA,CAAA,aAAA,CAACC,8BAAa,EAAA,EACZ,SAAS,EAAE,UAAU,CAAC,SAAS,EAC/B,QAAQ,EAAE,OAAO,EACjB,aAAa,EAAE,cAAc,CAAC,MAAM,EACpC,aAAa,EAAE,cAAc,CAAC,MAAM,EACpC,UAAU,EAAE,UAAU,EAAA,CACtB,EACF;AACJ;;;;"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { Message } from "@yext/chat-headless-react";
|
|
3
|
-
import { FeedbackButtonsCssClasses } from "./FeedbackButtons";
|
|
4
|
-
/**
|
|
5
|
-
* The CSS class interface for the {@link MessageBubble} component.
|
|
6
|
-
*
|
|
7
|
-
* @public
|
|
8
|
-
*/
|
|
9
|
-
export interface MessageBubbleCssClasses {
|
|
10
|
-
topContainer?: string;
|
|
11
|
-
subContainer?: string;
|
|
12
|
-
subContainer__bot?: string;
|
|
13
|
-
subContainer__user?: string;
|
|
14
|
-
bubble?: string;
|
|
15
|
-
bubble__bot?: string;
|
|
16
|
-
bubble__user?: string;
|
|
17
|
-
text?: string;
|
|
18
|
-
text__bot?: string;
|
|
19
|
-
text__user?: string;
|
|
20
|
-
timestamp?: string;
|
|
21
|
-
timestamp__bot?: string;
|
|
22
|
-
timestamp__user?: string;
|
|
23
|
-
feedbackButtonsCssClasses?: FeedbackButtonsCssClasses;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* The props for the {@link MessageBubble} component.
|
|
27
|
-
*
|
|
28
|
-
* @public
|
|
29
|
-
*/
|
|
30
|
-
export interface MessageBubbleProps {
|
|
31
|
-
/** The message to display. */
|
|
32
|
-
message: Message;
|
|
33
|
-
/**
|
|
34
|
-
* Whether to show the feedback buttons on the message bubble.
|
|
35
|
-
* Defaults to true.
|
|
36
|
-
*/
|
|
37
|
-
showFeedbackButtons?: boolean;
|
|
38
|
-
/**
|
|
39
|
-
* Whether to show the timestamp of the message with the message bubble.
|
|
40
|
-
* Defaults to true.
|
|
41
|
-
*/
|
|
42
|
-
showTimestamp?: boolean;
|
|
43
|
-
/**
|
|
44
|
-
* A function which is called to format the message's timestamp given in
|
|
45
|
-
* ISO format (e.g. "2023-05-18T19:33:34.553Z").
|
|
46
|
-
* Defaults to "HH:MM A" (e.g. "7:33 PM").
|
|
47
|
-
*/
|
|
48
|
-
formatTimestamp?: (timestamp: string) => string;
|
|
49
|
-
/** CSS classes for customizing the component styling. */
|
|
50
|
-
customCssClasses?: MessageBubbleCssClasses;
|
|
51
|
-
/** Link target open behavior on click. */
|
|
52
|
-
linkTarget?: string;
|
|
53
|
-
/** A callback which is called when user clicks a link. */
|
|
54
|
-
onLinkClick?: (href?: string) => void;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* A component that displays the provided message.
|
|
58
|
-
*
|
|
59
|
-
* @public
|
|
60
|
-
*
|
|
61
|
-
* @param props - {@link MessageBubbleProps}
|
|
62
|
-
*/
|
|
63
|
-
export declare function MessageBubble({ message, showFeedbackButtons, showTimestamp, customCssClasses, formatTimestamp, linkTarget, onLinkClick, }: MessageBubbleProps): React.JSX.Element;
|
|
64
|
-
//# sourceMappingURL=MessageBubble.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MessageBubble.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageBubble.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,OAAO,EAAiB,MAAM,2BAA2B,CAAC;AAKnE,OAAO,EAAmB,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE/E;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;CACvD;AAuBD;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,8BAA8B;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAChD,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,mBAA0B,EAC1B,aAAoB,EACpB,gBAAgB,EAChB,eAAwC,EACxC,UAAU,EACV,WAAW,GACZ,EAAE,kBAAkB,qBA6DpB"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var React = require('react');
|
|
4
|
-
var chatHeadlessReact = require('@yext/chat-headless-react');
|
|
5
|
-
var useComposedCssClasses = require('../hooks/useComposedCssClasses.js');
|
|
6
|
-
var tailwindMerge = require('tailwind-merge');
|
|
7
|
-
var Markdown = require('./Markdown.js');
|
|
8
|
-
var withStylelessCssClasses = require('../utils/withStylelessCssClasses.js');
|
|
9
|
-
var FeedbackButtons = require('./FeedbackButtons.js');
|
|
10
|
-
|
|
11
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
-
|
|
13
|
-
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
14
|
-
|
|
15
|
-
const builtInCssClasses = withStylelessCssClasses.withStylelessCssClasses("MessageBubble", {
|
|
16
|
-
topContainer: "w-full animate-fade-in @container",
|
|
17
|
-
subContainer: "flex flex-col @lg:flex-row @lg:items-center @lg:gap-x-2 @lg:m-1",
|
|
18
|
-
subContainer__bot: "",
|
|
19
|
-
subContainer__user: "@lg:flex-row-reverse",
|
|
20
|
-
bubble: "relative group peer w-fit max-w-[80%] rounded-2xl p-4",
|
|
21
|
-
bubble__bot: "bg-gradient-to-tr from-slate-50 to-slate-100",
|
|
22
|
-
bubble__user: "ml-auto @lg:ml-0 bg-gradient-to-tr from-blue-600 to-blue-700 text-white",
|
|
23
|
-
text: "text-[13px] @[480px]:text-base prose overflow-x-auto",
|
|
24
|
-
text__bot: "text-slate-900",
|
|
25
|
-
text__user: "text-white break-words",
|
|
26
|
-
timestamp: "w-fit ml-4 @lg:ml-0 text-slate-400 text-[10px] @[480px]:text-[13px] opacity-0 peer-hover:opacity-100 duration-200 whitespace-pre-wrap",
|
|
27
|
-
timestamp__bot: "",
|
|
28
|
-
timestamp__user: "ml-auto",
|
|
29
|
-
feedbackButtonsCssClasses: {},
|
|
30
|
-
});
|
|
31
|
-
/**
|
|
32
|
-
* A component that displays the provided message.
|
|
33
|
-
*
|
|
34
|
-
* @public
|
|
35
|
-
*
|
|
36
|
-
* @param props - {@link MessageBubbleProps}
|
|
37
|
-
*/
|
|
38
|
-
function MessageBubble({ message, showFeedbackButtons = true, showTimestamp = true, customCssClasses, formatTimestamp = defaultFormatTimestamp, linkTarget, onLinkClick, }) {
|
|
39
|
-
const cssClasses = useComposedCssClasses.useComposedCssClasses(builtInCssClasses, customCssClasses);
|
|
40
|
-
const bubbleCssClasses = tailwindMerge.twMerge(cssClasses.bubble, message.source === chatHeadlessReact.MessageSource.USER
|
|
41
|
-
? cssClasses.bubble__user
|
|
42
|
-
: cssClasses.bubble__bot);
|
|
43
|
-
const textCssClasses = tailwindMerge.twMerge(cssClasses.text, message.source === chatHeadlessReact.MessageSource.USER
|
|
44
|
-
? cssClasses.text__user
|
|
45
|
-
: cssClasses.text__bot);
|
|
46
|
-
const subContainerCssClasses = tailwindMerge.twMerge(cssClasses.subContainer, message.source === chatHeadlessReact.MessageSource.USER
|
|
47
|
-
? cssClasses.subContainer__user
|
|
48
|
-
: cssClasses.subContainer__bot);
|
|
49
|
-
const timestampCssClasses = tailwindMerge.twMerge(cssClasses.timestamp, message.source === chatHeadlessReact.MessageSource.USER
|
|
50
|
-
? cssClasses.timestamp__user
|
|
51
|
-
: cssClasses.timestamp__bot);
|
|
52
|
-
const markdownCssClasses = React.useMemo(() => ({
|
|
53
|
-
container: textCssClasses,
|
|
54
|
-
}), [textCssClasses]);
|
|
55
|
-
return (React__default.default.createElement("div", { className: cssClasses.topContainer },
|
|
56
|
-
React__default.default.createElement("div", { className: subContainerCssClasses },
|
|
57
|
-
React__default.default.createElement("div", { className: bubbleCssClasses },
|
|
58
|
-
showFeedbackButtons && message.source === chatHeadlessReact.MessageSource.BOT && (React__default.default.createElement(FeedbackButtons.FeedbackButtons, { customCssClasses: cssClasses.feedbackButtonsCssClasses, responseId: message.responseId })),
|
|
59
|
-
React__default.default.createElement(Markdown.Markdown, { content: message.text, responseId: message.responseId, customCssClasses: markdownCssClasses, linkTarget: linkTarget, onLinkClick: onLinkClick })),
|
|
60
|
-
showTimestamp && (React__default.default.createElement("div", { className: timestampCssClasses }, message.timestamp ? formatTimestamp(message.timestamp) : " ")))));
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Formats message's timestamp from "2023-05-18T19:33:34.553Z" to "7:33 PM"
|
|
64
|
-
*
|
|
65
|
-
* @param timestamp - the timestamp to convert from
|
|
66
|
-
* @returns formatted timestamp
|
|
67
|
-
*/
|
|
68
|
-
function defaultFormatTimestamp(timestamp) {
|
|
69
|
-
return new Date(timestamp).toLocaleString(undefined, {
|
|
70
|
-
hour: "numeric",
|
|
71
|
-
minute: "numeric",
|
|
72
|
-
hour12: true,
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
exports.MessageBubble = MessageBubble;
|
|
77
|
-
//# sourceMappingURL=MessageBubble.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MessageBubble.js","sources":["../../../../src/components/MessageBubble.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { Message, MessageSource } from \"@yext/chat-headless-react\";\nimport { useComposedCssClasses } from \"../hooks\";\nimport { twMerge } from \"tailwind-merge\";\nimport { Markdown, MarkdownCssClasses } from \"./Markdown\";\nimport { withStylelessCssClasses } from \"../utils/withStylelessCssClasses\";\nimport { FeedbackButtons, FeedbackButtonsCssClasses } from \"./FeedbackButtons\";\n\n/**\n * The CSS class interface for the {@link MessageBubble} component.\n *\n * @public\n */\nexport interface MessageBubbleCssClasses {\n topContainer?: string;\n subContainer?: string;\n subContainer__bot?: string;\n subContainer__user?: string;\n bubble?: string;\n bubble__bot?: string;\n bubble__user?: string;\n text?: string;\n text__bot?: string;\n text__user?: string;\n timestamp?: string;\n timestamp__bot?: string;\n timestamp__user?: string;\n feedbackButtonsCssClasses?: FeedbackButtonsCssClasses;\n}\n\nconst builtInCssClasses: MessageBubbleCssClasses =\n withStylelessCssClasses<MessageBubbleCssClasses>(\"MessageBubble\", {\n topContainer: \"w-full animate-fade-in @container\",\n subContainer:\n \"flex flex-col @lg:flex-row @lg:items-center @lg:gap-x-2 @lg:m-1\",\n subContainer__bot: \"\",\n subContainer__user: \"@lg:flex-row-reverse\",\n bubble: \"relative group peer w-fit max-w-[80%] rounded-2xl p-4\",\n bubble__bot: \"bg-gradient-to-tr from-slate-50 to-slate-100\",\n bubble__user:\n \"ml-auto @lg:ml-0 bg-gradient-to-tr from-blue-600 to-blue-700 text-white\",\n text: \"text-[13px] @[480px]:text-base prose overflow-x-auto\",\n text__bot: \"text-slate-900\",\n text__user: \"text-white break-words\",\n timestamp:\n \"w-fit ml-4 @lg:ml-0 text-slate-400 text-[10px] @[480px]:text-[13px] opacity-0 peer-hover:opacity-100 duration-200 whitespace-pre-wrap\",\n timestamp__bot: \"\",\n timestamp__user: \"ml-auto\",\n feedbackButtonsCssClasses: {},\n });\n\n/**\n * The props for the {@link MessageBubble} component.\n *\n * @public\n */\nexport interface MessageBubbleProps {\n /** The message to display. */\n message: Message;\n /**\n * Whether to show the feedback buttons on the message bubble.\n * Defaults to true.\n */\n showFeedbackButtons?: boolean;\n /**\n * Whether to show the timestamp of the message with the message bubble.\n * Defaults to true.\n */\n showTimestamp?: boolean;\n /**\n * A function which is called to format the message's timestamp given in\n * ISO format (e.g. \"2023-05-18T19:33:34.553Z\").\n * Defaults to \"HH:MM A\" (e.g. \"7:33 PM\").\n */\n formatTimestamp?: (timestamp: string) => string;\n /** CSS classes for customizing the component styling. */\n customCssClasses?: MessageBubbleCssClasses;\n /** Link target open behavior on click. */\n linkTarget?: string;\n /** A callback which is called when user clicks a link. */\n onLinkClick?: (href?: string) => void;\n}\n\n/**\n * A component that displays the provided message.\n *\n * @public\n *\n * @param props - {@link MessageBubbleProps}\n */\nexport function MessageBubble({\n message,\n showFeedbackButtons = true,\n showTimestamp = true,\n customCssClasses,\n formatTimestamp = defaultFormatTimestamp,\n linkTarget,\n onLinkClick,\n}: MessageBubbleProps) {\n const cssClasses = useComposedCssClasses(builtInCssClasses, customCssClasses);\n const bubbleCssClasses = twMerge(\n cssClasses.bubble,\n message.source === MessageSource.USER\n ? cssClasses.bubble__user\n : cssClasses.bubble__bot\n );\n const textCssClasses = twMerge(\n cssClasses.text,\n message.source === MessageSource.USER\n ? cssClasses.text__user\n : cssClasses.text__bot\n );\n const subContainerCssClasses = twMerge(\n cssClasses.subContainer,\n message.source === MessageSource.USER\n ? cssClasses.subContainer__user\n : cssClasses.subContainer__bot\n );\n const timestampCssClasses = twMerge(\n cssClasses.timestamp,\n message.source === MessageSource.USER\n ? cssClasses.timestamp__user\n : cssClasses.timestamp__bot\n );\n\n const markdownCssClasses: MarkdownCssClasses = useMemo(\n () => ({\n container: textCssClasses,\n }),\n [textCssClasses]\n );\n\n return (\n <div className={cssClasses.topContainer}>\n <div className={subContainerCssClasses}>\n <div className={bubbleCssClasses}>\n {showFeedbackButtons && message.source === MessageSource.BOT && (\n <FeedbackButtons\n customCssClasses={cssClasses.feedbackButtonsCssClasses}\n responseId={message.responseId}\n />\n )}\n <Markdown\n content={message.text}\n responseId={message.responseId}\n customCssClasses={markdownCssClasses}\n linkTarget={linkTarget}\n onLinkClick={onLinkClick}\n />\n </div>\n {/* fallback on empty space here to perserve the height for timestamp div */}\n {showTimestamp && (\n <div className={timestampCssClasses}>\n {message.timestamp ? formatTimestamp(message.timestamp) : \" \"}\n </div>\n )}\n </div>\n </div>\n );\n}\n\n/**\n * Formats message's timestamp from \"2023-05-18T19:33:34.553Z\" to \"7:33 PM\"\n *\n * @param timestamp - the timestamp to convert from\n * @returns formatted timestamp\n */\nfunction defaultFormatTimestamp(timestamp: string): string {\n return new Date(timestamp).toLocaleString(undefined, {\n hour: \"numeric\",\n minute: \"numeric\",\n hour12: true,\n });\n}\n"],"names":["withStylelessCssClasses","useComposedCssClasses","twMerge","MessageSource","useMemo","React","FeedbackButtons","Markdown"],"mappings":";;;;;;;;;;;;;;AA8BA,MAAM,iBAAiB,GACrBA,+CAAuB,CAA0B,eAAe,EAAE;AAChE,IAAA,YAAY,EAAE,mCAAmC;AACjD,IAAA,YAAY,EACV,iEAAiE;AACnE,IAAA,iBAAiB,EAAE,EAAE;AACrB,IAAA,kBAAkB,EAAE,sBAAsB;AAC1C,IAAA,MAAM,EAAE,uDAAuD;AAC/D,IAAA,WAAW,EAAE,8CAA8C;AAC3D,IAAA,YAAY,EACV,yEAAyE;AAC3E,IAAA,IAAI,EAAE,sDAAsD;AAC5D,IAAA,SAAS,EAAE,gBAAgB;AAC3B,IAAA,UAAU,EAAE,wBAAwB;AACpC,IAAA,SAAS,EACP,uIAAuI;AACzI,IAAA,cAAc,EAAE,EAAE;AAClB,IAAA,eAAe,EAAE,SAAS;AAC1B,IAAA,yBAAyB,EAAE,EAAE;AAC9B,CAAA,CAAC,CAAC;AAkCL;;;;;;AAMG;AACG,SAAU,aAAa,CAAC,EAC5B,OAAO,EACP,mBAAmB,GAAG,IAAI,EAC1B,aAAa,GAAG,IAAI,EACpB,gBAAgB,EAChB,eAAe,GAAG,sBAAsB,EACxC,UAAU,EACV,WAAW,GACQ,EAAA;IACnB,MAAM,UAAU,GAAGC,2CAAqB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;AAC9E,IAAA,MAAM,gBAAgB,GAAGC,qBAAO,CAC9B,UAAU,CAAC,MAAM,EACjB,OAAO,CAAC,MAAM,KAAKC,+BAAa,CAAC,IAAI;UACjC,UAAU,CAAC,YAAY;AACzB,UAAE,UAAU,CAAC,WAAW,CAC3B,CAAC;AACF,IAAA,MAAM,cAAc,GAAGD,qBAAO,CAC5B,UAAU,CAAC,IAAI,EACf,OAAO,CAAC,MAAM,KAAKC,+BAAa,CAAC,IAAI;UACjC,UAAU,CAAC,UAAU;AACvB,UAAE,UAAU,CAAC,SAAS,CACzB,CAAC;AACF,IAAA,MAAM,sBAAsB,GAAGD,qBAAO,CACpC,UAAU,CAAC,YAAY,EACvB,OAAO,CAAC,MAAM,KAAKC,+BAAa,CAAC,IAAI;UACjC,UAAU,CAAC,kBAAkB;AAC/B,UAAE,UAAU,CAAC,iBAAiB,CACjC,CAAC;AACF,IAAA,MAAM,mBAAmB,GAAGD,qBAAO,CACjC,UAAU,CAAC,SAAS,EACpB,OAAO,CAAC,MAAM,KAAKC,+BAAa,CAAC,IAAI;UACjC,UAAU,CAAC,eAAe;AAC5B,UAAE,UAAU,CAAC,cAAc,CAC9B,CAAC;AAEF,IAAA,MAAM,kBAAkB,GAAuBC,aAAO,CACpD,OAAO;AACL,QAAA,SAAS,EAAE,cAAc;AAC1B,KAAA,CAAC,EACF,CAAC,cAAc,CAAC,CACjB,CAAC;AAEF,IAAA,QACEC,sBAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,UAAU,CAAC,YAAY,EAAA;QACrCA,sBAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,sBAAsB,EAAA;YACpCA,sBAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,gBAAgB,EAAA;gBAC7B,mBAAmB,IAAI,OAAO,CAAC,MAAM,KAAKF,+BAAa,CAAC,GAAG,KAC1DE,sBAAC,CAAA,aAAA,CAAAC,+BAAe,IACd,gBAAgB,EAAE,UAAU,CAAC,yBAAyB,EACtD,UAAU,EAAE,OAAO,CAAC,UAAU,EAAA,CAC9B,CACH;gBACDD,sBAAC,CAAA,aAAA,CAAAE,iBAAQ,EACP,EAAA,OAAO,EAAE,OAAO,CAAC,IAAI,EACrB,UAAU,EAAE,OAAO,CAAC,UAAU,EAC9B,gBAAgB,EAAE,kBAAkB,EACpC,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EAAA,CACxB,CACE;AAEL,YAAA,aAAa,KACZF,sBAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,mBAAmB,EAChC,EAAA,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,CACzD,CACP,CACG,CACF,EACN;AACJ,CAAC;AAED;;;;;AAKG;AACH,SAAS,sBAAsB,CAAC,SAAiB,EAAA;IAC/C,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE;AACnD,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,MAAM,EAAE,IAAI;AACb,KAAA,CAAC,CAAC;AACL;;;;"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
/**
|
|
3
|
-
* The CSS class interface for the MessageSuggestion component.
|
|
4
|
-
*
|
|
5
|
-
* @public
|
|
6
|
-
*/
|
|
7
|
-
export interface MessageSuggestionCssClasses {
|
|
8
|
-
container?: string;
|
|
9
|
-
suggestion?: string;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* The props for the MessageSuggestions component.
|
|
13
|
-
*
|
|
14
|
-
* @public
|
|
15
|
-
*/
|
|
16
|
-
export interface MessageSuggestionsProps {
|
|
17
|
-
/** List of clickable message suggestions to render. */
|
|
18
|
-
suggestions: string[];
|
|
19
|
-
/** {@inheritdoc ChatInputProps.handleError} */
|
|
20
|
-
handleError?: (e: unknown) => void;
|
|
21
|
-
/** CSS classes for customizing the component styling. */
|
|
22
|
-
customCssClasses?: MessageSuggestionCssClasses;
|
|
23
|
-
/** {@inheritdoc ChatInputProps.stream} */
|
|
24
|
-
stream?: boolean;
|
|
25
|
-
/** {@inheritdoc ChatInputProps.onSend} */
|
|
26
|
-
onSend?: (message: string) => void;
|
|
27
|
-
/** {@inheritdoc ChatInputProps.onRetry} */
|
|
28
|
-
onRetry?: (e: unknown) => void;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* A component that displays a list of suggested messages
|
|
32
|
-
* to the user, which they can click to send the message to the bot.
|
|
33
|
-
*
|
|
34
|
-
* @internal
|
|
35
|
-
*/
|
|
36
|
-
export declare const MessageSuggestions: React.FC<MessageSuggestionsProps>;
|
|
37
|
-
//# sourceMappingURL=MessageSuggestions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MessageSuggestions.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageSuggestions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAW3C;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,uDAAuD;IACvD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;IAC/C,0CAA0C;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,2CAA2C;IAC3C,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAChC;AAWD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAmDhE,CAAC"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var React = require('react');
|
|
4
|
-
var chatHeadlessReact = require('@yext/chat-headless-react');
|
|
5
|
-
var useDefaultHandleApiError = require('../hooks/useDefaultHandleApiError.js');
|
|
6
|
-
var withStylelessCssClasses = require('../utils/withStylelessCssClasses.js');
|
|
7
|
-
var useComposedCssClasses = require('../hooks/useComposedCssClasses.js');
|
|
8
|
-
var useSendMessageWithRetries = require('../hooks/useSendMessageWithRetries.js');
|
|
9
|
-
|
|
10
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
-
|
|
12
|
-
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
13
|
-
|
|
14
|
-
const defaultClassnames = withStylelessCssClasses.withStylelessCssClasses("Suggestions", {
|
|
15
|
-
container: "flex gap-2 mb-4 w-full overflow-x-auto flex-wrap",
|
|
16
|
-
suggestion: "hover:cursor-pointer px-2 py-1 bg-white hover:bg-slate-300 rounded-full text-sm text-blue-700 border border-blue-700 hover:underline",
|
|
17
|
-
});
|
|
18
|
-
/**
|
|
19
|
-
* A component that displays a list of suggested messages
|
|
20
|
-
* to the user, which they can click to send the message to the bot.
|
|
21
|
-
*
|
|
22
|
-
* @internal
|
|
23
|
-
*/
|
|
24
|
-
const MessageSuggestions = ({ handleError, suggestions, customCssClasses, stream = false, onSend, onRetry, }) => {
|
|
25
|
-
const actions = chatHeadlessReact.useChatActions();
|
|
26
|
-
const notes = chatHeadlessReact.useChatState((state) => state.conversation.notes);
|
|
27
|
-
const defaultHandleApiError = useDefaultHandleApiError.useDefaultHandleApiError();
|
|
28
|
-
const sendMessageWithRetries = useSendMessageWithRetries.useSendMessageWithRetries(stream, 1, onRetry);
|
|
29
|
-
const sendMsg = React.useCallback((msg) => {
|
|
30
|
-
const newNotes = {
|
|
31
|
-
...(notes || {}),
|
|
32
|
-
suggestedReplies: undefined,
|
|
33
|
-
};
|
|
34
|
-
actions.setMessageNotes(newNotes);
|
|
35
|
-
sendMessageWithRetries(msg)
|
|
36
|
-
.catch(handleError ?? defaultHandleApiError)
|
|
37
|
-
.finally(() => {
|
|
38
|
-
onSend?.(msg);
|
|
39
|
-
});
|
|
40
|
-
}, [
|
|
41
|
-
notes,
|
|
42
|
-
actions,
|
|
43
|
-
sendMessageWithRetries,
|
|
44
|
-
handleError,
|
|
45
|
-
defaultHandleApiError,
|
|
46
|
-
onSend,
|
|
47
|
-
]);
|
|
48
|
-
const classes = useComposedCssClasses.useComposedCssClasses(defaultClassnames, customCssClasses);
|
|
49
|
-
return (React__default.default.createElement("div", { className: classes.container }, suggestions.map((suggestion, index) => (React__default.default.createElement("button", { key: index, className: classes.suggestion,
|
|
50
|
-
// eslint-disable-next-line react-perf/jsx-no-new-function-as-prop
|
|
51
|
-
onClick: () => sendMsg(suggestion) }, suggestion)))));
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
exports.MessageSuggestions = MessageSuggestions;
|
|
55
|
-
//# sourceMappingURL=MessageSuggestions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MessageSuggestions.js","sources":["../../../../src/components/MessageSuggestions.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport {\n MessageNotes,\n useChatActions,\n useChatState,\n} from \"@yext/chat-headless-react\";\nimport { useDefaultHandleApiError } from \"../hooks/useDefaultHandleApiError\";\nimport { withStylelessCssClasses } from \"../utils/withStylelessCssClasses\";\nimport { useComposedCssClasses } from \"../hooks\";\nimport { useSendMessageWithRetries } from \"../hooks/useSendMessageWithRetries\";\n\n/**\n * The CSS class interface for the MessageSuggestion component.\n *\n * @public\n */\nexport interface MessageSuggestionCssClasses {\n container?: string;\n suggestion?: string;\n}\n\n/**\n * The props for the MessageSuggestions component.\n *\n * @public\n */\nexport interface MessageSuggestionsProps {\n /** List of clickable message suggestions to render. */\n suggestions: string[];\n /** {@inheritdoc ChatInputProps.handleError} */\n handleError?: (e: unknown) => void;\n /** CSS classes for customizing the component styling. */\n customCssClasses?: MessageSuggestionCssClasses;\n /** {@inheritdoc ChatInputProps.stream} */\n stream?: boolean;\n /** {@inheritdoc ChatInputProps.onSend} */\n onSend?: (message: string) => void;\n /** {@inheritdoc ChatInputProps.onRetry} */\n onRetry?: (e: unknown) => void;\n}\n\nconst defaultClassnames: MessageSuggestionCssClasses = withStylelessCssClasses(\n \"Suggestions\",\n {\n container: \"flex gap-2 mb-4 w-full overflow-x-auto flex-wrap\",\n suggestion:\n \"hover:cursor-pointer px-2 py-1 bg-white hover:bg-slate-300 rounded-full text-sm text-blue-700 border border-blue-700 hover:underline\",\n }\n);\n\n/**\n * A component that displays a list of suggested messages\n * to the user, which they can click to send the message to the bot.\n *\n * @internal\n */\nexport const MessageSuggestions: React.FC<MessageSuggestionsProps> = ({\n handleError,\n suggestions,\n customCssClasses,\n stream = false,\n onSend,\n onRetry,\n}) => {\n const actions = useChatActions();\n const notes = useChatState((state) => state.conversation.notes);\n const defaultHandleApiError = useDefaultHandleApiError();\n const sendMessageWithRetries = useSendMessageWithRetries(stream, 1, onRetry);\n const sendMsg = useCallback(\n (msg: string) => {\n const newNotes = {\n ...(notes || {}),\n suggestedReplies: undefined,\n } satisfies MessageNotes;\n actions.setMessageNotes(newNotes);\n sendMessageWithRetries(msg)\n .catch(handleError ?? defaultHandleApiError)\n .finally(() => {\n onSend?.(msg);\n });\n },\n [\n notes,\n actions,\n sendMessageWithRetries,\n handleError,\n defaultHandleApiError,\n onSend,\n ]\n );\n\n const classes = useComposedCssClasses(defaultClassnames, customCssClasses);\n\n return (\n <div className={classes.container}>\n {suggestions.map((suggestion, index) => (\n <button\n key={index}\n className={classes.suggestion}\n // eslint-disable-next-line react-perf/jsx-no-new-function-as-prop\n onClick={() => sendMsg(suggestion)}\n >\n {suggestion}\n </button>\n ))}\n </div>\n );\n};\n"],"names":["withStylelessCssClasses","useChatActions","useChatState","useDefaultHandleApiError","useSendMessageWithRetries","useCallback","useComposedCssClasses","React"],"mappings":";;;;;;;;;;;;;AAyCA,MAAM,iBAAiB,GAAgCA,+CAAuB,CAC5E,aAAa,EACb;AACE,IAAA,SAAS,EAAE,kDAAkD;AAC7D,IAAA,UAAU,EACR,sIAAsI;AACzI,CAAA,CACF,CAAC;AAEF;;;;;AAKG;MACU,kBAAkB,GAAsC,CAAC,EACpE,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,MAAM,GAAG,KAAK,EACd,MAAM,EACN,OAAO,GACR,KAAI;AACH,IAAA,MAAM,OAAO,GAAGC,gCAAc,EAAE,CAAC;AACjC,IAAA,MAAM,KAAK,GAAGC,8BAAY,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAChE,IAAA,MAAM,qBAAqB,GAAGC,iDAAwB,EAAE,CAAC;IACzD,MAAM,sBAAsB,GAAGC,mDAAyB,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AAC7E,IAAA,MAAM,OAAO,GAAGC,iBAAW,CACzB,CAAC,GAAW,KAAI;AACd,QAAA,MAAM,QAAQ,GAAG;AACf,YAAA,IAAI,KAAK,IAAI,EAAE,CAAC;AAChB,YAAA,gBAAgB,EAAE,SAAS;SACL,CAAC;AACzB,QAAA,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAClC,sBAAsB,CAAC,GAAG,CAAC;AACxB,aAAA,KAAK,CAAC,WAAW,IAAI,qBAAqB,CAAC;aAC3C,OAAO,CAAC,MAAK;AACZ,YAAA,MAAM,GAAG,GAAG,CAAC,CAAC;AAChB,SAAC,CAAC,CAAC;AACP,KAAC,EACD;QACE,KAAK;QACL,OAAO;QACP,sBAAsB;QACtB,WAAW;QACX,qBAAqB;QACrB,MAAM;AACP,KAAA,CACF,CAAC;IAEF,MAAM,OAAO,GAAGC,2CAAqB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;AAE3E,IAAA,QACEC,sBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,OAAO,CAAC,SAAS,EAAA,EAC9B,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,MACjCA,sBACE,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,GAAG,EAAE,KAAK,EACV,SAAS,EAAE,OAAO,CAAC,UAAU;;AAE7B,QAAA,OAAO,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,EAAA,EAEjC,UAAU,CACJ,CACV,CAAC,CACE,EACN;AACJ;;;;"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export { ChatInput } from "./ChatInput";
|
|
2
|
-
export type { ChatInputCssClasses, ChatInputProps } from "./ChatInput";
|
|
3
|
-
export { ChatHeader } from "./ChatHeader";
|
|
4
|
-
export type { ChatHeaderCssClasses, ChatHeaderProps } from "./ChatHeader";
|
|
5
|
-
export { MessageBubble } from "./MessageBubble";
|
|
6
|
-
export type { MessageBubbleCssClasses, MessageBubbleProps, } from "./MessageBubble";
|
|
7
|
-
export { ChatPanel } from "./ChatPanel";
|
|
8
|
-
export type { ChatPanelCssClasses, ChatPanelProps } from "./ChatPanel";
|
|
9
|
-
export { ChatPopUp } from "./ChatPopUp";
|
|
10
|
-
export type { ChatPopUpCssClasses, ChatPopUpProps } from "./ChatPopUp";
|
|
11
|
-
export type { FeedbackButtonsCssClasses } from "./FeedbackButtons";
|
|
12
|
-
export type { InitialMessagePopUpCssClasses } from "./InitialMessagePopUp";
|
|
13
|
-
export type { MessageSuggestionCssClasses, MessageSuggestionsProps, } from "./MessageSuggestions";
|
|
14
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EACV,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEvE,YAAY,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACnE,YAAY,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAE3E,YAAY,EACV,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,sBAAsB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* useComposedCssClasses merges a component's built-in tailwind classes with custom tailwind classes.
|
|
3
|
-
*
|
|
4
|
-
* @remarks
|
|
5
|
-
* Tailwind classes will be merged without conflict, with custom classes having higher priority
|
|
6
|
-
* than built-in ones.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* Suppose a component has built-in classes of `{ container: 'px-4 text-slate-700' }`.
|
|
10
|
-
*
|
|
11
|
-
* Passing in the custom classes:
|
|
12
|
-
*
|
|
13
|
-
* ```ts
|
|
14
|
-
* { container: 'text-red-200 mb-3' }
|
|
15
|
-
* ```
|
|
16
|
-
*
|
|
17
|
-
* results in the merged classes of:
|
|
18
|
-
*
|
|
19
|
-
* ```ts
|
|
20
|
-
* { container: 'px-4 text-red-200 mb-3' }
|
|
21
|
-
* ```
|
|
22
|
-
*
|
|
23
|
-
* @public
|
|
24
|
-
*
|
|
25
|
-
* @param builtInClasses - The component's built-in tailwind classes
|
|
26
|
-
* @param customClasses - The custom tailwind classes to merge with the built-in ones
|
|
27
|
-
* @returns The composed CSS classes
|
|
28
|
-
*/
|
|
29
|
-
export declare function useComposedCssClasses<ClassInterface extends Partial<Record<keyof ClassInterface, string | object>>>(builtInClasses: Readonly<ClassInterface>, customClasses?: Partial<ClassInterface>): ClassInterface;
|
|
30
|
-
//# sourceMappingURL=useComposedCssClasses.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useComposedCssClasses.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useComposedCssClasses.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,qBAAqB,CACnC,cAAc,SAAS,OAAO,CAAC,MAAM,CAAC,MAAM,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,EAE7E,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,EACxC,aAAa,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GACtC,cAAc,CAyBhB"}
|